Merge "Add logging for kernel audit failures, including SELinux."
diff --git a/Android.mk b/Android.mk
index d684cd3..c8576a0 100644
--- a/Android.mk
+++ b/Android.mk
@@ -166,6 +166,7 @@
 	core/java/android/speech/IRecognitionService.aidl \
 	core/java/android/speech/tts/ITextToSpeechCallback.aidl \
 	core/java/android/speech/tts/ITextToSpeechService.aidl \
+	core/java/com/android/internal/app/IAppOpsCallback.aidl \
 	core/java/com/android/internal/app/IAppOpsService.aidl \
 	core/java/com/android/internal/app/IBatteryStats.aidl \
 	core/java/com/android/internal/app/IUsageStats.aidl \
@@ -217,6 +218,7 @@
 	telephony/java/com/android/internal/telephony/IPhoneStateListener.aidl \
 	telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl \
 	telephony/java/com/android/internal/telephony/ITelephony.aidl \
+	telephony/java/com/android/internal/telephony/ISms.aidl \
 	telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl \
 	telephony/java/com/android/internal/telephony/IWapPushManager.aidl \
 	wifi/java/android/net/wifi/IWifiManager.aidl \
@@ -442,7 +444,8 @@
 
 # the list here should match the list of samples included in the sdk samples package
 # (see development/build/sdk.atree)
-web_docs_sample_code_flags := \
+# remove htmlified samples for now -- samples are still available through the SDK
+# web_docs_sample_code_flags := \
 		-hdf android.hasSamples 1 \
 		-samplecode $(sample_dir)/AccelerometerPlay \
 		            resources/samples/AccelerometerPlay "Accelerometer Play" \
@@ -671,7 +674,7 @@
 $(full_target): $(static_doc_index_redirect)
 $(full_target): $(framework_built)
 
-# ==== docs for the web (on the google app engine server) =======================
+# ==== docs for the web (on the androiddevdocs app engine server) =======================
 include $(CLEAR_VARS)
 
 LOCAL_SRC_FILES:=$(framework_docs_LOCAL_SRC_FILES)
@@ -697,8 +700,33 @@
 
 include $(BUILD_DROIDDOC)
 
-# explicitly specify that online-sdk depends on framework-res and any generated docs
-$(full_target): framework-res-package-target
+# ==== docs for the web (on the devsite app engine server) =======================
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES:=$(framework_docs_LOCAL_SRC_FILES)
+LOCAL_INTERMEDIATE_SOURCES:=$(framework_docs_LOCAL_INTERMEDIATE_SOURCES)
+LOCAL_STATIC_JAVA_LIBRARIES:=$(framework_docs_LOCAL_STATIC_JAVA_LIBRARIES)
+LOCAL_JAVA_LIBRARIES:=$(framework_docs_LOCAL_JAVA_LIBRARIES)
+LOCAL_MODULE_CLASS:=$(framework_docs_LOCAL_MODULE_CLASS)
+LOCAL_DROIDDOC_SOURCE_PATH:=$(framework_docs_LOCAL_DROIDDOC_SOURCE_PATH)
+LOCAL_DROIDDOC_HTML_DIR:=$(framework_docs_LOCAL_DROIDDOC_HTML_DIR)
+LOCAL_ADDITIONAL_JAVA_DIR:=$(framework_docs_LOCAL_ADDITIONAL_JAVA_DIR)
+LOCAL_ADDITIONAL_DEPENDENCIES:=$(framework_docs_LOCAL_ADDITIONAL_DEPENDENCIES)
+# specify a second html input dir and an output path relative to OUT_DIR)
+LOCAL_ADDITIONAL_HTML_DIR:=docs/html-intl /
+
+LOCAL_MODULE := ds
+
+LOCAL_DROIDDOC_OPTIONS:= \
+		$(framework_docs_LOCAL_DROIDDOC_OPTIONS) \
+		$(web_docs_sample_code_flags) \
+		-devsite \
+		-toroot / \
+		-hdf android.whichdoc online \
+		-hdf devsite true
+
+LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk
+
+include $(BUILD_DROIDDOC)
 
 # ==== docs that have all of the stuff that's @hidden =======================
 include $(CLEAR_VARS)
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 2c7d16f..b87fa48 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -154,7 +154,8 @@
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/librtp_jni.so)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/lib/librtp_jni.so)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/symbols/system/lib/librtp_jni.so)
-
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/telephony/java/com/android/internal/telephony/SmsRawData.*)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates)
 # ************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
 # ************************************************
diff --git a/api/current.txt b/api/current.txt
index e7d1d54..2615e0b 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -101,6 +101,7 @@
     field public static final java.lang.String RECORD_AUDIO = "android.permission.RECORD_AUDIO";
     field public static final java.lang.String REORDER_TASKS = "android.permission.REORDER_TASKS";
     field public static final deprecated java.lang.String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES";
+    field public static final java.lang.String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE";
     field public static final java.lang.String SEND_SMS = "android.permission.SEND_SMS";
     field public static final java.lang.String SET_ACTIVITY_WATCHER = "android.permission.SET_ACTIVITY_WATCHER";
     field public static final java.lang.String SET_ALARM = "com.android.alarm.permission.SET_ALARM";
@@ -4152,11 +4153,14 @@
   }
 
   public final class UiAutomation {
-    method public android.view.accessibility.AccessibilityEvent executeAndWaitForEvent(java.lang.Runnable, com.android.internal.util.Predicate<android.view.accessibility.AccessibilityEvent>, long) throws java.util.concurrent.TimeoutException;
+    method public android.view.accessibility.AccessibilityEvent executeAndWaitForEvent(java.lang.Runnable, android.app.UiAutomation.AccessibilityEventFilter, long) throws java.util.concurrent.TimeoutException;
     method public android.view.accessibility.AccessibilityNodeInfo getRootInActiveWindow();
+    method public final android.accessibilityservice.AccessibilityServiceInfo getServiceInfo();
     method public boolean injectInputEvent(android.view.InputEvent, boolean);
+    method public final boolean performGlobalAction(int);
     method public void setOnAccessibilityEventListener(android.app.UiAutomation.OnAccessibilityEventListener);
     method public boolean setRotation(int);
+    method public final void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
     method public android.graphics.Bitmap takeScreenshot();
     method public void waitForIdle(long, long) throws java.util.concurrent.TimeoutException;
     field public static final int ROTATION_FREEZE_0 = 0; // 0x0
@@ -4167,6 +4171,10 @@
     field public static final int ROTATION_UNFREEZE = -2; // 0xfffffffe
   }
 
+  public static abstract interface UiAutomation.AccessibilityEventFilter {
+    method public abstract boolean accept(android.view.accessibility.AccessibilityEvent);
+  }
+
   public static abstract interface UiAutomation.OnAccessibilityEventListener {
     method public abstract void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
   }
@@ -9375,7 +9383,7 @@
 
   public class BitmapDrawable extends android.graphics.drawable.Drawable {
     ctor public deprecated BitmapDrawable();
-    ctor public BitmapDrawable(android.content.res.Resources);
+    ctor public deprecated BitmapDrawable(android.content.res.Resources);
     ctor public deprecated BitmapDrawable(android.graphics.Bitmap);
     ctor public BitmapDrawable(android.content.res.Resources, android.graphics.Bitmap);
     ctor public deprecated BitmapDrawable(java.lang.String);
@@ -12804,16 +12812,16 @@
     method public static long getTotalTxPackets();
     method public static long getUidRxBytes(int);
     method public static long getUidRxPackets(int);
-    method public static long getUidTcpRxBytes(int);
-    method public static long getUidTcpRxSegments(int);
-    method public static long getUidTcpTxBytes(int);
-    method public static long getUidTcpTxSegments(int);
+    method public static deprecated long getUidTcpRxBytes(int);
+    method public static deprecated long getUidTcpRxSegments(int);
+    method public static deprecated long getUidTcpTxBytes(int);
+    method public static deprecated long getUidTcpTxSegments(int);
     method public static long getUidTxBytes(int);
     method public static long getUidTxPackets(int);
-    method public static long getUidUdpRxBytes(int);
-    method public static long getUidUdpRxPackets(int);
-    method public static long getUidUdpTxBytes(int);
-    method public static long getUidUdpTxPackets(int);
+    method public static deprecated long getUidUdpRxBytes(int);
+    method public static deprecated long getUidUdpRxPackets(int);
+    method public static deprecated long getUidUdpTxBytes(int);
+    method public static deprecated long getUidUdpTxPackets(int);
     method public static void incrementOperationCount(int);
     method public static void incrementOperationCount(int, int);
     method public static void setThreadStatsTag(int);
@@ -13409,6 +13417,7 @@
     field public java.util.BitSet allowedKeyManagement;
     field public java.util.BitSet allowedPairwiseCiphers;
     field public java.util.BitSet allowedProtocols;
+    field public android.net.wifi.WifiEnterpriseConfig enterpriseConfig;
     field public boolean hiddenSSID;
     field public int networkId;
     field public java.lang.String preSharedKey;
@@ -13466,6 +13475,45 @@
     field public static final java.lang.String[] strings;
   }
 
+  public class WifiEnterpriseConfig implements android.os.Parcelable {
+    ctor public WifiEnterpriseConfig();
+    ctor public WifiEnterpriseConfig(android.net.wifi.WifiEnterpriseConfig);
+    method public int describeContents();
+    method public java.lang.String getAnonymousIdentity();
+    method public int getEapMethod();
+    method public java.lang.String getIdentity();
+    method public int getPhase2Method();
+    method public java.lang.String getSubjectMatch();
+    method public void setAnonymousIdentity(java.lang.String);
+    method public void setCaCertificate(java.security.cert.X509Certificate);
+    method public void setClientKeyEntry(java.security.PrivateKey, java.security.cert.X509Certificate);
+    method public void setEapMethod(int);
+    method public void setIdentity(java.lang.String);
+    method public void setPassword(java.lang.String);
+    method public void setPhase2Method(int);
+    method public void setSubjectMatch(java.lang.String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator CREATOR;
+  }
+
+  public static final class WifiEnterpriseConfig.Eap {
+    ctor public WifiEnterpriseConfig.Eap();
+    field public static final int NONE = -1; // 0xffffffff
+    field public static final int PEAP = 0; // 0x0
+    field public static final int PWD = 3; // 0x3
+    field public static final int TLS = 1; // 0x1
+    field public static final int TTLS = 2; // 0x2
+  }
+
+  public static final class WifiEnterpriseConfig.Phase2 {
+    ctor public WifiEnterpriseConfig.Phase2();
+    field public static final int GTC = 4; // 0x4
+    field public static final int MSCHAP = 2; // 0x2
+    field public static final int MSCHAPV2 = 3; // 0x3
+    field public static final int NONE = 0; // 0x0
+    field public static final int PAP = 1; // 0x1
+  }
+
   public class WifiInfo implements android.os.Parcelable {
     method public int describeContents();
     method public java.lang.String getBSSID();
@@ -19484,6 +19532,7 @@
 
   public class FieldPacker {
     ctor public FieldPacker(int);
+    ctor public FieldPacker(byte[]);
     method public void addBoolean(boolean);
     method public void addF32(float);
     method public void addF32(android.renderscript.Float2);
@@ -20097,6 +20146,7 @@
     method protected android.renderscript.Script.FieldID createFieldID(int, android.renderscript.Element);
     method protected android.renderscript.Script.KernelID createKernelID(int, int, android.renderscript.Element, android.renderscript.Element);
     method protected void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker);
+    method protected void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker, android.renderscript.Script.LaunchOptions);
     method protected void invoke(int);
     method protected void invoke(int, android.renderscript.FieldPacker);
     method public void setTimeZone(java.lang.String);
@@ -20137,13 +20187,18 @@
     method public int getXStart();
     method public int getYEnd();
     method public int getYStart();
-    method public void setX(int, int);
-    method public void setY(int, int);
+    method public int getZEnd();
+    method public int getZStart();
+    method public android.renderscript.Script.LaunchOptions setX(int, int);
+    method public android.renderscript.Script.LaunchOptions setY(int, int);
+    method public android.renderscript.Script.LaunchOptions setZ(int, int);
     field protected int strategy;
     field protected int xend;
     field protected int xstart;
     field protected int yend;
     field protected int ystart;
+    field protected int zend;
+    field protected int zstart;
   }
 
   public class ScriptC extends android.renderscript.Script {
@@ -21075,6 +21130,7 @@
     method public boolean isNetworkRoaming();
     method public void listen(android.telephony.PhoneStateListener, int);
     field public static final java.lang.String ACTION_PHONE_STATE_CHANGED = "android.intent.action.PHONE_STATE";
+    field public static final java.lang.String ACTION_RESPOND_VIA_MESSAGE = "android.intent.action.RESPOND_VIA_MESSAGE";
     field public static final int CALL_STATE_IDLE = 0; // 0x0
     field public static final int CALL_STATE_OFFHOOK = 2; // 0x2
     field public static final int CALL_STATE_RINGING = 1; // 0x1
@@ -22257,6 +22313,21 @@
     method public int getTopPadding();
   }
 
+  public abstract interface TextDirectionHeuristic {
+    method public abstract boolean isRtl(char[], int, int);
+    method public abstract boolean isRtl(java.lang.CharSequence, int, int);
+  }
+
+  public class TextDirectionHeuristics {
+    ctor public TextDirectionHeuristics();
+    field public static final android.text.TextDirectionHeuristic ANYRTL_LTR;
+    field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_LTR;
+    field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_RTL;
+    field public static final android.text.TextDirectionHeuristic LOCALE;
+    field public static final android.text.TextDirectionHeuristic LTR;
+    field public static final android.text.TextDirectionHeuristic RTL;
+  }
+
   public class TextPaint extends android.graphics.Paint {
     ctor public TextPaint();
     ctor public TextPaint(int);
@@ -22348,6 +22419,48 @@
 
 }
 
+package android.text.bidi {
+
+  public final class BidiFormatter {
+    method public java.lang.String dirAttr(java.lang.String);
+    method public java.lang.String dirAttr(java.lang.String, android.text.TextDirectionHeuristic);
+    method public java.lang.String dirAttr(boolean);
+    method public java.lang.String dirAttrValue(java.lang.String);
+    method public java.lang.String dirAttrValue(java.lang.String, android.text.TextDirectionHeuristic);
+    method public java.lang.String dirAttrValue(boolean);
+    method public java.lang.String endEdge();
+    method public static android.text.bidi.BidiFormatter getInstance(boolean);
+    method public static android.text.bidi.BidiFormatter getInstance(java.util.Locale);
+    method public boolean getStereoReset();
+    method public boolean isRtl(java.lang.String);
+    method public boolean isRtlContext();
+    method public java.lang.String mark();
+    method public java.lang.String markAfter(java.lang.String);
+    method public java.lang.String markAfter(java.lang.String, android.text.TextDirectionHeuristic);
+    method public java.lang.String markBefore(java.lang.String);
+    method public java.lang.String markBefore(java.lang.String, android.text.TextDirectionHeuristic);
+    method public java.lang.String spanWrap(java.lang.String, android.text.TextDirectionHeuristic, boolean);
+    method public java.lang.String spanWrap(java.lang.String, android.text.TextDirectionHeuristic);
+    method public java.lang.String spanWrap(java.lang.String, boolean);
+    method public java.lang.String spanWrap(java.lang.String);
+    method public java.lang.String startEdge();
+    method public java.lang.String unicodeWrap(java.lang.String, android.text.TextDirectionHeuristic, boolean);
+    method public java.lang.String unicodeWrap(java.lang.String, android.text.TextDirectionHeuristic);
+    method public java.lang.String unicodeWrap(java.lang.String, boolean);
+    method public java.lang.String unicodeWrap(java.lang.String);
+  }
+
+  public static final class BidiFormatter.Builder {
+    ctor public BidiFormatter.Builder();
+    ctor public BidiFormatter.Builder(boolean);
+    ctor public BidiFormatter.Builder(java.util.Locale);
+    method public android.text.bidi.BidiFormatter build();
+    method public android.text.bidi.BidiFormatter.Builder setTextDirectionHeuristic(android.text.TextDirectionHeuristic);
+    method public android.text.bidi.BidiFormatter.Builder stereoReset(boolean);
+  }
+
+}
+
 package android.text.format {
 
   public class DateFormat {
@@ -23270,6 +23383,7 @@
     field public static final int DENSITY_TV = 213; // 0xd5
     field public static final int DENSITY_XHIGH = 320; // 0x140
     field public static final int DENSITY_XXHIGH = 480; // 0x1e0
+    field public static final int DENSITY_XXXHIGH = 640; // 0x280
     field public float density;
     field public int densityDpi;
     field public int heightPixels;
@@ -26303,12 +26417,15 @@
     method public java.lang.CharSequence getPackageName();
     method public android.view.accessibility.AccessibilityNodeInfo getParent();
     method public java.lang.CharSequence getText();
-    method public java.lang.CharSequence getViewId();
+    method public int getTextSelectionEnd();
+    method public int getTextSelectionStart();
+    method public java.lang.CharSequence getViewIdResourceName();
     method public int getWindowId();
     method public boolean isAccessibilityFocused();
     method public boolean isCheckable();
     method public boolean isChecked();
     method public boolean isClickable();
+    method public boolean isEditable();
     method public boolean isEnabled();
     method public boolean isFocusable();
     method public boolean isFocused();
@@ -26333,6 +26450,7 @@
     method public void setClassName(java.lang.CharSequence);
     method public void setClickable(boolean);
     method public void setContentDescription(java.lang.CharSequence);
+    method public void setEditable(boolean);
     method public void setEnabled(boolean);
     method public void setFocusable(boolean);
     method public void setFocused(boolean);
@@ -26351,7 +26469,8 @@
     method public void setSource(android.view.View);
     method public void setSource(android.view.View, int);
     method public void setText(java.lang.CharSequence);
-    method public void setViewId(java.lang.CharSequence);
+    method public void setTextSelection(int, int);
+    method public void setViewIdResourceName(java.lang.CharSequence);
     method public void setVisibleToUser(boolean);
     method public void writeToParcel(android.os.Parcel, int);
     field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index 1c5f32e..3c1fbfe 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -614,8 +614,8 @@
         Intent intent = makeIntent(UserHandle.USER_ALL);
         IntentReceiver receiver = new IntentReceiver();
         System.out.println("Broadcasting: " + intent);
-        mAm.broadcastIntent(null, intent, null, receiver, 0, null, null, null, true, false,
-                mUserId);
+        mAm.broadcastIntent(null, intent, null, receiver, 0, null, null, null,
+                android.app.AppOpsManager.OP_NONE, true, false, mUserId);
         receiver.waitForFinish();
     }
 
diff --git a/cmds/pm/src/com/android/commands/pm/Pm.java b/cmds/pm/src/com/android/commands/pm/Pm.java
index f0e3370..da398ef 100644
--- a/cmds/pm/src/com/android/commands/pm/Pm.java
+++ b/cmds/pm/src/com/android/commands/pm/Pm.java
@@ -1522,8 +1522,9 @@
         System.err.println("");
         System.err.println("pm clear: deletes all data associated with a package.");
         System.err.println("");
-        System.err.println("pm enable, disable, disable-user: these commands change the enabled state");
-        System.err.println("  of a given package or component (written as \"package/class\").");
+        System.err.println("pm enable, disable, disable-user, disable-until-used: these commands");
+        System.err.println("  change the enabled state of a given package or component (written");
+        System.err.println("  as \"package/class\").");
         System.err.println("");
         System.err.println("pm grant, revoke: these commands either grant or revoke permissions");
         System.err.println("  to applications.  Only optional permissions the application has");
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index 8dddbc1..811b92a 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -457,7 +457,7 @@
      *
      * @return The accessibility service info.
      *
-     * @see AccessibilityNodeInfo
+     * @see AccessibilityServiceInfo
      */
     public final AccessibilityServiceInfo getServiceInfo() {
         IAccessibilityServiceConnection connection =
diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
index d12a336..d82b9a3 100644
--- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
@@ -169,7 +169,7 @@
      * This flag requests from the system to enable web accessibility enhancing
      * extensions. Such extensions aim to provide improved accessibility support
      * for content presented in a {@link android.webkit.WebView}. An example of such
-     * an extension is injecting JavaScript from Google. The system will enable
+     * an extension is injecting JavaScript from a secure source. The system will enable
      * enhanced web accessibility if there is at least one accessibility service
      * that has this flag set. Hence, clearing this flag does not guarantee that the
      * device will not have enhanced web accessibility enabled since there may be
@@ -399,6 +399,13 @@
     }
 
     /**
+     * @hide
+     */
+    public void setComponentName(ComponentName component) {
+        mId = component.flattenToShortString();
+    }
+
+    /**
      * The accessibility service id.
      * <p>
      *   <strong>Generated by the system.</strong>
@@ -515,6 +522,33 @@
     }
 
     @Override
+    public int hashCode() {
+        return 31 * 1 + ((mId == null) ? 0 : mId.hashCode());
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        AccessibilityServiceInfo other = (AccessibilityServiceInfo) obj;
+        if (mId == null) {
+            if (other.mId != null) {
+                return false;
+            }
+        } else if (!mId.equals(other.mId)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
     public String toString() {
         StringBuilder stringBuilder = new StringBuilder();
         appendEventTypes(stringBuilder, eventTypes);
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 594be68..944a533 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -1915,7 +1915,30 @@
         return PackageManager.PERMISSION_DENIED;
     }
 
-    /** @hide */
+    /**
+     * @hide
+     * Helper for dealing with incoming user arguments to system service calls.
+     * Takes care of checking permissions and converting USER_CURRENT to the
+     * actual current user.
+     *
+     * @param callingPid The pid of the incoming call, as per Binder.getCallingPid().
+     * @param callingUid The uid of the incoming call, as per Binder.getCallingUid().
+     * @param userId The user id argument supplied by the caller -- this is the user
+     * they want to run as.
+     * @param allowAll If true, we will allow USER_ALL.  This means you must be prepared
+     * to get a USER_ALL returned and deal with it correctly.  If false,
+     * an exception will be thrown if USER_ALL is supplied.
+     * @param requireFull If true, the caller must hold
+     * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} to be able to run as a
+     * different user than their current process; otherwise they must hold
+     * {@link android.Manifest.permission#INTERACT_ACROSS_USERS}.
+     * @param name Optional textual name of the incoming call; only for generating error messages.
+     * @param callerPackage Optional package name of caller; only for error messages.
+     *
+     * @return Returns the user ID that the call should run as.  Will always be a concrete
+     * user number, unless <var>allowAll</var> is true in which case it could also be
+     * USER_ALL.
+     */
     public static int handleIncomingUser(int callingPid, int callingUid, int userId,
             boolean allowAll, boolean requireFull, String name, String callerPackage) {
         if (UserHandle.getUserId(callingUid) == userId) {
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index c9930e9..aca4f9c 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -92,7 +92,7 @@
         try {
             getDefault().broadcastIntent(
                 null, intent, null, null, Activity.RESULT_OK, null, null,
-                null /*permission*/, false, true, userId);
+                null /*permission*/, AppOpsManager.OP_NONE, false, true, userId);
         } catch (RemoteException ex) {
         }
     }
@@ -344,11 +344,12 @@
             String resultData = data.readString();
             Bundle resultExtras = data.readBundle();
             String perm = data.readString();
+            int appOp = data.readInt();
             boolean serialized = data.readInt() != 0;
             boolean sticky = data.readInt() != 0;
             int userId = data.readInt();
             int res = broadcastIntent(app, intent, resolvedType, resultTo,
-                    resultCode, resultData, resultExtras, perm,
+                    resultCode, resultData, resultExtras, perm, appOp,
                     serialized, sticky, userId);
             reply.writeNoException();
             reply.writeInt(res);
@@ -1152,6 +1153,7 @@
             IActivityController watcher = IActivityController.Stub.asInterface(
                     data.readStrongBinder());
             setActivityController(watcher);
+            reply.writeNoException();
             return true;
         }
 
@@ -2174,7 +2176,7 @@
     public int broadcastIntent(IApplicationThread caller,
             Intent intent, String resolvedType,  IIntentReceiver resultTo,
             int resultCode, String resultData, Bundle map,
-            String requiredPermission, boolean serialized,
+            String requiredPermission, int appOp, boolean serialized,
             boolean sticky, int userId) throws RemoteException
     {
         Parcel data = Parcel.obtain();
@@ -2188,6 +2190,7 @@
         data.writeString(resultData);
         data.writeBundle(map);
         data.writeString(requiredPermission);
+        data.writeInt(appOp);
         data.writeInt(serialized ? 1 : 0);
         data.writeInt(sticky ? 1 : 0);
         data.writeInt(userId);
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index a81b6fe..de69867 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -18,8 +18,10 @@
 
 import android.Manifest;
 import com.android.internal.app.IAppOpsService;
+import com.android.internal.app.IAppOpsCallback;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 import android.content.Context;
@@ -28,15 +30,40 @@
 import android.os.Process;
 import android.os.RemoteException;
 
-/** @hide */
+/**
+ * API for interacting with "application operation" tracking.  Allows you to:
+ *
+ * - Note when operations are happening, and find out if they are allowed for the current caller.
+ * - Disallow specific apps from doing specific operations.
+ * - Collect all of the current information about operations that have been executed or are not
+ * being allowed.
+ * - Monitor for changes in whether an operation is allowed.
+ *
+ * Each operation is identified by a single integer; these integers are a fixed set of
+ * operations, enumerated by the OP_* constants.
+ *
+ * When checking operations, the result is a "mode" integer indicating the current setting
+ * for the operation under that caller: MODE_ALLOWED, MODE_IGNORED (don't execute the operation but
+ * fake its behavior enough so that the caller doesn't crash), MODE_ERRORED (through a
+ * SecurityException back to the caller; the normal operation calls will do this for you).
+ *
+ * @hide
+ */
 public class AppOpsManager {
     final Context mContext;
     final IAppOpsService mService;
+    final HashMap<Callback, IAppOpsCallback> mModeWatchers
+            = new HashMap<Callback, IAppOpsCallback>();
 
     public static final int MODE_ALLOWED = 0;
     public static final int MODE_IGNORED = 1;
     public static final int MODE_ERRORED = 2;
 
+    // when adding one of these:
+    //  - increment _NUM_OP
+    //  - add rows to sOpToSwitch, sOpNames, sOpPerms
+    //  - add descriptive strings to Settings/res/values/arrays.xml
+    public static final int OP_NONE = -1;
     public static final int OP_COARSE_LOCATION = 0;
     public static final int OP_FINE_LOCATION = 1;
     public static final int OP_GPS = 2;
@@ -51,8 +78,23 @@
     public static final int OP_POST_NOTIFICATION = 11;
     public static final int OP_NEIGHBORING_CELLS = 12;
     public static final int OP_CALL_PHONE = 13;
+    public static final int OP_READ_SMS = 14;
+    public static final int OP_WRITE_SMS = 15;
+    public static final int OP_RECEIVE_SMS = 16;
+    public static final int OP_RECEIVE_EMERGECY_SMS = 17;
+    public static final int OP_RECEIVE_MMS = 18;
+    public static final int OP_RECEIVE_WAP_PUSH = 19;
+    public static final int OP_SEND_SMS = 20;
+    public static final int OP_READ_ICC_SMS = 21;
+    public static final int OP_WRITE_ICC_SMS = 22;
+    public static final int OP_WRITE_SETTINGS = 23;
+    public static final int OP_SYSTEM_ALERT_WINDOW = 24;
+    public static final int OP_ACCESS_NOTIFICATIONS = 25;
+    public static final int OP_CAMERA = 26;
+    public static final int OP_RECORD_AUDIO = 27;
+    public static final int OP_PLAY_AUDIO = 28;
     /** @hide */
-    public static final int _NUM_OP = 14;
+    public static final int _NUM_OP = 29;
 
     /**
      * This maps each operation to the operation that serves as the
@@ -77,6 +119,21 @@
             OP_POST_NOTIFICATION,
             OP_COARSE_LOCATION,
             OP_CALL_PHONE,
+            OP_READ_SMS,
+            OP_WRITE_SMS,
+            OP_READ_SMS,
+            OP_READ_SMS,
+            OP_READ_SMS,
+            OP_READ_SMS,
+            OP_WRITE_SMS,
+            OP_READ_SMS,
+            OP_WRITE_SMS,
+            OP_WRITE_SETTINGS,
+            OP_SYSTEM_ALERT_WINDOW,
+            OP_ACCESS_NOTIFICATIONS,
+            OP_CAMERA,
+            OP_RECORD_AUDIO,
+            OP_PLAY_AUDIO,
     };
 
     /**
@@ -98,6 +155,21 @@
             "POST_NOTIFICATION",
             "NEIGHBORING_CELLS",
             "CALL_PHONE",
+            "READ_SMS",
+            "WRITE_SMS",
+            "RECEIVE_SMS",
+            "RECEIVE_EMERGECY_SMS",
+            "RECEIVE_MMS",
+            "RECEIVE_WAP_PUSH",
+            "SEND_SMS",
+            "READ_ICC_SMS",
+            "WRITE_ICC_SMS",
+            "WRITE_SETTINGS",
+            "SYSTEM_ALERT_WINDOW",
+            "ACCESS_NOTIFICATIONS",
+            "CAMERA",
+            "RECORD_AUDIO",
+            "PLAY_AUDIO",
     };
 
     /**
@@ -119,20 +191,48 @@
             android.Manifest.permission.ACCESS_WIFI_STATE,
             null, // neighboring cells shares the coarse location perm
             android.Manifest.permission.CALL_PHONE,
+            android.Manifest.permission.READ_SMS,
+            android.Manifest.permission.WRITE_SMS,
+            android.Manifest.permission.RECEIVE_SMS,
+            android.Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
+            android.Manifest.permission.RECEIVE_MMS,
+            android.Manifest.permission.RECEIVE_WAP_PUSH,
+            android.Manifest.permission.SEND_SMS,
+            android.Manifest.permission.READ_SMS,
+            android.Manifest.permission.WRITE_SMS,
+            android.Manifest.permission.WRITE_SETTINGS,
+            android.Manifest.permission.SYSTEM_ALERT_WINDOW,
+            android.Manifest.permission.ACCESS_NOTIFICATIONS,
+            android.Manifest.permission.CAMERA,
+            android.Manifest.permission.RECORD_AUDIO,
+            null, // no permission for playing audio
     };
 
+    /**
+     * Retrieve the op switch that controls the given operation.
+     */
     public static int opToSwitch(int op) {
         return sOpToSwitch[op];
     }
 
+    /**
+     * Retrieve a non-localized name for the operation, for debugging output.
+     */
     public static String opToName(int op) {
+        if (op == OP_NONE) return "NONE";
         return op < sOpNames.length ? sOpNames[op] : ("Unknown(" + op + ")");
     }
 
+    /**
+     * Retrieve the permission associated with an operation, or null if there is not one.
+     */
     public static String opToPermission(int op) {
         return sOpPerms[op];
     }
 
+    /**
+     * Class holding all of the operation information associated with an app.
+     */
     public static class PackageOps implements Parcelable {
         private final String mPackageName;
         private final int mUid;
@@ -192,6 +292,9 @@
         };
     }
 
+    /**
+     * Class holding the information about one unique operation of an application.
+     */
     public static class OpEntry implements Parcelable {
         private final int mOp;
         private final int mMode;
@@ -264,11 +367,23 @@
         };
     }
 
+    /**
+     * Callback for notification of changes to operation state.
+     */
+    public interface Callback {
+        public void opChanged(int op, String packageName);
+    }
+
     public AppOpsManager(Context context, IAppOpsService service) {
         mContext = context;
         mService = service;
     }
 
+    /**
+     * Retrieve current operation state for all applications.
+     *
+     * @param ops The set of operations you are interested in, or null if you want all of them.
+     */
     public List<AppOpsManager.PackageOps> getPackagesForOps(int[] ops) {
         try {
             return mService.getPackagesForOps(ops);
@@ -277,6 +392,13 @@
         return null;
     }
 
+    /**
+     * Retrieve current operation state for one application.
+     *
+     * @param uid The uid of the application of interest.
+     * @param packageName The name of the application of interest.
+     * @param ops The set of operations you are interested in, or null if you want all of them.
+     */
     public List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName, int[] ops) {
         try {
             return mService.getOpsForPackage(uid, packageName, ops);
@@ -292,6 +414,36 @@
         }
     }
 
+    public void startWatchingMode(int op, String packageName, final Callback callback) {
+        synchronized (mModeWatchers) {
+            IAppOpsCallback cb = mModeWatchers.get(callback);
+            if (cb == null) {
+                cb = new IAppOpsCallback.Stub() {
+                    public void opChanged(int op, String packageName) {
+                        callback.opChanged(op, packageName);
+                    }
+                };
+                mModeWatchers.put(callback, cb);
+            }
+            try {
+                mService.startWatchingMode(op, packageName, cb);
+            } catch (RemoteException e) {
+            }
+        }
+    }
+
+    public void stopWatchingMode(Callback callback) {
+        synchronized (mModeWatchers) {
+            IAppOpsCallback cb = mModeWatchers.get(callback);
+            if (cb != null) {
+                try {
+                    mService.stopWatchingMode(cb);
+                } catch (RemoteException e) {
+                }
+            }
+        }
+    }
+
     public int checkOp(int op, int uid, String packageName) {
         try {
             int mode = mService.checkOperation(op, uid, packageName);
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 2cf9f59..a40fe75 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -1042,7 +1042,7 @@
             intent.setAllowFds(false);
             ActivityManagerNative.getDefault().broadcastIntent(
                 mMainThread.getApplicationThread(), intent, resolvedType, null,
-                Activity.RESULT_OK, null, null, null, false, false,
+                Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, false, false,
                 getUserId());
         } catch (RemoteException e) {
         }
@@ -1056,7 +1056,21 @@
             intent.setAllowFds(false);
             ActivityManagerNative.getDefault().broadcastIntent(
                 mMainThread.getApplicationThread(), intent, resolvedType, null,
-                Activity.RESULT_OK, null, null, receiverPermission, false, false,
+                Activity.RESULT_OK, null, null, receiverPermission, AppOpsManager.OP_NONE,
+                false, false, getUserId());
+        } catch (RemoteException e) {
+        }
+    }
+
+    @Override
+    public void sendBroadcast(Intent intent, String receiverPermission, int appOp) {
+        warnIfCallingFromSystemProcess();
+        String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
+        try {
+            intent.setAllowFds(false);
+            ActivityManagerNative.getDefault().broadcastIntent(
+                mMainThread.getApplicationThread(), intent, resolvedType, null,
+                Activity.RESULT_OK, null, null, receiverPermission, appOp, false, false,
                 getUserId());
         } catch (RemoteException e) {
         }
@@ -1071,7 +1085,7 @@
             intent.setAllowFds(false);
             ActivityManagerNative.getDefault().broadcastIntent(
                 mMainThread.getApplicationThread(), intent, resolvedType, null,
-                Activity.RESULT_OK, null, null, receiverPermission, true, false,
+                Activity.RESULT_OK, null, null, receiverPermission, AppOpsManager.OP_NONE, true, false,
                 getUserId());
         } catch (RemoteException e) {
         }
@@ -1082,6 +1096,15 @@
             String receiverPermission, BroadcastReceiver resultReceiver,
             Handler scheduler, int initialCode, String initialData,
             Bundle initialExtras) {
+        sendOrderedBroadcast(intent, receiverPermission, AppOpsManager.OP_NONE,
+                resultReceiver, scheduler, initialCode, initialData, initialExtras);
+    }
+
+    @Override
+    public void sendOrderedBroadcast(Intent intent,
+            String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
+            Handler scheduler, int initialCode, String initialData,
+            Bundle initialExtras) {
         warnIfCallingFromSystemProcess();
         IIntentReceiver rd = null;
         if (resultReceiver != null) {
@@ -1105,8 +1128,8 @@
             intent.setAllowFds(false);
             ActivityManagerNative.getDefault().broadcastIntent(
                 mMainThread.getApplicationThread(), intent, resolvedType, rd,
-                initialCode, initialData, initialExtras, receiverPermission,
-                true, false, getUserId());
+                initialCode, initialData, initialExtras, receiverPermission, appOp,
+                    true, false, getUserId());
         } catch (RemoteException e) {
         }
     }
@@ -1117,8 +1140,8 @@
         try {
             intent.setAllowFds(false);
             ActivityManagerNative.getDefault().broadcastIntent(mMainThread.getApplicationThread(),
-                    intent, resolvedType, null, Activity.RESULT_OK, null, null, null, false, false,
-                    user.getIdentifier());
+                    intent, resolvedType, null, Activity.RESULT_OK, null, null, null,
+                    AppOpsManager.OP_NONE, false, false, user.getIdentifier());
         } catch (RemoteException e) {
         }
     }
@@ -1131,7 +1154,7 @@
             intent.setAllowFds(false);
             ActivityManagerNative.getDefault().broadcastIntent(
                 mMainThread.getApplicationThread(), intent, resolvedType, null,
-                Activity.RESULT_OK, null, null, receiverPermission, false, false,
+                Activity.RESULT_OK, null, null, receiverPermission, AppOpsManager.OP_NONE, false, false,
                 user.getIdentifier());
         } catch (RemoteException e) {
         }
@@ -1164,7 +1187,7 @@
             ActivityManagerNative.getDefault().broadcastIntent(
                 mMainThread.getApplicationThread(), intent, resolvedType, rd,
                 initialCode, initialData, initialExtras, receiverPermission,
-                true, false, user.getIdentifier());
+                    AppOpsManager.OP_NONE, true, false, user.getIdentifier());
         } catch (RemoteException e) {
         }
     }
@@ -1177,7 +1200,7 @@
             intent.setAllowFds(false);
             ActivityManagerNative.getDefault().broadcastIntent(
                 mMainThread.getApplicationThread(), intent, resolvedType, null,
-                Activity.RESULT_OK, null, null, null, false, true,
+                Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, false, true,
                 getUserId());
         } catch (RemoteException e) {
         }
@@ -1212,7 +1235,7 @@
             ActivityManagerNative.getDefault().broadcastIntent(
                 mMainThread.getApplicationThread(), intent, resolvedType, rd,
                 initialCode, initialData, initialExtras, null,
-                true, true, getUserId());
+                    AppOpsManager.OP_NONE, true, true, getUserId());
         } catch (RemoteException e) {
         }
     }
@@ -1239,7 +1262,7 @@
             intent.setAllowFds(false);
             ActivityManagerNative.getDefault().broadcastIntent(
                 mMainThread.getApplicationThread(), intent, resolvedType, null,
-                Activity.RESULT_OK, null, null, null, false, true, user.getIdentifier());
+                Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, false, true, user.getIdentifier());
         } catch (RemoteException e) {
         }
     }
@@ -1272,7 +1295,7 @@
             ActivityManagerNative.getDefault().broadcastIntent(
                 mMainThread.getApplicationThread(), intent, resolvedType, rd,
                 initialCode, initialData, initialExtras, null,
-                true, true, user.getIdentifier());
+                    AppOpsManager.OP_NONE, true, true, user.getIdentifier());
         } catch (RemoteException e) {
         }
     }
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index e58ff62..cf4c729 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -85,7 +85,7 @@
     public int broadcastIntent(IApplicationThread caller, Intent intent,
             String resolvedType, IIntentReceiver resultTo, int resultCode,
             String resultData, Bundle map, String requiredPermission,
-            boolean serialized, boolean sticky, int userId) throws RemoteException;
+            int appOp, boolean serialized, boolean sticky, int userId) throws RemoteException;
     public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId) throws RemoteException;
     public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, boolean abortBroadcast) throws RemoteException;
     public void attachApplication(IApplicationThread app) throws RemoteException;
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index d400eba..1f4c81d 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -21,6 +21,8 @@
 import android.app.Notification;
 import android.content.Intent;
 
+import com.android.internal.statusbar.StatusBarNotification;
+
 /** {@hide} */
 interface INotificationManager
 {
@@ -34,5 +36,8 @@
 
     void setNotificationsEnabledForPackage(String pkg, int uid, boolean enabled);
     boolean areNotificationsEnabledForPackage(String pkg, int uid);
+
+    StatusBarNotification[] getActiveNotifications(String callingPkg);
+    StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count);
 }
 
diff --git a/core/java/android/app/LoaderManager.java b/core/java/android/app/LoaderManager.java
index fd0f0bf..267555a 100644
--- a/core/java/android/app/LoaderManager.java
+++ b/core/java/android/app/LoaderManager.java
@@ -833,6 +833,7 @@
             for (int i = mLoaders.size()-1; i >= 0; i--) {
                 mLoaders.valueAt(i).destroy();
             }
+            mLoaders.clear();
         }
         
         if (DEBUG) Log.v(TAG, "Destroying Inactive in " + this);
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 3f8e16c..4a0ee48 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -25,15 +25,11 @@
 import android.media.AudioManager;
 import android.net.Uri;
 import android.os.Bundle;
-import android.os.IBinder;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.SystemClock;
 import android.os.UserHandle;
 import android.text.TextUtils;
-import android.util.IntProperty;
-import android.util.Log;
-import android.util.Slog;
 import android.util.TypedValue;
 import android.view.View;
 import android.widget.ProgressBar;
@@ -436,8 +432,17 @@
      * @hide
      */
     public static final String EXTRA_PEOPLE = "android.people";
+    /** @hide */
+    public static final String EXTRA_TITLE = "android.title";
+    /** @hide */
+    public static final String EXTRA_TEXT = "android.text";
+    /** @hide */
+    public static final String EXTRA_SUBTEXT = "android.subtext";
+    /** @hide */
+    public static final String EXTRA_SMALL_ICON = "android.icon";
 
-    private Bundle extras;
+    /** @hide */
+    public Bundle extras = new Bundle();
 
     /**
      * Structure to encapsulate an "action", including title and icon, that can be attached to a Notification.
@@ -589,11 +594,10 @@
 
         kind = parcel.createStringArray(); // may set kind to null
 
-        if (parcel.readInt() != 0) {
-            extras = parcel.readBundle();
-        }
+        extras = parcel.readBundle(); // may be null
 
-        actions = parcel.createTypedArray(Action.CREATOR);
+        actions = parcel.createTypedArray(Action.CREATOR); // may be null
+
         if (parcel.readInt() != 0) {
             bigContentView = RemoteViews.CREATOR.createFromParcel(parcel);
         }
@@ -602,7 +606,11 @@
     @Override
     public Notification clone() {
         Notification that = new Notification();
+        cloneInto(that);
+        return that;
+    }
 
+    private void cloneInto(Notification that) {
         that.when = this.when;
         that.icon = this.icon;
         that.number = this.number;
@@ -656,15 +664,16 @@
 
         }
 
-        that.actions = new Action[this.actions.length];
-        for(int i=0; i<this.actions.length; i++) {
-            that.actions[i] = this.actions[i].clone();
+        if (this.actions != null) {
+            that.actions = new Action[this.actions.length];
+            for(int i=0; i<this.actions.length; i++) {
+                that.actions[i] = this.actions[i].clone();
+            }
         }
+
         if (this.bigContentView != null) {
             that.bigContentView = this.bigContentView.clone();
         }
-
-        return that;
     }
 
     public int describeContents() {
@@ -745,14 +754,9 @@
 
         parcel.writeStringArray(kind); // ok for null
 
-        if (extras != null) {
-            parcel.writeInt(1);
-            extras.writeToParcel(parcel, 0);
-        } else {
-            parcel.writeInt(0);
-        }
+        parcel.writeBundle(extras); // null ok
 
-        parcel.writeTypedArray(actions, 0);
+        parcel.writeTypedArray(actions, 0); // null ok
 
         if (bigContentView != null) {
             parcel.writeInt(1);
@@ -800,35 +804,29 @@
     @Deprecated
     public void setLatestEventInfo(Context context,
             CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent) {
-        // TODO: rewrite this to use Builder
-        RemoteViews contentView = new RemoteViews(context.getPackageName(),
-                R.layout.notification_template_base);
-        if (this.icon != 0) {
-            contentView.setImageViewResource(R.id.icon, this.icon);
-        }
-        if (priority < PRIORITY_LOW) {
-            contentView.setInt(R.id.icon,
-                    "setBackgroundResource", R.drawable.notification_template_icon_low_bg);
-            contentView.setInt(R.id.status_bar_latest_event_content,
-                    "setBackgroundResource", R.drawable.notification_bg_low);
-        }
+        Notification.Builder builder = new Notification.Builder(context);
+
+        // First, ensure that key pieces of information that may have been set directly
+        // are preserved
+        builder.setWhen(this.when);
+        builder.setSmallIcon(this.icon);
+        builder.setPriority(this.priority);
+        builder.setTicker(this.tickerText);
+        builder.setNumber(this.number);
+        builder.mFlags = this.flags;
+        builder.setSound(this.sound, this.audioStreamType);
+        builder.setDefaults(this.defaults);
+        builder.setVibrate(this.vibrate);
+
+        // now apply the latestEventInfo fields
         if (contentTitle != null) {
-            contentView.setTextViewText(R.id.title, contentTitle);
+            builder.setContentTitle(contentTitle);
         }
         if (contentText != null) {
-            contentView.setTextViewText(R.id.text, contentText);
+            builder.setContentText(contentText);
         }
-        if (this.when != 0) {
-            contentView.setViewVisibility(R.id.time, View.VISIBLE);
-            contentView.setLong(R.id.time, "setTime", when);
-        }
-        if (this.number != 0) {
-            NumberFormat f = NumberFormat.getIntegerInstance();
-            contentView.setTextViewText(R.id.info, f.format(this.number));
-        }
-
-        this.contentView = contentView;
-        this.contentIntent = contentIntent;
+        builder.setContentIntent(contentIntent);
+        builder.buildInto(this);
     }
 
     @Override
@@ -1615,11 +1613,20 @@
                 n.kind = null;
             }
             n.priority = mPriority;
-            n.extras = mExtras != null ? new Bundle(mExtras) : null;
             if (mActions.size() > 0) {
                 n.actions = new Action[mActions.size()];
                 mActions.toArray(n.actions);
             }
+
+            n.extras = mExtras != null ? new Bundle(mExtras) : new Bundle();
+
+            // Store original information used in the construction of this object
+            n.extras.putCharSequence(EXTRA_TITLE, mContentTitle);
+            n.extras.putCharSequence(EXTRA_TEXT, mContentText);
+            n.extras.putCharSequence(EXTRA_SUBTEXT, mSubText);
+            n.extras.putInt(EXTRA_SMALL_ICON, mSmallIcon);
+            //n.extras.putByteArray(EXTRA_LARGE_ICON, ...
+
             return n;
         }
 
@@ -1642,6 +1649,16 @@
                 return buildUnstyled();
             }
         }
+
+        /**
+         * Apply this Builder to an existing {@link Notification} object.
+         *
+         * @hide
+         */
+        public Notification buildInto(Notification n) {
+            build().cloneInto(n);
+            return n;
+        }
     }
 
 
@@ -1882,6 +1899,9 @@
             checkBuilder();
             Notification wip = mBuilder.buildUnstyled();
             wip.bigContentView = makeBigContentView();
+
+            wip.extras.putCharSequence(EXTRA_TEXT, mBigText);
+
             return wip;
         }
     }
@@ -1981,6 +2001,14 @@
             checkBuilder();
             Notification wip = mBuilder.buildUnstyled();
             wip.bigContentView = makeBigContentView();
+
+            StringBuilder builder = new StringBuilder();
+            for (CharSequence str : mTexts) {
+                builder.append(str);
+                builder.append("\n");
+            }
+            wip.extras.putCharSequence(EXTRA_TEXT, builder);
+
             return wip;
         }
     }
diff --git a/core/java/android/app/UiAutomation.java b/core/java/android/app/UiAutomation.java
index e611f6d..7d02342 100644
--- a/core/java/android/app/UiAutomation.java
+++ b/core/java/android/app/UiAutomation.java
@@ -18,7 +18,9 @@
 
 import android.accessibilityservice.AccessibilityService.Callbacks;
 import android.accessibilityservice.AccessibilityService.IAccessibilityServiceClientWrapper;
+import android.accessibilityservice.AccessibilityServiceInfo;
 import android.accessibilityservice.IAccessibilityServiceClient;
+import android.accessibilityservice.IAccessibilityServiceConnection;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Point;
@@ -35,8 +37,6 @@
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.IAccessibilityInteractionConnection;
 
-import com.android.internal.util.Predicate;
-
 import java.util.ArrayList;
 import java.util.concurrent.TimeoutException;
 
@@ -45,7 +45,10 @@
  * introspection of the screen content. It relies on the platform accessibility
  * APIs to introspect the screen and to perform some actions on the remote view
  * tree. It also allows injecting of arbitrary raw input events simulating user
- * interaction with keyboards and touch devices.
+ * interaction with keyboards and touch devices. One can think of a UiAutomation
+ * as a special type of {@link android.accessibilityservice.AccessibilityService}
+ * which does not provide hooks for the service life cycle and exposes other
+ * APIs that are useful for UI test automation.
  * <p>
  * The APIs exposed by this class are low-level to maximize flexibility when
  * developing UI test automation tools and libraries. Generally, a UiAutomation
@@ -130,6 +133,21 @@
     }
 
     /**
+     * Listener for filtering accessibility events.
+     */
+    public static interface AccessibilityEventFilter {
+
+        /**
+         * Callback for determining whether an event is accepted or
+         * it is filtered out.
+         *
+         * @param event The event to process.
+         * @return True if the event is accepted, false to filter it out.
+         */
+        public boolean accept(AccessibilityEvent event);
+    }
+
+    /**
      * Creates a new instance that will handle callbacks from the accessibility
      * layer on the thread of the provided looper and perform requests for privileged
      * operations on the provided connection.
@@ -243,6 +261,90 @@
     }
 
     /**
+     * Performs a global action. Such an action can be performed at any moment
+     * regardless of the current application or user location in that application.
+     * For example going back, going home, opening recents, etc.
+     *
+     * @param action The action to perform.
+     * @return Whether the action was successfully performed.
+     *
+     * @see AccessibilityService#GLOBAL_ACTION_BACK
+     * @see AccessibilityService#GLOBAL_ACTION_HOME
+     * @see AccessibilityService#GLOBAL_ACTION_NOTIFICATIONS
+     * @see AccessibilityService#GLOBAL_ACTION_RECENTS
+     */
+    public final boolean performGlobalAction(int action) {
+        final IAccessibilityServiceConnection connection;
+        synchronized (mLock) {
+            throwIfNotConnectedLocked();
+            connection = AccessibilityInteractionClient.getInstance()
+                    .getConnection(mConnectionId);
+        }
+        // Calling out without a lock held.
+        if (connection != null) {
+            try {
+                return connection.performGlobalAction(action);
+            } catch (RemoteException re) {
+                Log.w(LOG_TAG, "Error while calling performGlobalAction", re);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Gets the an {@link AccessibilityServiceInfo} describing this UiAutomation.
+     * This method is useful if one wants to change some of the dynamically
+     * configurable properties at runtime.
+     *
+     * @return The accessibility service info.
+     *
+     * @see AccessibilityServiceInfo
+     */
+    public final AccessibilityServiceInfo getServiceInfo() {
+        final IAccessibilityServiceConnection connection;
+        synchronized (mLock) {
+            throwIfNotConnectedLocked();
+            connection = AccessibilityInteractionClient.getInstance()
+                    .getConnection(mConnectionId);
+        }
+        // Calling out without a lock held.
+        if (connection != null) {
+            try {
+                return connection.getServiceInfo();
+            } catch (RemoteException re) {
+                Log.w(LOG_TAG, "Error while getting AccessibilityServiceInfo", re);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Sets the {@link AccessibilityServiceInfo} that describes how this
+     * UiAutomation will be handled by the platform accessibility layer.
+     *
+     * @param info The info.
+     *
+     * @see AccessibilityServiceInfo
+     */
+    public final void setServiceInfo(AccessibilityServiceInfo info) {
+        final IAccessibilityServiceConnection connection;
+        synchronized (mLock) {
+            throwIfNotConnectedLocked();
+            AccessibilityInteractionClient.getInstance().clearCache();
+            connection = AccessibilityInteractionClient.getInstance()
+                    .getConnection(mConnectionId);
+        }
+        // Calling out without a lock held.
+        if (connection != null) {
+            try {
+                connection.setServiceInfo(info);
+            } catch (RemoteException re) {
+                Log.w(LOG_TAG, "Error while setting AccessibilityServiceInfo", re);
+            }
+        }
+    }
+
+    /**
      * Gets the root {@link AccessibilityNodeInfo} in the active window.
      *
      * @return The root info.
@@ -339,7 +441,7 @@
      * @throws TimeoutException If the expected event is not received within the timeout.
      */
     public AccessibilityEvent executeAndWaitForEvent(Runnable command,
-            Predicate<AccessibilityEvent> filter, long timeoutMillis) throws TimeoutException {
+            AccessibilityEventFilter filter, long timeoutMillis) throws TimeoutException {
         synchronized (mLock) {
             throwIfNotConnectedLocked();
 
@@ -363,7 +465,7 @@
                         if (event.getEventTime() <= executionStartTimeMillis) {
                             continue;
                         }
-                        if (filter.apply(event)) {
+                        if (filter.accept(event)) {
                             return event;
                         }
                         event.recycle();
diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java
index e66efd5..90ee0ac 100644
--- a/core/java/android/content/ContentProvider.java
+++ b/core/java/android/content/ContentProvider.java
@@ -174,8 +174,8 @@
      */
     class Transport extends ContentProviderNative {
         AppOpsManager mAppOpsManager = null;
-        int mReadOp = -1;
-        int mWriteOp = -1;
+        int mReadOp = AppOpsManager.OP_NONE;
+        int mWriteOp = AppOpsManager.OP_NONE;
 
         ContentProvider getContentProvider() {
             return ContentProvider.this;
@@ -274,7 +274,7 @@
 
         @Override
         public Bundle call(String callingPkg, String method, String arg, Bundle extras) {
-            return ContentProvider.this.call(method, arg, extras);
+            return ContentProvider.this.callFromPackage(callingPkg, method, arg, extras);
         }
 
         @Override
@@ -309,7 +309,7 @@
 
         private int enforceReadPermission(String callingPkg, Uri uri) throws SecurityException {
             enforceReadPermissionInner(uri);
-            if (mAppOpsManager != null) {
+            if (mReadOp != AppOpsManager.OP_NONE) {
                 return mAppOpsManager.noteOp(mReadOp, Binder.getCallingUid(), callingPkg);
             }
             return AppOpsManager.MODE_ALLOWED;
@@ -378,7 +378,7 @@
 
         private int enforceWritePermission(String callingPkg, Uri uri) throws SecurityException {
             enforceWritePermissionInner(uri);
-            if (mAppOpsManager != null) {
+            if (mWriteOp != AppOpsManager.OP_NONE) {
                 return mAppOpsManager.noteOp(mWriteOp, Binder.getCallingUid(), callingPkg);
             }
             return AppOpsManager.MODE_ALLOWED;
@@ -529,6 +529,11 @@
         mTransport.mWriteOp = writeOp;
     }
 
+    /** @hide */
+    public AppOpsManager getAppOpsManager() {
+        return mTransport.mAppOpsManager;
+    }
+
     /**
      * Implement this to initialize your content provider on startup.
      * This method is called for all registered content providers on the
@@ -1189,6 +1194,15 @@
     }
 
     /**
+     * @hide
+     * Front-end to {@link #call(String, String, android.os.Bundle)} that provides the name
+     * of the calling package.
+     */
+    public Bundle callFromPackage(String callingPackag, String method, String arg, Bundle extras) {
+        return call(method, arg, extras);
+    }
+
+    /**
      * Call a provider-defined method.  This can be used to implement
      * interfaces that are cheaper and/or unnatural for a table-like
      * model.
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java
index f42e845..fefd343 100644
--- a/core/java/android/content/ContentResolver.java
+++ b/core/java/android/content/ContentResolver.java
@@ -193,6 +193,23 @@
         return SYNC_ERROR_NAMES[error - 1];
     }
 
+    /** @hide */
+    public static int syncErrorStringToInt(String error) {
+        for (int i = 0, n = SYNC_ERROR_NAMES.length; i < n; i++) {
+            if (SYNC_ERROR_NAMES[i].equals(error)) {
+                return i + 1;
+            }
+        }
+        if (error != null) {
+            try {
+                return Integer.parseInt(error);
+            } catch (NumberFormatException e) {
+                Log.d(TAG, "error parsing sync error: " + error);
+            }
+        }
+        return 0;
+    }
+
     public static final int SYNC_OBSERVER_TYPE_SETTINGS = 1<<0;
     public static final int SYNC_OBSERVER_TYPE_PENDING = 1<<1;
     public static final int SYNC_OBSERVER_TYPE_ACTIVE = 1<<2;
@@ -549,7 +566,7 @@
      * ContentProvider.openFile}.
      * @return Returns a new ParcelFileDescriptor pointing to the file.  You
      * own this descriptor and are responsible for closing it when done.
-     * @throws FileNotFoundException Throws FileNotFoundException of no
+     * @throws FileNotFoundException Throws FileNotFoundException if no
      * file exists under the URI or the mode is invalid.
      * @see #openAssetFileDescriptor(Uri, String)
      */
@@ -1080,9 +1097,9 @@
         if (!SCHEME_CONTENT.equals(uri.getScheme())) {
             return null;
         }
-        String auth = uri.getAuthority();
+        final String auth = uri.getAuthority();
         if (auth != null) {
-            return acquireProvider(mContext, uri.getAuthority());
+            return acquireProvider(mContext, auth);
         }
         return null;
     }
@@ -1099,9 +1116,9 @@
         if (!SCHEME_CONTENT.equals(uri.getScheme())) {
             return null;
         }
-        String auth = uri.getAuthority();
+        final String auth = uri.getAuthority();
         if (auth != null) {
-            return acquireExistingProvider(mContext, uri.getAuthority());
+            return acquireExistingProvider(mContext, auth);
         }
         return null;
     }
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index f7c28b6..c964af4 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -1138,6 +1138,14 @@
             String receiverPermission);
 
     /**
+     * Like {@link #sendBroadcast(Intent, String)}, but also allows specification
+     * of an assocated app op as per {@link android.app.AppOpsManager}.
+     * @hide
+     */
+    public abstract void sendBroadcast(Intent intent,
+            String receiverPermission, int appOp);
+
+    /**
      * Broadcast the given intent to all interested BroadcastReceivers, delivering
      * them one at a time to allow more preferred receivers to consume the
      * broadcast before it is delivered to less preferred receivers.  This
@@ -1208,6 +1216,17 @@
             Bundle initialExtras);
 
     /**
+     * Like {@link #sendOrderedBroadcast(Intent, String, BroadcastReceiver, android.os.Handler,
+     * int, String, android.os.Bundle)}, but also allows specification
+     * of an assocated app op as per {@link android.app.AppOpsManager}.
+     * @hide
+     */
+    public abstract void sendOrderedBroadcast(Intent intent,
+            String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
+            Handler scheduler, int initialCode, String initialData,
+            Bundle initialExtras);
+
+    /**
      * Version of {@link #sendBroadcast(Intent)} that allows you to specify the
      * user the broadcast will be sent to.  This is not available to applications
      * that are not pre-installed on the system image.  Using it requires holding
diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java
index b63f45e..736dd99 100644
--- a/core/java/android/content/ContextWrapper.java
+++ b/core/java/android/content/ContextWrapper.java
@@ -349,6 +349,12 @@
         mBase.sendBroadcast(intent, receiverPermission);
     }
 
+    /** @hide */
+    @Override
+    public void sendBroadcast(Intent intent, String receiverPermission, int appOp) {
+        mBase.sendBroadcast(intent, receiverPermission, appOp);
+    }
+
     @Override
     public void sendOrderedBroadcast(Intent intent,
             String receiverPermission) {
@@ -365,6 +371,17 @@
                 initialData, initialExtras);
     }
 
+    /** @hide */
+    @Override
+    public void sendOrderedBroadcast(
+        Intent intent, String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
+        Handler scheduler, int initialCode, String initialData,
+        Bundle initialExtras) {
+        mBase.sendOrderedBroadcast(intent, receiverPermission, appOp,
+                resultReceiver, scheduler, initialCode,
+                initialData, initialExtras);
+    }
+
     @Override
     public void sendBroadcastAsUser(Intent intent, UserHandle user) {
         mBase.sendBroadcastAsUser(intent, user);
diff --git a/core/java/android/content/SyncStatusInfo.java b/core/java/android/content/SyncStatusInfo.java
index 49e3e35..ff628d9 100644
--- a/core/java/android/content/SyncStatusInfo.java
+++ b/core/java/android/content/SyncStatusInfo.java
@@ -51,14 +51,13 @@
     }
 
     public int getLastFailureMesgAsInt(int def) {
-        try {
-            if (lastFailureMesg != null) {
-                return Integer.parseInt(lastFailureMesg);
-            }
-        } catch (NumberFormatException e) {
-            Log.d(TAG, "error parsing lastFailureMesg of " + lastFailureMesg, e);
+        final int i = ContentResolver.syncErrorStringToInt(lastFailureMesg);
+        if (i > 0) {
+            return i;
+        } else {
+            Log.d(TAG, "Unknown lastFailureMesg:" + lastFailureMesg);
+            return def;
         }
-        return def;
     }
 
     public int describeContents() {
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index d80598c..c507245 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -666,6 +666,15 @@
     public static final int INSTALL_FAILED_INTERNAL_ERROR = -110;
 
     /**
+     * Installation failed return code: this is passed to the {@link IPackageInstallObserver} by
+     * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
+     * if the system failed to install the package because the user is restricted from installing
+     * apps.
+     * @hide
+     */
+    public static final int INSTALL_FAILED_USER_RESTRICTED = -111;
+
+    /**
      * Flag parameter for {@link #deletePackage} to indicate that you don't want to delete the
      * package's data directory.
      *
@@ -710,6 +719,15 @@
     public static final int DELETE_FAILED_DEVICE_POLICY_MANAGER = -2;
 
     /**
+     * Deletion failed return code: this is passed to the
+     * {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system
+     * failed to delete the package since the user is restricted.
+     *
+     * @hide
+     */
+    public static final int DELETE_FAILED_USER_RESTRICTED = -3;
+
+    /**
      * Return code that is passed to the {@link IPackageMoveObserver} by
      * {@link #movePackage(android.net.Uri, IPackageMoveObserver)} when the
      * package has been successfully moved by the system.
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index 0a03e8c..24a0bb5 100644
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -77,7 +77,7 @@
 
     private static final int ID_OTHER = 0x01000004;
 
-    private static final Object mSync = new Object();
+    private static final Object sSync = new Object();
     /*package*/ static Resources mSystem = null;
     
     // Information about preloaded resources.  Note that they are not
@@ -92,17 +92,18 @@
     private static boolean sPreloaded;
     private static int sPreloadedDensity;
 
-    /*package*/ final TypedValue mTmpValue = new TypedValue();
-    /*package*/ final Configuration mTmpConfig = new Configuration();
+    // These are protected by mAccessLock.
 
-    // These are protected by the mTmpValue lock.
-    private final LongSparseArray<WeakReference<Drawable.ConstantState> > mDrawableCache
+    /*package*/ final Object mAccessLock = new Object();
+    /*package*/ final Configuration mTmpConfig = new Configuration();
+    /*package*/ TypedValue mTmpValue = new TypedValue();
+    /*package*/ final LongSparseArray<WeakReference<Drawable.ConstantState> > mDrawableCache
             = new LongSparseArray<WeakReference<Drawable.ConstantState> >();
-    private final LongSparseArray<WeakReference<ColorStateList> > mColorStateListCache
+    /*package*/ final LongSparseArray<WeakReference<ColorStateList> > mColorStateListCache
             = new LongSparseArray<WeakReference<ColorStateList> >();
-    private final LongSparseArray<WeakReference<Drawable.ConstantState> > mColorDrawableCache
+    /*package*/ final LongSparseArray<WeakReference<Drawable.ConstantState> > mColorDrawableCache
             = new LongSparseArray<WeakReference<Drawable.ConstantState> >();
-    private boolean mPreloading;
+    /*package*/ boolean mPreloading;
 
     /*package*/ TypedArray mCachedStyledAttributes = null;
     RuntimeException mLastRetrievedAttrs = null;
@@ -196,7 +197,7 @@
      * on orientation, etc). 
      */
     public static Resources getSystem() {
-        synchronized (mSync) {
+        synchronized (sSync) {
             Resources ret = mSystem;
             if (ret == null) {
                 ret = new Resources();
@@ -266,7 +267,7 @@
     }
 
     private NativePluralRules getPluralRule() {
-        synchronized (mSync) {
+        synchronized (sSync) {
             if (mPluralRule == null) {
                 mPluralRule = NativePluralRules.forLocale(mConfiguration.locale);
             }
@@ -517,8 +518,11 @@
      * @see #getDimensionPixelSize
      */
     public float getDimension(int id) throws NotFoundException {
-        synchronized (mTmpValue) {
+        synchronized (mAccessLock) {
             TypedValue value = mTmpValue;
+            if (value == null) {
+                mTmpValue = value = new TypedValue();
+            }
             getValue(id, value, true);
             if (value.type == TypedValue.TYPE_DIMENSION) {
                 return TypedValue.complexToDimension(value.data, mMetrics);
@@ -549,8 +553,11 @@
      * @see #getDimensionPixelSize
      */
     public int getDimensionPixelOffset(int id) throws NotFoundException {
-        synchronized (mTmpValue) {
+        synchronized (mAccessLock) {
             TypedValue value = mTmpValue;
+            if (value == null) {
+                mTmpValue = value = new TypedValue();
+            }
             getValue(id, value, true);
             if (value.type == TypedValue.TYPE_DIMENSION) {
                 return TypedValue.complexToDimensionPixelOffset(
@@ -583,8 +590,11 @@
      * @see #getDimensionPixelOffset
      */
     public int getDimensionPixelSize(int id) throws NotFoundException {
-        synchronized (mTmpValue) {
+        synchronized (mAccessLock) {
             TypedValue value = mTmpValue;
+            if (value == null) {
+                mTmpValue = value = new TypedValue();
+            }
             getValue(id, value, true);
             if (value.type == TypedValue.TYPE_DIMENSION) {
                 return TypedValue.complexToDimensionPixelSize(
@@ -614,8 +624,11 @@
      * @throws NotFoundException Throws NotFoundException if the given ID does not exist.
      */
     public float getFraction(int id, int base, int pbase) {
-        synchronized (mTmpValue) {
+        synchronized (mAccessLock) {
             TypedValue value = mTmpValue;
+            if (value == null) {
+                mTmpValue = value = new TypedValue();
+            }
             getValue(id, value, true);
             if (value.type == TypedValue.TYPE_FRACTION) {
                 return TypedValue.complexToFraction(value.data, base, pbase);
@@ -654,11 +667,23 @@
      * @return Drawable An object that can be used to draw this resource.
      */
     public Drawable getDrawable(int id) throws NotFoundException {
-        synchronized (mTmpValue) {
-            TypedValue value = mTmpValue;
+        TypedValue value;
+        synchronized (mAccessLock) {
+            value = mTmpValue;
+            if (value == null) {
+                value = new TypedValue();
+            } else {
+                mTmpValue = null;
+            }
             getValue(id, value, true);
-            return loadDrawable(value, id);
         }
+        Drawable res = loadDrawable(value, id);
+        synchronized (mAccessLock) {
+            if (mTmpValue == null) {
+                mTmpValue = value;
+            }
+        }
+        return res;
     }
 
     /**
@@ -681,8 +706,14 @@
      * @return Drawable An object that can be used to draw this resource.
      */
     public Drawable getDrawableForDensity(int id, int density) throws NotFoundException {
-        synchronized (mTmpValue) {
-            TypedValue value = mTmpValue;
+        TypedValue value;
+        synchronized (mAccessLock) {
+            value = mTmpValue;
+            if (value == null) {
+                value = new TypedValue();
+            } else {
+                mTmpValue = null;
+            }
             getValueForDensity(id, density, value, true);
 
             /*
@@ -699,9 +730,15 @@
                     value.density = (value.density * mMetrics.densityDpi) / density;
                 }
             }
-
-            return loadDrawable(value, id);
         }
+
+        Drawable res = loadDrawable(value, id);
+        synchronized (mAccessLock) {
+            if (mTmpValue == null) {
+                mTmpValue = value;
+            }
+        }
+        return res;
     }
 
     /**
@@ -739,20 +776,31 @@
      * @return Returns a single color value in the form 0xAARRGGBB.
      */
     public int getColor(int id) throws NotFoundException {
-        synchronized (mTmpValue) {
-            TypedValue value = mTmpValue;
+        TypedValue value;
+        synchronized (mAccessLock) {
+            value = mTmpValue;
+            if (value == null) {
+                value = new TypedValue();
+            }
             getValue(id, value, true);
             if (value.type >= TypedValue.TYPE_FIRST_INT
                 && value.type <= TypedValue.TYPE_LAST_INT) {
+                mTmpValue = value;
                 return value.data;
-            } else if (value.type == TypedValue.TYPE_STRING) {
-                ColorStateList csl = loadColorStateList(mTmpValue, id);
-                return csl.getDefaultColor();
+            } else if (value.type != TypedValue.TYPE_STRING) {
+                throw new NotFoundException(
+                    "Resource ID #0x" + Integer.toHexString(id) + " type #0x"
+                    + Integer.toHexString(value.type) + " is not valid");
             }
-            throw new NotFoundException(
-                "Resource ID #0x" + Integer.toHexString(id) + " type #0x"
-                + Integer.toHexString(value.type) + " is not valid");
+            mTmpValue = null;
         }
+        ColorStateList csl = loadColorStateList(value, id);
+        synchronized (mAccessLock) {
+            if (mTmpValue == null) {
+                mTmpValue = value;
+            }
+        }
+        return csl.getDefaultColor();
     }
 
     /**
@@ -770,11 +818,23 @@
      * solid color or multiple colors that can be selected based on a state.
      */
     public ColorStateList getColorStateList(int id) throws NotFoundException {
-        synchronized (mTmpValue) {
-            TypedValue value = mTmpValue;
+        TypedValue value;
+        synchronized (mAccessLock) {
+            value = mTmpValue;
+            if (value == null) {
+                value = new TypedValue();
+            } else {
+                mTmpValue = null;
+            }
             getValue(id, value, true);
-            return loadColorStateList(value, id);
         }
+        ColorStateList res = loadColorStateList(value, id);
+        synchronized (mAccessLock) {
+            if (mTmpValue == null) {
+                mTmpValue = value;
+            }
+        }
+        return res;
     }
 
     /**
@@ -791,8 +851,11 @@
      * @return Returns the boolean value contained in the resource.
      */
     public boolean getBoolean(int id) throws NotFoundException {
-        synchronized (mTmpValue) {
+        synchronized (mAccessLock) {
             TypedValue value = mTmpValue;
+            if (value == null) {
+                mTmpValue = value = new TypedValue();
+            }
             getValue(id, value, true);
             if (value.type >= TypedValue.TYPE_FIRST_INT
                 && value.type <= TypedValue.TYPE_LAST_INT) {
@@ -816,8 +879,11 @@
      * @return Returns the integer value contained in the resource.
      */
     public int getInteger(int id) throws NotFoundException {
-        synchronized (mTmpValue) {
+        synchronized (mAccessLock) {
             TypedValue value = mTmpValue;
+            if (value == null) {
+                mTmpValue = value = new TypedValue();
+            }
             getValue(id, value, true);
             if (value.type >= TypedValue.TYPE_FIRST_INT
                 && value.type <= TypedValue.TYPE_LAST_INT) {
@@ -917,9 +983,22 @@
      * 
      */
     public InputStream openRawResource(int id) throws NotFoundException {
-        synchronized (mTmpValue) {
-            return openRawResource(id, mTmpValue);
+        TypedValue value;
+        synchronized (mAccessLock) {
+            value = mTmpValue;
+            if (value == null) {
+                value = new TypedValue();
+            } else {
+                mTmpValue = null;
+            }
         }
+        InputStream res = openRawResource(id, value);
+        synchronized (mAccessLock) {
+            if (mTmpValue == null) {
+                mTmpValue = value;
+            }
+        }
+        return res;
     }
 
     /**
@@ -971,22 +1050,32 @@
      * 
      */
     public AssetFileDescriptor openRawResourceFd(int id) throws NotFoundException {
-        synchronized (mTmpValue) {
-            TypedValue value = mTmpValue;
-            getValue(id, value, true);
-
-            try {
-                return mAssets.openNonAssetFd(
-                    value.assetCookie, value.string.toString());
-            } catch (Exception e) {
-                NotFoundException rnf = new NotFoundException(
-                    "File " + value.string.toString()
-                    + " from drawable resource ID #0x"
-                    + Integer.toHexString(id));
-                rnf.initCause(e);
-                throw rnf;
+        TypedValue value;
+        synchronized (mAccessLock) {
+            value = mTmpValue;
+            if (value == null) {
+                value = new TypedValue();
+            } else {
+                mTmpValue = null;
             }
-
+            getValue(id, value, true);
+        }
+        try {
+            return mAssets.openNonAssetFd(
+                value.assetCookie, value.string.toString());
+        } catch (Exception e) {
+            NotFoundException rnf = new NotFoundException(
+                "File " + value.string.toString()
+                + " from drawable resource ID #0x"
+                + Integer.toHexString(id));
+            rnf.initCause(e);
+            throw rnf;
+        } finally {
+            synchronized (mAccessLock) {
+                if (mTmpValue == null) {
+                    mTmpValue = value;
+                }
+            }
         }
     }
 
@@ -1407,7 +1496,7 @@
      */
     public void updateConfiguration(Configuration config,
             DisplayMetrics metrics, CompatibilityInfo compat) {
-        synchronized (mTmpValue) {
+        synchronized (mAccessLock) {
             if (false) {
                 Slog.i(TAG, "**** Updating config of " + this + ": old config is "
                         + mConfiguration + " old compat is " + mCompatibilityInfo);
@@ -1497,21 +1586,21 @@
                         + " final compat is " + mCompatibilityInfo);
             }
 
-            clearDrawableCache(mDrawableCache, configChanges);
-            clearDrawableCache(mColorDrawableCache, configChanges);
+            clearDrawableCacheLocked(mDrawableCache, configChanges);
+            clearDrawableCacheLocked(mColorDrawableCache, configChanges);
 
             mColorStateListCache.clear();
 
             flushLayoutCache();
         }
-        synchronized (mSync) {
+        synchronized (sSync) {
             if (mPluralRule != null) {
                 mPluralRule = NativePluralRules.forLocale(config.locale);
             }
         }
     }
 
-    private void clearDrawableCache(
+    private void clearDrawableCacheLocked(
             LongSparseArray<WeakReference<ConstantState>> cache,
             int configChanges) {
         int N = cache.size();
@@ -1631,6 +1720,9 @@
      *         resource was found.  (0 is not a valid resource ID.)
      */
     public int getIdentifier(String name, String defType, String defPackage) {
+        if (name == null) {
+            throw new NullPointerException("name is null");
+        }
         try {
             return Integer.parseInt(name);
         } catch (Exception e) {
@@ -1846,7 +1938,7 @@
      * {@hide}
      */
     public final void startPreloading() {
-        synchronized (mSync) {
+        synchronized (sSync) {
             if (sPreloaded) {
                 throw new IllegalStateException("Resources already preloaded");
             }
@@ -1990,7 +2082,7 @@
                         }
                     }
                 } else {
-                    synchronized (mTmpValue) {
+                    synchronized (mAccessLock) {
                         //Log.i(TAG, "Saving cached drawable @ #" +
                         //        Integer.toHexString(key.intValue())
                         //        + " in " + this + ": " + cs);
@@ -2010,7 +2102,7 @@
     private Drawable getCachedDrawable(
             LongSparseArray<WeakReference<ConstantState>> drawableCache,
             long key) {
-        synchronized (mTmpValue) {
+        synchronized (mAccessLock) {
             WeakReference<Drawable.ConstantState> wr = drawableCache.get(key);
             if (wr != null) {   // we have the key
                 Drawable.ConstantState entry = wr.get();
@@ -2102,7 +2194,7 @@
                     sPreloadedColorStateLists.put(key, csl);
                 }
             } else {
-                synchronized (mTmpValue) {
+                synchronized (mAccessLock) {
                     //Log.i(TAG, "Saving cached color state list @ #" +
                     //        Integer.toHexString(key.intValue())
                     //        + " in " + this + ": " + csl);
@@ -2115,7 +2207,7 @@
     }
 
     private ColorStateList getCachedColorStateList(long key) {
-        synchronized (mTmpValue) {
+        synchronized (mAccessLock) {
             WeakReference<ColorStateList> wr = mColorStateListCache.get(key);
             if (wr != null) {   // we have the key
                 ColorStateList entry = wr.get();
@@ -2134,8 +2226,11 @@
 
     /*package*/ XmlResourceParser loadXmlResourceParser(int id, String type)
             throws NotFoundException {
-        synchronized (mTmpValue) {
+        synchronized (mAccessLock) {
             TypedValue value = mTmpValue;
+            if (value == null) {
+                mTmpValue = value = new TypedValue();
+            }
             getValue(id, value, true);
             if (value.type == TypedValue.TYPE_STRING) {
                 return loadXmlResourceParser(value.string.toString(), id,
@@ -2197,7 +2292,7 @@
     }
 
     private TypedArray getCachedStyledAttributes(int len) {
-        synchronized (mTmpValue) {
+        synchronized (mAccessLock) {
             TypedArray attrs = mCachedStyledAttributes;
             if (attrs != null) {
                 mCachedStyledAttributes = null;
diff --git a/core/java/android/content/res/TypedArray.java b/core/java/android/content/res/TypedArray.java
index 2968fbb..27dddd4 100644
--- a/core/java/android/content/res/TypedArray.java
+++ b/core/java/android/content/res/TypedArray.java
@@ -687,7 +687,7 @@
      * Give back a previously retrieved array, for later re-use.
      */
     public void recycle() {
-        synchronized (mResources.mTmpValue) {
+        synchronized (mResources.mAccessLock) {
             TypedArray cached = mResources.mCachedStyledAttributes;
             if (cached == null || cached.mData.length < mData.length) {
                 mXml = null;
diff --git a/core/java/android/database/sqlite/SQLiteConnection.java b/core/java/android/database/sqlite/SQLiteConnection.java
index 6f7c1f3..0017c46a 100644
--- a/core/java/android/database/sqlite/SQLiteConnection.java
+++ b/core/java/android/database/sqlite/SQLiteConnection.java
@@ -216,6 +216,13 @@
         setJournalSizeLimit();
         setAutoCheckpointInterval();
         setLocaleFromConfiguration();
+
+        // Register custom functions.
+        final int functionCount = mConfiguration.customFunctions.size();
+        for (int i = 0; i < functionCount; i++) {
+            SQLiteCustomFunction function = mConfiguration.customFunctions.get(i);
+            nativeRegisterCustomFunction(mConnectionPtr, function);
+        }
     }
 
     private void dispose(boolean finalized) {
@@ -974,7 +981,7 @@
         if (count != statement.mNumParameters) {
             throw new SQLiteBindOrColumnIndexOutOfRangeException(
                     "Expected " + statement.mNumParameters + " bind arguments but "
-                    + bindArgs.length + " were provided.");
+                    + count + " were provided.");
         }
         if (count == 0) {
             return;
diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java
index e2d44f2..60ccc61 100644
--- a/core/java/android/database/sqlite/SQLiteDatabase.java
+++ b/core/java/android/database/sqlite/SQLiteDatabase.java
@@ -1481,6 +1481,9 @@
      * @param table the table to delete from
      * @param whereClause the optional WHERE clause to apply when deleting.
      *            Passing null will delete all rows.
+     * @param whereArgs You may include ?s in the where clause, which
+     *            will be replaced by the values from whereArgs. The values
+     *            will be bound as Strings.
      * @return the number of rows affected if a whereClause is passed in, 0
      *         otherwise. To remove all rows and get a count pass "1" as the
      *         whereClause.
@@ -1508,6 +1511,9 @@
      *            valid value that will be translated to NULL.
      * @param whereClause the optional WHERE clause to apply when updating.
      *            Passing null will update all rows.
+     * @param whereArgs You may include ?s in the where clause, which
+     *            will be replaced by the values from whereArgs. The values
+     *            will be bound as Strings.
      * @return the number of rows affected
      */
     public int update(String table, ContentValues values, String whereClause, String[] whereArgs) {
@@ -1522,6 +1528,9 @@
      *            valid value that will be translated to NULL.
      * @param whereClause the optional WHERE clause to apply when updating.
      *            Passing null will update all rows.
+     * @param whereArgs You may include ?s in the where clause, which
+     *            will be replaced by the values from whereArgs. The values
+     *            will be bound as Strings.
      * @param conflictAlgorithm for update conflict resolver
      * @return the number of rows affected
      */
diff --git a/core/java/android/database/sqlite/SQLiteSession.java b/core/java/android/database/sqlite/SQLiteSession.java
index beb5b3a..d80ab1f 100644
--- a/core/java/android/database/sqlite/SQLiteSession.java
+++ b/core/java/android/database/sqlite/SQLiteSession.java
@@ -926,7 +926,7 @@
     }
 
     private void throwIfNestedTransaction() {
-        if (mTransactionStack == null && mTransactionStack.mParent != null) {
+        if (hasNestedTransaction()) {
             throw new IllegalStateException("Cannot perform this operation because "
                     + "a nested transaction is in progress.");
         }
diff --git a/core/java/android/hardware/Sensor.java b/core/java/android/hardware/Sensor.java
index e0c9d2c..41384d2 100644
--- a/core/java/android/hardware/Sensor.java
+++ b/core/java/android/hardware/Sensor.java
@@ -194,7 +194,8 @@
         return mMinDelay;
     }
 
-    int getHandle() {
+    /** @hide */
+    public int getHandle() {
         return mHandle;
     }
 
diff --git a/core/java/android/hardware/SensorManager.java b/core/java/android/hardware/SensorManager.java
index b8ad818..c0d2fae 100644
--- a/core/java/android/hardware/SensorManager.java
+++ b/core/java/android/hardware/SensorManager.java
@@ -1314,56 +1314,4 @@
             return mLegacySensorManager;
         }
     }
-
-    /**
-     * Sensor event pool implementation.
-     * @hide
-     */
-    protected static final class SensorEventPool {
-        private final int mPoolSize;
-        private final SensorEvent mPool[];
-        private int mNumItemsInPool;
-
-        private SensorEvent createSensorEvent() {
-            // maximal size for all legacy events is 3
-            return new SensorEvent(3);
-        }
-
-        SensorEventPool(int poolSize) {
-            mPoolSize = poolSize;
-            mNumItemsInPool = poolSize;
-            mPool = new SensorEvent[poolSize];
-        }
-
-        SensorEvent getFromPool() {
-            SensorEvent t = null;
-            synchronized (this) {
-                if (mNumItemsInPool > 0) {
-                    // remove the "top" item from the pool
-                    final int index = mPoolSize - mNumItemsInPool;
-                    t = mPool[index];
-                    mPool[index] = null;
-                    mNumItemsInPool--;
-                }
-            }
-            if (t == null) {
-                // the pool was empty or this item was removed from the pool for
-                // the first time. In any case, we need to create a new item.
-                t = createSensorEvent();
-            }
-            return t;
-        }
-
-        void returnToPool(SensorEvent t) {
-            synchronized (this) {
-                // is there space left in the pool?
-                if (mNumItemsInPool < mPoolSize) {
-                    // if so, return the item to the pool
-                    mNumItemsInPool++;
-                    final int index = mPoolSize - mNumItemsInPool;
-                    mPool[index] = t;
-                }
-            }
-        }
-    }
 }
diff --git a/core/java/android/hardware/SystemSensorManager.java b/core/java/android/hardware/SystemSensorManager.java
index 7375e7d..9591631 100644
--- a/core/java/android/hardware/SystemSensorManager.java
+++ b/core/java/android/hardware/SystemSensorManager.java
@@ -16,18 +16,19 @@
 
 package android.hardware;
 
-import android.os.Looper;
-import android.os.Process;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+
+import dalvik.system.CloseGuard;
+
 import android.os.Handler;
-import android.os.Message;
-import android.util.Log;
+import android.os.Looper;
+import android.os.MessageQueue;
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * Sensor manager implementation that communicates with the built-in
  * system sensors.
@@ -35,236 +36,43 @@
  * @hide
  */
 public class SystemSensorManager extends SensorManager {
-    private static final int SENSOR_DISABLE = -1;
-    private static boolean sSensorModuleInitialized = false;
-    private static ArrayList<Sensor> sFullSensorsList = new ArrayList<Sensor>();
-    /* The thread and the sensor list are global to the process
-     * but the actual thread is spawned on demand */
-    private static SensorThread sSensorThread;
-    private static int sQueue;
+    private static native void nativeClassInit();
+    private static native int nativeGetNextSensor(Sensor sensor, int next);
 
-    // Used within this module from outside SensorManager, don't make private
-    static SparseArray<Sensor> sHandleToSensor = new SparseArray<Sensor>();
-    static final ArrayList<ListenerDelegate> sListeners =
-        new ArrayList<ListenerDelegate>();
+    private static boolean sSensorModuleInitialized = false;
+    private static final Object sSensorModuleLock = new Object();
+    private static final ArrayList<Sensor> sFullSensorsList = new ArrayList<Sensor>();
+    private static final SparseArray<Sensor> sHandleToSensor = new SparseArray<Sensor>();
+
+    // Listener list
+    private final ArrayList<SensorEventListenerSensorPair> mListenerDelegates = new ArrayList<SensorEventListenerSensorPair>();
 
     // Common pool of sensor events.
-    static SensorEventPool sPool;
+    private static SensorEventPool sPool;
 
     // Looper associated with the context in which this instance was created.
-    final Looper mMainLooper;
+    private final Looper mMainLooper;
 
-    /*-----------------------------------------------------------------------*/
+    // maps a SensorEventListener to a SensorEventQueue
+    private final Hashtable<SensorEventListener, SensorEventQueue> mSensorEventQueueMap;
 
-    static private class SensorThread {
-
-        Thread mThread;
-        boolean mSensorsReady;
-
-        SensorThread() {
-        }
-
-        @Override
-        protected void finalize() {
-        }
-
-        // must be called with sListeners lock
-        boolean startLocked() {
-            try {
-                if (mThread == null) {
-                    mSensorsReady = false;
-                    SensorThreadRunnable runnable = new SensorThreadRunnable();
-                    Thread thread = new Thread(runnable, SensorThread.class.getName());
-                    thread.start();
-                    synchronized (runnable) {
-                        while (mSensorsReady == false) {
-                            runnable.wait();
-                        }
-                    }
-                    mThread = thread;
-                }
-            } catch (InterruptedException e) {
-            }
-            return mThread == null ? false : true;
-        }
-
-        private class SensorThreadRunnable implements Runnable {
-            SensorThreadRunnable() {
-            }
-
-            private boolean open() {
-                // NOTE: this cannot synchronize on sListeners, since
-                // it's held in the main thread at least until we
-                // return from here.
-                sQueue = sensors_create_queue();
-                return true;
-            }
-
-            public void run() {
-                //Log.d(TAG, "entering main sensor thread");
-                final float[] values = new float[3];
-                final int[] status = new int[1];
-                final long timestamp[] = new long[1];
-                Process.setThreadPriority(Process.THREAD_PRIORITY_URGENT_DISPLAY);
-
-                if (!open()) {
-                    return;
-                }
-
-                synchronized (this) {
-                    // we've open the driver, we're ready to open the sensors
-                    mSensorsReady = true;
-                    this.notify();
-                }
-
-                while (true) {
-                    // wait for an event
-                    final int sensor = sensors_data_poll(sQueue, values, status, timestamp);
-
-                    int accuracy = status[0];
-                    synchronized (sListeners) {
-                        if (sensor == -1 || sListeners.isEmpty()) {
-                            // we lost the connection to the event stream. this happens
-                            // when the last listener is removed or if there is an error
-                            if (sensor == -1 && !sListeners.isEmpty()) {
-                                // log a warning in case of abnormal termination
-                                Log.e(TAG, "_sensors_data_poll() failed, we bail out: sensors=" + sensor);
-                            }
-                            // we have no more listeners or polling failed, terminate the thread
-                            sensors_destroy_queue(sQueue);
-                            sQueue = 0;
-                            mThread = null;
-                            break;
-                        }
-                        final Sensor sensorObject = sHandleToSensor.get(sensor);
-                        if (sensorObject != null) {
-                            // report the sensor event to all listeners that
-                            // care about it.
-                            final int size = sListeners.size();
-                            for (int i=0 ; i<size ; i++) {
-                                ListenerDelegate listener = sListeners.get(i);
-                                if (listener.hasSensor(sensorObject)) {
-                                    // this is asynchronous (okay to call
-                                    // with sListeners lock held).
-                                    listener.onSensorChangedLocked(sensorObject,
-                                            values, timestamp, accuracy);
-                                }
-                            }
-                        }
-                    }
-                }
-                //Log.d(TAG, "exiting main sensor thread");
-            }
-        }
-    }
-
-    /*-----------------------------------------------------------------------*/
-
-    private class ListenerDelegate {
-        private final SensorEventListener mSensorEventListener;
-        private final ArrayList<Sensor> mSensorList = new ArrayList<Sensor>();
-        private final Handler mHandler;
-        public SparseBooleanArray mSensors = new SparseBooleanArray();
-        public SparseBooleanArray mFirstEvent = new SparseBooleanArray();
-        public SparseIntArray mSensorAccuracies = new SparseIntArray();
-
-        ListenerDelegate(SensorEventListener listener, Sensor sensor, Handler handler) {
-            mSensorEventListener = listener;
-            Looper looper = (handler != null) ? handler.getLooper() : mMainLooper;
-            // currently we create one Handler instance per listener, but we could
-            // have one per looper (we'd need to pass the ListenerDelegate
-            // instance to handleMessage and keep track of them separately).
-            mHandler = new Handler(looper) {
-                @Override
-                public void handleMessage(Message msg) {
-                    final SensorEvent t = (SensorEvent)msg.obj;
-                    final int handle = t.sensor.getHandle();
-
-                    switch (t.sensor.getType()) {
-                        // Only report accuracy for sensors that support it.
-                        case Sensor.TYPE_MAGNETIC_FIELD:
-                        case Sensor.TYPE_ORIENTATION:
-                            // call onAccuracyChanged() only if the value changes
-                            final int accuracy = mSensorAccuracies.get(handle);
-                            if ((t.accuracy >= 0) && (accuracy != t.accuracy)) {
-                                mSensorAccuracies.put(handle, t.accuracy);
-                                mSensorEventListener.onAccuracyChanged(t.sensor, t.accuracy);
-                            }
-                            break;
-                        default:
-                            // For other sensors, just report the accuracy once
-                            if (mFirstEvent.get(handle) == false) {
-                                mFirstEvent.put(handle, true);
-                                mSensorEventListener.onAccuracyChanged(
-                                        t.sensor, SENSOR_STATUS_ACCURACY_HIGH);
-                            }
-                            break;
-                    }
-
-                    mSensorEventListener.onSensorChanged(t);
-                    sPool.returnToPool(t);
-                }
-            };
-            addSensor(sensor);
-        }
-
-        Object getListener() {
-            return mSensorEventListener;
-        }
-
-        void addSensor(Sensor sensor) {
-            mSensors.put(sensor.getHandle(), true);
-            mSensorList.add(sensor);
-        }
-        int removeSensor(Sensor sensor) {
-            mSensors.delete(sensor.getHandle());
-            mSensorList.remove(sensor);
-            return mSensors.size();
-        }
-        boolean hasSensor(Sensor sensor) {
-            return mSensors.get(sensor.getHandle());
-        }
-        List<Sensor> getSensors() {
-            return mSensorList;
-        }
-
-        void onSensorChangedLocked(Sensor sensor, float[] values, long[] timestamp, int accuracy) {
-            SensorEvent t = sPool.getFromPool();
-            final float[] v = t.values;
-            v[0] = values[0];
-            v[1] = values[1];
-            v[2] = values[2];
-            t.timestamp = timestamp[0];
-            t.accuracy = accuracy;
-            t.sensor = sensor;
-            Message msg = Message.obtain();
-            msg.what = 0;
-            msg.obj = t;
-            msg.setAsynchronous(true);
-            mHandler.sendMessage(msg);
-        }
-    }
-
-    /**
-     * {@hide}
-     */
+    /** {@hide} */
     public SystemSensorManager(Looper mainLooper) {
         mMainLooper = mainLooper;
+        mSensorEventQueueMap = new Hashtable<SensorEventListener, SensorEventQueue>();
 
-        synchronized(sListeners) {
+        synchronized(sSensorModuleLock) {
             if (!sSensorModuleInitialized) {
                 sSensorModuleInitialized = true;
 
                 nativeClassInit();
 
                 // initialize the sensor list
-                sensors_module_init();
                 final ArrayList<Sensor> fullList = sFullSensorsList;
                 int i = 0;
                 do {
                     Sensor sensor = new Sensor();
-                    i = sensors_module_get_next_sensor(sensor, i);
-
+                    i = nativeGetNextSensor(sensor, i);
                     if (i>=0) {
                         //Log.d(TAG, "found sensor: " + sensor.getName() +
                         //        ", handle=" + sensor.getHandle());
@@ -274,126 +82,304 @@
                 } while (i>0);
 
                 sPool = new SensorEventPool( sFullSensorsList.size()*2 );
-                sSensorThread = new SensorThread();
             }
         }
     }
 
+
     /** @hide */
     @Override
     protected List<Sensor> getFullSensorList() {
         return sFullSensorsList;
     }
 
-    private boolean enableSensorLocked(Sensor sensor, int delay) {
-        boolean result = false;
-        for (ListenerDelegate i : sListeners) {
-            if (i.hasSensor(sensor)) {
-                String name = sensor.getName();
-                int handle = sensor.getHandle();
-                result = sensors_enable_sensor(sQueue, name, handle, delay);
-                break;
-            }
-        }
-        return result;
-    }
-
-    private boolean disableSensorLocked(Sensor sensor) {
-        for (ListenerDelegate i : sListeners) {
-            if (i.hasSensor(sensor)) {
-                // not an error, it's just that this sensor is still in use
-                return true;
-            }
-        }
-        String name = sensor.getName();
-        int handle = sensor.getHandle();
-        return sensors_enable_sensor(sQueue, name, handle, SENSOR_DISABLE);
-    }
 
     /** @hide */
     @Override
     protected boolean registerListenerImpl(SensorEventListener listener, Sensor sensor,
-            int delay, Handler handler) {
-        boolean result = true;
-        synchronized (sListeners) {
-            // look for this listener in our list
-            ListenerDelegate l = null;
-            for (ListenerDelegate i : sListeners) {
-                if (i.getListener() == listener) {
-                    l = i;
-                    break;
+            int delay, Handler handler)
+    {
+        // Invariants to preserve:
+        // - one Looper per SensorEventListener
+        // - one Looper per SensorEventQueue
+        // We map SensorEventListeners to a SensorEventQueue, which holds the looper
+
+        if (sensor == null) throw new NullPointerException("sensor cannot be null");
+
+        boolean result;
+        synchronized (mSensorEventQueueMap) {
+            // check if we already have this SensorEventListener, Sensor pair
+            // registered -- if so, we ignore the register. This is not ideal
+            // but this is what the implementation has always been doing.
+            for (SensorEventListenerSensorPair l : mListenerDelegates) {
+                if (l.isSameListenerSensorPair(listener, sensor)) {
+                    // already added, just return silently.
+                    return true;
                 }
             }
 
-            // if we don't find it, add it to the list
-            if (l == null) {
-                l = new ListenerDelegate(listener, sensor, handler);
-                sListeners.add(l);
-                // if the list is not empty, start our main thread
-                if (!sListeners.isEmpty()) {
-                    if (sSensorThread.startLocked()) {
-                        if (!enableSensorLocked(sensor, delay)) {
-                            // oops. there was an error
-                            sListeners.remove(l);
-                            result = false;
-                        }
-                    } else {
-                        // there was an error, remove the listener
-                        sListeners.remove(l);
-                        result = false;
-                    }
-                } else {
-                    // weird, we couldn't add the listener
-                    result = false;
+            // now find the SensorEventQueue associated to this listener
+            SensorEventQueue queue = mSensorEventQueueMap.get(listener);
+            if (queue != null) {
+                result = queue.addSensor(sensor, delay);
+                if (result) {
+                    // create a new ListenerDelegate for this pair
+                    mListenerDelegates.add(new SensorEventListenerSensorPair(listener, sensor));
                 }
-            } else if (!l.hasSensor(sensor)) {
-                l.addSensor(sensor);
-                if (!enableSensorLocked(sensor, delay)) {
-                    // oops. there was an error
-                    l.removeSensor(sensor);
-                    result = false;
+            } else {
+                Looper looper = (handler != null) ? handler.getLooper() : mMainLooper;
+                queue = new SensorEventQueue(listener, looper.getQueue());
+                result = queue.addSensor(sensor, delay);
+                if (result) {
+                    // create a new ListenerDelegate for this pair
+                    mListenerDelegates.add(new SensorEventListenerSensorPair(listener, sensor));
+                    mSensorEventQueueMap.put(listener, queue);
+                } else {
+                    queue.dispose();
                 }
             }
         }
-
         return result;
     }
 
     /** @hide */
     @Override
     protected void unregisterListenerImpl(SensorEventListener listener, Sensor sensor) {
-        synchronized (sListeners) {
-            final int size = sListeners.size();
-            for (int i=0 ; i<size ; i++) {
-                ListenerDelegate l = sListeners.get(i);
-                if (l.getListener() == listener) {
-                    if (sensor == null) {
-                        sListeners.remove(i);
-                        // disable all sensors for this listener
-                        for (Sensor s : l.getSensors()) {
-                            disableSensorLocked(s);
-                        }
-                    // Check if the ListenerDelegate has the sensor it is trying to unregister.
-                    } else if (l.hasSensor(sensor) && l.removeSensor(sensor) == 0) {
-                        // if we have no more sensors enabled on this listener,
-                        // take it off the list.
-                        sListeners.remove(i);
-                        disableSensorLocked(sensor);
-                    }
-                    break;
+        synchronized (mSensorEventQueueMap) {
+
+            // remove this listener/sensor from our list
+            final ArrayList<SensorEventListenerSensorPair> copy =
+                    new ArrayList<SensorEventListenerSensorPair>(mListenerDelegates);
+            int lastIndex = copy.size()-1;
+            for (int i=lastIndex ; i>= 0 ; i--) {
+                if (copy.get(i).isSameListenerSensorPair(listener, sensor)) {
+                    mListenerDelegates.remove(i);
+                }
+            }
+
+            // find the SensorEventQueue associated to this SensorEventListener
+            SensorEventQueue queue = mSensorEventQueueMap.get(listener);
+            if (queue != null) {
+                if (sensor != null) {
+                    queue.removeSensor(sensor);
+                } else {
+                    queue.removeAllSensors();
+                }
+                if (!queue.hasSensors()) {
+                    mSensorEventQueueMap.remove(listener);
+                    queue.dispose();
                 }
             }
         }
     }
 
-    private static native void nativeClassInit();
 
-    private static native int sensors_module_init();
-    private static native int sensors_module_get_next_sensor(Sensor sensor, int next);
+    /*
+     * ListenerDelegate is essentially a SensorEventListener, Sensor pair
+     * and is associated with a single SensorEventQueue.
+     */
+    private static final class SensorEventListenerSensorPair {
+        private final SensorEventListener mSensorEventListener;
+        private final Sensor mSensor;
+        public SensorEventListenerSensorPair(SensorEventListener listener, Sensor sensor) {
+            mSensorEventListener = listener;
+            mSensor = sensor;
+        }
+        public boolean isSameListenerSensorPair(SensorEventListener listener, Sensor sensor) {
+            // if sensor is null, we match only on the listener
+            if (sensor != null) {
+                return (listener == mSensorEventListener) &&
+                        (sensor.getHandle() == mSensor.getHandle());
+            } else {
+                return (listener == mSensorEventListener);
+            }
+        }
+    }
 
-    // Used within this module from outside SensorManager, don't make private
-    static native int sensors_create_queue();
-    static native void sensors_destroy_queue(int queue);
-    static native boolean sensors_enable_sensor(int queue, String name, int sensor, int enable);
-    static native int sensors_data_poll(int queue, float[] values, int[] status, long[] timestamp);
+    /*
+     * SensorEventQueue is the communication channel with the sensor service,
+     * there is a one-to-one mapping between SensorEventQueue and
+     * SensorEventListener.
+     */
+    private static final class SensorEventQueue {
+        private static native int nativeInitSensorEventQueue(SensorEventQueue eventQ, MessageQueue msgQ, float[] scratch);
+        private static native int nativeEnableSensor(int eventQ, int handle, int us);
+        private static native int nativeDisableSensor(int eventQ, int handle);
+        private static native void nativeDestroySensorEventQueue(int eventQ);
+        private int nSensorEventQueue;
+        private final SensorEventListener mListener;
+        private final SparseBooleanArray mActiveSensors = new SparseBooleanArray();
+        private final SparseIntArray mSensorAccuracies = new SparseIntArray();
+        private final SparseBooleanArray mFirstEvent = new SparseBooleanArray();
+        private final CloseGuard mCloseGuard = CloseGuard.get();
+        private final float[] mScratch = new float[16];
+
+        public SensorEventQueue(SensorEventListener listener, MessageQueue msgQ) {
+            nSensorEventQueue = nativeInitSensorEventQueue(this, msgQ, mScratch);
+            mListener = listener;
+            mCloseGuard.open("dispose");
+        }
+        public void dispose() {
+            dispose(false);
+        }
+
+        public boolean addSensor(Sensor sensor, int delay) {
+            if (enableSensor(sensor, delay) == 0) {
+                mActiveSensors.put(sensor.getHandle(), true);
+                return true;
+            }
+            return false;
+        }
+
+        public void removeAllSensors() {
+            for (int i=0 ; i<mActiveSensors.size(); i++) {
+                if (mActiveSensors.valueAt(i) == true) {
+                    int handle = mActiveSensors.keyAt(i);
+                    Sensor sensor = sHandleToSensor.get(handle);
+                    if (sensor != null) {
+                        disableSensor(sensor);
+                        mActiveSensors.put(handle, false);
+                    } else {
+                        // it should never happen -- just ignore.
+                    }
+                }
+            }
+        }
+
+        public void removeSensor(Sensor sensor) {
+            final int handle = sensor.getHandle();
+            if (mActiveSensors.get(handle)) {
+                disableSensor(sensor);
+                mActiveSensors.put(sensor.getHandle(), false);
+            }
+        }
+
+        public boolean hasSensors() {
+            // no more sensors are set
+            return mActiveSensors.indexOfValue(true) >= 0;
+        }
+        
+        @Override
+        protected void finalize() throws Throwable {
+            try {
+                dispose(true);
+            } finally {
+                super.finalize();
+            }
+        }
+
+        private void dispose(boolean finalized) {
+            if (mCloseGuard != null) {
+                if (finalized) {
+                    mCloseGuard.warnIfOpen();
+                }
+                mCloseGuard.close();
+            }
+            if (nSensorEventQueue != 0) {
+                nativeDestroySensorEventQueue(nSensorEventQueue);
+                nSensorEventQueue = 0;
+            }
+        }
+
+        private int enableSensor(Sensor sensor, int us) {
+            if (nSensorEventQueue == 0) throw new NullPointerException();
+            if (sensor == null) throw new NullPointerException();
+            return nativeEnableSensor(nSensorEventQueue, sensor.getHandle(), us);
+        }
+        private int disableSensor(Sensor sensor) {
+            if (nSensorEventQueue == 0) throw new NullPointerException();
+            if (sensor == null) throw new NullPointerException();
+            return nativeDisableSensor(nSensorEventQueue, sensor.getHandle());
+        }
+
+        // Called from native code.
+        @SuppressWarnings("unused")
+        private void dispatchSensorEvent(int handle, float[] values, int inAccuracy, long timestamp) {
+            // this is always called on the same thread.
+            final SensorEvent t = sPool.getFromPool();
+            try {
+                final Sensor sensor = sHandleToSensor.get(handle);
+                final SensorEventListener listener = mListener;
+                // FIXME: handle more than 3 values
+                System.arraycopy(values, 0, t.values, 0, 3);
+                t.timestamp = timestamp;
+                t.accuracy = inAccuracy;
+                t.sensor = sensor;
+                switch (t.sensor.getType()) {
+                    // Only report accuracy for sensors that support it.
+                    case Sensor.TYPE_MAGNETIC_FIELD:
+                    case Sensor.TYPE_ORIENTATION:
+                        // call onAccuracyChanged() only if the value changes
+                        final int accuracy = mSensorAccuracies.get(handle);
+                        if ((t.accuracy >= 0) && (accuracy != t.accuracy)) {
+                            mSensorAccuracies.put(handle, t.accuracy);
+                            listener.onAccuracyChanged(t.sensor, t.accuracy);
+                        }
+                        break;
+                    default:
+                        // For other sensors, just report the accuracy once
+                        if (mFirstEvent.get(handle) == false) {
+                            mFirstEvent.put(handle, true);
+                            listener.onAccuracyChanged(
+                                    t.sensor, SENSOR_STATUS_ACCURACY_HIGH);
+                        }
+                        break;
+                }
+                listener.onSensorChanged(t);
+            } finally {
+                sPool.returnToPool(t);
+            }
+        }
+    }
+
+    /*
+     * A dumb pool of SensorEvent
+     */
+    private static final class SensorEventPool {
+        private final int mPoolSize;
+        private final SensorEvent mPool[];
+        private int mNumItemsInPool;
+
+        private SensorEvent createSensorEvent() {
+            // maximal size for all legacy events is 3
+            return new SensorEvent(3);
+        }
+
+        SensorEventPool(int poolSize) {
+            mPoolSize = poolSize;
+            mNumItemsInPool = poolSize;
+            mPool = new SensorEvent[poolSize];
+        }
+
+        SensorEvent getFromPool() {
+            SensorEvent t = null;
+            synchronized (this) {
+                if (mNumItemsInPool > 0) {
+                    // remove the "top" item from the pool
+                    final int index = mPoolSize - mNumItemsInPool;
+                    t = mPool[index];
+                    mPool[index] = null;
+                    mNumItemsInPool--;
+                }
+            }
+            if (t == null) {
+                // the pool was empty or this item was removed from the pool for
+                // the first time. In any case, we need to create a new item.
+                t = createSensorEvent();
+            }
+            return t;
+        }
+
+        void returnToPool(SensorEvent t) {
+            synchronized (this) {
+                // is there space left in the pool?
+                if (mNumItemsInPool < mPoolSize) {
+                    // if so, return the item to the pool
+                    mNumItemsInPool++;
+                    final int index = mPoolSize - mNumItemsInPool;
+                    mPool[index] = t;
+                }
+            }
+        }
+    }
 }
diff --git a/core/java/android/net/TrafficStats.java b/core/java/android/net/TrafficStats.java
index e437d2e..a282910 100644
--- a/core/java/android/net/TrafficStats.java
+++ b/core/java/android/net/TrafficStats.java
@@ -315,6 +315,30 @@
         return total;
     }
 
+    /** {@hide} */
+    public static long getMobileTcpRxPackets() {
+        long total = 0;
+        for (String iface : getMobileIfaces()) {
+            final long stat = nativeGetIfaceStat(iface, TYPE_TCP_RX_PACKETS);
+            if (stat != UNSUPPORTED) {
+                total += stat;
+            }
+        }
+        return total;
+    }
+
+    /** {@hide} */
+    public static long getMobileTcpTxPackets() {
+        long total = 0;
+        for (String iface : getMobileIfaces()) {
+            final long stat = nativeGetIfaceStat(iface, TYPE_TCP_TX_PACKETS);
+            if (stat != UNSUPPORTED) {
+                total += stat;
+            }
+        }
+        return total;
+    }
+
     /**
      * Get the total number of packets transmitted through the specified interface.
      *
@@ -400,161 +424,156 @@
     }
 
     /**
-     * Get the number of bytes sent through the network for this UID.
-     * The statistics are across all interfaces.
+     * Return number of bytes transmitted by the given UID since device boot.
+     * Counts packets across all network interfaces, and always increases
+     * monotonically since device boot. Statistics are measured at the network
+     * layer, so they include both TCP and UDP usage.
+     * <p>
+     * Before {@link android.os.Build.VERSION_CODES#K}, this may return
+     * {@link #UNSUPPORTED} on devices where statistics aren't available.
      *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of bytes.  If the statistics are not supported by this device,
-     * {@link #UNSUPPORTED} will be returned.
+     * @see android.os.Process#myUid()
+     * @see android.content.pm.ApplicationInfo#uid
      */
-    public static native long getUidTxBytes(int uid);
+    public static long getUidTxBytes(int uid) {
+        return nativeGetUidStat(uid, TYPE_TX_BYTES);
+    }
 
     /**
-     * Get the number of bytes received through the network for this UID.
-     * The statistics are across all interfaces.
+     * Return number of bytes received by the given UID since device boot.
+     * Counts packets across all network interfaces, and always increases
+     * monotonically since device boot. Statistics are measured at the network
+     * layer, so they include both TCP and UDP usage.
+     * <p>
+     * Before {@link android.os.Build.VERSION_CODES#K}, this may return
+     * {@link #UNSUPPORTED} on devices where statistics aren't available.
      *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of bytes
+     * @see android.os.Process#myUid()
+     * @see android.content.pm.ApplicationInfo#uid
      */
-    public static native long getUidRxBytes(int uid);
+    public static long getUidRxBytes(int uid) {
+        return nativeGetUidStat(uid, TYPE_RX_BYTES);
+    }
 
     /**
-     * Get the number of packets (TCP segments + UDP) sent through
-     * the network for this UID.
-     * The statistics are across all interfaces.
+     * Return number of packets transmitted by the given UID since device boot.
+     * Counts packets across all network interfaces, and always increases
+     * monotonically since device boot. Statistics are measured at the network
+     * layer, so they include both TCP and UDP usage.
+     * <p>
+     * Before {@link android.os.Build.VERSION_CODES#K}, this may return
+     * {@link #UNSUPPORTED} on devices where statistics aren't available.
      *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of packets.
-     * If the statistics are not supported by this device,
-     * {@link #UNSUPPORTED} will be returned.
+     * @see android.os.Process#myUid()
+     * @see android.content.pm.ApplicationInfo#uid
      */
-    public static native long getUidTxPackets(int uid);
+    public static long getUidTxPackets(int uid) {
+        return nativeGetUidStat(uid, TYPE_TX_PACKETS);
+    }
 
     /**
-     * Get the number of packets (TCP segments + UDP) received through
-     * the network for this UID.
-     * The statistics are across all interfaces.
+     * Return number of packets received by the given UID since device boot.
+     * Counts packets across all network interfaces, and always increases
+     * monotonically since device boot. Statistics are measured at the network
+     * layer, so they include both TCP and UDP usage.
+     * <p>
+     * Before {@link android.os.Build.VERSION_CODES#K}, this may return
+     * {@link #UNSUPPORTED} on devices where statistics aren't available.
      *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of packets
+     * @see android.os.Process#myUid()
+     * @see android.content.pm.ApplicationInfo#uid
      */
-    public static native long getUidRxPackets(int uid);
+    public static long getUidRxPackets(int uid) {
+        return nativeGetUidStat(uid, TYPE_RX_PACKETS);
+    }
 
     /**
-     * Get the number of TCP payload bytes sent for this UID.
-     * This total does not include protocol and control overheads at
-     * the transport and the lower layers of the networking stack.
-     * The statistics are across all interfaces.
-     *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of bytes.  If the statistics are not supported by this device,
-     * {@link #UNSUPPORTED} will be returned.
+     * @deprecated Starting in {@link android.os.Build.VERSION_CODES#K},
+     *             transport layer statistics are no longer available, and will
+     *             always return {@link #UNSUPPORTED}.
+     * @see #getUidTxBytes(int)
      */
-    public static native long getUidTcpTxBytes(int uid);
+    @Deprecated
+    public static long getUidTcpTxBytes(int uid) {
+        return UNSUPPORTED;
+    }
 
     /**
-     * Get the number of TCP payload bytes received for this UID.
-     * This total does not include protocol and control overheads at
-     * the transport and the lower layers of the networking stack.
-     * The statistics are across all interfaces.
-     *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of bytes.  If the statistics are not supported by this device,
-     * {@link #UNSUPPORTED} will be returned.
+     * @deprecated Starting in {@link android.os.Build.VERSION_CODES#K},
+     *             transport layer statistics are no longer available, and will
+     *             always return {@link #UNSUPPORTED}.
+     * @see #getUidRxBytes(int)
      */
-    public static native long getUidTcpRxBytes(int uid);
+    @Deprecated
+    public static long getUidTcpRxBytes(int uid) {
+        return UNSUPPORTED;
+    }
 
     /**
-     * Get the number of UDP payload bytes sent for this UID.
-     * This total does not include protocol and control overheads at
-     * the transport and the lower layers of the networking stack.
-     * The statistics are across all interfaces.
-     *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of bytes.  If the statistics are not supported by this device,
-     * {@link #UNSUPPORTED} will be returned.
+     * @deprecated Starting in {@link android.os.Build.VERSION_CODES#K},
+     *             transport layer statistics are no longer available, and will
+     *             always return {@link #UNSUPPORTED}.
+     * @see #getUidTxBytes(int)
      */
-    public static native long getUidUdpTxBytes(int uid);
+    @Deprecated
+    public static long getUidUdpTxBytes(int uid) {
+        return UNSUPPORTED;
+    }
 
     /**
-     * Get the number of UDP payload bytes received for this UID.
-     * This total does not include protocol and control overheads at
-     * the transport and the lower layers of the networking stack.
-     * The statistics are across all interfaces.
-     *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of bytes.  If the statistics are not supported by this device,
-     * {@link #UNSUPPORTED} will be returned.
+     * @deprecated Starting in {@link android.os.Build.VERSION_CODES#K},
+     *             transport layer statistics are no longer available, and will
+     *             always return {@link #UNSUPPORTED}.
+     * @see #getUidRxBytes(int)
      */
-    public static native long getUidUdpRxBytes(int uid);
+    @Deprecated
+    public static long getUidUdpRxBytes(int uid) {
+        return UNSUPPORTED;
+    }
 
     /**
-     * Get the number of TCP segments sent for this UID.
-     * Does not include TCP control packets (SYN/ACKs/FIN/..).
-     * The statistics are across all interfaces.
-     *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of TCP segments.  If the statistics are not supported by this device,
-     * {@link #UNSUPPORTED} will be returned.
+     * @deprecated Starting in {@link android.os.Build.VERSION_CODES#K},
+     *             transport layer statistics are no longer available, and will
+     *             always return {@link #UNSUPPORTED}.
+     * @see #getUidTxPackets(int)
      */
-    public static native long getUidTcpTxSegments(int uid);
+    @Deprecated
+    public static long getUidTcpTxSegments(int uid) {
+        return UNSUPPORTED;
+    }
 
     /**
-     * Get the number of TCP segments received for this UID.
-     * Does not include TCP control packets (SYN/ACKs/FIN/..).
-     * The statistics are across all interfaces.
-     *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of TCP segments.  If the statistics are not supported by this device,
-     * {@link #UNSUPPORTED} will be returned.
+     * @deprecated Starting in {@link android.os.Build.VERSION_CODES#K},
+     *             transport layer statistics are no longer available, and will
+     *             always return {@link #UNSUPPORTED}.
+     * @see #getUidRxPackets(int)
      */
-    public static native long getUidTcpRxSegments(int uid);
+    @Deprecated
+    public static long getUidTcpRxSegments(int uid) {
+        return UNSUPPORTED;
+    }
 
     /**
-     * Get the number of UDP packets sent for this UID.
-     * Includes DNS requests.
-     * The statistics are across all interfaces.
-     *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of packets.  If the statistics are not supported by this device,
-     * {@link #UNSUPPORTED} will be returned.
+     * @deprecated Starting in {@link android.os.Build.VERSION_CODES#K},
+     *             transport layer statistics are no longer available, and will
+     *             always return {@link #UNSUPPORTED}.
+     * @see #getUidTxPackets(int)
      */
-    public static native long getUidUdpTxPackets(int uid);
+    @Deprecated
+    public static long getUidUdpTxPackets(int uid) {
+        return UNSUPPORTED;
+    }
 
     /**
-     * Get the number of UDP packets received for this UID.
-     * Includes DNS responses.
-     * The statistics are across all interfaces.
-     *
-     * {@see android.os.Process#myUid()}.
-     *
-     * @param uid The UID of the process to examine.
-     * @return number of packets.  If the statistics are not supported by this device,
-     * {@link #UNSUPPORTED} will be returned.
+     * @deprecated Starting in {@link android.os.Build.VERSION_CODES#K},
+     *             transport layer statistics are no longer available, and will
+     *             always return {@link #UNSUPPORTED}.
+     * @see #getUidRxPackets(int)
      */
-    public static native long getUidUdpRxPackets(int uid);
+    @Deprecated
+    public static long getUidUdpRxPackets(int uid) {
+        return UNSUPPORTED;
+    }
 
     /**
      * Return detailed {@link NetworkStats} for the current UID. Requires no
@@ -587,7 +606,10 @@
     private static final int TYPE_RX_PACKETS = 1;
     private static final int TYPE_TX_BYTES = 2;
     private static final int TYPE_TX_PACKETS = 3;
+    private static final int TYPE_TCP_RX_PACKETS = 4;
+    private static final int TYPE_TCP_TX_PACKETS = 5;
 
     private static native long nativeGetTotalStat(int type);
     private static native long nativeGetIfaceStat(String iface, int type);
+    private static native long nativeGetUidStat(int uid, int type);
 }
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index abbb6a1..499ec77 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -301,6 +301,11 @@
         public abstract int getUserActivityCount(int type, int which);
         
         public static abstract class Sensor {
+            /*
+             * FIXME: it's not correct to use this magic value because it
+             * could clash with a sensor handle (which are defined by
+             * the sensor HAL, and therefore out of our control
+             */
             // Magic sensor number for the GPS.
             public static final int GPS = -10000;
             
diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl
index d0e5019..c765457 100644
--- a/core/java/android/os/INetworkManagementService.aidl
+++ b/core/java/android/os/INetworkManagementService.aidl
@@ -352,4 +352,14 @@
     void setFirewallEgressSourceRule(String addr, boolean allow);
     void setFirewallEgressDestRule(String addr, int port, boolean allow);
     void setFirewallUidRule(int uid, boolean allow);
+
+    /**
+     * Set a process (pid) to use the name servers associated with the specified interface.
+     */
+    void setDnsInterfaceForPid(String iface, int pid);
+
+    /**
+     * Clear a process (pid) from being associated with an interface.
+     */
+    void clearDnsInterfaceForPid(int pid);
 }
diff --git a/core/java/android/os/IUserManager.aidl b/core/java/android/os/IUserManager.aidl
index ec02ae0..34c9740 100644
--- a/core/java/android/os/IUserManager.aidl
+++ b/core/java/android/os/IUserManager.aidl
@@ -17,6 +17,7 @@
 
 package android.os;
 
+import android.os.Bundle;
 import android.os.ParcelFileDescriptor;
 import android.content.pm.UserInfo;
 import android.graphics.Bitmap;
@@ -37,4 +38,6 @@
     void wipeUser(int userHandle);
     int getUserSerialNumber(int userHandle);
     int getUserHandle(int userSerialNumber);
+    Bundle getUserRestrictions(int userHandle);
+    void setUserRestrictions(in Bundle restrictions, int userHandle);
 }
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index d73f99a..e4a5e7f 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -35,6 +35,42 @@
     private final IUserManager mService;
     private final Context mContext;
 
+    /**
+     * @hide
+     * Key for user restrictions. Specifies if a user is allowed to add or remove accounts.
+     * Type: Boolean
+     * @see #setUserRestrictions(Bundle)
+     * @see #getUserRestrictions()
+     */
+    public static final String ALLOW_MODIFY_ACCOUNTS = "modify_accounts";
+
+    /**
+     * @hide
+     * Key for user restrictions. Specifies if a user is allowed to change Wi-Fi access points.
+     * Type: Boolean
+     * @see #setUserRestrictions(Bundle)
+     * @see #getUserRestrictions()
+     */
+    public static final String ALLOW_CONFIG_WIFI = "config_wifi";
+
+    /**
+     * @hide
+     * Key for user restrictions. Specifies if a user is allowed to install applications.
+     * Type: Boolean
+     * @see #setUserRestrictions(Bundle)
+     * @see #getUserRestrictions()
+     */
+    public static final String ALLOW_INSTALL_APPS = "install_apps";
+
+    /**
+     * @hide
+     * Key for user restrictions. Specifies if a user is allowed to uninstall applications.
+     * Type: Boolean
+     * @see #setUserRestrictions(Bundle)
+     * @see #getUserRestrictions()
+     */
+    public static final String ALLOW_UNINSTALL_APPS = "uninstall_apps";
+
     /** @hide */
     public UserManager(Context context, IUserManager service) {
         mService = service;
@@ -132,6 +168,35 @@
         }
     }
 
+    /** @hide */
+    public Bundle getUserRestrictions() {
+        return getUserRestrictions(Process.myUserHandle());
+    }
+
+    /** @hide */
+    public Bundle getUserRestrictions(UserHandle userHandle) {
+        try {
+            return mService.getUserRestrictions(userHandle.getIdentifier());
+        } catch (RemoteException re) {
+            Log.w(TAG, "Could not get user restrictions", re);
+            return Bundle.EMPTY;
+        }
+    }
+
+    /** @hide */
+    public void setUserRestrictions(Bundle restrictions) {
+        setUserRestrictions(restrictions, Process.myUserHandle());
+    }
+
+    /** @hide */
+    public void setUserRestrictions(Bundle restrictions, UserHandle userHandle) {
+        try {
+            mService.setUserRestrictions(restrictions, userHandle.getIdentifier());
+        } catch (RemoteException re) {
+            Log.w(TAG, "Could not set user restrictions", re);
+        }
+    }
+
     /**
      * Return the serial number for a user.  This is a device-unique
      * number assigned to that user; if the user is deleted and then a new
diff --git a/core/java/android/preference/PreferenceActivity.java b/core/java/android/preference/PreferenceActivity.java
index 09ff7be..028317f 100644
--- a/core/java/android/preference/PreferenceActivity.java
+++ b/core/java/android/preference/PreferenceActivity.java
@@ -703,7 +703,13 @@
      * show for the initial UI.
      */
     public Header onGetInitialHeader() {
-        return mHeaders.get(0);
+        for (int i=0; i<mHeaders.size(); i++) {
+            Header h = mHeaders.get(i);
+            if (h.fragment != null) {
+                return h;
+            }
+        }
+        throw new IllegalStateException("Must have at least one header with a fragment");
     }
 
     /**
@@ -1167,6 +1173,9 @@
             getFragmentManager().popBackStack(BACK_STACK_PREFS,
                     FragmentManager.POP_BACK_STACK_INCLUSIVE);
         } else {
+            if (header.fragment == null) {
+                throw new IllegalStateException("can't switch to header that has no fragment");
+            }
             int direction = mHeaders.indexOf(header) - mHeaders.indexOf(mCurHeader);
             switchToHeaderInner(header.fragment, header.fragmentArguments, direction);
             setSelectedHeader(header);
diff --git a/core/java/android/provider/CalendarContract.java b/core/java/android/provider/CalendarContract.java
index 5fdca86..2dd27f8 100644
--- a/core/java/android/provider/CalendarContract.java
+++ b/core/java/android/provider/CalendarContract.java
@@ -550,6 +550,8 @@
                         Calendars.CALENDAR_DISPLAY_NAME);
                 DatabaseUtils.cursorIntToContentValuesIfPresent(cursor, cv,
                         Calendars.CALENDAR_COLOR);
+                DatabaseUtils.cursorStringToContentValuesIfPresent(cursor, cv,
+                        Calendars.CALENDAR_COLOR_KEY);
                 DatabaseUtils.cursorIntToContentValuesIfPresent(cursor, cv, CALENDAR_ACCESS_LEVEL);
                 DatabaseUtils.cursorIntToContentValuesIfPresent(cursor, cv, VISIBLE);
                 DatabaseUtils.cursorIntToContentValuesIfPresent(cursor, cv, SYNC_EVENTS);
@@ -1378,6 +1380,8 @@
                 DatabaseUtils.cursorStringToContentValuesIfPresent(cursor, cv, ALL_DAY);
                 DatabaseUtils.cursorIntToContentValuesIfPresent(cursor, cv, ACCESS_LEVEL);
                 DatabaseUtils.cursorIntToContentValuesIfPresent(cursor, cv, AVAILABILITY);
+                DatabaseUtils.cursorIntToContentValuesIfPresent(cursor, cv, EVENT_COLOR);
+                DatabaseUtils.cursorStringToContentValuesIfPresent(cursor, cv, EVENT_COLOR_KEY);
                 DatabaseUtils.cursorStringToContentValuesIfPresent(cursor, cv, HAS_ALARM);
                 DatabaseUtils.cursorStringToContentValuesIfPresent(cursor, cv,
                         HAS_EXTENDED_PROPERTIES);
diff --git a/core/java/android/provider/MediaStore.java b/core/java/android/provider/MediaStore.java
index 0e7ab52..cb6300f 100644
--- a/core/java/android/provider/MediaStore.java
+++ b/core/java/android/provider/MediaStore.java
@@ -1324,6 +1324,18 @@
         }
 
         public static final class Media implements AudioColumns {
+
+            private static final String[] EXTERNAL_PATHS;
+
+            static {
+                String secondary_storage = System.getenv("SECONDARY_STORAGE");
+                if (secondary_storage != null) {
+                    EXTERNAL_PATHS = secondary_storage.split(":");
+                } else {
+                    EXTERNAL_PATHS = new String[0];
+                }
+            }
+
             /**
              * Get the content:// style URI for the audio media table on the
              * given volume.
@@ -1337,6 +1349,12 @@
             }
 
             public static Uri getContentUriForPath(String path) {
+                for (String ep : EXTERNAL_PATHS) {
+                    if (path.startsWith(ep)) {
+                        return EXTERNAL_CONTENT_URI;
+                    }
+                }
+
                 return (path.startsWith(Environment.getExternalStorageDirectory().getPath()) ?
                         EXTERNAL_CONTENT_URI : INTERNAL_CONTENT_URI);
             }
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 3d850cf..25954b9 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -50,7 +50,6 @@
 import android.text.TextUtils;
 import android.util.AndroidException;
 import android.util.Log;
-import android.view.WindowOrientationListener;
 
 import com.android.internal.widget.ILockSettings;
 
diff --git a/core/java/android/security/IKeystoreService.java b/core/java/android/security/IKeystoreService.java
index f8a49e6..651693a 100644
--- a/core/java/android/security/IKeystoreService.java
+++ b/core/java/android/security/IKeystoreService.java
@@ -78,7 +78,7 @@
                 return _result;
             }
 
-            public int insert(String name, byte[] item) throws RemoteException {
+            public int insert(String name, byte[] item, int uid) throws RemoteException {
                 Parcel _data = Parcel.obtain();
                 Parcel _reply = Parcel.obtain();
                 int _result;
@@ -86,6 +86,7 @@
                     _data.writeInterfaceToken(DESCRIPTOR);
                     _data.writeString(name);
                     _data.writeByteArray(item);
+                    _data.writeInt(uid);
                     mRemote.transact(Stub.TRANSACTION_insert, _data, _reply, 0);
                     _reply.readException();
                     _result = _reply.readInt();
@@ -96,13 +97,14 @@
                 return _result;
             }
 
-            public int del(String name) throws RemoteException {
+            public int del(String name, int uid) throws RemoteException {
                 Parcel _data = Parcel.obtain();
                 Parcel _reply = Parcel.obtain();
                 int _result;
                 try {
                     _data.writeInterfaceToken(DESCRIPTOR);
                     _data.writeString(name);
+                    _data.writeInt(uid);
                     mRemote.transact(Stub.TRANSACTION_del, _data, _reply, 0);
                     _reply.readException();
                     _result = _reply.readInt();
@@ -113,13 +115,14 @@
                 return _result;
             }
 
-            public int exist(String name) throws RemoteException {
+            public int exist(String name, int uid) throws RemoteException {
                 Parcel _data = Parcel.obtain();
                 Parcel _reply = Parcel.obtain();
                 int _result;
                 try {
                     _data.writeInterfaceToken(DESCRIPTOR);
                     _data.writeString(name);
+                    _data.writeInt(uid);
                     mRemote.transact(Stub.TRANSACTION_exist, _data, _reply, 0);
                     _reply.readException();
                     _result = _reply.readInt();
@@ -130,13 +133,14 @@
                 return _result;
             }
 
-            public String[] saw(String name) throws RemoteException {
+            public String[] saw(String name, int uid) throws RemoteException {
                 Parcel _data = Parcel.obtain();
                 Parcel _reply = Parcel.obtain();
                 String[] _result;
                 try {
                     _data.writeInterfaceToken(DESCRIPTOR);
                     _data.writeString(name);
+                    _data.writeInt(uid);
                     mRemote.transact(Stub.TRANSACTION_saw, _data, _reply, 0);
                     _reply.readException();
                     int size = _reply.readInt();
@@ -235,13 +239,14 @@
                 return _result;
             }
 
-            public int generate(String name) throws RemoteException {
+            public int generate(String name, int uid) throws RemoteException {
                 Parcel _data = Parcel.obtain();
                 Parcel _reply = Parcel.obtain();
                 int _result;
                 try {
                     _data.writeInterfaceToken(DESCRIPTOR);
                     _data.writeString(name);
+                    _data.writeInt(uid);
                     mRemote.transact(Stub.TRANSACTION_generate, _data, _reply, 0);
                     _reply.readException();
                     _result = _reply.readInt();
@@ -252,7 +257,7 @@
                 return _result;
             }
 
-            public int import_key(String name, byte[] data) throws RemoteException {
+            public int import_key(String name, byte[] data, int uid) throws RemoteException {
                 Parcel _data = Parcel.obtain();
                 Parcel _reply = Parcel.obtain();
                 int _result;
@@ -260,6 +265,7 @@
                     _data.writeInterfaceToken(DESCRIPTOR);
                     _data.writeString(name);
                     _data.writeByteArray(data);
+                    _data.writeInt(uid);
                     mRemote.transact(Stub.TRANSACTION_import, _data, _reply, 0);
                     _reply.readException();
                     _result = _reply.readInt();
@@ -324,13 +330,14 @@
                 return _result;
             }
 
-            public int del_key(String name) throws RemoteException {
+            public int del_key(String name, int uid) throws RemoteException {
                 Parcel _data = Parcel.obtain();
                 Parcel _reply = Parcel.obtain();
                 int _result;
                 try {
                     _data.writeInterfaceToken(DESCRIPTOR);
                     _data.writeString(name);
+                    _data.writeInt(uid);
                     mRemote.transact(Stub.TRANSACTION_del_key, _data, _reply, 0);
                     _reply.readException();
                     _result = _reply.readInt();
@@ -467,13 +474,13 @@
 
     public byte[] get(String name) throws RemoteException;
 
-    public int insert(String name, byte[] item) throws RemoteException;
+    public int insert(String name, byte[] item, int uid) throws RemoteException;
 
-    public int del(String name) throws RemoteException;
+    public int del(String name, int uid) throws RemoteException;
 
-    public int exist(String name) throws RemoteException;
+    public int exist(String name, int uid) throws RemoteException;
 
-    public String[] saw(String name) throws RemoteException;
+    public String[] saw(String name, int uid) throws RemoteException;
 
     public int reset() throws RemoteException;
 
@@ -485,9 +492,9 @@
 
     public int zero() throws RemoteException;
 
-    public int generate(String name) throws RemoteException;
+    public int generate(String name, int uid) throws RemoteException;
 
-    public int import_key(String name, byte[] data) throws RemoteException;
+    public int import_key(String name, byte[] data, int uid) throws RemoteException;
 
     public byte[] sign(String name, byte[] data) throws RemoteException;
 
@@ -495,7 +502,7 @@
 
     public byte[] get_pubkey(String name) throws RemoteException;
 
-    public int del_key(String name) throws RemoteException;
+    public int del_key(String name, int uid) throws RemoteException;
 
     public int grant(String name, int granteeUid) throws RemoteException;
 
diff --git a/core/java/android/text/GraphicsOperations.java b/core/java/android/text/GraphicsOperations.java
index 831ccc5..60545e5 100644
--- a/core/java/android/text/GraphicsOperations.java
+++ b/core/java/android/text/GraphicsOperations.java
@@ -38,7 +38,7 @@
      * {@hide}
      */
     void drawTextRun(Canvas c, int start, int end, int contextStart, int contextEnd,
-            float x, float y, int flags, Paint p);
+            float x, float y, Paint p);
 
    /**
      * Just like {@link Paint#measureText}.
@@ -55,19 +55,12 @@
      * @hide
      */
     float getTextRunAdvances(int start, int end, int contextStart, int contextEnd,
-            int flags, float[] advances, int advancesIndex, Paint paint);
-
-    /**
-     * Just like {@link Paint#getTextRunAdvances}.
-     * @hide
-     */
-    float getTextRunAdvances(int start, int end, int contextStart, int contextEnd,
-            int flags, float[] advances, int advancesIndex, Paint paint, int reserved);
+            float[] advances, int advancesIndex, Paint paint);
 
     /**
      * Just like {@link Paint#getTextRunCursor}.
      * @hide
      */
-    int getTextRunCursor(int contextStart, int contextEnd, int flags, int offset,
+    int getTextRunCursor(int contextStart, int contextEnd, int offset,
             int cursorOpt, Paint p);
 }
diff --git a/core/java/android/text/MeasuredText.java b/core/java/android/text/MeasuredText.java
index bd9310c1..0c881a4 100644
--- a/core/java/android/text/MeasuredText.java
+++ b/core/java/android/text/MeasuredText.java
@@ -159,18 +159,15 @@
         mPos = p + len;
 
         if (mEasy) {
-            int flags = mDir == Layout.DIR_LEFT_TO_RIGHT
-                ? Canvas.DIRECTION_LTR : Canvas.DIRECTION_RTL;
-            return paint.getTextRunAdvances(mChars, p, len, p, len, flags, mWidths, p);
+            return paint.getTextRunAdvances(mChars, p, len, p, len, mWidths, p);
         }
 
         float totalAdvance = 0;
         int level = mLevels[p];
         for (int q = p, i = p + 1, e = p + len;; ++i) {
             if (i == e || mLevels[i] != level) {
-                int flags = (level & 0x1) == 0 ? Canvas.DIRECTION_LTR : Canvas.DIRECTION_RTL;
                 totalAdvance +=
-                        paint.getTextRunAdvances(mChars, q, i - q, q, i - q, flags, mWidths, q);
+                        paint.getTextRunAdvances(mChars, q, i - q, q, i - q, mWidths, q);
                 if (i == e) {
                     break;
                 }
diff --git a/core/java/android/text/SpannableStringBuilder.java b/core/java/android/text/SpannableStringBuilder.java
index 0f30d25..9e43671 100644
--- a/core/java/android/text/SpannableStringBuilder.java
+++ b/core/java/android/text/SpannableStringBuilder.java
@@ -1130,20 +1130,20 @@
      * {@hide}
      */
     public void drawTextRun(Canvas c, int start, int end, int contextStart, int contextEnd,
-            float x, float y, int flags, Paint p) {
+            float x, float y, Paint p) {
         checkRange("drawTextRun", start, end);
 
         int contextLen = contextEnd - contextStart;
         int len = end - start;
         if (contextEnd <= mGapStart) {
-            c.drawTextRun(mText, start, len, contextStart, contextLen, x, y, flags, p);
+            c.drawTextRun(mText, start, len, contextStart, contextLen, x, y, p);
         } else if (contextStart >= mGapStart) {
             c.drawTextRun(mText, start + mGapLength, len, contextStart + mGapLength,
-                    contextLen, x, y, flags, p);
+                    contextLen, x, y, p);
         } else {
             char[] buf = TextUtils.obtain(contextLen);
             getChars(contextStart, contextEnd, buf, 0);
-            c.drawTextRun(buf, start - contextStart, len, 0, contextLen, x, y, flags, p);
+            c.drawTextRun(buf, start - contextStart, len, 0, contextLen, x, y, p);
             TextUtils.recycle(buf);
         }
     }
@@ -1200,7 +1200,7 @@
      * Don't call this yourself -- exists for Paint to use internally.
      * {@hide}
      */
-    public float getTextRunAdvances(int start, int end, int contextStart, int contextEnd, int flags,
+    public float getTextRunAdvances(int start, int end, int contextStart, int contextEnd,
             float[] advances, int advancesPos, Paint p) {
 
         float ret;
@@ -1210,44 +1210,15 @@
 
         if (end <= mGapStart) {
             ret = p.getTextRunAdvances(mText, start, len, contextStart, contextLen,
-                    flags, advances, advancesPos);
+                    advances, advancesPos);
         } else if (start >= mGapStart) {
             ret = p.getTextRunAdvances(mText, start + mGapLength, len,
-                    contextStart + mGapLength, contextLen, flags, advances, advancesPos);
+                    contextStart + mGapLength, contextLen, advances, advancesPos);
         } else {
             char[] buf = TextUtils.obtain(contextLen);
             getChars(contextStart, contextEnd, buf, 0);
             ret = p.getTextRunAdvances(buf, start - contextStart, len,
-                    0, contextLen, flags, advances, advancesPos);
-            TextUtils.recycle(buf);
-        }
-
-        return ret;
-    }
-
-    /**
-     * Don't call this yourself -- exists for Paint to use internally.
-     * {@hide}
-     */
-    public float getTextRunAdvances(int start, int end, int contextStart, int contextEnd, int flags,
-            float[] advances, int advancesPos, Paint p, int reserved) {
-
-        float ret;
-
-        int contextLen = contextEnd - contextStart;
-        int len = end - start;
-
-        if (end <= mGapStart) {
-            ret = p.getTextRunAdvances(mText, start, len, contextStart, contextLen,
-                    flags, advances, advancesPos, reserved);
-        } else if (start >= mGapStart) {
-            ret = p.getTextRunAdvances(mText, start + mGapLength, len,
-                    contextStart + mGapLength, contextLen, flags, advances, advancesPos, reserved);
-        } else {
-            char[] buf = TextUtils.obtain(contextLen);
-            getChars(contextStart, contextEnd, buf, 0);
-            ret = p.getTextRunAdvances(buf, start - contextStart, len,
-                    0, contextLen, flags, advances, advancesPos, reserved);
+                    0, contextLen, advances, advancesPos);
             TextUtils.recycle(buf);
         }
 
@@ -1270,7 +1241,7 @@
      *
      * @param contextStart the start index of the context
      * @param contextEnd the (non-inclusive) end index of the context
-     * @param flags either DIRECTION_RTL or DIRECTION_LTR
+     * @param flags reserved
      * @param offset the cursor position to move from
      * @param cursorOpt how to move the cursor, one of CURSOR_AFTER,
      * CURSOR_AT_OR_AFTER, CURSOR_BEFORE,
@@ -1281,22 +1252,30 @@
      */
     @Deprecated
     public int getTextRunCursor(int contextStart, int contextEnd, int flags, int offset,
-            int cursorOpt, Paint p) {
+                                int cursorOpt, Paint p) {
+        return getTextRunCursor(contextStart, contextEnd, offset, cursorOpt, p);
+    }
+
+    /**
+     * @hide
+     */
+    public int getTextRunCursor(int contextStart, int contextEnd, int offset,
+                                int cursorOpt, Paint p) {
 
         int ret;
 
         int contextLen = contextEnd - contextStart;
         if (contextEnd <= mGapStart) {
             ret = p.getTextRunCursor(mText, contextStart, contextLen,
-                    flags, offset, cursorOpt);
+                    offset, cursorOpt);
         } else if (contextStart >= mGapStart) {
             ret = p.getTextRunCursor(mText, contextStart + mGapLength, contextLen,
-                    flags, offset + mGapLength, cursorOpt) - mGapLength;
+                    offset + mGapLength, cursorOpt) - mGapLength;
         } else {
             char[] buf = TextUtils.obtain(contextLen);
             getChars(contextStart, contextEnd, buf, 0);
             ret = p.getTextRunCursor(buf, 0, contextLen,
-                    flags, offset - contextStart, cursorOpt) + contextStart;
+                    offset - contextStart, cursorOpt) + contextStart;
             TextUtils.recycle(buf);
         }
 
diff --git a/core/java/android/text/TextDirectionHeuristic.java b/core/java/android/text/TextDirectionHeuristic.java
index 513e11c..8a4ba42 100644
--- a/core/java/android/text/TextDirectionHeuristic.java
+++ b/core/java/android/text/TextDirectionHeuristic.java
@@ -17,10 +17,30 @@
 package android.text;
 
 /**
- * Interface for objects that guess at the paragraph direction by examining text.
- *
- * @hide
+ * Interface for objects that use a heuristic for guessing at the paragraph direction by examining text.
  */
 public interface TextDirectionHeuristic {
-    boolean isRtl(char[] text, int start, int count);
+    /**
+     * Guess if a chars array is in the RTL direction or not.
+     *
+     * @param array the char array.
+     * @param start start index, inclusive.
+     * @param count the length to check, must not be negative and not greater than
+     *          {@code array.length - start}.
+     * @return true if all chars in the range are to be considered in a RTL direction,
+     *          false otherwise.
+     */
+    boolean isRtl(char[] array, int start, int count);
+
+    /**
+     * Guess if a {@code CharSequence} is in the RTL direction or not.
+     *
+     * @param cs the CharSequence.
+     * @param start start index, inclusive.
+     * @param count the length to check, must not be negative and not greater than
+     *            {@code CharSequence.length() - start}.
+     * @return true if all chars in the range are to be considered in a RTL direction,
+     *          false otherwise.
+     */
+    boolean isRtl(CharSequence cs, int start, int count);
 }
diff --git a/core/java/android/text/TextDirectionHeuristics.java b/core/java/android/text/TextDirectionHeuristics.java
index df8c4c6..7d7e3a9 100644
--- a/core/java/android/text/TextDirectionHeuristics.java
+++ b/core/java/android/text/TextDirectionHeuristics.java
@@ -19,43 +19,45 @@
 
 import android.view.View;
 
+import java.nio.CharBuffer;
+
 /**
  * Some objects that implement TextDirectionHeuristic.
  *
- * @hide
  */
 public class TextDirectionHeuristics {
 
-    /** Always decides that the direction is left to right. */
+    /**
+     * Always decides that the direction is left to right.
+     */
     public static final TextDirectionHeuristic LTR =
         new TextDirectionHeuristicInternal(null /* no algorithm */, false);
 
-    /** Always decides that the direction is right to left. */
+    /**
+     * Always decides that the direction is right to left.
+     */
     public static final TextDirectionHeuristic RTL =
         new TextDirectionHeuristicInternal(null /* no algorithm */, true);
 
     /**
-     * Determines the direction based on the first strong directional character,
-     * including bidi format chars, falling back to left to right if it
-     * finds none.  This is the default behavior of the Unicode Bidirectional
-     * Algorithm.
+     * Determines the direction based on the first strong directional character, including bidi
+     * format chars, falling back to left to right if it finds none. This is the default behavior
+     * of the Unicode Bidirectional Algorithm.
      */
     public static final TextDirectionHeuristic FIRSTSTRONG_LTR =
         new TextDirectionHeuristicInternal(FirstStrong.INSTANCE, false);
 
     /**
-     * Determines the direction based on the first strong directional character,
-     * including bidi format chars, falling back to right to left if it
-     * finds none.  This is similar to the default behavior of the Unicode
-     * Bidirectional Algorithm, just with different fallback behavior.
+     * Determines the direction based on the first strong directional character, including bidi
+     * format chars, falling back to right to left if it finds none. This is similar to the default
+     * behavior of the Unicode Bidirectional Algorithm, just with different fallback behavior.
      */
     public static final TextDirectionHeuristic FIRSTSTRONG_RTL =
         new TextDirectionHeuristicInternal(FirstStrong.INSTANCE, true);
 
     /**
-     * If the text contains any strong right to left non-format character, determines
-     * that the direction is right to left, falling back to left to right if it
-     * finds none.
+     * If the text contains any strong right to left non-format character, determines that the
+     * direction is right to left, falling back to left to right if it finds none.
      */
     public static final TextDirectionHeuristic ANYRTL_LTR =
         new TextDirectionHeuristicInternal(AnyStrong.INSTANCE_RTL, false);
@@ -65,8 +67,39 @@
      */
     public static final TextDirectionHeuristic LOCALE = TextDirectionHeuristicLocale.INSTANCE;
 
-    private static enum TriState {
-        TRUE, FALSE, UNKNOWN;
+    /**
+     * State constants for taking care about true / false / unknown
+     */
+    private static final int STATE_TRUE = 0;
+    private static final int STATE_FALSE = 1;
+    private static final int STATE_UNKNOWN = 2;
+
+    private static int isRtlText(int directionality) {
+        switch (directionality) {
+            case Character.DIRECTIONALITY_LEFT_TO_RIGHT:
+                return STATE_FALSE;
+            case Character.DIRECTIONALITY_RIGHT_TO_LEFT:
+            case Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC:
+                return STATE_TRUE;
+            default:
+                return STATE_UNKNOWN;
+        }
+    }
+
+    private static int isRtlTextOrFormat(int directionality) {
+        switch (directionality) {
+            case Character.DIRECTIONALITY_LEFT_TO_RIGHT:
+            case Character.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING:
+            case Character.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE:
+                return STATE_FALSE;
+            case Character.DIRECTIONALITY_RIGHT_TO_LEFT:
+            case Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC:
+            case Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING:
+            case Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE:
+                return STATE_TRUE;
+            default:
+                return STATE_UNKNOWN;
+        }
     }
 
     /**
@@ -87,21 +120,26 @@
         abstract protected boolean defaultIsRtl();
 
         @Override
-        public boolean isRtl(char[] chars, int start, int count) {
-            if (chars == null || start < 0 || count < 0 || chars.length - count < start) {
+        public boolean isRtl(char[] array, int start, int count) {
+            return isRtl(CharBuffer.wrap(array), start, count);
+        }
+
+        @Override
+        public boolean isRtl(CharSequence cs, int start, int count) {
+            if (cs == null || start < 0 || count < 0 || cs.length() - count < start) {
                 throw new IllegalArgumentException();
             }
             if (mAlgorithm == null) {
                 return defaultIsRtl();
             }
-            return doCheck(chars, start, count);
+            return doCheck(cs, start, count);
         }
 
-        private boolean doCheck(char[] chars, int start, int count) {
-            switch(mAlgorithm.checkRtl(chars, start, count)) {
-                case TRUE:
+        private boolean doCheck(CharSequence cs, int start, int count) {
+            switch(mAlgorithm.checkRtl(cs, start, count)) {
+                case STATE_TRUE:
                     return true;
-                case FALSE:
+                case STATE_FALSE:
                     return false;
                 default:
                     return defaultIsRtl();
@@ -124,58 +162,26 @@
         }
     }
 
-    private static TriState isRtlText(int directionality) {
-        switch (directionality) {
-            case Character.DIRECTIONALITY_LEFT_TO_RIGHT:
-                return TriState.FALSE;
-            case Character.DIRECTIONALITY_RIGHT_TO_LEFT:
-            case Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC:
-                return TriState.TRUE;
-            default:
-                return TriState.UNKNOWN;
-        }
-    }
-
-    private static TriState isRtlTextOrFormat(int directionality) {
-        switch (directionality) {
-            case Character.DIRECTIONALITY_LEFT_TO_RIGHT:
-            case Character.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING:
-            case Character.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE:
-                return TriState.FALSE;
-            case Character.DIRECTIONALITY_RIGHT_TO_LEFT:
-            case Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC:
-            case Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING:
-            case Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE:
-                return TriState.TRUE;
-            default:
-                return TriState.UNKNOWN;
-        }
-    }
-
     /**
      * Interface for an algorithm to guess the direction of a paragraph of text.
-     *
      */
     private static interface TextDirectionAlgorithm {
         /**
          * Returns whether the range of text is RTL according to the algorithm.
-         *
          */
-        TriState checkRtl(char[] text, int start, int count);
+        int checkRtl(CharSequence cs, int start, int count);
     }
 
     /**
-     * Algorithm that uses the first strong directional character to determine
-     * the paragraph direction.  This is the standard Unicode Bidirectional
-     * algorithm.
-     *
+     * Algorithm that uses the first strong directional character to determine the paragraph
+     * direction. This is the standard Unicode Bidirectional algorithm.
      */
     private static class FirstStrong implements TextDirectionAlgorithm {
         @Override
-        public TriState checkRtl(char[] text, int start, int count) {
-            TriState result = TriState.UNKNOWN;
-            for (int i = start, e = start + count; i < e && result == TriState.UNKNOWN; ++i) {
-                result = isRtlTextOrFormat(Character.getDirectionality(text[i]));
+        public int checkRtl(CharSequence cs, int start, int count) {
+            int result = STATE_UNKNOWN;
+            for (int i = start, e = start + count; i < e && result == STATE_UNKNOWN; ++i) {
+                result = isRtlTextOrFormat(Character.getDirectionality(cs.charAt(i)));
             }
             return result;
         }
@@ -190,25 +196,24 @@
      * Algorithm that uses the presence of any strong directional non-format
      * character (e.g. excludes LRE, LRO, RLE, RLO) to determine the
      * direction of text.
-     *
      */
     private static class AnyStrong implements TextDirectionAlgorithm {
         private final boolean mLookForRtl;
 
         @Override
-        public TriState checkRtl(char[] text, int start, int count) {
+        public int checkRtl(CharSequence cs, int start, int count) {
             boolean haveUnlookedFor = false;
             for (int i = start, e = start + count; i < e; ++i) {
-                switch (isRtlText(Character.getDirectionality(text[i]))) {
-                    case TRUE:
+                switch (isRtlText(Character.getDirectionality(cs.charAt(i)))) {
+                    case STATE_TRUE:
                         if (mLookForRtl) {
-                            return TriState.TRUE;
+                            return STATE_TRUE;
                         }
                         haveUnlookedFor = true;
                         break;
-                    case FALSE:
+                    case STATE_FALSE:
                         if (!mLookForRtl) {
-                            return TriState.FALSE;
+                            return STATE_FALSE;
                         }
                         haveUnlookedFor = true;
                         break;
@@ -217,9 +222,9 @@
                 }
             }
             if (haveUnlookedFor) {
-                return mLookForRtl ? TriState.FALSE : TriState.TRUE;
+                return mLookForRtl ? STATE_FALSE : STATE_TRUE;
             }
-            return TriState.UNKNOWN;
+            return STATE_UNKNOWN;
         }
 
         private AnyStrong(boolean lookForRtl) {
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java
index 1fecf81..e34a0ef 100644
--- a/core/java/android/text/TextLine.java
+++ b/core/java/android/text/TextLine.java
@@ -664,14 +664,13 @@
             }
         }
 
-        int flags = runIsRtl ? Paint.DIRECTION_RTL : Paint.DIRECTION_LTR;
         int cursorOpt = after ? Paint.CURSOR_AFTER : Paint.CURSOR_BEFORE;
         if (mCharsValid) {
             return wp.getTextRunCursor(mChars, spanStart, spanLimit - spanStart,
-                    flags, offset, cursorOpt);
+                    offset, cursorOpt);
         } else {
             return wp.getTextRunCursor(mText, mStart + spanStart,
-                    mStart + spanLimit, flags, mStart + offset, cursorOpt) - mStart;
+                    mStart + spanLimit, mStart + offset, cursorOpt) - mStart;
         }
     }
 
@@ -738,15 +737,13 @@
 
         int contextLen = contextEnd - contextStart;
         if (needWidth || (c != null && (wp.bgColor != 0 || wp.underlineColor != 0 || runIsRtl))) {
-            int flags = runIsRtl ? Paint.DIRECTION_RTL : Paint.DIRECTION_LTR;
             if (mCharsValid) {
                 ret = wp.getTextRunAdvances(mChars, start, runLen,
-                        contextStart, contextLen, flags, null, 0);
+                        contextStart, contextLen, null, 0);
             } else {
                 int delta = mStart;
-                ret = wp.getTextRunAdvances(mText, delta + start,
-                        delta + end, delta + contextStart, delta + contextEnd,
-                        flags, null, 0);
+                ret = wp.getTextRunAdvances(mText, delta + start, delta + end,
+                        delta + contextStart, delta + contextEnd, null, 0);
             }
         }
 
@@ -786,8 +783,7 @@
                 wp.setAntiAlias(previousAntiAlias);
             }
 
-            drawTextRun(c, wp, start, end, contextStart, contextEnd, runIsRtl,
-                    x, y + wp.baselineShift);
+            drawTextRun(c, wp, start, end, contextStart, contextEnd, x, y + wp.baselineShift);
         }
 
         return runIsRtl ? -ret : ret;
@@ -970,23 +966,21 @@
      * @param end the end of the run
      * @param contextStart the start of context for the run
      * @param contextEnd the end of the context for the run
-     * @param runIsRtl true if the run is right-to-left
      * @param x the x position of the left edge of the run
      * @param y the baseline of the run
      */
     private void drawTextRun(Canvas c, TextPaint wp, int start, int end,
-            int contextStart, int contextEnd, boolean runIsRtl, float x, int y) {
+            int contextStart, int contextEnd, float x, int y) {
 
-        int flags = runIsRtl ? Canvas.DIRECTION_RTL : Canvas.DIRECTION_LTR;
         if (mCharsValid) {
             int count = end - start;
             int contextCount = contextEnd - contextStart;
             c.drawTextRun(mChars, start, count, contextStart, contextCount,
-                    x, y, flags, wp);
+                    x, y, wp);
         } else {
             int delta = mStart;
             c.drawTextRun(mText, delta + start, delta + end,
-                    delta + contextStart, delta + contextEnd, x, y, flags, wp);
+                    delta + contextStart, delta + contextEnd, x, y, wp);
         }
     }
 
diff --git a/core/java/android/text/bidi/BidiFormatter.java b/core/java/android/text/bidi/BidiFormatter.java
new file mode 100644
index 0000000..370cbf7
--- /dev/null
+++ b/core/java/android/text/bidi/BidiFormatter.java
@@ -0,0 +1,1123 @@
+/*
+ * 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.text.bidi;
+
+import android.text.TextDirectionHeuristic;
+import android.text.TextDirectionHeuristics;
+import android.text.TextUtils;
+import android.view.View;
+
+import static android.text.TextDirectionHeuristics.FIRSTSTRONG_LTR;
+
+import java.util.Locale;
+
+
+/**
+ * Utility class for formatting text for display in a potentially opposite-directionality context
+ * without garbling. The directionality of the context is set at formatter creation and the
+ * directionality of the text can be either estimated or passed in when known. Provides the
+ * following functionality:
+ * <p>
+ * 1. Bidi Wrapping
+ * When text in one language is mixed into a document in another, opposite-directionality language,
+ * e.g. when an English business name is embedded in a Hebrew web page, both the inserted string
+ * and the text surrounding it may be displayed incorrectly unless the inserted string is explicitly
+ * separated from the surrounding text in a "wrapper" that:
+ * <p>
+ * - Declares its directionality so that the string is displayed correctly. This can be done in HTML
+ *   markup (e.g. a 'span dir="rtl"' element) by {@link #spanWrap} and similar methods, or - only in
+ *   contexts where markup can't be used - in Unicode bidi formatting codes by {@link #unicodeWrap}
+ *   and similar methods.
+ * <p>
+ * - Isolates the string's directionality, so it does not unduly affect the surrounding content.
+ *   Currently, this can only be done using invisible Unicode characters of the same direction as
+ *   the context (LRM or RLM) in addition to the directionality declaration above, thus "resetting"
+ *   the directionality to that of the context. The "reset" may need to be done at both ends of the
+ *   string. Without "reset" after the string, the string will "stick" to a number or logically
+ *   separate opposite-direction text that happens to follow it in-line (even if separated by
+ *   neutral content like spaces and punctuation). Without "reset" before the string, the same can
+ *   happen there, but only with more opposite-direction text, not a number. One approach is to
+ *   "reset" the direction only after each string, on the theory that if the preceding opposite-
+ *   direction text is itself bidi-wrapped, the "reset" after it will prevent the sticking. (Doing
+ *   the "reset" only before each string definitely does not work because we do not want to require
+ *   bidi-wrapping numbers, and a bidi-wrapped opposite-direction string could be followed by a
+ *   number.) Still, the safest policy is to do the "reset" on both ends of each string, since RTL
+ *   message translations often contain untranslated Latin-script brand names and technical terms,
+ *   and one of these can be followed by a bidi-wrapped inserted value. On the other hand, when one
+ *   has such a message, it is best to do the "reset" manually in the message translation itself,
+ *   since the message's opposite-direction text could be followed by an inserted number, which we
+ *   would not bidi-wrap anyway. Thus, "reset" only after the string is the current default. In an
+ *   alternative to "reset", recent additions to the HTML, CSS, and Unicode standards allow the
+ *   isolation to be part of the directionality declaration. This form of isolation is better than
+ *   "reset" because it takes less space, does not require knowing the context directionality, has a
+ *   gentler effect than "reset", and protects both ends of the string. However, we do not yet allow
+ *   using it because required platforms do not yet support it.
+ * <p>
+ * Providing these wrapping services is the basic purpose of the bidi formatter.
+ * <p>
+ * 2. Directionality estimation
+ * How does one know whether a string about to be inserted into surrounding text has the same
+ * directionality? Well, in many cases, one knows that this must be the case when writing the code
+ * doing the insertion, e.g. when a localized message is inserted into a localized page. In such
+ * cases there is no need to involve the bidi formatter at all. In some other cases, it need not be
+ * the same as the context, but is either constant (e.g. urls are always LTR) or otherwise known.
+ * In the remaining cases, e.g. when the string is user-entered or comes from a database, the
+ * language of the string (and thus its directionality) is not known a priori, and must be
+ * estimated at run-time. The bidi formatter can do this automatically using the default
+ * first-strong estimation algorithm. It can also be configured to use a custom directionality
+ * estimation object.
+ * <p>
+ * 3. Escaping
+ * When wrapping plain text - i.e. text that is not already HTML or HTML-escaped - in HTML markup,
+ * the text must first be HTML-escaped to prevent XSS attacks and other nasty business. This of
+ * course is always true, but the escaping can not be done after the string has already been wrapped
+ * in markup, so the bidi formatter also serves as a last chance and includes escaping services.
+ * <p>
+ * Thus, in a single call, the formatter will escape the input string as specified, determine its
+ * directionality, and wrap it as necessary. It is then up to the caller to insert the return value
+ * in the output.
+ */
+public final class BidiFormatter {
+
+    /**
+     * The default text direction heuristic.
+     */
+    private static TextDirectionHeuristic DEFAULT_TEXT_DIRECTION_HEURISTIC = FIRSTSTRONG_LTR;
+
+    /**
+     * Unicode "Left-To-Right Embedding" (LRE) character.
+     */
+    private static final char LRE = '\u202A';
+
+    /**
+     * Unicode "Right-To-Left Embedding" (RLE) character.
+     */
+    private static final char RLE = '\u202B';
+
+    /**
+     * Unicode "Pop Directional Formatting" (PDF) character.
+     */
+    private static final char PDF = '\u202C';
+
+    /**
+     *  Unicode "Left-To-Right Mark" (LRM) character.
+     */
+    private static final char LRM = '\u200E';
+
+    /*
+     * Unicode "Right-To-Left Mark" (RLM) character.
+     */
+    private static final char RLM = '\u200F';
+
+    /*
+     * String representation of LRM
+     */
+    private static final String LRM_STRING = Character.toString(LRM);
+
+    /*
+     * String representation of RLM
+     */
+    private static final String RLM_STRING = Character.toString(RLM);
+
+    /**
+     * "ltr" string constant.
+     */
+    private static final String LTR_STRING = "ltr";
+
+    /**
+     * "rtl" string constant.
+     */
+    private static final String RTL_STRING = "rtl";
+
+    /**
+     * "dir=\"ltr\"" string constant.
+     */
+    private static final String DIR_LTR_STRING = "dir=\"ltr\"";
+
+    /**
+     * "dir=\"rtl\"" string constant.
+     */
+    private static final String DIR_RTL_STRING = "dir=\"rtl\"";
+
+    /**
+     * "right" string constant.
+     */
+    private static final String RIGHT = "right";
+
+    /**
+     * "left" string constant.
+     */
+    private static final String LEFT = "left";
+
+    /**
+     * Empty string constant.
+     */
+    private static final String EMPTY_STRING = "";
+
+    /**
+     * A class for building a BidiFormatter with non-default options.
+     */
+    public static final class Builder {
+        private boolean isRtlContext;
+        private int flags;
+        private TextDirectionHeuristic textDirectionHeuristic;
+
+        /**
+         * Constructor.
+         *
+         */
+        public Builder() {
+            initialize(isRtlLocale(Locale.getDefault()));
+        }
+
+        /**
+         * Constructor.
+         *
+         * @param rtlContext Whether the context directionality is RTL.
+         */
+        public Builder(boolean rtlContext) {
+            initialize(rtlContext);
+        }
+
+        /**
+         * Constructor.
+         *
+         * @param locale The context locale.
+         */
+        public Builder(Locale locale) {
+            initialize(isRtlLocale(locale));
+        }
+
+        /**
+         * Initializes the builder with the given context directionality and default options.
+         *
+         * @param isRtlContext Whether the context is RTL or not.
+         */
+        private void initialize(boolean isRtlContext) {
+            this.isRtlContext = isRtlContext;
+            textDirectionHeuristic = DEFAULT_TEXT_DIRECTION_HEURISTIC;
+            this.flags = DEFAULT_FLAGS;
+        }
+
+        /**
+         * Specifies whether the BidiFormatter to be built should also "reset" directionality before
+         * a string being bidi-wrapped, not just after it. The default is false.
+         */
+        public Builder stereoReset(boolean stereoReset) {
+            if (stereoReset) {
+                flags |= FLAG_STEREO_RESET;
+            } else {
+                flags &= ~FLAG_STEREO_RESET;
+            }
+            return this;
+        }
+
+        /**
+         * Specifies the default directionality estimation algorithm to be used by the BidiFormatter.
+         * By default, uses the first-strong heuristic.
+         *
+         * @param heuristic the {@code TextDirectionHeuristic} to use.
+         * @return the builder itself.
+         */
+        public Builder setTextDirectionHeuristic(TextDirectionHeuristic heuristic) {
+            this.textDirectionHeuristic = heuristic;
+            return this;
+        }
+
+        private static BidiFormatter getDefaultInstanceFromContext(boolean isRtlContext) {
+            return isRtlContext ? DEFAULT_RTL_INSTANCE : DEFAULT_LTR_INSTANCE;
+        }
+
+        /**
+         * @return A BidiFormatter with the specified options.
+         */
+        public BidiFormatter build() {
+            if (flags == DEFAULT_FLAGS &&
+                    textDirectionHeuristic == DEFAULT_TEXT_DIRECTION_HEURISTIC) {
+                return getDefaultInstanceFromContext(isRtlContext);
+            }
+            return new BidiFormatter(isRtlContext, flags, textDirectionHeuristic);
+        }
+    }
+
+    //
+    private static final int FLAG_STEREO_RESET = 2;
+    private static final int DEFAULT_FLAGS = FLAG_STEREO_RESET;
+
+    private static final BidiFormatter DEFAULT_LTR_INSTANCE = new BidiFormatter(
+            false /* LTR context */,
+            DEFAULT_FLAGS,
+            DEFAULT_TEXT_DIRECTION_HEURISTIC);
+
+    private static final BidiFormatter DEFAULT_RTL_INSTANCE = new BidiFormatter(
+            true /* RTL context */,
+            DEFAULT_FLAGS,
+            DEFAULT_TEXT_DIRECTION_HEURISTIC);
+
+    private final boolean isRtlContext;
+    private final int flags;
+    private final TextDirectionHeuristic defaultTextDirectionHeuristic;
+
+    /**
+     * Factory for creating an instance of BidiFormatter given the context directionality.
+     *
+     * @param rtlContext Whether the context directionality is RTL.
+     */
+    public static BidiFormatter getInstance(boolean rtlContext) {
+        return new Builder(rtlContext).build();
+    }
+
+    /**
+     * Factory for creating an instance of BidiFormatter given the context locale.
+     *
+     * @param locale The context locale.
+     */
+    public static BidiFormatter getInstance(Locale locale) {
+        return new Builder(locale).build();
+    }
+
+    /**
+     * @param isRtlContext Whether the context directionality is RTL or not.
+     * @param flags The option flags.
+     * @param heuristic The default text direction heuristic.
+     */
+    private BidiFormatter(boolean isRtlContext, int flags, TextDirectionHeuristic heuristic) {
+        this.isRtlContext = isRtlContext;
+        this.flags = flags;
+        this.defaultTextDirectionHeuristic = heuristic;
+    }
+
+    /**
+     * @return Whether the context directionality is RTL
+     */
+    public boolean isRtlContext() {
+        return isRtlContext;
+    }
+
+    /**
+     * @return Whether directionality "reset" should also be done before a string being
+     * bidi-wrapped, not just after it.
+     */
+    public boolean getStereoReset() {
+        return (flags & FLAG_STEREO_RESET) != 0;
+    }
+
+    /**
+     * Returns "rtl" if {@code str}'s estimated directionality is RTL, and "ltr" if it is LTR.
+     *
+     * @param str String whose directionality is to be estimated.
+     * @return "rtl" if {@code str}'s estimated directionality is RTL, and "ltr" otherwise.
+     */
+    public String dirAttrValue(String str) {
+        return dirAttrValue(isRtl(str));
+    }
+
+    /**
+     * Operates like {@link #dirAttrValue(String)}, but uses a given heuristic to estimate the
+     * {@code str}'s directionality.
+     *
+     * @param str String whose directionality is to be estimated.
+     * @param heuristic The text direction heuristic that will be used to estimate the {@code str}'s
+     *                  directionality.
+     * @return "rtl" if {@code str}'s estimated directionality is RTL, and "ltr" otherwise.
+     */
+    public String dirAttrValue(String str, TextDirectionHeuristic heuristic) {
+        return dirAttrValue(heuristic.isRtl(str, 0, str.length()));
+    }
+
+    /**
+     * Returns "rtl" if the given directionality is RTL, and "ltr" if it is LTR.
+     *
+     * @param isRtl Whether the directionality is RTL or not.
+     * @return "rtl" if the given directionality is RTL, and "ltr" otherwise.
+     */
+    public String dirAttrValue(boolean isRtl) {
+        return isRtl ? RTL_STRING : LTR_STRING;
+    }
+
+    /**
+     * Returns "dir=\"ltr\"" or "dir=\"rtl\"", depending on {@code str}'s estimated directionality,
+     * if it is not the same as the context directionality. Otherwise, returns the empty string.
+     *
+     * @param str String whose directionality is to be estimated.
+     * @return "dir=\"rtl\"" for RTL text in non-RTL context; "dir=\"ltr\"" for LTR text in non-LTR
+     *     context; else, the empty string.
+     */
+    public String dirAttr(String str) {
+        return dirAttr(isRtl(str));
+    }
+
+    /**
+     * Operates like {@link #dirAttr(String)}, but uses a given heuristic to estimate the
+     * {@code str}'s directionality.
+     *
+     * @param str String whose directionality is to be estimated.
+     * @param heuristic The text direction heuristic that will be used to estimate the {@code str}'s
+     *                  directionality.
+     * @return "dir=\"rtl\"" for RTL text in non-RTL context; "dir=\"ltr\"" for LTR text in non-LTR
+     *     context; else, the empty string.
+     */
+    public String dirAttr(String str, TextDirectionHeuristic heuristic) {
+        return dirAttr(heuristic.isRtl(str, 0, str.length()));
+    }
+
+    /**
+     * Returns "dir=\"ltr\"" or "dir=\"rtl\"", depending on the given directionality, if it is not
+     * the same as the context directionality. Otherwise, returns the empty string.
+     *
+     * @param isRtl Whether the directionality is RTL or not
+     * @return "dir=\"rtl\"" for RTL text in non-RTL context; "dir=\"ltr\"" for LTR text in non-LTR
+     *     context; else, the empty string.
+     */
+    public String dirAttr(boolean isRtl) {
+        return (isRtl != isRtlContext) ? (isRtl ? DIR_RTL_STRING :  DIR_LTR_STRING) : EMPTY_STRING;
+    }
+
+    /**
+     * Returns a Unicode bidi mark matching the context directionality (LRM or RLM) if either the
+     * overall or the exit directionality of a given string is opposite to the context directionality.
+     * Putting this after the string (including its directionality declaration wrapping) prevents it
+     * from "sticking" to other opposite-directionality text or a number appearing after it inline
+     * with only neutral content in between. Otherwise returns the empty string. While the exit
+     * directionality is determined by scanning the end of the string, the overall directionality is
+     * given explicitly in {@code dir}.
+     *
+     * @param str String after which the mark may need to appear.
+     * @return LRM for RTL text in LTR context; RLM for LTR text in RTL context;
+     *     else, the empty string.
+     */
+    public String markAfter(String str) {
+        return markAfter(str, defaultTextDirectionHeuristic);
+    }
+
+    /**
+     * Operates like {@link #markAfter(String)}, but uses a given heuristic to estimate the
+     * {@code str}'s directionality.
+     *
+     * @param str String after which the mark may need to appear.
+     * @param heuristic The text direction heuristic that will be used to estimate the {@code str}'s
+     *                  directionality.
+     * @return LRM for RTL text in LTR context; RLM for LTR text in RTL context;
+     *     else, the empty string.
+     */
+    public String markAfter(String str, TextDirectionHeuristic heuristic) {
+        final boolean isRtl = heuristic.isRtl(str, 0, str.length());
+        // getExitDir() is called only if needed (short-circuit).
+        if (!isRtlContext && (isRtl || getExitDir(str) == DIR_RTL)) {
+            return LRM_STRING;
+        }
+        if (isRtlContext && (!isRtl || getExitDir(str) == DIR_LTR)) {
+            return RLM_STRING;
+        }
+        return EMPTY_STRING;
+    }
+
+    /**
+     * Returns a Unicode bidi mark matching the context directionality (LRM or RLM) if either the
+     * overall or the entry directionality of a given string is opposite to the context
+     * directionality. Putting this before the string (including its directionality declaration
+     * wrapping) prevents it from "sticking" to other opposite-directionality text appearing before it
+     * inline with only neutral content in between. Otherwise returns the empty string. While the
+     * entry directionality is determined by scanning the beginning of the string, the overall
+     * directionality is given explicitly in {@code dir}.
+     *
+     * @param str String before which the mark may need to appear.
+     * @return LRM for RTL text in LTR context; RLM for LTR text in RTL context;
+     *     else, the empty string.
+     */
+    public String markBefore(String str) {
+        return markBefore(str, defaultTextDirectionHeuristic);
+    }
+
+    /**
+     * Operates like {@link #markBefore(String)}, but uses a given heuristic to estimate the
+     * {@code str}'s directionality.
+     *
+     * @param str String before which the mark may need to appear.
+     * @param heuristic The text direction heuristic that will be used to estimate the {@code str}'s
+     *                  directionality.
+     * @return LRM for RTL text in LTR context; RLM for LTR text in RTL context;
+     *     else, the empty string.
+     */
+    public String markBefore(String str, TextDirectionHeuristic heuristic) {
+        final boolean isRtl = heuristic.isRtl(str, 0, str.length());
+        // getEntryDir() is called only if needed (short-circuit).
+        if (!isRtlContext && (isRtl || getEntryDir(str) == DIR_RTL)) {
+            return LRM_STRING;
+        }
+        if (isRtlContext && (!isRtl || getEntryDir(str) == DIR_LTR)) {
+            return RLM_STRING;
+        }
+        return EMPTY_STRING;
+    }
+
+    /**
+     * Returns the Unicode bidi mark matching the context directionality (LRM for LTR context
+     * directionality, RLM for RTL context directionality).
+     */
+    public String mark() {
+        return isRtlContext ? RLM_STRING : LRM_STRING;
+    }
+
+    /**
+     * Returns "right" for RTL context directionality. Otherwise for LTR context directionality
+     * returns "left".
+     */
+    public String startEdge() {
+        return isRtlContext  ? RIGHT : LEFT;
+    }
+
+    /**
+     * Returns "left" for RTL context directionality. Otherwise for LTR context directionality
+     * returns "right".
+     */
+    public String endEdge() {
+        return isRtlContext ? LEFT : RIGHT;
+    }
+
+    /**
+     * Estimates the directionality of a string using the default text direction heuristic.
+     *
+     * @param str String whose directionality is to be estimated.
+     * @return true if {@code str}'s estimated overall directionality is RTL. Otherwise returns
+     *          false.
+     */
+    public boolean isRtl(String str) {
+        return defaultTextDirectionHeuristic.isRtl(str, 0, str.length());
+    }
+
+    /**
+     * Formats a given string of unknown directionality for use in HTML output of the context
+     * directionality, so an opposite-directionality string is neither garbled nor garbles its
+     * surroundings.
+     * <p>
+     * The algorithm: estimates the directionality of the given string using the given heuristic.
+     * If the directionality is known, pass TextDirectionHeuristics.LTR or RTL for heuristic.
+     * In case its directionality doesn't match the context directionality, wraps it with a 'span'
+     * element and adds a "dir" attribute (either 'dir=\"rtl\"' or 'dir=\"ltr\"').
+     * <p>
+     * If {@code isolate}, directionally isolates the string so that it does not garble its
+     * surroundings. Currently, this is done by "resetting" the directionality after the string by
+     * appending a trailing Unicode bidi mark matching the context directionality (LRM or RLM) when
+     * either the overall directionality or the exit directionality of the string is opposite to that
+     * of the context. If the formatter was built using {@link Builder#stereoReset(boolean)} and
+     * passing "true" as an argument, also prepends a Unicode bidi mark matching the context
+     * directionality when either the overall directionality or the entry directionality of the
+     * string is opposite to that of the context.
+     * <p>
+     *
+     * @param str The input string.
+     * @param heuristic The algorithm to be used to estimate the string's overall direction.
+     * @param isolate Whether to directionally isolate the string to prevent it from garbling the
+     *     content around it.
+     * @return Input string after applying the above processing.
+     */
+    public String spanWrap(String str, TextDirectionHeuristic heuristic, boolean isolate) {
+        final boolean isRtl = heuristic.isRtl(str, 0, str.length());
+        String origStr = str;
+        str = TextUtils.htmlEncode(str);
+
+        StringBuilder result = new StringBuilder();
+        if (getStereoReset() && isolate) {
+            result.append(markBefore(origStr,
+                    isRtl ? TextDirectionHeuristics.RTL : TextDirectionHeuristics.LTR));
+        }
+        if (isRtl != isRtlContext) {
+            result.append("<span ").append(dirAttr(isRtl)).append('>').append(str).append("</span>");
+        } else {
+            result.append(str);
+        }
+        if (isolate) {
+            result.append(markAfter(origStr,
+                    isRtl ? TextDirectionHeuristics.RTL : TextDirectionHeuristics.LTR));
+        }
+        return result.toString();
+    }
+
+    /**
+     * Operates like {@link #spanWrap(String, TextDirectionHeuristic, boolean)}, but assumes
+     * {@code isolate} is true.
+     *
+     * @param str The input string.
+     * @param heuristic The algorithm to be used to estimate the string's overall direction.
+     * @return Input string after applying the above processing.
+     */
+    public String spanWrap(String str, TextDirectionHeuristic heuristic) {
+        return spanWrap(str, heuristic, true /* isolate */);
+    }
+
+    /**
+     * Operates like {@link #spanWrap(String, TextDirectionHeuristic, boolean)}, but uses the
+     * formatter's default direction estimation algorithm.
+     *
+     * @param str The input string.
+     * @param isolate Whether to directionally isolate the string to prevent it from garbling the
+     *     content around it
+     * @return Input string after applying the above processing.
+     */
+    public String spanWrap(String str, boolean isolate) {
+        return spanWrap(str, defaultTextDirectionHeuristic, isolate);
+    }
+
+    /**
+     * Operates like {@link #spanWrap(String, TextDirectionHeuristic, boolean)}, but uses the
+     * formatter's default direction estimation algorithm and assumes {@code isolate} is true.
+     *
+     * @param str The input string.
+     * @return Input string after applying the above processing.
+     */
+    public String spanWrap(String str) {
+        return spanWrap(str, defaultTextDirectionHeuristic, true /* isolate */);
+    }
+
+    /**
+     * Formats a string of given directionality for use in plain-text output of the context
+     * directionality, so an opposite-directionality string is neither garbled nor garbles its
+     * surroundings. As opposed to {@link #spanWrap}, this makes use of Unicode bidi
+     * formatting characters. In HTML, its *only* valid use is inside of elements that do not allow
+     * markup, e.g. the 'option' and 'title' elements.
+     * <p>
+     * The algorithm: In case the given directionality doesn't match the context directionality, wraps
+     * the string with Unicode bidi formatting characters: RLE+{@code str}+PDF for RTL text, or
+     * LRE+{@code str}+PDF for LTR text.
+     * <p>
+     * If {@code isolate}, directionally isolates the string so that it does not garble its
+     * surroundings. Currently, this is done by "resetting" the directionality after the string by
+     * appending a trailing Unicode bidi mark matching the context directionality (LRM or RLM) when
+     * either the overall directionality or the exit directionality of the string is opposite to that
+     * of the context. If the formatter was built using {@link Builder#stereoReset(boolean)} and
+     * passing "true" as an argument, also prepends a Unicode bidi mark matching the context
+     * directionality when either the overall directionality or the entry directionality of the
+     * string is opposite to that of the context. Note that as opposed to the overall
+     * directionality, the entry and exit directionalities are determined from the string itself.
+     * <p>
+     * Does *not* do HTML-escaping.
+     *
+     * @param str The input string.
+     * @param heuristic The algorithm to be used to estimate the string's overall direction.
+     * @param isolate Whether to directionally isolate the string to prevent it from garbling the
+     *     content around it
+     * @return Input string after applying the above processing.
+     */
+    public String unicodeWrap(String str, TextDirectionHeuristic heuristic, boolean isolate) {
+        final boolean isRtl = heuristic.isRtl(str, 0, str.length());
+        StringBuilder result = new StringBuilder();
+        if (getStereoReset() && isolate) {
+            result.append(markBefore(str,
+                    isRtl ? TextDirectionHeuristics.RTL : TextDirectionHeuristics.LTR));
+        }
+        if (isRtl != isRtlContext) {
+            result.append(isRtl ? RLE : LRE);
+            result.append(str);
+            result.append(PDF);
+        } else {
+            result.append(str);
+        }
+        if (isolate) {
+            result.append(markAfter(str,
+                    isRtl ? TextDirectionHeuristics.RTL : TextDirectionHeuristics.LTR));
+        }
+        return result.toString();
+    }
+
+    /**
+     * Operates like {@link #unicodeWrap(String, TextDirectionHeuristic, boolean)}, but assumes
+     * {@code isolate} is true.
+     *
+     * @param str The input string.
+     * @param heuristic The algorithm to be used to estimate the string's overall direction.
+     * @return Input string after applying the above processing.
+     */
+    public String unicodeWrap(String str, TextDirectionHeuristic heuristic) {
+        return unicodeWrap(str, heuristic, true /* isolate */);
+    }
+
+    /**
+     * Operates like {@link #unicodeWrap(String, TextDirectionHeuristic, boolean)}, but uses the
+     * formatter's default direction estimation algorithm.
+     *
+     * @param str The input string.
+     * @param isolate Whether to directionally isolate the string to prevent it from garbling the
+     *     content around it
+     * @return Input string after applying the above processing.
+     */
+    public String unicodeWrap(String str, boolean isolate) {
+        return unicodeWrap(str, defaultTextDirectionHeuristic, isolate);
+    }
+
+    /**
+     * Operates like {@link #unicodeWrap(String, TextDirectionHeuristic, boolean)}, but uses the
+     * formatter's default direction estimation algorithm and assumes {@code isolate} is true.
+     *
+     * @param str The input string.
+     * @return Input string after applying the above processing.
+     */
+    public String unicodeWrap(String str) {
+        return unicodeWrap(str, defaultTextDirectionHeuristic, true /* isolate */);
+    }
+
+    /**
+     * Helper method to return true if the Locale directionality is RTL.
+     *
+     * @param locale The Locale whose directionality will be checked to be RTL or LTR
+     * @return true if the {@code locale} directionality is RTL. False otherwise.
+     */
+    private static boolean isRtlLocale(Locale locale) {
+        return (TextUtils.getLayoutDirectionFromLocale(locale) == View.LAYOUT_DIRECTION_RTL);
+    }
+
+    /**
+     * Enum for directionality type.
+     */
+    private static final int DIR_LTR = -1;
+    private static final int DIR_UNKNOWN = 0;
+    private static final int DIR_RTL = +1;
+
+    /**
+     * Returns the directionality of the last character with strong directionality in the string, or
+     * DIR_UNKNOWN if none was encountered. For efficiency, actually scans backwards from the end of
+     * the string. Treats a non-BN character between an LRE/RLE/LRO/RLO and its matching PDF as a
+     * strong character, LTR after LRE/LRO, and RTL after RLE/RLO. The results are undefined for a
+     * string containing unbalanced LRE/RLE/LRO/RLO/PDF characters. The intended use is to check
+     * whether a logically separate item that starts with a number or a character of the string's
+     * exit directionality and follows this string inline (not counting any neutral characters in
+     * between) would "stick" to it in an opposite-directionality context, thus being displayed in
+     * an incorrect position. An LRM or RLM character (the one of the context's directionality)
+     * between the two will prevent such sticking.
+     *
+     * @param str the string to check.
+     */
+    private static int getExitDir(String str) {
+        return new DirectionalityEstimator(str, false /* isHtml */).getExitDir();
+    }
+
+    /**
+     * Returns the directionality of the first character with strong directionality in the string,
+     * or DIR_UNKNOWN if none was encountered. Treats a non-BN character between an
+     * LRE/RLE/LRO/RLO and its matching PDF as a strong character, LTR after LRE/LRO, and RTL after
+     * RLE/RLO. The results are undefined for a string containing unbalanced LRE/RLE/LRO/RLO/PDF
+     * characters. The intended use is to check whether a logically separate item that ends with a
+     * character of the string's entry directionality and precedes the string inline (not counting
+     * any neutral characters in between) would "stick" to it in an opposite-directionality context,
+     * thus being displayed in an incorrect position. An LRM or RLM character (the one of the
+     * context's directionality) between the two will prevent such sticking.
+     *
+     * @param str the string to check.
+     */
+    private static int getEntryDir(String str) {
+        return new DirectionalityEstimator(str, false /* isHtml */).getEntryDir();
+    }
+
+    /**
+     * An object that estimates the directionality of a given string by various methods.
+     *
+     */
+    private static class DirectionalityEstimator {
+
+        // Internal static variables and constants.
+
+        /**
+         * Size of the bidi character class cache. The results of the Character.getDirectionality()
+         * calls on the lowest DIR_TYPE_CACHE_SIZE codepoints are kept in an array for speed.
+         * The 0x700 value is designed to leave all the European and Near Eastern languages in the
+         * cache. It can be reduced to 0x180, restricting the cache to the Western European
+         * languages.
+         */
+        private static final int DIR_TYPE_CACHE_SIZE = 0x700;
+
+        /**
+         * The bidi character class cache.
+         */
+        private static final byte DIR_TYPE_CACHE[];
+
+        static {
+            DIR_TYPE_CACHE = new byte[DIR_TYPE_CACHE_SIZE];
+            for (int i = 0; i < DIR_TYPE_CACHE_SIZE; i++) {
+                DIR_TYPE_CACHE[i] = Character.getDirectionality(i);
+            }
+        }
+
+        // Internal instance variables.
+
+        /**
+         * The text to be scanned.
+         */
+        private final String text;
+
+        /**
+         * Whether the text to be scanned is to be treated as HTML, i.e. skipping over tags and
+         * entities when looking for the next / preceding dir type.
+         */
+        private final boolean isHtml;
+
+        /**
+         * The length of the text in chars.
+         */
+        private final int length;
+
+        /**
+         * The current position in the text.
+         */
+        private int charIndex;
+
+        /**
+         * The char encountered by the last dirTypeForward or dirTypeBackward call. If it
+         * encountered a supplementary codepoint, this contains a char that is not a valid
+         * codepoint. This is ok, because this member is only used to detect some well-known ASCII
+         * syntax, e.g. "http://" and the beginning of an HTML tag or entity.
+         */
+        private char lastChar;
+
+        /**
+         * Constructor.
+         *
+         * @param text The string to scan.
+         * @param isHtml Whether the text to be scanned is to be treated as HTML, i.e. skipping over
+         *     tags and entities.
+         */
+        DirectionalityEstimator(String text, boolean isHtml) {
+            this.text = text;
+            this.isHtml = isHtml;
+            length = text.length();
+        }
+
+        /**
+         * Returns the directionality of the first character with strong directionality in the
+         * string, or DIR_UNKNOWN if none was encountered. Treats a non-BN character between an
+         * LRE/RLE/LRO/RLO and its matching PDF as a strong character, LTR after LRE/LRO, and RTL
+         * after RLE/RLO. The results are undefined for a string containing unbalanced
+         * LRE/RLE/LRO/RLO/PDF characters.
+         */
+        int getEntryDir() {
+            // The reason for this method name, as opposed to getFirstStrongDir(), is that
+            // "first strong" is a commonly used description of Unicode's estimation algorithm,
+            // but the two must treat formatting characters quite differently. Thus, we are staying
+            // away from both "first" and "last" in these method names to avoid confusion.
+            charIndex = 0;
+            int embeddingLevel = 0;
+            int embeddingLevelDir = DIR_UNKNOWN;
+            int firstNonEmptyEmbeddingLevel = 0;
+            while (charIndex < length && firstNonEmptyEmbeddingLevel == 0) {
+                switch (dirTypeForward()) {
+                    case Character.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING:
+                    case Character.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE:
+                        ++embeddingLevel;
+                        embeddingLevelDir = DIR_LTR;
+                        break;
+                    case Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING:
+                    case Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE:
+                        ++embeddingLevel;
+                        embeddingLevelDir = DIR_RTL;
+                        break;
+                    case Character.DIRECTIONALITY_POP_DIRECTIONAL_FORMAT:
+                        --embeddingLevel;
+                        // To restore embeddingLevelDir to its previous value, we would need a
+                        // stack, which we want to avoid. Thus, at this point we do not know the
+                        // current embedding's directionality.
+                        embeddingLevelDir = DIR_UNKNOWN;
+                        break;
+                    case Character.DIRECTIONALITY_BOUNDARY_NEUTRAL:
+                        break;
+                    case Character.DIRECTIONALITY_LEFT_TO_RIGHT:
+                        if (embeddingLevel == 0) {
+                            return DIR_LTR;
+                        }
+                        firstNonEmptyEmbeddingLevel = embeddingLevel;
+                        break;
+                    case Character.DIRECTIONALITY_RIGHT_TO_LEFT:
+                    case Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC:
+                        if (embeddingLevel == 0) {
+                            return DIR_RTL;
+                        }
+                        firstNonEmptyEmbeddingLevel = embeddingLevel;
+                        break;
+                    default:
+                        firstNonEmptyEmbeddingLevel = embeddingLevel;
+                        break;
+                }
+            }
+
+            // We have either found a non-empty embedding or scanned the entire string finding
+            // neither a non-empty embedding nor a strong character outside of an embedding.
+            if (firstNonEmptyEmbeddingLevel == 0) {
+                // We have not found a non-empty embedding. Thus, the string contains neither a
+                // non-empty embedding nor a strong character outside of an embedding.
+                return DIR_UNKNOWN;
+            }
+
+            // We have found a non-empty embedding.
+            if (embeddingLevelDir != DIR_UNKNOWN) {
+                // We know the directionality of the non-empty embedding.
+                return embeddingLevelDir;
+            }
+
+            // We do not remember the directionality of the non-empty embedding we found. So, we go
+            // backwards to find the start of the non-empty embedding and get its directionality.
+            while (charIndex > 0) {
+                switch (dirTypeBackward()) {
+                    case Character.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING:
+                    case Character.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE:
+                        if (firstNonEmptyEmbeddingLevel == embeddingLevel) {
+                            return DIR_LTR;
+                        }
+                        --embeddingLevel;
+                        break;
+                    case Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING:
+                    case Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE:
+                        if (firstNonEmptyEmbeddingLevel == embeddingLevel) {
+                            return DIR_RTL;
+                        }
+                        --embeddingLevel;
+                        break;
+                    case Character.DIRECTIONALITY_POP_DIRECTIONAL_FORMAT:
+                        ++embeddingLevel;
+                        break;
+                }
+            }
+            // We should never get here.
+            return DIR_UNKNOWN;
+        }
+
+        /**
+         * Returns the directionality of the last character with strong directionality in the
+         * string, or DIR_UNKNOWN if none was encountered. For efficiency, actually scans backwards
+         * from the end of the string. Treats a non-BN character between an LRE/RLE/LRO/RLO and its
+         * matching PDF as a strong character, LTR after LRE/LRO, and RTL after RLE/RLO. The results
+         * are undefined for a string containing unbalanced LRE/RLE/LRO/RLO/PDF characters.
+         */
+        int getExitDir() {
+            // The reason for this method name, as opposed to getLastStrongDir(), is that "last
+            // strong" sounds like the exact opposite of "first strong", which is a commonly used
+            // description of Unicode's estimation algorithm (getUnicodeDir() above), but the two
+            // must treat formatting characters quite differently. Thus, we are staying away from
+            // both "first" and "last" in these method names to avoid confusion.
+            charIndex = length;
+            int embeddingLevel = 0;
+            int lastNonEmptyEmbeddingLevel = 0;
+            while (charIndex > 0) {
+                switch (dirTypeBackward()) {
+                    case Character.DIRECTIONALITY_LEFT_TO_RIGHT:
+                        if (embeddingLevel == 0) {
+                            return DIR_LTR;
+                        }
+                        if (lastNonEmptyEmbeddingLevel == 0) {
+                            lastNonEmptyEmbeddingLevel = embeddingLevel;
+                        }
+                        break;
+                    case Character.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING:
+                    case Character.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE:
+                        if (lastNonEmptyEmbeddingLevel == embeddingLevel) {
+                            return DIR_LTR;
+                        }
+                        --embeddingLevel;
+                        break;
+                    case Character.DIRECTIONALITY_RIGHT_TO_LEFT:
+                    case Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC:
+                        if (embeddingLevel == 0) {
+                            return DIR_RTL;
+                        }
+                        if (lastNonEmptyEmbeddingLevel == 0) {
+                            lastNonEmptyEmbeddingLevel = embeddingLevel;
+                        }
+                        break;
+                    case Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING:
+                    case Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE:
+                        if (lastNonEmptyEmbeddingLevel == embeddingLevel) {
+                            return DIR_RTL;
+                        }
+                        --embeddingLevel;
+                        break;
+                    case Character.DIRECTIONALITY_POP_DIRECTIONAL_FORMAT:
+                        ++embeddingLevel;
+                        break;
+                    case Character.DIRECTIONALITY_BOUNDARY_NEUTRAL:
+                        break;
+                    default:
+                        if (lastNonEmptyEmbeddingLevel == 0) {
+                            lastNonEmptyEmbeddingLevel = embeddingLevel;
+                        }
+                        break;
+                }
+            }
+            return DIR_UNKNOWN;
+        }
+
+        // Internal methods
+
+        /**
+         * Gets the bidi character class, i.e. Character.getDirectionality(), of a given char, using
+         * a cache for speed. Not designed for supplementary codepoints, whose results we do not
+         * cache.
+         */
+        private static byte getCachedDirectionality(char c) {
+            return c < DIR_TYPE_CACHE_SIZE ? DIR_TYPE_CACHE[c] : Character.getDirectionality(c);
+        }
+
+        /**
+         * Returns the Character.DIRECTIONALITY_... value of the next codepoint and advances
+         * charIndex. If isHtml, and the codepoint is '<' or '&', advances through the tag/entity,
+         * and returns Character.DIRECTIONALITY_WHITESPACE. For an entity, it would be best to
+         * figure out the actual character, and return its dirtype, but treating it as whitespace is
+         * good enough for our purposes.
+         *
+         * @throws java.lang.IndexOutOfBoundsException if called when charIndex >= length or < 0.
+         */
+        byte dirTypeForward() {
+            lastChar = text.charAt(charIndex);
+            if (Character.isHighSurrogate(lastChar)) {
+                int codePoint = Character.codePointAt(text, charIndex);
+                charIndex += Character.charCount(codePoint);
+                return Character.getDirectionality(codePoint);
+            }
+            charIndex++;
+            byte dirType = getCachedDirectionality(lastChar);
+            if (isHtml) {
+                // Process tags and entities.
+                if (lastChar == '<') {
+                    dirType = skipTagForward();
+                } else if (lastChar == '&') {
+                    dirType = skipEntityForward();
+                }
+            }
+            return dirType;
+        }
+
+        /**
+         * Returns the Character.DIRECTIONALITY_... value of the preceding codepoint and advances
+         * charIndex backwards. If isHtml, and the codepoint is the end of a complete HTML tag or
+         * entity, advances over the whole tag/entity and returns
+         * Character.DIRECTIONALITY_WHITESPACE. For an entity, it would be best to figure out the
+         * actual character, and return its dirtype, but treating it as whitespace is good enough
+         * for our purposes.
+         *
+         * @throws java.lang.IndexOutOfBoundsException if called when charIndex > length or <= 0.
+         */
+        byte dirTypeBackward() {
+            lastChar = text.charAt(charIndex - 1);
+            if (Character.isLowSurrogate(lastChar)) {
+                int codePoint = Character.codePointBefore(text, charIndex);
+                charIndex -= Character.charCount(codePoint);
+                return Character.getDirectionality(codePoint);
+            }
+            charIndex--;
+            byte dirType = getCachedDirectionality(lastChar);
+            if (isHtml) {
+                // Process tags and entities.
+                if (lastChar == '>') {
+                    dirType = skipTagBackward();
+                } else if (lastChar == ';') {
+                    dirType = skipEntityBackward();
+                }
+            }
+            return dirType;
+        }
+
+        /**
+         * Advances charIndex forward through an HTML tag (after the opening &lt; has already been
+         * read) and returns Character.DIRECTIONALITY_WHITESPACE. If there is no matching &gt;,
+         * does not change charIndex and returns Character.DIRECTIONALITY_OTHER_NEUTRALS (for the
+         * &lt; that hadn't been part of a tag after all).
+         */
+        private byte skipTagForward() {
+            int initialCharIndex = charIndex;
+            while (charIndex < length) {
+                lastChar = text.charAt(charIndex++);
+                if (lastChar == '>') {
+                    // The end of the tag.
+                    return Character.DIRECTIONALITY_WHITESPACE;
+                }
+                if (lastChar == '"' || lastChar == '\'') {
+                    // Skip over a quoted attribute value inside the tag.
+                    char quote = lastChar;
+                    while (charIndex < length && (lastChar = text.charAt(charIndex++)) != quote) {}
+                }
+            }
+            // The original '<' wasn't the start of a tag after all.
+            charIndex = initialCharIndex;
+            lastChar = '<';
+            return Character.DIRECTIONALITY_OTHER_NEUTRALS;
+        }
+
+        /**
+         * Advances charIndex backward through an HTML tag (after the closing &gt; has already been
+         * read) and returns Character.DIRECTIONALITY_WHITESPACE. If there is no matching &lt;, does
+         * not change charIndex and returns Character.DIRECTIONALITY_OTHER_NEUTRALS (for the &gt;
+         * that hadn't been part of a tag after all). Nevertheless, the running time for calling
+         * skipTagBackward() in a loop remains linear in the size of the text, even for a text like
+         * "&gt;&gt;&gt;&gt;", because skipTagBackward() also stops looking for a matching &lt;
+         * when it encounters another &gt;.
+         */
+        private byte skipTagBackward() {
+            int initialCharIndex = charIndex;
+            while (charIndex > 0) {
+                lastChar = text.charAt(--charIndex);
+                if (lastChar == '<') {
+                    // The start of the tag.
+                    return Character.DIRECTIONALITY_WHITESPACE;
+                }
+                if (lastChar == '>') {
+                    break;
+                }
+                if (lastChar == '"' || lastChar == '\'') {
+                    // Skip over a quoted attribute value inside the tag.
+                    char quote = lastChar;
+                    while (charIndex > 0 && (lastChar = text.charAt(--charIndex)) != quote) {}
+                }
+            }
+            // The original '>' wasn't the end of a tag after all.
+            charIndex = initialCharIndex;
+            lastChar = '>';
+            return Character.DIRECTIONALITY_OTHER_NEUTRALS;
+        }
+
+        /**
+         * Advances charIndex forward through an HTML character entity tag (after the opening
+         * &amp; has already been read) and returns Character.DIRECTIONALITY_WHITESPACE. It would be
+         * best to figure out the actual character and return its dirtype, but this is good enough.
+         */
+        private byte skipEntityForward() {
+            while (charIndex < length && (lastChar = text.charAt(charIndex++)) != ';') {}
+            return Character.DIRECTIONALITY_WHITESPACE;
+        }
+
+        /**
+         * Advances charIndex backward through an HTML character entity tag (after the closing ;
+         * has already been read) and returns Character.DIRECTIONALITY_WHITESPACE. It would be best
+         * to figure out the actual character and return its dirtype, but this is good enough.
+         * If there is no matching &amp;, does not change charIndex and returns
+         * Character.DIRECTIONALITY_OTHER_NEUTRALS (for the ';' that did not start an entity after
+         * all). Nevertheless, the running time for calling skipEntityBackward() in a loop remains
+         * linear in the size of the text, even for a text like ";;;;;;;", because skipTagBackward()
+         * also stops looking for a matching &amp; when it encounters another ;.
+         */
+        private byte skipEntityBackward() {
+            int initialCharIndex = charIndex;
+            while (charIndex > 0) {
+                lastChar = text.charAt(--charIndex);
+                if (lastChar == '&') {
+                    return Character.DIRECTIONALITY_WHITESPACE;
+                }
+                if (lastChar == ';') {
+                    break;
+                }
+            }
+            charIndex = initialCharIndex;
+            lastChar = ';';
+            return Character.DIRECTIONALITY_OTHER_NEUTRALS;
+        }
+    }
+}
\ No newline at end of file
diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java
index e856501..dae47b8 100644
--- a/core/java/android/util/DisplayMetrics.java
+++ b/core/java/android/util/DisplayMetrics.java
@@ -74,6 +74,15 @@
     public static final int DENSITY_XXHIGH = 480;
 
     /**
+     * Standard quantized DPI for extra-extra-extra-high-density screens.  Applications
+     * should not generally worry about this density; relying on XHIGH graphics
+     * being scaled up to it should be sufficient for almost all cases.  A typical
+     * use of this density would be 4K television screens -- 3840x2160, which
+     * is 2x a traditional HD 1920x1080 screen which runs at DENSITY_XHIGH.
+     */
+    public static final int DENSITY_XXXHIGH = 640;
+
+    /**
      * The reference density used throughout the system.
      */
     public static final int DENSITY_DEFAULT = DENSITY_MEDIUM;
diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java
index 81c25d8..2d6453e 100644
--- a/core/java/android/view/AccessibilityInteractionController.java
+++ b/core/java/android/view/AccessibilityInteractionController.java
@@ -16,8 +16,6 @@
 
 package android.view;
 
-import android.app.ActivityThread;
-import android.content.Context;
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.os.Bundle;
@@ -218,13 +216,8 @@
                 root = mViewRootImpl.mView;
             }
             if (root != null) {
-                int resolvedViewId = root.getContext().getResources().getIdentifier(
-                        viewId, "id", root.getContext().getPackageName());
-                if (resolvedViewId <= 0) {
-                    resolvedViewId = ((Context) ActivityThread.currentActivityThread()
-                            .getSystemContext()).getResources()
-                            .getIdentifier(viewId, "id", "android");
-                }
+                final int resolvedViewId = root.getContext().getResources()
+                        .getIdentifier(viewId, null, null);
                 if (resolvedViewId <= 0) {
                     return;
                 }
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java
index 8051923..1810205 100644
--- a/core/java/android/view/GLES20Canvas.java
+++ b/core/java/android/view/GLES20Canvas.java
@@ -1176,14 +1176,14 @@
 
         int modifiers = setupModifiers(paint);
         try {
-            nDrawText(mRenderer, text, index, count, x, y, paint.mBidiFlags, paint.mNativePaint);
+            nDrawText(mRenderer, text, index, count, x, y, paint.mNativePaint);
         } finally {
             if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
         }
     }
     
     private static native void nDrawText(int renderer, char[] text, int index, int count,
-            float x, float y, int bidiFlags, int paint);
+            float x, float y, int paint);
 
     @Override
     public void drawText(CharSequence text, int start, int end, float x, float y, Paint paint) {
@@ -1191,16 +1191,14 @@
         try {
             if (text instanceof String || text instanceof SpannedString ||
                     text instanceof SpannableString) {
-                nDrawText(mRenderer, text.toString(), start, end, x, y, paint.mBidiFlags,
-                        paint.mNativePaint);
+                nDrawText(mRenderer, text.toString(), start, end, x, y, paint.mNativePaint);
             } else if (text instanceof GraphicsOperations) {
                 ((GraphicsOperations) text).drawText(this, start, end, x, y,
                                                          paint);
             } else {
                 char[] buf = TemporaryBuffer.obtain(end - start);
                 TextUtils.getChars(text, start, end, buf, 0);
-                nDrawText(mRenderer, buf, 0, end - start, x, y,
-                        paint.mBidiFlags, paint.mNativePaint);
+                nDrawText(mRenderer, buf, 0, end - start, x, y, paint.mNativePaint);
                 TemporaryBuffer.recycle(buf);
             }
         } finally {
@@ -1216,21 +1214,20 @@
 
         int modifiers = setupModifiers(paint);
         try {
-            nDrawText(mRenderer, text, start, end, x, y, paint.mBidiFlags, paint.mNativePaint);
+            nDrawText(mRenderer, text, start, end, x, y, paint.mNativePaint);
         } finally {
             if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
         }
     }
 
     private static native void nDrawText(int renderer, String text, int start, int end,
-            float x, float y, int bidiFlags, int paint);
+            float x, float y, int paint);
 
     @Override
     public void drawText(String text, float x, float y, Paint paint) {
         int modifiers = setupModifiers(paint);
         try {
-            nDrawText(mRenderer, text, 0, text.length(), x, y, paint.mBidiFlags,
-                    paint.mNativePaint);
+            nDrawText(mRenderer, text, 0, text.length(), x, y, paint.mNativePaint);
         } finally {
             if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
         }
@@ -1246,14 +1243,14 @@
         int modifiers = setupModifiers(paint);
         try {
             nDrawTextOnPath(mRenderer, text, index, count, path.mNativePath, hOffset, vOffset,
-                    paint.mBidiFlags, paint.mNativePaint);
+                    paint.mNativePaint);
         } finally {
             if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
         }
     }
 
     private static native void nDrawTextOnPath(int renderer, char[] text, int index, int count,
-            int path, float hOffset, float vOffset, int bidiFlags, int nativePaint);
+            int path, float hOffset, float vOffset, int nativePaint);
 
     @Override
     public void drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) {
@@ -1262,28 +1259,25 @@
         int modifiers = setupModifiers(paint);
         try {
             nDrawTextOnPath(mRenderer, text, 0, text.length(), path.mNativePath, hOffset, vOffset,
-                    paint.mBidiFlags, paint.mNativePaint);
+                    paint.mNativePaint);
         } finally {
             if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
         }
     }
 
     private static native void nDrawTextOnPath(int renderer, String text, int start, int end,
-            int path, float hOffset, float vOffset, int bidiFlags, int nativePaint);
+            int path, float hOffset, float vOffset, int nativePaint);
 
     @Override
     public void drawTextRun(char[] text, int index, int count, int contextIndex, int contextCount,
-            float x, float y, int dir, Paint paint) {
+            float x, float y, Paint paint) {
         if ((index | count | text.length - index - count) < 0) {
             throw new IndexOutOfBoundsException();
         }
-        if (dir != DIRECTION_LTR && dir != DIRECTION_RTL) {
-            throw new IllegalArgumentException("Unknown direction: " + dir);
-        }
 
         int modifiers = setupModifiers(paint);
         try {
-            nDrawTextRun(mRenderer, text, index, count, contextIndex, contextCount, x, y, dir,
+            nDrawTextRun(mRenderer, text, index, count, contextIndex, contextCount, x, y,
                     paint.mNativePaint);
         } finally {
             if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
@@ -1291,32 +1285,31 @@
     }
 
     private static native void nDrawTextRun(int renderer, char[] text, int index, int count,
-            int contextIndex, int contextCount, float x, float y, int dir, int nativePaint);
+            int contextIndex, int contextCount, float x, float y, int nativePaint);
 
     @Override
     public void drawTextRun(CharSequence text, int start, int end, int contextStart, int contextEnd,
-            float x, float y, int dir, Paint paint) {
+            float x, float y, Paint paint) {
         if ((start | end | end - start | text.length() - end) < 0) {
             throw new IndexOutOfBoundsException();
         }
 
         int modifiers = setupModifiers(paint);
         try {
-            int flags = dir == 0 ? 0 : 1;
             if (text instanceof String || text instanceof SpannedString ||
                     text instanceof SpannableString) {
                 nDrawTextRun(mRenderer, text.toString(), start, end, contextStart,
-                        contextEnd, x, y, flags, paint.mNativePaint);
+                        contextEnd, x, y, paint.mNativePaint);
             } else if (text instanceof GraphicsOperations) {
                 ((GraphicsOperations) text).drawTextRun(this, start, end,
-                        contextStart, contextEnd, x, y, flags, paint);
+                        contextStart, contextEnd, x, y, paint);
             } else {
                 int contextLen = contextEnd - contextStart;
                 int len = end - start;
                 char[] buf = TemporaryBuffer.obtain(contextLen);
                 TextUtils.getChars(text, contextStart, contextEnd, buf, 0);
                 nDrawTextRun(mRenderer, buf, start - contextStart, len, 0, contextLen,
-                        x, y, flags, paint.mNativePaint);
+                        x, y, paint.mNativePaint);
                 TemporaryBuffer.recycle(buf);
             }
         } finally {
@@ -1325,7 +1318,7 @@
     }
 
     private static native void nDrawTextRun(int renderer, String text, int start, int end,
-            int contextStart, int contextEnd, float x, float y, int flags, int nativePaint);
+            int contextStart, int contextEnd, float x, float y, int nativePaint);
 
     @Override
     public void drawVertices(VertexMode mode, int vertexCount, float[] verts, int vertOffset,
diff --git a/core/java/android/view/GLES20RecordingCanvas.java b/core/java/android/view/GLES20RecordingCanvas.java
index 7da2451..947cf44 100644
--- a/core/java/android/view/GLES20RecordingCanvas.java
+++ b/core/java/android/view/GLES20RecordingCanvas.java
@@ -267,15 +267,15 @@
 
     @Override
     public void drawTextRun(char[] text, int index, int count, int contextIndex, int contextCount,
-            float x, float y, int dir, Paint paint) {
-        super.drawTextRun(text, index, count, contextIndex, contextCount, x, y, dir, paint);
+            float x, float y, Paint paint) {
+        super.drawTextRun(text, index, count, contextIndex, contextCount, x, y, paint);
         recordShaderBitmap(paint);
     }
 
     @Override
     public void drawTextRun(CharSequence text, int start, int end, int contextStart,
-            int contextEnd, float x, float y, int dir, Paint paint) {
-        super.drawTextRun(text, start, end, contextStart, contextEnd, x, y, dir, paint);
+            int contextEnd, float x, float y, Paint paint) {
+        super.drawTextRun(text, start, end, contextStart, contextEnd, x, y, paint);
         recordShaderBitmap(paint);
     }
 
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index e0d48a4..7c4bcfd 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -48,7 +48,7 @@
 import static javax.microedition.khronos.egl.EGL10.*;
 
 /**
- * Interface for rendering a ViewAncestor using hardware acceleration.
+ * Interface for rendering a view hierarchy using hardware acceleration.
  * 
  * @hide
  */
diff --git a/core/java/android/view/SimulatedDpad.java b/core/java/android/view/SimulatedDpad.java
index 1ee416c..883fd49 100644
--- a/core/java/android/view/SimulatedDpad.java
+++ b/core/java/android/view/SimulatedDpad.java
@@ -145,6 +145,10 @@
         if (!synthesizeNewKeys) {
             mHandler.removeMessages(MSG_FLICK);
         }
+        InputDevice device = event.getDevice();
+        if (device == null) {
+            return;
+        }
         // Store what time the touchpad event occurred
         final long time = SystemClock.uptimeMillis();
         switch (event.getAction()) {
@@ -157,7 +161,7 @@
                 mAccumulatedY = 0;
                 mLastMoveX = 0;
                 mLastMoveY = 0;
-                if (event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMax()
+                if (device.getMotionRange(MotionEvent.AXIS_Y).getMax()
                         * EDGE_SWIPE_THRESHOLD < event.getY()) {
                     // Did the swipe begin in a valid region
                     mEdgeSwipePossible = true;
@@ -176,7 +180,7 @@
                 }
                 // Checks if the swipe has crossed the midpoint
                 // and if our swipe gesture is complete
-                if (event.getY() < (event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMax()
+                if (event.getY() < (device.getMotionRange(MotionEvent.AXIS_Y).getMax()
                         * .5) && mEdgeSwipePossible) {
                     mEdgeSwipePossible = false;
 
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 11c80c26..25cad87 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -1868,6 +1868,12 @@
     private static final int LAYOUT_DIRECTION_DEFAULT = LAYOUT_DIRECTION_INHERIT;
 
     /**
+     * Default horizontal layout direction.
+     * @hide
+     */
+    static final int LAYOUT_DIRECTION_RESOLVED_DEFAULT = LAYOUT_DIRECTION_LTR;
+
+    /**
      * Indicates that the view is tracking some sort of transient state
      * that the app should not need to be aware of, but that the framework
      * should take special care to preserve.
@@ -1916,6 +1922,12 @@
     private static final int TEXT_DIRECTION_DEFAULT = TEXT_DIRECTION_INHERIT;
 
     /**
+     * Default resolved text direction
+     * @hide
+     */
+    static final int TEXT_DIRECTION_RESOLVED_DEFAULT = TEXT_DIRECTION_FIRST_STRONG;
+
+    /**
      * Bit shift to get the horizontal layout direction. (bits after LAYOUT_DIRECTION_RESOLVED)
      * @hide
      */
@@ -1967,7 +1979,7 @@
      * @hide
      */
     static final int PFLAG2_TEXT_DIRECTION_RESOLVED_DEFAULT =
-            TEXT_DIRECTION_FIRST_STRONG << PFLAG2_TEXT_DIRECTION_RESOLVED_MASK_SHIFT;
+            TEXT_DIRECTION_RESOLVED_DEFAULT << PFLAG2_TEXT_DIRECTION_RESOLVED_MASK_SHIFT;
 
     /*
      * Default text alignment. The text alignment of this View is inherited from its parent.
@@ -2026,6 +2038,12 @@
     private static final int TEXT_ALIGNMENT_DEFAULT = TEXT_ALIGNMENT_GRAVITY;
 
     /**
+     * Default resolved text alignment
+     * @hide
+     */
+    static final int TEXT_ALIGNMENT_RESOLVED_DEFAULT = TEXT_ALIGNMENT_GRAVITY;
+
+    /**
       * Bit shift to get the horizontal layout direction. (bits after DRAG_HOVERED)
       * @hide
       */
@@ -2075,7 +2093,7 @@
      * Indicates whether if the view text alignment has been resolved to gravity
      */
     private static final int PFLAG2_TEXT_ALIGNMENT_RESOLVED_DEFAULT =
-            TEXT_ALIGNMENT_GRAVITY << PFLAG2_TEXT_ALIGNMENT_RESOLVED_MASK_SHIFT;
+            TEXT_ALIGNMENT_RESOLVED_DEFAULT << PFLAG2_TEXT_ALIGNMENT_RESOLVED_MASK_SHIFT;
 
     // Accessiblity constants for mPrivateFlags2
 
@@ -4859,13 +4877,25 @@
         event.setEnabled(isEnabled());
         event.setContentDescription(mContentDescription);
 
-        if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_FOCUSED && mAttachInfo != null) {
-            ArrayList<View> focusablesTempList = mAttachInfo.mTempArrayList;
-            getRootView().addFocusables(focusablesTempList, View.FOCUS_FORWARD,
-                    FOCUSABLES_ALL);
-            event.setItemCount(focusablesTempList.size());
-            event.setCurrentItemIndex(focusablesTempList.indexOf(this));
-            focusablesTempList.clear();
+        switch (event.getEventType()) {
+            case AccessibilityEvent.TYPE_VIEW_FOCUSED: {
+                ArrayList<View> focusablesTempList = (mAttachInfo != null)
+                        ? mAttachInfo.mTempArrayList : new ArrayList<View>();
+                getRootView().addFocusables(focusablesTempList, View.FOCUS_FORWARD, FOCUSABLES_ALL);
+                event.setItemCount(focusablesTempList.size());
+                event.setCurrentItemIndex(focusablesTempList.indexOf(this));
+                if (mAttachInfo != null) {
+                    focusablesTempList.clear();
+                }
+            } break;
+            case AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED: {
+                CharSequence text = getIterableTextForAccessibility();
+                if (text != null && text.length() > 0) {
+                    event.setFromIndex(getAccessibilitySelectionStart());
+                    event.setToIndex(getAccessibilitySelectionEnd());
+                    event.setItemCount(text.length());
+                }
+            } break;
         }
     }
 
@@ -5010,21 +5040,12 @@
 
             if ((mAttachInfo.mAccessibilityFetchFlags
                     & AccessibilityNodeInfo.FLAG_REPORT_VIEW_IDS) != 0) {
-                String viewId = null;
                 try {
-                    viewId = getResources().getResourceName(mID);
+                    String viewId = getResources().getResourceName(mID);
+                    info.setViewIdResourceName(viewId);
                 } catch (Resources.NotFoundException nfe) {
                     /* ignore */
                 }
-                if (viewId == null) {
-                    try {
-                        viewId = ((Context) ActivityThread.currentActivityThread()
-                                .getSystemContext()).getResources().getResourceName(mID);
-                    } catch (Resources.NotFoundException nfe) {
-                        /* ignore */
-                    }
-                }
-                info.setViewId(viewId);
             }
         }
 
@@ -5081,7 +5102,11 @@
             info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK);
         }
 
-        if (mContentDescription != null && mContentDescription.length() > 0) {
+        CharSequence text = getIterableTextForAccessibility();
+        if (text != null && text.length() > 0) {
+            info.setTextSelection(getAccessibilitySelectionStart(), getAccessibilitySelectionEnd());
+
+            info.addAction(AccessibilityNodeInfo.ACTION_SET_SELECTION);
             info.addAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY);
             info.addAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY);
             info.setMovementGranularities(AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER
@@ -5963,7 +5988,7 @@
         final int targetSdkVersion = getContext().getApplicationInfo().targetSdkVersion;
         if (targetSdkVersion < JELLY_BEAN_MR1) {
             mPrivateFlags2 |= PFLAG2_LAYOUT_DIRECTION_RESOLVED;
-            return LAYOUT_DIRECTION_LTR;
+            return LAYOUT_DIRECTION_RESOLVED_DEFAULT;
         }
         return ((mPrivateFlags2 & PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL) ==
                 PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL) ? LAYOUT_DIRECTION_RTL : LAYOUT_DIRECTION_LTR;
@@ -7022,6 +7047,24 @@
                     return previousAtGranularity(granularity, extendSelection);
                 }
             } break;
+            case AccessibilityNodeInfo.ACTION_SET_SELECTION: {
+                CharSequence text = getIterableTextForAccessibility();
+                if (text == null) {
+                    return false;
+                }
+                final int start = (arguments != null) ? arguments.getInt(
+                        AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, -1) : -1;
+                final int end = (arguments != null) ? arguments.getInt(
+                AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, -1) : -1;
+                // Only cursor position can be specified (selection length == 0)
+                if ((getAccessibilitySelectionStart() != start
+                        || getAccessibilitySelectionEnd() != end)
+                        && (start == end)) {
+                    setAccessibilitySelection(start, end);
+                    notifyAccessibilityStateChanged();
+                    return true;
+                }
+            } break;
         }
         return false;
     }
@@ -7134,11 +7177,15 @@
      * @hide
      */
     public void setAccessibilitySelection(int start, int end) {
+        if (start ==  end && end == mAccessibilityCursorPosition) {
+            return;
+        }
         if (start >= 0 && start == end && end <= getIterableTextForAccessibility().length()) {
             mAccessibilityCursorPosition = start;
         } else {
             mAccessibilityCursorPosition = ACCESSIBILITY_CURSOR_POSITION_UNDEFINED;
         }
+        sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED);
     }
 
     private void sendViewTextTraversedAtGranularityEvent(int action, int granularity,
@@ -8147,8 +8194,7 @@
             // in onHoverEvent.
             // Note that onGenericMotionEvent will be called by default when
             // onHoverEvent returns false (refer to dispatchGenericMotionEvent).
-            dispatchGenericMotionEventInternal(event);
-            return true;
+            return dispatchGenericMotionEventInternal(event);
         }
 
         return false;
@@ -9883,8 +9929,7 @@
             outRect.set(mLeft, mTop, mRight, mBottom);
         } else {
             final RectF tmpRect = mAttachInfo.mTmpTransformRect;
-            tmpRect.set(-info.mPivotX, -info.mPivotY,
-                    getWidth() - info.mPivotX, getHeight() - info.mPivotY);
+            tmpRect.set(0, 0, getWidth(), getHeight());
             info.mMatrix.mapRect(tmpRect);
             outRect.set((int) tmpRect.left + mLeft, (int) tmpRect.top + mTop,
                     (int) tmpRect.right + mLeft, (int) tmpRect.bottom + mTop);
@@ -11768,11 +11813,10 @@
                     // later to get the correct resolved value
                     if (!canResolveLayoutDirection()) return false;
 
-                    View parent = ((View) mParent);
                     // Parent has not yet resolved, LTR is still the default
-                    if (!parent.isLayoutDirectionResolved()) return false;
+                    if (!mParent.isLayoutDirectionResolved()) return false;
 
-                    if (parent.getLayoutDirection() == LAYOUT_DIRECTION_RTL) {
+                    if (mParent.getLayoutDirection() == LAYOUT_DIRECTION_RTL) {
                         mPrivateFlags2 |= PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL;
                     }
                     break;
@@ -11805,8 +11849,7 @@
     public boolean canResolveLayoutDirection() {
         switch (getRawLayoutDirection()) {
             case LAYOUT_DIRECTION_INHERIT:
-                return (mParent != null) && (mParent instanceof ViewGroup) &&
-                       ((ViewGroup) mParent).canResolveLayoutDirection();
+                return (mParent != null) && mParent.canResolveLayoutDirection();
             default:
                 return true;
         }
@@ -11834,8 +11877,9 @@
 
     /**
      * @return true if layout direction has been resolved.
+     * @hide
      */
-    private boolean isLayoutDirectionResolved() {
+    public boolean isLayoutDirectionResolved() {
         return (mPrivateFlags2 & PFLAG2_LAYOUT_DIRECTION_RESOLVED) == PFLAG2_LAYOUT_DIRECTION_RESOLVED;
     }
 
@@ -12685,12 +12729,12 @@
             final HardwareCanvas canvas = displayList.start();
             int width = mRight - mLeft;
             int height = mBottom - mTop;
+            int layerType = getLayerType();
 
             try {
                 canvas.setViewport(width, height);
                 // The dirty rect should always be null for a display list
                 canvas.onPreDraw(null);
-                int layerType = getLayerType();
                 if (!isLayer && layerType != LAYER_TYPE_NONE) {
                     if (layerType == LAYER_TYPE_HARDWARE) {
                         final HardwareLayer layer = getHardwareLayer();
@@ -13425,8 +13469,8 @@
             }
             transformToApply = parent.mChildTransformation;
         } else {
-            if ((mPrivateFlags3 & PFLAG3_VIEW_IS_ANIMATING_TRANSFORM) == PFLAG3_VIEW_IS_ANIMATING_TRANSFORM &&
-                    mDisplayList != null) {
+            if ((mPrivateFlags3 & PFLAG3_VIEW_IS_ANIMATING_TRANSFORM) ==
+                    PFLAG3_VIEW_IS_ANIMATING_TRANSFORM && mDisplayList != null) {
                 // No longer animating: clear out old animation matrix
                 mDisplayList.setAnimationMatrix(null);
                 mPrivateFlags3 &= ~PFLAG3_VIEW_IS_ANIMATING_TRANSFORM;
@@ -13623,7 +13667,7 @@
         }
 
         if ((flags & ViewGroup.FLAG_CLIP_CHILDREN) == ViewGroup.FLAG_CLIP_CHILDREN &&
-                !useDisplayListProperties) {
+                !useDisplayListProperties && layerType == LAYER_TYPE_NONE) {
             if (offsetForScroll) {
                 canvas.clipRect(sx, sy, sx + (mRight - mLeft), sy + (mBottom - mTop));
             } else {
@@ -16868,16 +16912,15 @@
                         return false;
                     }
 
-                    View parent = ((View) mParent);
                     // Parent has not yet resolved, so we still return the default
-                    if (!parent.isTextDirectionResolved()) {
+                    if (!mParent.isTextDirectionResolved()) {
                         mPrivateFlags2 |= PFLAG2_TEXT_DIRECTION_RESOLVED_DEFAULT;
                         // Resolution will need to happen again later
                         return false;
                     }
 
                     // Set current resolved direction to the same value as the parent's one
-                    final int parentResolvedDirection = parent.getTextDirection();
+                    final int parentResolvedDirection = mParent.getTextDirection();
                     switch (parentResolvedDirection) {
                         case TEXT_DIRECTION_FIRST_STRONG:
                         case TEXT_DIRECTION_ANY_RTL:
@@ -16918,12 +16961,13 @@
      * Check if text direction resolution can be done.
      *
      * @return true if text direction resolution can be done otherwise return false.
+     *
+     * @hide
      */
-    private boolean canResolveTextDirection() {
+    public boolean canResolveTextDirection() {
         switch (getRawTextDirection()) {
             case TEXT_DIRECTION_INHERIT:
-                return (mParent != null) && (mParent instanceof View) &&
-                       ((View) mParent).canResolveTextDirection();
+                return (mParent != null) && mParent.canResolveTextDirection();
             default:
                 return true;
         }
@@ -16953,8 +16997,10 @@
 
     /**
      * @return true if text direction is resolved.
+     *
+     * @hide
      */
-    private boolean isTextDirectionResolved() {
+    public boolean isTextDirectionResolved() {
         return (mPrivateFlags2 & PFLAG2_TEXT_DIRECTION_RESOLVED) == PFLAG2_TEXT_DIRECTION_RESOLVED;
     }
 
@@ -17077,16 +17123,15 @@
                         // Resolution will need to happen again later
                         return false;
                     }
-                    View parent = (View) mParent;
 
                     // Parent has not yet resolved, so we still return the default
-                    if (!parent.isTextAlignmentResolved()) {
+                    if (!mParent.isTextAlignmentResolved()) {
                         mPrivateFlags2 |= PFLAG2_TEXT_ALIGNMENT_RESOLVED_DEFAULT;
                         // Resolution will need to happen again later
                         return false;
                     }
 
-                    final int parentResolvedTextAlignment = parent.getTextAlignment();
+                    final int parentResolvedTextAlignment = mParent.getTextAlignment();
                     switch (parentResolvedTextAlignment) {
                         case TEXT_ALIGNMENT_GRAVITY:
                         case TEXT_ALIGNMENT_TEXT_START:
@@ -17131,12 +17176,13 @@
      * Check if text alignment resolution can be done.
      *
      * @return true if text alignment resolution can be done otherwise return false.
+     *
+     * @hide
      */
-    private boolean canResolveTextAlignment() {
+    public boolean canResolveTextAlignment() {
         switch (getRawTextAlignment()) {
             case TEXT_DIRECTION_INHERIT:
-                return (mParent != null) && (mParent instanceof View) &&
-                       ((View) mParent).canResolveTextAlignment();
+                return (mParent != null) && mParent.canResolveTextAlignment();
             default:
                 return true;
         }
@@ -17166,8 +17212,10 @@
 
     /**
      * @return true if text alignment is resolved.
+     *
+     * @hide
      */
-    private boolean isTextAlignmentResolved() {
+    public boolean isTextAlignmentResolved() {
         return (mPrivateFlags2 & PFLAG2_TEXT_ALIGNMENT_RESOLVED) == PFLAG2_TEXT_ALIGNMENT_RESOLVED;
     }
 
diff --git a/core/java/android/view/ViewParent.java b/core/java/android/view/ViewParent.java
index ddff91d..4b70bc0 100644
--- a/core/java/android/view/ViewParent.java
+++ b/core/java/android/view/ViewParent.java
@@ -295,4 +295,105 @@
      * @hide
      */
     public void childAccessibilityStateChanged(View child);
+
+    /**
+     * Tells if this view parent can resolve the layout direction.
+     * See {@link View#setLayoutDirection(int)}
+     *
+     * @return True if this view parent can resolve the layout direction.
+     *
+     * @hide
+     */
+    public boolean canResolveLayoutDirection();
+
+    /**
+     * Tells if this view parent layout direction is resolved.
+     * See {@link View#setLayoutDirection(int)}
+     *
+     * @return True if this view parent layout direction is resolved.
+     *
+     * @hide
+     */
+    public boolean isLayoutDirectionResolved();
+
+    /**
+     * Return this view parent layout direction. See {@link View#getLayoutDirection()}
+     *
+     * @return {@link View#LAYOUT_DIRECTION_RTL} if the layout direction is RTL or returns
+     * {@link View#LAYOUT_DIRECTION_LTR} if the layout direction is not RTL.
+     *
+     * @hide
+     */
+    public int getLayoutDirection();
+
+    /**
+     * Tells if this view parent can resolve the text direction.
+     * See {@link View#setTextDirection(int)}
+     *
+     * @return True if this view parent can resolve the text direction.
+     *
+     * @hide
+     */
+    public boolean canResolveTextDirection();
+
+    /**
+     * Tells if this view parent text direction is resolved.
+     * See {@link View#setTextDirection(int)}
+     *
+     * @return True if this view parent text direction is resolved.
+     *
+     * @hide
+     */
+    public boolean isTextDirectionResolved();
+
+    /**
+     * Return this view parent text direction. See {@link View#getTextDirection()}
+     *
+     * @return the resolved text direction. Returns one of:
+     *
+     * {@link View#TEXT_DIRECTION_FIRST_STRONG}
+     * {@link View#TEXT_DIRECTION_ANY_RTL},
+     * {@link View#TEXT_DIRECTION_LTR},
+     * {@link View#TEXT_DIRECTION_RTL},
+     * {@link View#TEXT_DIRECTION_LOCALE}
+     *
+     * @hide
+     */
+    public int getTextDirection();
+
+    /**
+     * Tells if this view parent can resolve the text alignment.
+     * See {@link View#setTextAlignment(int)}
+     *
+     * @return True if this view parent can resolve the text alignment.
+     *
+     * @hide
+     */
+    public boolean canResolveTextAlignment();
+
+    /**
+     * Tells if this view parent text alignment is resolved.
+     * See {@link View#setTextAlignment(int)}
+     *
+     * @return True if this view parent text alignment is resolved.
+     *
+     * @hide
+     */
+    public boolean isTextAlignmentResolved();
+
+    /**
+     * Return this view parent text alignment. See {@link android.view.View#getTextAlignment()}
+     *
+     * @return the resolved text alignment. Returns one of:
+     *
+     * {@link View#TEXT_ALIGNMENT_GRAVITY},
+     * {@link View#TEXT_ALIGNMENT_CENTER},
+     * {@link View#TEXT_ALIGNMENT_TEXT_START},
+     * {@link View#TEXT_ALIGNMENT_TEXT_END},
+     * {@link View#TEXT_ALIGNMENT_VIEW_START},
+     * {@link View#TEXT_ALIGNMENT_VIEW_END}
+     *
+     * @hide
+     */
+    public int getTextAlignment();
 }
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index c3321ea..1d86361 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -139,6 +139,7 @@
 
     final IWindowSession mWindowSession;
     final Display mDisplay;
+    final String mBasePackageName;
 
     long mLastTrackballTime = 0;
     final TrackballAxis mTrackballAxisX = new TrackballAxis();
@@ -355,6 +356,7 @@
         // allow the spawning of threads.
         mWindowSession = WindowManagerGlobal.getWindowSession(context.getMainLooper());
         mDisplay = display;
+        mBasePackageName = context.getBasePackageName();
 
         CompatibilityInfoHolder cih = display.getCompatibilityInfo();
         mCompatibilityInfo = cih != null ? cih : new CompatibilityInfoHolder();
@@ -477,6 +479,9 @@
                 mViewLayoutDirectionInitial = mView.getRawLayoutDirection();
                 mFallbackEventHandler.setView(view);
                 mWindowAttributes.copyFrom(attrs);
+                if (mWindowAttributes.packageName == null) {
+                    mWindowAttributes.packageName = mBasePackageName;
+                }
                 attrs = mWindowAttributes;
                 // Keep track of the actual window flags supplied by the client.
                 mClientWindowLayoutFlags = attrs.flags;
@@ -774,6 +779,9 @@
             attrs.systemUiVisibility = mWindowAttributes.systemUiVisibility;
             attrs.subtreeSystemUiVisibility = mWindowAttributes.subtreeSystemUiVisibility;
             mWindowAttributesChangesFlag = mWindowAttributes.copyFrom(attrs);
+            if (mWindowAttributes.packageName == null) {
+                mWindowAttributes.packageName = mBasePackageName;
+            }
             mWindowAttributes.flags |= compatibleWindowFlag;
 
             applyKeepScreenOnFlag(mWindowAttributes);
@@ -2103,20 +2111,25 @@
     private void profileRendering(boolean enabled) {
         if (mProfileRendering) {
             mRenderProfilingEnabled = enabled;
-            if (mRenderProfiler == null) {
-                mRenderProfiler = new Choreographer.FrameCallback() {
-                    @Override
-                    public void doFrame(long frameTimeNanos) {
-                        mDirty.set(0, 0, mWidth, mHeight);
-                        scheduleTraversals();
-                        if (mRenderProfilingEnabled) {
-                            mChoreographer.postFrameCallback(mRenderProfiler);
+
+            if (mRenderProfiler != null) {
+                mChoreographer.removeFrameCallback(mRenderProfiler);
+            }
+            if (mRenderProfilingEnabled) {
+                if (mRenderProfiler == null) {
+                    mRenderProfiler = new Choreographer.FrameCallback() {
+                        @Override
+                        public void doFrame(long frameTimeNanos) {
+                            mDirty.set(0, 0, mWidth, mHeight);
+                            scheduleTraversals();
+                            if (mRenderProfilingEnabled) {
+                                mChoreographer.postFrameCallback(mRenderProfiler);
+                            }
                         }
-                    }
-                };
+                    };
+                }
                 mChoreographer.postFrameCallback(mRenderProfiler);
             } else {
-                mChoreographer.removeFrameCallback(mRenderProfiler);
                 mRenderProfiler = null;
             }
         }
@@ -3836,6 +3849,12 @@
                     if (mView.dispatchUnhandledMove(focused, direction)) {
                         return EVENT_HANDLED;
                     }
+                } else {
+                    // find the best view to give focus to in this non-touch-mode with no-focus
+                    View v = focusSearch(null, direction);
+                    if (v != null && v.requestFocus(direction)) {
+                        return EVENT_HANDLED;
+                    }
                 }
             }
         }
@@ -4810,6 +4829,51 @@
         postSendWindowContentChangedCallback(child);
     }
 
+    @Override
+    public boolean canResolveLayoutDirection() {
+        return true;
+    }
+
+    @Override
+    public boolean isLayoutDirectionResolved() {
+        return true;
+    }
+
+    @Override
+    public int getLayoutDirection() {
+        return View.LAYOUT_DIRECTION_RESOLVED_DEFAULT;
+    }
+
+    @Override
+    public boolean canResolveTextDirection() {
+        return true;
+    }
+
+    @Override
+    public boolean isTextDirectionResolved() {
+        return true;
+    }
+
+    @Override
+    public int getTextDirection() {
+        return View.TEXT_DIRECTION_RESOLVED_DEFAULT;
+    }
+
+    @Override
+    public boolean canResolveTextAlignment() {
+        return true;
+    }
+
+    @Override
+    public boolean isTextAlignmentResolved() {
+        return true;
+    }
+
+    @Override
+    public int getTextAlignment() {
+        return View.TEXT_ALIGNMENT_RESOLVED_DEFAULT;
+    }
+
     private View getCommonPredecessor(View first, View second) {
         if (mAttachInfo != null) {
             if (mTempHashSet == null) {
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index bd28abc..b5d216a 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -460,13 +460,15 @@
     /**
      * Check permissions when adding a window.
      * 
-     * @param attrs The window's LayoutParams. 
+     * @param attrs The window's LayoutParams.
+     * @param outAppOp First element will be filled with the app op corresponding to
+     *                 this window, or OP_NONE.
      *  
      * @return {@link WindowManagerGlobal#ADD_OKAY} if the add can proceed;
      *      else an error code, usually
      *      {@link WindowManagerGlobal#ADD_PERMISSION_DENIED}, to abort the add.
      */
-    public int checkAddPermission(WindowManager.LayoutParams attrs);
+    public int checkAddPermission(WindowManager.LayoutParams attrs, int[] outAppOp);
 
     /**
      * Check permissions when adding a window.
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index 4e7ff08..ad87fcb 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -372,29 +372,31 @@
 
     // Boolean attributes.
 
-    private static final int PROPERTY_CHECKABLE = 0x00000001;
+    private static final int BOOLEAN_PROPERTY_CHECKABLE = 0x00000001;
 
-    private static final int PROPERTY_CHECKED = 0x00000002;
+    private static final int BOOLEAN_PROPERTY_CHECKED = 0x00000002;
 
-    private static final int PROPERTY_FOCUSABLE = 0x00000004;
+    private static final int BOOLEAN_PROPERTY_FOCUSABLE = 0x00000004;
 
-    private static final int PROPERTY_FOCUSED = 0x00000008;
+    private static final int BOOLEAN_PROPERTY_FOCUSED = 0x00000008;
 
-    private static final int PROPERTY_SELECTED = 0x00000010;
+    private static final int BOOLEAN_PROPERTY_SELECTED = 0x00000010;
 
-    private static final int PROPERTY_CLICKABLE = 0x00000020;
+    private static final int BOOLEAN_PROPERTY_CLICKABLE = 0x00000020;
 
-    private static final int PROPERTY_LONG_CLICKABLE = 0x00000040;
+    private static final int BOOLEAN_PROPERTY_LONG_CLICKABLE = 0x00000040;
 
-    private static final int PROPERTY_ENABLED = 0x00000080;
+    private static final int BOOLEAN_PROPERTY_ENABLED = 0x00000080;
 
-    private static final int PROPERTY_PASSWORD = 0x00000100;
+    private static final int BOOLEAN_PROPERTY_PASSWORD = 0x00000100;
 
-    private static final int PROPERTY_SCROLLABLE = 0x00000200;
+    private static final int BOOLEAN_PROPERTY_SCROLLABLE = 0x00000200;
 
-    private static final int PROPERTY_ACCESSIBILITY_FOCUSED = 0x00000400;
+    private static final int BOOLEAN_PROPERTY_ACCESSIBILITY_FOCUSED = 0x00000400;
 
-    private static final int PROPERTY_VISIBLE_TO_USER = 0x00000800;
+    private static final int BOOLEAN_PROPERTY_VISIBLE_TO_USER = 0x00000800;
+
+    private static final int BOOLEAN_PROPERTY_EDITABLE = 0x00001000;
 
     /**
      * Bits that provide the id of a virtual descendant of a view.
@@ -471,13 +473,16 @@
     private CharSequence mClassName;
     private CharSequence mText;
     private CharSequence mContentDescription;
-    private CharSequence mViewId;
+    private CharSequence mViewIdResourceName;
 
     private final SparseLongArray mChildNodeIds = new SparseLongArray();
     private int mActions;
 
     private int mMovementGranularities;
 
+    private int mTextSelectionStart = UNDEFINED;
+    private int mTextSelectionEnd = UNDEFINED;
+
     private int mConnectionId = UNDEFINED;
 
     /**
@@ -987,7 +992,7 @@
      * @return True if the node is checkable.
      */
     public boolean isCheckable() {
-        return getBooleanProperty(PROPERTY_CHECKABLE);
+        return getBooleanProperty(BOOLEAN_PROPERTY_CHECKABLE);
     }
 
     /**
@@ -1003,7 +1008,7 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      */
     public void setCheckable(boolean checkable) {
-        setBooleanProperty(PROPERTY_CHECKABLE, checkable);
+        setBooleanProperty(BOOLEAN_PROPERTY_CHECKABLE, checkable);
     }
 
     /**
@@ -1012,7 +1017,7 @@
      * @return True if the node is checked.
      */
     public boolean isChecked() {
-        return getBooleanProperty(PROPERTY_CHECKED);
+        return getBooleanProperty(BOOLEAN_PROPERTY_CHECKED);
     }
 
     /**
@@ -1028,7 +1033,7 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      */
     public void setChecked(boolean checked) {
-        setBooleanProperty(PROPERTY_CHECKED, checked);
+        setBooleanProperty(BOOLEAN_PROPERTY_CHECKED, checked);
     }
 
     /**
@@ -1037,7 +1042,7 @@
      * @return True if the node is focusable.
      */
     public boolean isFocusable() {
-        return getBooleanProperty(PROPERTY_FOCUSABLE);
+        return getBooleanProperty(BOOLEAN_PROPERTY_FOCUSABLE);
     }
 
     /**
@@ -1053,7 +1058,7 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      */
     public void setFocusable(boolean focusable) {
-        setBooleanProperty(PROPERTY_FOCUSABLE, focusable);
+        setBooleanProperty(BOOLEAN_PROPERTY_FOCUSABLE, focusable);
     }
 
     /**
@@ -1062,7 +1067,7 @@
      * @return True if the node is focused.
      */
     public boolean isFocused() {
-        return getBooleanProperty(PROPERTY_FOCUSED);
+        return getBooleanProperty(BOOLEAN_PROPERTY_FOCUSED);
     }
 
     /**
@@ -1078,7 +1083,7 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      */
     public void setFocused(boolean focused) {
-        setBooleanProperty(PROPERTY_FOCUSED, focused);
+        setBooleanProperty(BOOLEAN_PROPERTY_FOCUSED, focused);
     }
 
     /**
@@ -1087,7 +1092,7 @@
      * @return Whether the node is visible to the user.
      */
     public boolean isVisibleToUser() {
-        return getBooleanProperty(PROPERTY_VISIBLE_TO_USER);
+        return getBooleanProperty(BOOLEAN_PROPERTY_VISIBLE_TO_USER);
     }
 
     /**
@@ -1103,7 +1108,7 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      */
     public void setVisibleToUser(boolean visibleToUser) {
-        setBooleanProperty(PROPERTY_VISIBLE_TO_USER, visibleToUser);
+        setBooleanProperty(BOOLEAN_PROPERTY_VISIBLE_TO_USER, visibleToUser);
     }
 
     /**
@@ -1112,7 +1117,7 @@
      * @return True if the node is accessibility focused.
      */
     public boolean isAccessibilityFocused() {
-        return getBooleanProperty(PROPERTY_ACCESSIBILITY_FOCUSED);
+        return getBooleanProperty(BOOLEAN_PROPERTY_ACCESSIBILITY_FOCUSED);
     }
 
     /**
@@ -1128,7 +1133,7 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      */
     public void setAccessibilityFocused(boolean focused) {
-        setBooleanProperty(PROPERTY_ACCESSIBILITY_FOCUSED, focused);
+        setBooleanProperty(BOOLEAN_PROPERTY_ACCESSIBILITY_FOCUSED, focused);
     }
 
     /**
@@ -1137,7 +1142,7 @@
      * @return True if the node is selected.
      */
     public boolean isSelected() {
-        return getBooleanProperty(PROPERTY_SELECTED);
+        return getBooleanProperty(BOOLEAN_PROPERTY_SELECTED);
     }
 
     /**
@@ -1153,7 +1158,7 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      */
     public void setSelected(boolean selected) {
-        setBooleanProperty(PROPERTY_SELECTED, selected);
+        setBooleanProperty(BOOLEAN_PROPERTY_SELECTED, selected);
     }
 
     /**
@@ -1162,7 +1167,7 @@
      * @return True if the node is clickable.
      */
     public boolean isClickable() {
-        return getBooleanProperty(PROPERTY_CLICKABLE);
+        return getBooleanProperty(BOOLEAN_PROPERTY_CLICKABLE);
     }
 
     /**
@@ -1178,7 +1183,7 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      */
     public void setClickable(boolean clickable) {
-        setBooleanProperty(PROPERTY_CLICKABLE, clickable);
+        setBooleanProperty(BOOLEAN_PROPERTY_CLICKABLE, clickable);
     }
 
     /**
@@ -1187,7 +1192,7 @@
      * @return True if the node is long clickable.
      */
     public boolean isLongClickable() {
-        return getBooleanProperty(PROPERTY_LONG_CLICKABLE);
+        return getBooleanProperty(BOOLEAN_PROPERTY_LONG_CLICKABLE);
     }
 
     /**
@@ -1203,7 +1208,7 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      */
     public void setLongClickable(boolean longClickable) {
-        setBooleanProperty(PROPERTY_LONG_CLICKABLE, longClickable);
+        setBooleanProperty(BOOLEAN_PROPERTY_LONG_CLICKABLE, longClickable);
     }
 
     /**
@@ -1212,7 +1217,7 @@
      * @return True if the node is enabled.
      */
     public boolean isEnabled() {
-        return getBooleanProperty(PROPERTY_ENABLED);
+        return getBooleanProperty(BOOLEAN_PROPERTY_ENABLED);
     }
 
     /**
@@ -1228,7 +1233,7 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      */
     public void setEnabled(boolean enabled) {
-        setBooleanProperty(PROPERTY_ENABLED, enabled);
+        setBooleanProperty(BOOLEAN_PROPERTY_ENABLED, enabled);
     }
 
     /**
@@ -1237,7 +1242,7 @@
      * @return True if the node is a password.
      */
     public boolean isPassword() {
-        return getBooleanProperty(PROPERTY_PASSWORD);
+        return getBooleanProperty(BOOLEAN_PROPERTY_PASSWORD);
     }
 
     /**
@@ -1253,7 +1258,7 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      */
     public void setPassword(boolean password) {
-        setBooleanProperty(PROPERTY_PASSWORD, password);
+        setBooleanProperty(BOOLEAN_PROPERTY_PASSWORD, password);
     }
 
     /**
@@ -1262,7 +1267,7 @@
      * @return True if the node is scrollable, false otherwise.
      */
     public boolean isScrollable() {
-        return getBooleanProperty(PROPERTY_SCROLLABLE);
+        return getBooleanProperty(BOOLEAN_PROPERTY_SCROLLABLE);
     }
 
     /**
@@ -1279,7 +1284,32 @@
      */
     public void setScrollable(boolean scrollable) {
         enforceNotSealed();
-        setBooleanProperty(PROPERTY_SCROLLABLE, scrollable);
+        setBooleanProperty(BOOLEAN_PROPERTY_SCROLLABLE, scrollable);
+    }
+
+    /**
+     * Gets if the node is editable.
+     *
+     * @return True if the node is editable, false otherwise.
+     */
+    public boolean isEditable() {
+        return getBooleanProperty(BOOLEAN_PROPERTY_EDITABLE);
+    }
+
+    /**
+     * Sets whether this node is editable.
+     * <p>
+     *   <strong>Note:</strong> Cannot be called from an
+     *   {@link android.accessibilityservice.AccessibilityService}.
+     *   This class is made immutable before being delivered to an AccessibilityService.
+     * </p>
+     *
+     * @param editable True if the node is editable.
+     *
+     * @throws IllegalStateException If called from an AccessibilityService.
+     */
+    public void setEditable(boolean editable) {
+        setBooleanProperty(BOOLEAN_PROPERTY_EDITABLE, editable);
     }
 
     /**
@@ -1509,11 +1539,11 @@
      *   This class is made immutable before being delivered to an AccessibilityService.
      * </p>
      *
-     * @param viewId The id resource name.
+     * @param viewIdResName The id resource name.
      */
-    public void setViewId(CharSequence viewId) {
+    public void setViewIdResourceName(CharSequence viewIdResName) {
         enforceNotSealed();
-        mViewId = viewId;
+        mViewIdResourceName = viewIdResName;
     }
 
     /**
@@ -1528,8 +1558,45 @@
 
      * @return The id resource name.
      */
-    public CharSequence getViewId() {
-        return mViewId;
+    public CharSequence getViewIdResourceName() {
+        return mViewIdResourceName;
+    }
+
+    /**
+     * Gets the text selection start.
+     *
+     * @return The text selection start if there is selection or -1.
+     */
+    public int getTextSelectionStart() {
+        return mTextSelectionStart;
+    }
+
+    /**
+     * Gets the text selection end.
+     *
+     * @return The text selection end if there is selection or -1.
+     */
+    public int getTextSelectionEnd() {
+        return mTextSelectionEnd;
+    }
+
+    /**
+     * Sets the text selection start and end.
+     * <p>
+     *   <strong>Note:</strong> Cannot be called from an
+     *   {@link android.accessibilityservice.AccessibilityService}.
+     *   This class is made immutable before being delivered to an AccessibilityService.
+     * </p>
+     *
+     * @param start The text selection start.
+     * @param end The text selection end.
+     *
+     * @throws IllegalStateException If called from an AccessibilityService.
+     */
+    public void setTextSelection(int start, int end) {
+        enforceNotSealed();
+        mTextSelectionStart = start;
+        mTextSelectionEnd = end;
     }
 
     /**
@@ -1774,7 +1841,10 @@
         parcel.writeCharSequence(mClassName);
         parcel.writeCharSequence(mText);
         parcel.writeCharSequence(mContentDescription);
-        parcel.writeCharSequence(mViewId);
+        parcel.writeCharSequence(mViewIdResourceName);
+
+        parcel.writeInt(mTextSelectionStart);
+        parcel.writeInt(mTextSelectionEnd);
 
         // Since instances of this class are fetched via synchronous i.e. blocking
         // calls in IPCs we always recycle as soon as the instance is marshaled.
@@ -1800,7 +1870,7 @@
         mClassName = other.mClassName;
         mText = other.mText;
         mContentDescription = other.mContentDescription;
-        mViewId = other.mViewId;
+        mViewIdResourceName = other.mViewIdResourceName;
         mActions= other.mActions;
         mBooleanProperties = other.mBooleanProperties;
         mMovementGranularities = other.mMovementGranularities;
@@ -1808,6 +1878,8 @@
         for (int i = 0; i < otherChildIdCount; i++) {
             mChildNodeIds.put(i, other.mChildNodeIds.valueAt(i));    
         }
+        mTextSelectionStart = other.mTextSelectionStart;
+        mTextSelectionEnd = other.mTextSelectionEnd;
     }
 
     /**
@@ -1851,7 +1923,10 @@
         mClassName = parcel.readCharSequence();
         mText = parcel.readCharSequence();
         mContentDescription = parcel.readCharSequence();
-        mViewId = parcel.readCharSequence();
+        mViewIdResourceName = parcel.readCharSequence();
+
+        mTextSelectionStart = parcel.readInt();
+        mTextSelectionEnd = parcel.readInt();
     }
 
     /**
@@ -1874,8 +1949,10 @@
         mClassName = null;
         mText = null;
         mContentDescription = null;
-        mViewId = null;
+        mViewIdResourceName = null;
         mActions = 0;
+        mTextSelectionStart = UNDEFINED;
+        mTextSelectionEnd = UNDEFINED;
     }
 
     /**
@@ -2027,7 +2104,7 @@
         builder.append("; className: ").append(mClassName);
         builder.append("; text: ").append(mText);
         builder.append("; contentDescription: ").append(mContentDescription);
-        builder.append("; viewId: ").append(mViewId);
+        builder.append("; viewIdResName: ").append(mViewIdResourceName);
 
         builder.append("; checkable: ").append(isCheckable());
         builder.append("; checked: ").append(isChecked());
diff --git a/core/java/android/webkit/AccessibilityInjector.java b/core/java/android/webkit/AccessibilityInjector.java
index 008a615..8008a6b 100644
--- a/core/java/android/webkit/AccessibilityInjector.java
+++ b/core/java/android/webkit/AccessibilityInjector.java
@@ -318,12 +318,15 @@
     /**
      * Attempts to handle selection change events when accessibility is using a
      * non-JavaScript method.
+     * <p>
+     * This must not be called from the main thread.
      *
-     * @param selectionString The selection string.
+     * @param selection The selection string.
+     * @param token The selection request token.
      */
-    public void handleSelectionChangedIfNecessary(String selectionString) {
+    public void onSelectionStringChangedWebCoreThread(String selection, int token) {
         if (mAccessibilityInjectorFallback != null) {
-            mAccessibilityInjectorFallback.onSelectionStringChange(selectionString);
+            mAccessibilityInjectorFallback.onSelectionStringChangedWebCoreThread(selection, token);
         }
     }
 
diff --git a/core/java/android/webkit/AccessibilityInjectorFallback.java b/core/java/android/webkit/AccessibilityInjectorFallback.java
index 783b3db..6417527 100644
--- a/core/java/android/webkit/AccessibilityInjectorFallback.java
+++ b/core/java/android/webkit/AccessibilityInjectorFallback.java
@@ -27,8 +27,9 @@
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.webkit.WebViewCore.EventHub;
 
+import com.android.internal.os.SomeArgs;
+
 import java.util.ArrayList;
-import java.util.Stack;
 
 /**
  * This class injects accessibility into WebViews with disabled JavaScript or
@@ -48,8 +49,7 @@
  * </p>
  * The possible actions are invocations to
  * {@link #setCurrentAxis(int, boolean, String)}, or
- * {@link #traverseCurrentAxis(int, boolean, String)}
- * {@link #traverseGivenAxis(int, int, boolean, String)}
+ * {@link #traverseGivenAxis(int, int, boolean, String, boolean)}
  * {@link #performAxisTransition(int, int, boolean, String)}
  * referred via the values of:
  * {@link #ACTION_SET_CURRENT_AXIS},
@@ -74,6 +74,9 @@
     private static final int ACTION_PERFORM_AXIS_TRANSITION = 3;
     private static final int ACTION_TRAVERSE_DEFAULT_WEB_VIEW_BEHAVIOR_AXIS = 4;
 
+    /** Timeout after which asynchronous granular movement is aborted. */
+    private static final int MODIFY_SELECTION_TIMEOUT = 500;
+
     // WebView navigation axes from WebViewCore.h, plus an additional axis for
     // the default behavior.
     private static final int NAVIGATION_AXIS_CHARACTER = 0;
@@ -81,7 +84,8 @@
     private static final int NAVIGATION_AXIS_SENTENCE = 2;
     @SuppressWarnings("unused")
     private static final int NAVIGATION_AXIS_HEADING = 3;
-    private static final int NAVIGATION_AXIS_SIBLING = 5;
+    @SuppressWarnings("unused")
+    private static final int NAVIGATION_AXIS_SIBLING = 4;
     @SuppressWarnings("unused")
     private static final int NAVIGATION_AXIS_PARENT_FIRST_CHILD = 5;
     private static final int NAVIGATION_AXIS_DOCUMENT = 6;
@@ -99,8 +103,11 @@
     private final WebViewClassic mWebView;
     private final WebView mWebViewInternal;
 
-    // events scheduled for sending as soon as we receive the selected text
-    private final Stack<AccessibilityEvent> mScheduledEventStack = new Stack<AccessibilityEvent>();
+    // Event scheduled for sending as soon as we receive the selected text.
+    private AccessibilityEvent mScheduledEvent;
+
+    // Token required to send the scheduled event.
+    private int mScheduledToken = 0;
 
     // the current traversal axis
     private int mCurrentAxis = 2; // sentence
@@ -114,6 +121,15 @@
     // keep track of last direction
     private int mLastDirection;
 
+    // Lock used for asynchronous selection callback.
+    private final Object mCallbackLock = new Object();
+
+    // Whether the asynchronous selection callback was received.
+    private boolean mCallbackReceived;
+
+    // Whether the asynchronous selection callback succeeded.
+    private boolean mCallbackResult;
+
     /**
      * Creates a new injector associated with a given {@link WebViewClassic}.
      *
@@ -174,8 +190,8 @@
                     }
                     mLastDirection = direction;
                     sendEvent = (binding.getSecondArgument(i) == 1);
-                    mLastDownEventHandled = traverseCurrentAxis(direction, sendEvent,
-                            contentDescription);
+                    mLastDownEventHandled = traverseGivenAxis(
+                            direction, mCurrentAxis, sendEvent, contentDescription, false);
                     break;
                 case ACTION_TRAVERSE_GIVEN_AXIS:
                     direction = binding.getFirstArgument(i);
@@ -187,7 +203,7 @@
                     mLastDirection = direction;
                     axis =  binding.getSecondArgument(i);
                     sendEvent = (binding.getThirdArgument(i) == 1);
-                    traverseGivenAxis(direction, axis, sendEvent, contentDescription);
+                    traverseGivenAxis(direction, axis, sendEvent, contentDescription, false);
                     mLastDownEventHandled = true;
                     break;
                 case ACTION_PERFORM_AXIS_TRANSITION:
@@ -207,7 +223,7 @@
                         mLastDirection = binding.getFirstArgument(i);
                         sendEvent = (binding.getSecondArgument(i) == 1);
                         traverseGivenAxis(mLastDirection, NAVIGATION_AXIS_DEFAULT_WEB_VIEW_BEHAVIOR,
-                            sendEvent, contentDescription);
+                            sendEvent, contentDescription, false);
                         mLastDownEventHandled = false;
                     } else {
                         mLastDownEventHandled = true;
@@ -222,8 +238,7 @@
     }
 
     /**
-     * Set the current navigation axis which will be used while
-     * calling {@link #traverseCurrentAxis(int, boolean, String)}.
+     * Set the current navigation axis.
      *
      * @param axis The axis to set.
      * @param sendEvent Whether to send an accessibility event to
@@ -255,20 +270,6 @@
         }
     }
 
-    /**
-     * Traverse the document along the current navigation axis.
-     *
-     * @param direction The direction of traversal.
-     * @param sendEvent Whether to send an accessibility event to
-     *        announce the change.
-     * @param contentDescription A description of the performed action.
-     * @see #setCurrentAxis(int, boolean, String)
-     */
-    private boolean traverseCurrentAxis(int direction, boolean sendEvent,
-            String contentDescription) {
-        return traverseGivenAxis(direction, mCurrentAxis, sendEvent, contentDescription);
-    }
-    
     boolean performAccessibilityAction(int action, Bundle arguments) {
         switch (action) {
             case AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
@@ -276,14 +277,14 @@
                 final int direction = getDirectionForAction(action);
                 final int axis = getAxisForGranularity(arguments.getInt(
                         AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT));
-                return traverseGivenAxis(direction, axis, true, null);
+                return traverseGivenAxis(direction, axis, true, null, true);
             }
             case AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT:
             case AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT: {
                 final int direction = getDirectionForAction(action);
                 // TODO: Add support for moving by object.
                 final int axis = NAVIGATION_AXIS_SENTENCE;
-                return traverseGivenAxis(direction, axis, true, null);
+                return traverseGivenAxis(direction, axis, true, null, true);
             }
             default:
                 return false;
@@ -293,7 +294,7 @@
     /**
      * Returns the {@link WebView}-defined direction for the given
      * {@link AccessibilityNodeInfo}-defined action.
-     * 
+     *
      * @param action An accessibility action identifier.
      * @return A web view navigation direction.
      */
@@ -313,7 +314,7 @@
     /**
      * Returns the {@link WebView}-defined axis for the given
      * {@link AccessibilityNodeInfo}-defined granularity.
-     * 
+     *
      * @param granularity An accessibility granularity identifier.
      * @return A web view navigation axis.
      */
@@ -345,20 +346,20 @@
      * @param contentDescription A description of the performed action.
      */
     private boolean traverseGivenAxis(int direction, int axis, boolean sendEvent,
-            String contentDescription) {
-        WebViewCore webViewCore = mWebView.getWebViewCore();
+            String contentDescription, boolean sychronous) {
+        final WebViewCore webViewCore = mWebView.getWebViewCore();
         if (webViewCore == null) {
             return false;
         }
 
-        AccessibilityEvent event = null;
         if (sendEvent) {
-            event = getPartialyPopulatedAccessibilityEvent(
+            final AccessibilityEvent event = getPartialyPopulatedAccessibilityEvent(
                     AccessibilityEvent.TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY);
-            // the text will be set upon receiving the selection string
+            // The text will be set upon receiving the selection string.
             event.setContentDescription(contentDescription);
+            mScheduledEvent = event;
+            mScheduledToken++;
         }
-        mScheduledEventStack.push(event);
 
         // if the axis is the default let WebView handle the event which will
         // result in cursor ring movement and selection of its content
@@ -366,27 +367,78 @@
             return false;
         }
 
-        webViewCore.sendMessage(EventHub.MODIFY_SELECTION, direction, axis);
-        return true;
+        final SomeArgs args = SomeArgs.obtain();
+        args.argi1 = direction;
+        args.argi2 = axis;
+        args.argi3 = mScheduledToken;
+
+        // If we don't need synchronous results, just return true.
+        if (!sychronous) {
+            webViewCore.sendMessage(EventHub.MODIFY_SELECTION, args);
+            return true;
+        }
+
+        final boolean callbackResult;
+
+        synchronized (mCallbackLock) {
+            mCallbackReceived = false;
+
+            // Asynchronously changes the selection in WebView, which responds by
+            // calling onSelectionStringChanged().
+            webViewCore.sendMessage(EventHub.MODIFY_SELECTION, args);
+
+            try {
+                mCallbackLock.wait(MODIFY_SELECTION_TIMEOUT);
+            } catch (InterruptedException e) {
+                // Do nothing.
+            }
+
+            callbackResult = mCallbackResult;
+        }
+
+        return (mCallbackReceived && callbackResult);
     }
 
-    /**
-     * Called when the <code>selectionString</code> has changed.
-     */
-    public void onSelectionStringChange(String selectionString) {
-        if (DEBUG) {
-            Log.d(LOG_TAG, "Selection string: " + selectionString);
+    /* package */ void onSelectionStringChangedWebCoreThread(
+            final String selection, final int token) {
+        synchronized (mCallbackLock) {
+            mCallbackReceived = true;
+            mCallbackResult = (selection != null);
+            mCallbackLock.notifyAll();
         }
-        mIsLastSelectionStringNull = (selectionString == null);
-        if (mScheduledEventStack.isEmpty()) {
+
+        // Managing state and sending events must take place on the UI thread.
+        mWebViewInternal.post(new Runnable() {
+            @Override
+            public void run() {
+                onSelectionStringChangedMainThread(selection, token);
+            }
+        });
+    }
+
+    private void onSelectionStringChangedMainThread(String selection, int token) {
+        if (DEBUG) {
+            Log.d(LOG_TAG, "Selection string: " + selection);
+        }
+
+        if (token != mScheduledToken) {
+            if (DEBUG) {
+                Log.d(LOG_TAG, "Selection string has incorrect token: " + token);
+            }
             return;
         }
-        AccessibilityEvent event = mScheduledEventStack.pop();
-        if ((event != null) && (selectionString != null)) {
-            event.getText().add(selectionString);
+
+        mIsLastSelectionStringNull = (selection == null);
+
+        final AccessibilityEvent event = mScheduledEvent;
+        mScheduledEvent = null;
+
+        if ((event != null) && (selection != null)) {
+            event.getText().add(selection);
             event.setFromIndex(0);
-            event.setToIndex(selectionString.length());
+            event.setToIndex(selection.length());
             sendAccessibilityEvent(event);
+            event.recycle();
         }
     }
 
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 5412400..d0bfbe8 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -1957,9 +1957,8 @@
     @Override
     public void setOverScrollMode(int mode) {
         super.setOverScrollMode(mode);
-        // This method may called in the constructor chain, before the WebView provider is
-        // created. (Fortunately, this is the only method we override that can get called by
-        // any of the base class constructors).
+        // This method may be called in the constructor chain, before the WebView provider is
+        // created.
         ensureProviderCreated();
         mProvider.getViewDelegate().setOverScrollMode(mode);
     }
@@ -2119,6 +2118,9 @@
     @Override
     protected void onVisibilityChanged(View changedView, int visibility) {
         super.onVisibilityChanged(changedView, visibility);
+        // This method may be called in the constructor chain, before the WebView provider is
+        // created.
+        ensureProviderCreated();
         mProvider.getViewDelegate().onVisibilityChanged(changedView, visibility);
     }
 
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index a867d39..a4347a4 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -1024,30 +1024,26 @@
     static final int UPDATE_MATCH_COUNT                 = 126;
     static final int CENTER_FIT_RECT                    = 127;
     static final int SET_SCROLLBAR_MODES                = 129;
-    static final int SELECTION_STRING_CHANGED           = 130;
-    static final int HIT_TEST_RESULT                    = 131;
-    static final int SAVE_WEBARCHIVE_FINISHED           = 132;
-
-    static final int SET_AUTOFILLABLE                   = 133;
-    static final int AUTOFILL_COMPLETE                  = 134;
-
-    static final int SCREEN_ON                          = 136;
-    static final int UPDATE_ZOOM_DENSITY                = 139;
-    static final int EXIT_FULLSCREEN_VIDEO              = 140;
-
-    static final int COPY_TO_CLIPBOARD                  = 141;
-    static final int INIT_EDIT_FIELD                    = 142;
-    static final int REPLACE_TEXT                       = 143;
-    static final int CLEAR_CARET_HANDLE                 = 144;
-    static final int KEY_PRESS                          = 145;
-    static final int RELOCATE_AUTO_COMPLETE_POPUP       = 146;
-    static final int FOCUS_NODE_CHANGED                 = 147;
-    static final int AUTOFILL_FORM                      = 148;
-    static final int SCROLL_EDIT_TEXT                   = 149;
-    static final int EDIT_TEXT_SIZE_CHANGED             = 150;
-    static final int SHOW_CARET_HANDLE                  = 151;
-    static final int UPDATE_CONTENT_BOUNDS              = 152;
-    static final int SCROLL_HANDLE_INTO_VIEW            = 153;
+    static final int HIT_TEST_RESULT                    = 130;
+    static final int SAVE_WEBARCHIVE_FINISHED           = 131;
+    static final int SET_AUTOFILLABLE                   = 132;
+    static final int AUTOFILL_COMPLETE                  = 133;
+    static final int SCREEN_ON                          = 134;
+    static final int UPDATE_ZOOM_DENSITY                = 135;
+    static final int EXIT_FULLSCREEN_VIDEO              = 136;
+    static final int COPY_TO_CLIPBOARD                  = 137;
+    static final int INIT_EDIT_FIELD                    = 138;
+    static final int REPLACE_TEXT                       = 139;
+    static final int CLEAR_CARET_HANDLE                 = 140;
+    static final int KEY_PRESS                          = 141;
+    static final int RELOCATE_AUTO_COMPLETE_POPUP       = 142;
+    static final int FOCUS_NODE_CHANGED                 = 143;
+    static final int AUTOFILL_FORM                      = 144;
+    static final int SCROLL_EDIT_TEXT                   = 145;
+    static final int EDIT_TEXT_SIZE_CHANGED             = 146;
+    static final int SHOW_CARET_HANDLE                  = 147;
+    static final int UPDATE_CONTENT_BOUNDS              = 148;
+    static final int SCROLL_HANDLE_INTO_VIEW            = 149;
 
     private static final int FIRST_PACKAGE_MSG_ID = SCROLL_TO_MSG_ID;
     private static final int LAST_PACKAGE_MSG_ID = HIT_TEST_RESULT;
@@ -1766,6 +1762,12 @@
         event.setMaxScrollY(Math.max(convertedContentHeight - adjustedViewHeight, 0));
     }
 
+    /* package */ void handleSelectionChangedWebCoreThread(String selection, int token) {
+        if (isAccessibilityInjectionEnabled()) {
+            getAccessibilityInjector().onSelectionStringChangedWebCoreThread(selection, token);
+        }
+    }
+
     private boolean isAccessibilityInjectionEnabled() {
         final AccessibilityManager manager = AccessibilityManager.getInstance(mContext);
         if (!manager.isEnabled()) {
@@ -7496,13 +7498,6 @@
                     mVerticalScrollBarMode = msg.arg2;
                     break;
 
-                case SELECTION_STRING_CHANGED:
-                    if (isAccessibilityInjectionEnabled()) {
-                        getAccessibilityInjector()
-                                .handleSelectionChangedIfNecessary((String) msg.obj);
-                    }
-                    break;
-
                 case FOCUS_NODE_CHANGED:
                     mIsEditingText = (msg.arg1 == mFieldPointer);
                     if (mAutoCompletePopup != null && !mIsEditingText) {
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index ccb84e6..4a09636 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -41,6 +41,8 @@
 import android.webkit.WebViewClassic.FocusNodeHref;
 import android.webkit.WebViewInputDispatcher.WebKitCallbacks;
 
+import com.android.internal.os.SomeArgs;
+
 import junit.framework.Assert;
 
 import java.io.OutputStream;
@@ -1545,12 +1547,14 @@
                         case MODIFY_SELECTION:
                             mTextSelectionChangeReason
                                     = TextSelectionData.REASON_ACCESSIBILITY_INJECTOR;
-                            String modifiedSelectionString =
-                                nativeModifySelection(mNativeClass, msg.arg1,
-                                        msg.arg2);
-                            mWebViewClassic.mPrivateHandler.obtainMessage(
-                                    WebViewClassic.SELECTION_STRING_CHANGED,
-                                    modifiedSelectionString).sendToTarget();
+                            final SomeArgs args = (SomeArgs) msg.obj;
+                            final String modifiedSelectionString = nativeModifySelection(
+                                    mNativeClass, args.argi1, args.argi2);
+                            // If accessibility is on, the main thread may be
+                            // waiting for a response. Send on webcore thread.
+                            mWebViewClassic.handleSelectionChangedWebCoreThread(
+                                    modifiedSelectionString, args.argi3);
+                            args.recycle();
                             mTextSelectionChangeReason
                                     = TextSelectionData.REASON_UNKNOWN;
                             break;
diff --git a/core/java/android/widget/NumberPicker.java b/core/java/android/widget/NumberPicker.java
index 74ded18..2ac5a12 100644
--- a/core/java/android/widget/NumberPicker.java
+++ b/core/java/android/widget/NumberPicker.java
@@ -1969,8 +1969,10 @@
                  * Ensure the user can't type in a value greater than the max
                  * allowed. We have to allow less than min as the user might
                  * want to delete some numbers and then type a new number.
+                 * And prevent multiple-"0" that exceeds the length of upper
+                 * bound number.
                  */
-                if (val > mMaxValue) {
+                if (val > mMaxValue || result.length() > String.valueOf(mMaxValue).length()) {
                     return "";
                 } else {
                     return filtered;
diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java
index dbeb26d..deec41c 100644
--- a/core/java/android/widget/RelativeLayout.java
+++ b/core/java/android/widget/RelativeLayout.java
@@ -701,10 +701,15 @@
                 myWidth);
         int childHeightMeasureSpec;
         if (myHeight < 0 && !mAllowBrokenMeasureSpecs) {
-            // Negative values in a mySize/myWidth/myWidth value in RelativeLayout measurement
-            // is code for, "we got an unspecified mode in the RelativeLayout's measurespec."
-            // Carry it forward.
-            childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
+            if (params.height >= 0) {
+                childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(
+                        params.height, MeasureSpec.EXACTLY);
+            } else {
+                // Negative values in a mySize/myWidth/myWidth value in RelativeLayout measurement
+                // is code for, "we got an unspecified mode in the RelativeLayout's measurespec."
+                // Carry it forward.
+                childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
+            }
         } else if (params.width == LayoutParams.MATCH_PARENT) {
             childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(myHeight, MeasureSpec.EXACTLY);
         } else {
@@ -733,6 +738,9 @@
             int childSize, int startMargin, int endMargin, int startPadding,
             int endPadding, int mySize) {
         if (mySize < 0 && !mAllowBrokenMeasureSpecs) {
+            if (childSize >= 0) {
+                return MeasureSpec.makeMeasureSpec(childSize, MeasureSpec.EXACTLY);
+            }
             // Negative values in a mySize/myWidth/myWidth value in RelativeLayout measurement
             // is code for, "we got an unspecified mode in the RelativeLayout's measurespec."
             // Carry it forward.
@@ -1028,7 +1036,7 @@
         return -1;
     }
 
-    private void centerHorizontal(View child, LayoutParams params, int myWidth) {
+    private static void centerHorizontal(View child, LayoutParams params, int myWidth) {
         int childWidth = child.getMeasuredWidth();
         int left = (myWidth - childWidth) / 2;
 
@@ -1036,7 +1044,7 @@
         params.mRight = left + childWidth;
     }
 
-    private void centerVertical(View child, LayoutParams params, int myHeight) {
+    private static void centerVertical(View child, LayoutParams params, int myHeight) {
         int childHeight = child.getMeasuredHeight();
         int top = (myHeight - childHeight) / 2;
 
@@ -1230,6 +1238,7 @@
                     com.android.internal.R.styleable.RelativeLayout_Layout);
 
             final int[] rules = mRules;
+            //noinspection MismatchedReadAndWriteOfArray
             final int[] initialRules = mInitialRules;
 
             final int N = a.getIndexCount();
@@ -1308,9 +1317,7 @@
                 }
             }
 
-            for (int n = LEFT_OF; n < VERB_COUNT; n++) {
-                initialRules[n] = rules[n];
-            }
+            System.arraycopy(rules, LEFT_OF, initialRules, LEFT_OF, VERB_COUNT);
 
             a.recycle();
         }
@@ -1401,9 +1408,7 @@
         private void resolveRules(int layoutDirection) {
             final boolean isLayoutRtl = (layoutDirection == View.LAYOUT_DIRECTION_RTL);
             // Reset to initial state
-            for (int n = LEFT_OF; n < VERB_COUNT; n++) {
-                mRules[n] = mInitialRules[n];
-            }
+            System.arraycopy(mInitialRules, LEFT_OF, mRules, LEFT_OF, VERB_COUNT);
             // Apply rules depending on direction
             if (mRules[ALIGN_START] != 0) {
                 mRules[isLayoutRtl ? ALIGN_RIGHT : ALIGN_LEFT] = mRules[ALIGN_START];
diff --git a/core/java/android/widget/Scroller.java b/core/java/android/widget/Scroller.java
index 3a28e75e..3bfd39d 100644
--- a/core/java/android/widget/Scroller.java
+++ b/core/java/android/widget/Scroller.java
@@ -26,11 +26,39 @@
 
 
 /**
- * This class encapsulates scrolling.  The duration of the scroll
- * can be passed in the constructor and specifies the maximum time that
- * the scrolling animation should take.  Past this time, the scrolling is 
- * automatically moved to its final stage and computeScrollOffset()
- * will always return false to indicate that scrolling is over.
+ * <p>This class encapsulates scrolling. You can use scrollers ({@link Scroller}
+ * or {@link OverScroller}) to collect the data you need to produce a scrolling
+ * animation&mdash;for example, in response to a fling gesture. Scrollers track
+ * scroll offsets for you over time, but they don't automatically apply those
+ * positions to your view. It's your responsibility to get and apply new
+ * coordinates at a rate that will make the scrolling animation look smooth.</p>
+ *
+ * <p>Here is a simple example:</p>
+ *
+ * <pre> private Scroller mScroller = new Scroller(context);
+ * ...
+ * public void zoomIn() {
+ *     // Revert any animation currently in progress
+ *     mScroller.forceFinished(true);
+ *     // Start scrolling by providing a starting point and
+ *     // the distance to travel
+ *     mScroller.startScroll(0, 0, 100, 0);
+ *     // Invalidate to request a redraw
+ *     invalidate();
+ * }</pre>
+ *
+ * <p>To track the changing positions of the x/y coordinates, use
+ * {@link #computeScrollOffset}. The method returns a boolean to indicate
+ * whether the scroller is finished. If it isn't, it means that a fling or
+ * programmatic pan operation is still in progress. You can use this method to
+ * find the current offsets of the x and y coordinates, for example:</p>
+ *
+ * <pre>if (mScroller.computeScrollOffset()) {
+ *     // Get current x and y positions
+ *     int currX = mScroller.getCurrX();
+ *     int currY = mScroller.getCurrY();
+ *    ...
+ * }</pre>
  */
 public class Scroller  {
     private int mMode;
@@ -272,8 +300,7 @@
 
     /**
      * Call this when you want to know the new location.  If it returns true,
-     * the animation is not yet finished.  loc will be altered to provide the
-     * new location.
+     * the animation is not yet finished.
      */ 
     public boolean computeScrollOffset() {
         if (mFinished) {
@@ -355,7 +382,8 @@
     }
 
     /**
-     * Start scrolling by providing a starting point and the distance to travel.
+     * Start scrolling by providing a starting point, the distance to travel,
+     * and the duration of the scroll.
      * 
      * @param startX Starting horizontal scroll offset in pixels. Positive
      *        numbers will scroll the content to the left.
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 2f02780..cad7ae3 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -7165,6 +7165,7 @@
      */
     protected void onSelectionChanged(int selStart, int selEnd) {
         sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED);
+        notifyAccessibilityStateChanged();
     }
 
     /**
@@ -7976,6 +7977,10 @@
             info.setText(getTextForAccessibility());
         }
 
+        if (mBufferType == BufferType.EDITABLE) {
+            info.setEditable(true);
+        }
+
         if (TextUtils.isEmpty(getContentDescription()) && !TextUtils.isEmpty(mText)) {
             info.addAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY);
             info.addAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY);
@@ -8030,28 +8035,30 @@
             } return false;
             case AccessibilityNodeInfo.ACTION_SET_SELECTION: {
                 if (isFocused() && canSelectText()) {
-                    final int start = (arguments != null) ? arguments.getInt(
-                            AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, -1) : -1;
-                    final int end = (arguments != null) ? arguments.getInt(
-                            AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, -1) : -1;
                     CharSequence text = getIterableTextForAccessibility();
                     if (text == null) {
                         return false;
                     }
-                    // No arguments clears the selection.
-                    if (start == end && end == -1) {
-                        Selection.removeSelection((Spannable) text);
-                        notifyAccessibilityStateChanged();
-                        return true;
-                    }
-                    if (start >= 0 && start <= end && end <= text.length()) {
-                        Selection.setSelection((Spannable) text, start, end);
-                        // Make sure selection mode is engaged.
-                        if (mEditor != null) {
-                            mEditor.startSelectionActionMode();
+                    final int start = (arguments != null) ? arguments.getInt(
+                            AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, -1) : -1;
+                    final int end = (arguments != null) ? arguments.getInt(
+                            AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, -1) : -1;
+                    if ((getSelectionStart() != start || getSelectionEnd() != end)) {
+                        // No arguments clears the selection.
+                        if (start == end && end == -1) {
+                            Selection.removeSelection((Spannable) text);
+                            notifyAccessibilityStateChanged();
+                            return true;
                         }
-                        notifyAccessibilityStateChanged();
-                        return true;
+                        if (start >= 0 && start <= end && end <= text.length()) {
+                            Selection.setSelection((Spannable) text, start, end);
+                            // Make sure selection mode is engaged.
+                            if (mEditor != null) {
+                                mEditor.startSelectionActionMode();
+                            }
+                            notifyAccessibilityStateChanged();
+                            return true;
+                        }
                     }
                 }
             } return false;
@@ -8794,11 +8801,11 @@
         }
 
         public void drawTextRun(Canvas c, int start, int end,
-                int contextStart, int contextEnd, float x, float y, int flags, Paint p) {
+                int contextStart, int contextEnd, float x, float y, Paint p) {
             int count = end - start;
             int contextCount = contextEnd - contextStart;
             c.drawTextRun(mChars, start + mStart, count, contextStart + mStart,
-                    contextCount, x, y, flags, p);
+                    contextCount, x, y, p);
         }
 
         public float measureText(int start, int end, Paint p) {
@@ -8810,30 +8817,20 @@
         }
 
         public float getTextRunAdvances(int start, int end, int contextStart,
-                int contextEnd, int flags, float[] advances, int advancesIndex,
+                int contextEnd, float[] advances, int advancesIndex,
                 Paint p) {
             int count = end - start;
             int contextCount = contextEnd - contextStart;
             return p.getTextRunAdvances(mChars, start + mStart, count,
-                    contextStart + mStart, contextCount, flags, advances,
+                    contextStart + mStart, contextCount, advances,
                     advancesIndex);
         }
 
-        public float getTextRunAdvances(int start, int end, int contextStart,
-                int contextEnd, int flags, float[] advances, int advancesIndex,
-                Paint p, int reserved) {
-            int count = end - start;
-            int contextCount = contextEnd - contextStart;
-            return p.getTextRunAdvances(mChars, start + mStart, count,
-                    contextStart + mStart, contextCount, flags, advances,
-                    advancesIndex, reserved);
-        }
-
-        public int getTextRunCursor(int contextStart, int contextEnd, int flags,
+        public int getTextRunCursor(int contextStart, int contextEnd,
                 int offset, int cursorOpt, Paint p) {
             int contextCount = contextEnd - contextStart;
             return p.getTextRunCursor(mChars, contextStart + mStart,
-                    contextCount, flags, offset + mStart, cursorOpt);
+                    contextCount, offset + mStart, cursorOpt);
         }
     }
 
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs b/core/java/com/android/internal/app/IAppOpsCallback.aidl
similarity index 64%
copy from tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs
copy to core/java/com/android/internal/app/IAppOpsCallback.aidl
index 1a19ffc..afbc609 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs
+++ b/core/java/com/android/internal/app/IAppOpsCallback.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * 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.
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-#pragma version(1)
-#pragma rs java_package_name(com.android.rs.image)
+package com.android.internal.app;
 
-void sendMsg() {
-    rsSendToClientBlocking(0);
+// This interface is also used by native code, so must
+// be kept in sync with frameworks/native/include/binder/IAppOpsCallback.h
+oneway interface IAppOpsCallback {
+    void opChanged(int op, String packageName);
 }
-
diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl
index c4f1bc48..a9da863 100644
--- a/core/java/com/android/internal/app/IAppOpsService.aidl
+++ b/core/java/com/android/internal/app/IAppOpsService.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * 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.
@@ -17,13 +17,20 @@
 package com.android.internal.app;
 
 import android.app.AppOpsManager;
+import com.android.internal.app.IAppOpsCallback;
 
 interface IAppOpsService {
-    List<AppOpsManager.PackageOps> getPackagesForOps(in int[] ops);
-    List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName, in int[] ops);
-    void setMode(int code, int uid, String packageName, int mode);
+    // These first methods are also called by native code, so must
+    // be kept in sync with frameworks/native/include/binder/IAppOpsService.h
     int checkOperation(int code, int uid, String packageName);
     int noteOperation(int code, int uid, String packageName);
     int startOperation(int code, int uid, String packageName);
     void finishOperation(int code, int uid, String packageName);
+    void startWatchingMode(int op, String packageName, IAppOpsCallback callback);
+    void stopWatchingMode(IAppOpsCallback callback);
+
+    // Remaining methods are only used in Java.
+    List<AppOpsManager.PackageOps> getPackagesForOps(in int[] ops);
+    List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName, in int[] ops);
+    void setMode(int code, int uid, String packageName, int mode);
 }
diff --git a/core/java/com/android/internal/statusbar/StatusBarNotification.java b/core/java/com/android/internal/statusbar/StatusBarNotification.java
index a91aa3c..23e87fc 100644
--- a/core/java/com/android/internal/statusbar/StatusBarNotification.java
+++ b/core/java/com/android/internal/statusbar/StatusBarNotification.java
@@ -21,23 +21,13 @@
 import android.os.Parcelable;
 import android.os.UserHandle;
 
-/*
-boolean clearable = !n.ongoingEvent && ((notification.flags & Notification.FLAG_NO_CLEAR) == 0);
-
-
-// TODO: make this restriction do something smarter like never fill
-// more than two screens.  "Why would anyone need more than 80 characters." :-/
-final int maxTickerLen = 80;
-if (truncatedTicker != null && truncatedTicker.length() > maxTickerLen) {
-    truncatedTicker = truncatedTicker.subSequence(0, maxTickerLen);
-}
-*/
-
 /**
- * Class encapsulating a Notification. Sent by the NotificationManagerService to the IStatusBar (in System UI).
+ * Class encapsulating a Notification. Sent by the NotificationManagerService to clients including
+ * the IStatusBar (in System UI).
  */
 public class StatusBarNotification implements Parcelable {
     public final String pkg;
+    public final String basePkg;
     public final int id;
     public final String tag;
     public final int uid;
@@ -47,6 +37,7 @@
     public final Notification notification;
     public final int score;
     public final UserHandle user;
+    public final long postTime;
 
     /** This is temporarily needed for the JB MR1 PDK. */
     @Deprecated
@@ -57,10 +48,23 @@
 
     public StatusBarNotification(String pkg, int id, String tag, int uid, int initialPid, int score,
             Notification notification, UserHandle user) {
+        this(pkg, null, id, tag, uid, initialPid, score, notification, user);
+    }
+
+    public StatusBarNotification(String pkg, String basePkg, int id, String tag, int uid,
+            int initialPid, int score, Notification notification, UserHandle user) {
+        this(pkg, basePkg, id, tag, uid, initialPid, score, notification, user,
+                System.currentTimeMillis());
+    }
+
+    public StatusBarNotification(String pkg, String basePkg, int id, String tag, int uid,
+            int initialPid, int score, Notification notification, UserHandle user,
+            long postTime) {
         if (pkg == null) throw new NullPointerException();
         if (notification == null) throw new NullPointerException();
 
         this.pkg = pkg;
+        this.basePkg = pkg;
         this.id = id;
         this.tag = tag;
         this.uid = uid;
@@ -69,10 +73,13 @@
         this.notification = notification;
         this.user = user;
         this.notification.setUser(user);
+
+        this.postTime = postTime;
     }
 
     public StatusBarNotification(Parcel in) {
         this.pkg = in.readString();
+        this.basePkg = in.readString();
         this.id = in.readInt();
         if (in.readInt() != 0) {
             this.tag = in.readString();
@@ -84,11 +91,13 @@
         this.score = in.readInt();
         this.notification = new Notification(in);
         this.user = UserHandle.readFromParcel(in);
-        this.notification.setUser(user);
+        this.notification.setUser(this.user);
+        this.postTime = in.readLong();
     }
 
     public void writeToParcel(Parcel out, int flags) {
         out.writeString(this.pkg);
+        out.writeString(this.basePkg);
         out.writeInt(this.id);
         if (this.tag != null) {
             out.writeInt(1);
@@ -101,6 +110,8 @@
         out.writeInt(this.score);
         this.notification.writeToParcel(out, flags);
         user.writeToParcel(out, flags);
+
+        out.writeLong(this.postTime);
     }
 
     public int describeContents() {
@@ -123,14 +134,17 @@
 
     @Override
     public StatusBarNotification clone() {
-        return new StatusBarNotification(this.pkg, this.id, this.tag, this.uid, this.initialPid,
-                this.score, this.notification.clone(), this.user);
+        return new StatusBarNotification(this.pkg, this.basePkg,
+                this.id, this.tag, this.uid, this.initialPid,
+                this.score, this.notification.clone(), this.user, this.postTime);
     }
 
     @Override
     public String toString() {
-        return "StatusBarNotification(pkg=" + pkg + " id=" + id + " tag=" + tag + " score=" + score
-                + " notn=" + notification + " user=" + user + ")";
+        return String.format(
+                "StatusBarNotification(pkg=%s user=%s id=%d tag=%s score=%d: %s)",
+                this.pkg, this.user, this.id, this.tag,
+                this.score, this.notification);
     }
 
     public boolean isOngoing() {
diff --git a/core/java/com/android/internal/util/StateMachine.java b/core/java/com/android/internal/util/StateMachine.java
index 6641f2c..28fd05f 100644
--- a/core/java/com/android/internal/util/StateMachine.java
+++ b/core/java/com/android/internal/util/StateMachine.java
@@ -820,7 +820,7 @@
              * and we won't log special messages SM_INIT_CMD or SM_QUIT_CMD which
              * always set msg.obj to the handler.
              */
-            boolean recordLogMsg = mSm.recordLogRec(mMsg) && (msg.obj == mSmHandlerObj);
+            boolean recordLogMsg = mSm.recordLogRec(mMsg) && (msg.obj != mSmHandlerObj);
 
             if (mLogRecords.logOnlyTransitions()) {
                 /** Record only if there is a transition */
diff --git a/core/java/com/android/internal/widget/ActionBarContainer.java b/core/java/com/android/internal/widget/ActionBarContainer.java
index 0cfe4fd..6120a09 100644
--- a/core/java/com/android/internal/widget/ActionBarContainer.java
+++ b/core/java/com/android/internal/widget/ActionBarContainer.java
@@ -84,6 +84,10 @@
         mBackground = bg;
         if (bg != null) {
             bg.setCallback(this);
+            if (mActionBarView != null) {
+                mBackground.setBounds(mActionBarView.getLeft(), mActionBarView.getTop(),
+                        mActionBarView.getRight(), mActionBarView.getBottom());
+            }
         }
         setWillNotDraw(mIsSplit ? mSplitBackground == null :
                 mBackground == null && mStackedBackground == null);
@@ -98,6 +102,10 @@
         mStackedBackground = bg;
         if (bg != null) {
             bg.setCallback(this);
+            if ((mIsStacked && mStackedBackground != null)) {
+                mStackedBackground.setBounds(mTabContainer.getLeft(), mTabContainer.getTop(),
+                        mTabContainer.getRight(), mTabContainer.getBottom());
+            }
         }
         setWillNotDraw(mIsSplit ? mSplitBackground == null :
                 mBackground == null && mStackedBackground == null);
@@ -112,6 +120,9 @@
         mSplitBackground = bg;
         if (bg != null) {
             bg.setCallback(this);
+            if (mIsSplit && mSplitBackground != null) {
+                mSplitBackground.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight());
+            }
         }
         setWillNotDraw(mIsSplit ? mSplitBackground == null :
                 mBackground == null && mStackedBackground == null);
diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java
index 560227d..6bb7ac7 100644
--- a/core/java/com/android/internal/widget/ActionBarView.java
+++ b/core/java/com/android/internal/widget/ActionBarView.java
@@ -122,6 +122,7 @@
     private boolean mIncludeTabs;
     private boolean mIsCollapsable;
     private boolean mIsCollapsed;
+    private boolean mWasHomeEnabled; // Was it enabled before action view expansion?
 
     private MenuBuilder mOptionsMenu;
     
@@ -227,6 +228,15 @@
         mExpandedHomeLayout.setContentDescription(getResources().getText(
                 R.string.action_bar_up_description));
         
+        // This needs to highlight/be focusable on its own.
+        // TODO: Clean up the handoff between expanded/normal.
+        final Drawable upBackground = mUpGoerFive.getBackground();
+        if (upBackground != null) {
+            mExpandedHomeLayout.setBackground(upBackground.getConstantState().newDrawable());
+        }
+        mExpandedHomeLayout.setEnabled(true);
+        mExpandedHomeLayout.setFocusable(true);
+
         mTitleStyleRes = a.getResourceId(R.styleable.ActionBar_titleTextStyle, 0);
         mSubtitleStyleRes = a.getResourceId(R.styleable.ActionBar_subtitleTextStyle, 0);
         mProgressStyle = a.getResourceId(R.styleable.ActionBar_progressBarStyle, 0);
@@ -549,6 +559,21 @@
     }
 
     public void setHomeButtonEnabled(boolean enable) {
+        setHomeButtonEnabled(enable, true);
+    }
+
+    private void setHomeButtonEnabled(boolean enable, boolean recordState) {
+        if (recordState) {
+            mWasHomeEnabled = enable;
+        }
+
+        if (mExpandedActionView != null) {
+            // There's an action view currently showing and we want to keep the state
+            // configured for the action view at the moment. If we needed to record the
+            // new state for later we will have done so above.
+            return;
+        }
+
         mUpGoerFive.setEnabled(enable);
         mUpGoerFive.setFocusable(enable);
         // Make sure the home button has an accurate content description for accessibility.
@@ -1530,6 +1555,7 @@
             if (mTabScrollView != null) mTabScrollView.setVisibility(GONE);
             if (mSpinner != null) mSpinner.setVisibility(GONE);
             if (mCustomNavView != null) mCustomNavView.setVisibility(GONE);
+            setHomeButtonEnabled(false, false);
             requestLayout();
             item.setActionViewExpanded(true);
 
@@ -1572,6 +1598,7 @@
             }
             mExpandedHomeLayout.setIcon(null);
             mCurrentExpandedItem = null;
+            setHomeButtonEnabled(mWasHomeEnabled); // Set by expandItemActionView above
             requestLayout();
             item.setActionViewExpanded(false);
 
diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp
index 1fb8c91..b7fdecf 100644
--- a/core/jni/android/graphics/BitmapFactory.cpp
+++ b/core/jni/android/graphics/BitmapFactory.cpp
@@ -384,7 +384,7 @@
         return nullObjectReturn("Got null SkPixelRef");
     }
 
-    if (!isMutable) {
+    if (!isMutable && !useExistingBitmap) {
         // promise we will never change our pixels (great for sharing and pictures)
         pr->setImmutable();
     }
diff --git a/core/jni/android/graphics/Canvas.cpp b/core/jni/android/graphics/Canvas.cpp
index 5d6f738..46784ce 100644
--- a/core/jni/android/graphics/Canvas.cpp
+++ b/core/jni/android/graphics/Canvas.cpp
@@ -735,35 +735,35 @@
 
     static void drawText___CIIFFIPaint(JNIEnv* env, jobject, SkCanvas* canvas,
                                       jcharArray text, int index, int count,
-                                      jfloat x, jfloat y, int flags, SkPaint* paint) {
+                                      jfloat x, jfloat y, SkPaint* paint) {
         jchar* textArray = env->GetCharArrayElements(text, NULL);
-        drawTextWithGlyphs(canvas, textArray + index, 0, count, x, y, flags, paint);
+        drawTextWithGlyphs(canvas, textArray + index, 0, count, x, y, paint);
         env->ReleaseCharArrayElements(text, textArray, JNI_ABORT);
     }
 
     static void drawText__StringIIFFIPaint(JNIEnv* env, jobject,
                                           SkCanvas* canvas, jstring text,
                                           int start, int end,
-                                          jfloat x, jfloat y, int flags, SkPaint* paint) {
+                                          jfloat x, jfloat y, SkPaint* paint) {
         const jchar* textArray = env->GetStringChars(text, NULL);
-        drawTextWithGlyphs(canvas, textArray, start, end, x, y, flags, paint);
+        drawTextWithGlyphs(canvas, textArray, start, end, x, y, paint);
         env->ReleaseStringChars(text, textArray);
     }
 
     static void drawTextWithGlyphs(SkCanvas* canvas, const jchar* textArray,
             int start, int end,
-            jfloat x, jfloat y, int flags, SkPaint* paint) {
+            jfloat x, jfloat y, SkPaint* paint) {
 
         jint count = end - start;
-        drawTextWithGlyphs(canvas, textArray + start, 0, count, count, x, y, flags, paint);
+        drawTextWithGlyphs(canvas, textArray + start, 0, count, count, x, y, paint);
     }
 
     static void drawTextWithGlyphs(SkCanvas* canvas, const jchar* textArray,
             int start, int count, int contextCount,
-            jfloat x, jfloat y, int flags, SkPaint* paint) {
+            jfloat x, jfloat y, SkPaint* paint) {
 
         sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(paint,
-                textArray, start, count, contextCount, flags);
+                textArray, start, count, contextCount);
         if (value == NULL) {
             return;
         }
@@ -774,7 +774,7 @@
             x -= value->getTotalAdvance();
         }
         paint->setTextAlign(SkPaint::kLeft_Align);
-        doDrawGlyphsPos(canvas, value->getGlyphs(), value->getPos(), 0, value->getGlyphsCount(), x, y, flags, paint);
+        doDrawGlyphsPos(canvas, value->getGlyphs(), value->getPos(), 0, value->getGlyphsCount(), x, y, paint);
         doDrawTextDecorations(canvas, x, y, value->getTotalAdvance(), paint);
         paint->setTextAlign(align);
     }
@@ -816,14 +816,8 @@
     }
 }
 
-    static void doDrawGlyphs(SkCanvas* canvas, const jchar* glyphArray, int index, int count,
-            jfloat x, jfloat y, int flags, SkPaint* paint) {
-        // Beware: this needs Glyph encoding (already done on the Paint constructor)
-        canvas->drawText(glyphArray + index * 2, count * 2, x, y, *paint);
-    }
-
     static void doDrawGlyphsPos(SkCanvas* canvas, const jchar* glyphArray, const jfloat* posArray,
-            int index, int count, jfloat x, jfloat y, int flags, SkPaint* paint) {
+            int index, int count, jfloat x, jfloat y, SkPaint* paint) {
         SkPoint* posPtr = new SkPoint[count];
         for (int indx = 0; indx < count; indx++) {
             posPtr[indx].fX = SkFloatToScalar(x + posArray[indx * 2]);
@@ -840,7 +834,7 @@
 
         jchar* chars = env->GetCharArrayElements(text, NULL);
         drawTextWithGlyphs(canvas, chars + contextIndex, index - contextIndex,
-                count, contextCount, x, y, dirFlags, paint);
+                count, contextCount, x, y, paint);
         env->ReleaseCharArrayElements(text, chars, JNI_ABORT);
     }
 
@@ -853,7 +847,7 @@
         jint contextCount = contextEnd - contextStart;
         const jchar* chars = env->GetStringChars(text, NULL);
         drawTextWithGlyphs(canvas, chars + contextStart, start - contextStart,
-                count, contextCount, x, y, dirFlags, paint);
+                count, contextCount, x, y, paint);
         env->ReleaseStringChars(text, chars);
     }
 
@@ -916,21 +910,19 @@
 
     static void drawTextOnPath___CIIPathFFPaint(JNIEnv* env, jobject,
             SkCanvas* canvas, jcharArray text, int index, int count,
-            SkPath* path, jfloat hOffset, jfloat vOffset, jint bidiFlags, SkPaint* paint) {
+            SkPath* path, jfloat hOffset, jfloat vOffset, SkPaint* paint) {
 
         jchar* textArray = env->GetCharArrayElements(text, NULL);
-        TextLayout::drawTextOnPath(paint, textArray + index, count, bidiFlags, hOffset, vOffset,
-                                   path, canvas);
+        TextLayout::drawTextOnPath(paint, textArray + index, count, hOffset, vOffset, path, canvas);
         env->ReleaseCharArrayElements(text, textArray, 0);
     }
 
     static void drawTextOnPath__StringPathFFPaint(JNIEnv* env, jobject,
             SkCanvas* canvas, jstring text, SkPath* path,
-            jfloat hOffset, jfloat vOffset, jint bidiFlags, SkPaint* paint) {
+            jfloat hOffset, jfloat vOffset, SkPaint* paint) {
         const jchar* text_ = env->GetStringChars(text, NULL);
         int count = env->GetStringLength(text);
-        TextLayout::drawTextOnPath(paint, text_, count, bidiFlags, hOffset, vOffset,
-                                   path, canvas);
+        TextLayout::drawTextOnPath(paint, text_, count, hOffset, vOffset, path, canvas);
         env->ReleaseStringChars(text, text_);
     }
 
@@ -1033,21 +1025,21 @@
         (void*)SkCanvasGlue::drawBitmapMesh},
     {"nativeDrawVertices", "(III[FI[FI[II[SIII)V",
         (void*)SkCanvasGlue::drawVertices},
-    {"native_drawText","(I[CIIFFII)V",
+    {"native_drawText","(I[CIIFFI)V",
         (void*) SkCanvasGlue::drawText___CIIFFIPaint},
-    {"native_drawText","(ILjava/lang/String;IIFFII)V",
+    {"native_drawText","(ILjava/lang/String;IIFFI)V",
         (void*) SkCanvasGlue::drawText__StringIIFFIPaint},
-    {"native_drawTextRun","(I[CIIIIFFII)V",
+    {"native_drawTextRun","(I[CIIIIFFI)V",
         (void*) SkCanvasGlue::drawTextRun___CIIIIFFIPaint},
-    {"native_drawTextRun","(ILjava/lang/String;IIIIFFII)V",
+    {"native_drawTextRun","(ILjava/lang/String;IIIIFFI)V",
         (void*) SkCanvasGlue::drawTextRun__StringIIIIFFIPaint},
     {"native_drawPosText","(I[CII[FI)V",
         (void*) SkCanvasGlue::drawPosText___CII_FPaint},
     {"native_drawPosText","(ILjava/lang/String;[FI)V",
         (void*) SkCanvasGlue::drawPosText__String_FPaint},
-    {"native_drawTextOnPath","(I[CIIIFFII)V",
+    {"native_drawTextOnPath","(I[CIIIFFI)V",
         (void*) SkCanvasGlue::drawTextOnPath___CIIPathFFPaint},
-    {"native_drawTextOnPath","(ILjava/lang/String;IFFII)V",
+    {"native_drawTextOnPath","(ILjava/lang/String;IFFI)V",
         (void*) SkCanvasGlue::drawTextOnPath__StringPathFFPaint},
     {"native_drawPicture", "(II)V", (void*) SkCanvasGlue::drawPicture},
 
diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp
index 29a36de..e830492 100644
--- a/core/jni/android/graphics/Paint.cpp
+++ b/core/jni/android/graphics/Paint.cpp
@@ -401,7 +401,7 @@
         jfloat result = 0;
 
         TextLayout::getTextRunAdvances(paint, textArray, index, count, textLength,
-                paint->getFlags(), NULL /* dont need all advances */, &result);
+                NULL /* dont need all advances */, &result);
 
         env->ReleaseCharArrayElements(text, const_cast<jchar*>(textArray), JNI_ABORT);
         return result;
@@ -426,7 +426,7 @@
         jfloat width = 0;
 
         TextLayout::getTextRunAdvances(paint, textArray, start, count, textLength,
-                paint->getFlags(), NULL /* dont need all advances */, &width);
+                NULL /* dont need all advances */, &width);
 
         env->ReleaseStringChars(text, textArray);
         return width;
@@ -446,7 +446,7 @@
         jfloat width = 0;
 
         TextLayout::getTextRunAdvances(paint, textArray, 0, textLength, textLength,
-                paint->getFlags(), NULL /* dont need all advances */, &width);
+                NULL /* dont need all advances */, &width);
 
         env->ReleaseStringChars(text, textArray);
         return width;
@@ -473,7 +473,7 @@
         jfloat* widthsArray = autoWidths.ptr();
 
         TextLayout::getTextRunAdvances(paint, text, 0, count, count,
-                paint->getFlags(), widthsArray, NULL /* dont need totalAdvance */);
+                widthsArray, NULL /* dont need totalAdvance */);
 
         return count;
     }
@@ -494,48 +494,8 @@
         return count;
     }
 
-    static int doTextGlyphs(JNIEnv* env, SkPaint* paint, const jchar* text, jint start, jint count,
-            jint contextCount, jint flags, jcharArray glyphs) {
-        NPE_CHECK_RETURN_ZERO(env, paint);
-        NPE_CHECK_RETURN_ZERO(env, text);
-
-        if ((start | count | contextCount) < 0 || contextCount < count || !glyphs) {
-            doThrowAIOOBE(env);
-            return 0;
-        }
-        if (count == 0) {
-            return 0;
-        }
-        size_t glypthsLength = env->GetArrayLength(glyphs);
-        if ((size_t)count > glypthsLength) {
-            doThrowAIOOBE(env);
-            return 0;
-        }
-
-        jchar* glyphsArray = env->GetCharArrayElements(glyphs, NULL);
-
-        sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(paint,
-                text, start, count, contextCount, flags);
-        const jchar* shapedGlyphs = value->getGlyphs();
-        size_t glyphsCount = value->getGlyphsCount();
-        memcpy(glyphsArray, shapedGlyphs, sizeof(jchar) * glyphsCount);
-
-        env->ReleaseCharArrayElements(glyphs, glyphsArray, JNI_ABORT);
-        return glyphsCount;
-    }
-
-    static int getTextGlyphs__StringIIIII_C(JNIEnv* env, jobject clazz, SkPaint* paint,
-            jstring text, jint start, jint end, jint contextStart, jint contextEnd, jint flags,
-            jcharArray glyphs) {
-        const jchar* textArray = env->GetStringChars(text, NULL);
-        int count = doTextGlyphs(env, paint, textArray + contextStart, start - contextStart,
-                end - start, contextEnd - contextStart, flags, glyphs);
-        env->ReleaseStringChars(text, textArray);
-        return count;
-    }
-
     static jfloat doTextRunAdvances(JNIEnv *env, SkPaint *paint, const jchar *text,
-                                    jint start, jint count, jint contextCount, jint flags,
+                                    jint start, jint count, jint contextCount,
                                     jfloatArray advances, jint advancesIndex) {
         NPE_CHECK_RETURN_ZERO(env, paint);
         NPE_CHECK_RETURN_ZERO(env, text);
@@ -557,7 +517,7 @@
         jfloat advancesArray[count];
         jfloat totalAdvance = 0;
 
-        TextLayout::getTextRunAdvances(paint, text, start, count, contextCount, flags,
+        TextLayout::getTextRunAdvances(paint, text, start, count, contextCount,
                                        advancesArray, &totalAdvance);
 
         if (advances != NULL) {
@@ -566,61 +526,23 @@
         return totalAdvance;
     }
 
-    static jfloat doTextRunAdvancesICU(JNIEnv *env, SkPaint *paint, const jchar *text,
-                                    jint start, jint count, jint contextCount, jint flags,
-                                    jfloatArray advances, jint advancesIndex) {
-        NPE_CHECK_RETURN_ZERO(env, paint);
-        NPE_CHECK_RETURN_ZERO(env, text);
-
-        if ((start | count | contextCount | advancesIndex) < 0 || contextCount < count) {
-            doThrowAIOOBE(env);
-            return 0;
-        }
-        if (count == 0) {
-            return 0;
-        }
-        if (advances) {
-            size_t advancesLength = env->GetArrayLength(advances);
-            if ((size_t)count > advancesLength) {
-                doThrowAIOOBE(env);
-                return 0;
-            }
-        }
-
-        jfloat advancesArray[count];
-        jfloat totalAdvance = 0;
-
-        TextLayout::getTextRunAdvancesICU(paint, text, start, count, contextCount, flags,
-                                       advancesArray, totalAdvance);
-
-        if (advances != NULL) {
-            env->SetFloatArrayRegion(advances, advancesIndex, count, advancesArray);
-        }
-        return totalAdvance;
-    }
-
-    static float getTextRunAdvances___CIIIII_FII(JNIEnv* env, jobject clazz, SkPaint* paint,
+    static float getTextRunAdvances___CIIII_FI(JNIEnv* env, jobject clazz, SkPaint* paint,
             jcharArray text, jint index, jint count, jint contextIndex, jint contextCount,
-            jint flags, jfloatArray advances, jint advancesIndex, jint reserved) {
+            jfloatArray advances, jint advancesIndex) {
         jchar* textArray = env->GetCharArrayElements(text, NULL);
-        jfloat result = (reserved == 0) ?
-                doTextRunAdvances(env, paint, textArray + contextIndex, index - contextIndex,
-                        count, contextCount, flags, advances, advancesIndex) :
-                doTextRunAdvancesICU(env, paint, textArray + contextIndex, index - contextIndex,
-                        count, contextCount, flags, advances, advancesIndex);
+        jfloat result = doTextRunAdvances(env, paint, textArray + contextIndex,
+                index - contextIndex, count, contextCount, advances, advancesIndex);
         env->ReleaseCharArrayElements(text, textArray, JNI_ABORT);
         return result;
     }
 
-    static float getTextRunAdvances__StringIIIII_FII(JNIEnv* env, jobject clazz, SkPaint* paint,
-            jstring text, jint start, jint end, jint contextStart, jint contextEnd, jint flags,
-            jfloatArray advances, jint advancesIndex, jint reserved) {
+    static float getTextRunAdvances__StringIIII_FI(JNIEnv* env, jobject clazz, SkPaint* paint,
+            jstring text, jint start, jint end, jint contextStart, jint contextEnd,
+            jfloatArray advances, jint advancesIndex) {
         const jchar* textArray = env->GetStringChars(text, NULL);
-        jfloat result = (reserved == 0) ?
-                doTextRunAdvances(env, paint, textArray + contextStart, start - contextStart,
-                        end - start, contextEnd - contextStart, flags, advances, advancesIndex) :
-                doTextRunAdvancesICU(env, paint, textArray + contextStart, start - contextStart,
-                        end - start, contextEnd - contextStart, flags, advances, advancesIndex);
+        jfloat result = doTextRunAdvances(env, paint, textArray + contextStart,
+                start - contextStart, end - start, contextEnd - contextStart,
+                advances, advancesIndex);
         env->ReleaseStringChars(text, textArray);
         return result;
     }
@@ -629,7 +551,7 @@
             jint count, jint flags, jint offset, jint opt) {
         jfloat scalarArray[count];
 
-        TextLayout::getTextRunAdvances(paint, text, start, count, start + count, flags,
+        TextLayout::getTextRunAdvances(paint, text, start, count, start + count,
                 scalarArray, NULL /* dont need totalAdvance */);
 
         jint pos = offset - start;
@@ -688,21 +610,21 @@
     }
 
     static void getTextPath(JNIEnv* env, SkPaint* paint, const jchar* text, jint count,
-                            jint bidiFlags, jfloat x, jfloat y, SkPath *path) {
-        TextLayout::getTextPath(paint, text, count, bidiFlags, x, y, path);
+                            jfloat x, jfloat y, SkPath *path) {
+        TextLayout::getTextPath(paint, text, count, x, y, path);
     }
 
-    static void getTextPath___C(JNIEnv* env, jobject clazz, SkPaint* paint, jint bidiFlags,
+    static void getTextPath___C(JNIEnv* env, jobject clazz, SkPaint* paint,
             jcharArray text, int index, int count, jfloat x, jfloat y, SkPath* path) {
         const jchar* textArray = env->GetCharArrayElements(text, NULL);
-        getTextPath(env, paint, textArray + index, count, bidiFlags, x, y, path);
+        getTextPath(env, paint, textArray + index, count, x, y, path);
         env->ReleaseCharArrayElements(text, const_cast<jchar*>(textArray), JNI_ABORT);
     }
 
-    static void getTextPath__String(JNIEnv* env, jobject clazz, SkPaint* paint, jint bidiFlags,
+    static void getTextPath__String(JNIEnv* env, jobject clazz, SkPaint* paint,
             jstring text, int start, int end, jfloat x, jfloat y, SkPath* path) {
         const jchar* textArray = env->GetStringChars(text, NULL);
-        getTextPath(env, paint, textArray + start, end - start, bidiFlags, x, y, path);
+        getTextPath(env, paint, textArray + start, end - start, x, y, path);
         env->ReleaseStringChars(text, textArray);
     }
 
@@ -726,7 +648,7 @@
                          int count, float maxWidth, jfloatArray jmeasured,
                          SkPaint::TextBufferDirection tbd) {
         sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(&paint,
-                text, 0, count, count, paint.getFlags());
+                text, 0, count, count);
         if (value == NULL) {
             return 0;
         }
@@ -798,7 +720,7 @@
         SkIRect ir;
 
         sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(&paint,
-                text, 0, count, count, paint.getFlags());
+                text, 0, count, count);
         if (value == NULL) {
             return;
         }
@@ -886,19 +808,15 @@
     {"native_breakText","(Ljava/lang/String;ZF[F)I", (void*) SkPaintGlue::breakTextS},
     {"native_getTextWidths","(I[CII[F)I", (void*) SkPaintGlue::getTextWidths___CII_F},
     {"native_getTextWidths","(ILjava/lang/String;II[F)I", (void*) SkPaintGlue::getTextWidths__StringII_F},
-    {"native_getTextRunAdvances","(I[CIIIII[FII)F",
-        (void*) SkPaintGlue::getTextRunAdvances___CIIIII_FII},
-    {"native_getTextRunAdvances","(ILjava/lang/String;IIIII[FII)F",
-        (void*) SkPaintGlue::getTextRunAdvances__StringIIIII_FII},
-
-
-    {"native_getTextGlyphs","(ILjava/lang/String;IIIII[C)I",
-        (void*) SkPaintGlue::getTextGlyphs__StringIIIII_C},
-    {"native_getTextRunCursor", "(I[CIIIII)I", (void*) SkPaintGlue::getTextRunCursor___C},
-    {"native_getTextRunCursor", "(ILjava/lang/String;IIIII)I",
+    {"native_getTextRunAdvances","(I[CIIII[FI)F",
+        (void*) SkPaintGlue::getTextRunAdvances___CIIII_FI},
+    {"native_getTextRunAdvances","(ILjava/lang/String;IIII[FI)F",
+        (void*) SkPaintGlue::getTextRunAdvances__StringIIII_FI},
+    {"native_getTextRunCursor", "(I[CIIII)I", (void*) SkPaintGlue::getTextRunCursor___C},
+    {"native_getTextRunCursor", "(ILjava/lang/String;IIII)I",
         (void*) SkPaintGlue::getTextRunCursor__String},
-    {"native_getTextPath","(II[CIIFFI)V", (void*) SkPaintGlue::getTextPath___C},
-    {"native_getTextPath","(IILjava/lang/String;IIFFI)V", (void*) SkPaintGlue::getTextPath__String},
+    {"native_getTextPath","(I[CIIFFI)V", (void*) SkPaintGlue::getTextPath___C},
+    {"native_getTextPath","(ILjava/lang/String;IIFFI)V", (void*) SkPaintGlue::getTextPath__String},
     {"nativeGetStringBounds", "(ILjava/lang/String;IILandroid/graphics/Rect;)V",
                                         (void*) SkPaintGlue::getStringBounds },
     {"nativeGetCharArrayBounds", "(I[CIILandroid/graphics/Rect;)V",
diff --git a/core/jni/android/graphics/Region.cpp b/core/jni/android/graphics/Region.cpp
index 866d223..ab7cf46 100644
--- a/core/jni/android/graphics/Region.cpp
+++ b/core/jni/android/graphics/Region.cpp
@@ -255,7 +255,7 @@
     // these are static methods
     { "nativeConstructor",      "()I",                              (void*)Region_constructor       },
     { "nativeDestructor",       "(I)V",                             (void*)Region_destructor        },
-    { "nativeSetRegion",        "(II)Z",                            (void*)Region_setRegion         },
+    { "nativeSetRegion",        "(II)V",                            (void*)Region_setRegion         },
     { "nativeSetRect",          "(IIIII)Z",                         (void*)Region_setRect           },
     { "nativeSetPath",          "(III)Z",                           (void*)Region_setPath           },
     { "nativeGetBounds",        "(ILandroid/graphics/Rect;)Z",      (void*)Region_getBounds         },
diff --git a/core/jni/android/graphics/TextLayout.cpp b/core/jni/android/graphics/TextLayout.cpp
index 2beedad..b77236c 100644
--- a/core/jni/android/graphics/TextLayout.cpp
+++ b/core/jni/android/graphics/TextLayout.cpp
@@ -28,33 +28,13 @@
 
 namespace android {
 
-// Returns true if we might need layout.  If bidiFlags force LTR, assume no layout, if
-// bidiFlags indicate there probably is RTL, assume we do, otherwise scan the text
-// looking for a character >= the first RTL character in unicode and assume we do if
-// we find one.
-bool TextLayout::needsLayout(const jchar* text, jint len, jint bidiFlags) {
-    if (bidiFlags == kBidi_Force_LTR) {
-        return false;
-    }
-    if ((bidiFlags == kBidi_RTL) || (bidiFlags == kBidi_Default_RTL) ||
-            bidiFlags == kBidi_Force_RTL) {
-        return true;
-    }
-    for (int i = 0; i < len; ++i) {
-        if (text[i] >= UNICODE_FIRST_RTL_CHAR) {
-            return true;
-        }
-    }
-    return false;
-}
-
 // Draws or gets the path of a paragraph of text on a single line, running bidi and shaping.
 // This will draw if canvas is not null, otherwise path must be non-null and it will create
 // a path representing the text that would have been drawn.
 void TextLayout::handleText(SkPaint *paint, const jchar* text, jsize len,
-                            jint bidiFlags, jfloat x, jfloat y, SkPath *path) {
+                            jfloat x, jfloat y, SkPath *path) {
     sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(paint,
-            text, 0, len, len, bidiFlags);
+            text, 0, len, len);
     if (value == NULL) {
         return ;
     }
@@ -65,10 +45,10 @@
 }
 
 void TextLayout::getTextRunAdvances(SkPaint* paint, const jchar* chars, jint start,
-                                    jint count, jint contextCount, jint dirFlags,
+                                    jint count, jint contextCount,
                                     jfloat* resultAdvances, jfloat* resultTotalAdvance) {
     sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(paint,
-            chars, start, count, contextCount, dirFlags);
+            chars, start, count, contextCount);
     if (value == NULL) {
         return ;
     }
@@ -80,29 +60,20 @@
     }
 }
 
-void TextLayout::getTextRunAdvancesICU(SkPaint* paint, const jchar* chars, jint start,
-                                    jint count, jint contextCount, jint dirFlags,
-                                    jfloat* resultAdvances, jfloat& resultTotalAdvance) {
-    // Compute advances and return them
-    computeAdvancesWithICU(paint, chars, start, count, contextCount, dirFlags,
-            resultAdvances, &resultTotalAdvance);
-}
-
 void TextLayout::getTextPath(SkPaint *paint, const jchar *text, jsize len,
-                             jint bidiFlags, jfloat x, jfloat y, SkPath *path) {
-    handleText(paint, text, len, bidiFlags, x, y, path);
+                             jfloat x, jfloat y, SkPath *path) {
+    handleText(paint, text, len, x, y, path);
 }
 
-
 void TextLayout::drawTextOnPath(SkPaint* paint, const jchar* text, int count,
-                                int bidiFlags, jfloat hOffset, jfloat vOffset,
+                                jfloat hOffset, jfloat vOffset,
                                 SkPath* path, SkCanvas* canvas) {
 
     SkScalar h_ = SkFloatToScalar(hOffset);
     SkScalar v_ = SkFloatToScalar(vOffset);
 
     sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(paint,
-            text, 0, count, count, bidiFlags);
+            text, 0, count, count);
     if (value == NULL) {
         return;
     }
@@ -111,73 +82,4 @@
     canvas->drawTextOnPathHV(value->getGlyphs(), value->getGlyphsCount() * 2, *path, h_, v_, *paint);
 }
 
-void TextLayout::computeAdvancesWithICU(SkPaint* paint, const UChar* chars,
-        size_t start, size_t count, size_t contextCount, int dirFlags,
-        jfloat* outAdvances, jfloat* outTotalAdvance) {
-    SkAutoSTMalloc<CHAR_BUFFER_SIZE, jchar> tempBuffer(contextCount);
-    jchar* buffer = tempBuffer.get();
-    SkScalar* scalarArray = (SkScalar*)outAdvances;
-
-    // this is where we'd call harfbuzz
-    // for now we just use ushape.c
-    size_t widths;
-    const jchar* text;
-    if (dirFlags & 0x1) { // rtl, call arabic shaping in case
-        UErrorCode status = U_ZERO_ERROR;
-        // Use fixed length since we need to keep start and count valid
-        u_shapeArabic(chars, contextCount, buffer, contextCount,
-                U_SHAPE_LENGTH_FIXED_SPACES_NEAR |
-                U_SHAPE_TEXT_DIRECTION_LOGICAL | U_SHAPE_LETTERS_SHAPE |
-                U_SHAPE_X_LAMALEF_SUB_ALTERNATE, &status);
-        // we shouldn't fail unless there's an out of memory condition,
-        // in which case we're hosed anyway
-        for (int i = start, e = i + count; i < e; ++i) {
-            if (buffer[i] == UNICODE_NOT_A_CHAR) {
-                buffer[i] = UNICODE_ZWSP; // zero-width-space for skia
-            }
-        }
-        text = buffer + start;
-        widths = paint->getTextWidths(text, count << 1, scalarArray);
-    } else {
-        text = chars + start;
-        widths = paint->getTextWidths(text, count << 1, scalarArray);
-    }
-
-    jfloat totalAdvance = 0;
-    if (widths < count) {
-#if DEBUG_ADVANCES
-    ALOGD("ICU -- count=%d", widths);
-#endif
-        // Skia operates on code points, not code units, so surrogate pairs return only
-        // one value. Expand the result so we have one value per UTF-16 code unit.
-
-        // Note, skia's getTextWidth gets confused if it encounters a surrogate pair,
-        // leaving the remaining widths zero.  Not nice.
-        for (size_t i = 0, p = 0; i < widths; ++i) {
-            totalAdvance += outAdvances[p++] = SkScalarToFloat(scalarArray[i]);
-            if (p < count &&
-                    text[p] >= UNICODE_FIRST_LOW_SURROGATE &&
-                    text[p] < UNICODE_FIRST_PRIVATE_USE &&
-                    text[p-1] >= UNICODE_FIRST_HIGH_SURROGATE &&
-                    text[p-1] < UNICODE_FIRST_LOW_SURROGATE) {
-                outAdvances[p++] = 0;
-            }
-#if DEBUG_ADVANCES
-            ALOGD("icu-adv = %f - total = %f", outAdvances[i], totalAdvance);
-#endif
-        }
-    } else {
-#if DEBUG_ADVANCES
-    ALOGD("ICU -- count=%d", count);
-#endif
-        for (size_t i = 0; i < count; i++) {
-            totalAdvance += outAdvances[i] = SkScalarToFloat(scalarArray[i]);
-#if DEBUG_ADVANCES
-            ALOGD("icu-adv = %f - total = %f", outAdvances[i], totalAdvance);
-#endif
-        }
-    }
-    *outTotalAdvance = totalAdvance;
-}
-
 }
diff --git a/core/jni/android/graphics/TextLayout.h b/core/jni/android/graphics/TextLayout.h
index a0f9402..fa388c8 100644
--- a/core/jni/android/graphics/TextLayout.h
+++ b/core/jni/android/graphics/TextLayout.h
@@ -42,17 +42,6 @@
 #define USE_TEXT_LAYOUT_CACHE 1
 
 enum {
-    kBidi_LTR = 0,
-    kBidi_RTL = 1,
-    kBidi_Default_LTR = 2,
-    kBidi_Default_RTL = 3,
-    kBidi_Force_LTR = 4,
-    kBidi_Force_RTL = 5,
-
-    kBidi_Mask = 0x7
-};
-
-enum {
     kDirection_LTR = 0,
     kDirection_RTL = 1,
 
@@ -63,28 +52,18 @@
 public:
 
     static void getTextRunAdvances(SkPaint* paint, const jchar* chars, jint start,
-                                   jint count, jint contextCount, jint dirFlags,
+                                   jint count, jint contextCount,
                                    jfloat* resultAdvances, jfloat* resultTotalAdvance);
 
-    static void getTextRunAdvancesICU(SkPaint* paint, const jchar* chars, jint start,
-                                   jint count, jint contextCount, jint dirFlags,
-                                   jfloat* resultAdvances, jfloat& resultTotalAdvance);
-
     static void getTextPath(SkPaint* paint, const jchar* text, jsize len,
-                            jint bidiFlags, jfloat x, jfloat y, SkPath* path);
+                            jfloat x, jfloat y, SkPath* path);
 
     static void drawTextOnPath(SkPaint* paint, const jchar* text, jsize len,
-                               int bidiFlags, jfloat hOffset, jfloat vOffset,
+                               jfloat hOffset, jfloat vOffset,
                                SkPath* path, SkCanvas* canvas);
 
 private:
-    static bool needsLayout(const jchar* text, jint len, jint bidiFlags);
-
     static void handleText(SkPaint* paint, const jchar* text, jsize len,
-                           int bidiFlags, jfloat x, jfloat y, SkPath* path);
-
-    static void computeAdvancesWithICU(SkPaint* paint, const UChar* chars,
-            size_t start, size_t count, size_t contextCount, int dirFlags,
-            jfloat* outAdvances, jfloat* outTotalAdvance);
+                           jfloat x, jfloat y, SkPath* path);
 };
 } // namespace android
diff --git a/core/jni/android/graphics/TextLayoutCache.cpp b/core/jni/android/graphics/TextLayoutCache.cpp
index 6d3c878..60c6183 100644
--- a/core/jni/android/graphics/TextLayoutCache.cpp
+++ b/core/jni/android/graphics/TextLayoutCache.cpp
@@ -87,7 +87,7 @@
  * Caching
  */
 sp<TextLayoutValue> TextLayoutCache::getValue(const SkPaint* paint,
-            const jchar* text, jint start, jint count, jint contextCount, jint dirFlags) {
+            const jchar* text, jint start, jint count, jint contextCount) {
     AutoMutex _l(mLock);
     nsecs_t startTime = 0;
     if (mDebugEnabled) {
@@ -95,7 +95,7 @@
     }
 
     // Create the key
-    TextLayoutCacheKey key(paint, text, start, count, contextCount, dirFlags);
+    TextLayoutCacheKey key(paint, text, start, count, contextCount);
 
     // Get value from cache if possible
     sp<TextLayoutValue> value = mCache.get(key);
@@ -111,7 +111,7 @@
         // Compute advances and store them
         mShaper->computeValues(value.get(), paint,
                 reinterpret_cast<const UChar*>(key.getText()), start, count,
-                size_t(contextCount), int(dirFlags));
+                size_t(contextCount));
 
         if (mDebugEnabled) {
             value->setElapsedTime(systemTime(SYSTEM_TIME_MONOTONIC) - startTime);
@@ -218,14 +218,13 @@
  * TextLayoutCacheKey
  */
 TextLayoutCacheKey::TextLayoutCacheKey(): start(0), count(0), contextCount(0),
-        dirFlags(0), typeface(NULL), textSize(0), textSkewX(0), textScaleX(0), flags(0),
+        typeface(NULL), textSize(0), textSkewX(0), textScaleX(0), flags(0),
         hinting(SkPaint::kNo_Hinting), variant(SkPaint::kDefault_Variant), language()  {
 }
 
 TextLayoutCacheKey::TextLayoutCacheKey(const SkPaint* paint, const UChar* text,
-        size_t start, size_t count, size_t contextCount, int dirFlags) :
-            start(start), count(count), contextCount(contextCount),
-            dirFlags(dirFlags) {
+        size_t start, size_t count, size_t contextCount) :
+            start(start), count(count), contextCount(contextCount) {
     textCopy.setTo(text, contextCount);
     typeface = paint->getTypeface();
     textSize = paint->getTextSize();
@@ -242,7 +241,6 @@
         start(other.start),
         count(other.count),
         contextCount(other.contextCount),
-        dirFlags(other.dirFlags),
         typeface(other.typeface),
         textSize(other.textSize),
         textSkewX(other.textSkewX),
@@ -281,9 +279,6 @@
     deltaInt = lhs.hinting - rhs.hinting;
     if (deltaInt != 0) return (deltaInt);
 
-    deltaInt = lhs.dirFlags - rhs.dirFlags;
-    if (deltaInt) return (deltaInt);
-
     deltaInt = lhs.variant - rhs.variant;
     if (deltaInt) return (deltaInt);
 
@@ -359,9 +354,9 @@
 }
 
 void TextLayoutShaper::computeValues(TextLayoutValue* value, const SkPaint* paint, const UChar* chars,
-        size_t start, size_t count, size_t contextCount, int dirFlags) {
+        size_t start, size_t count, size_t contextCount) {
 
-    computeValues(paint, chars, start, count, contextCount, dirFlags,
+    computeValues(paint, chars, start, count, contextCount,
             &value->mAdvances, &value->mTotalAdvance, &value->mGlyphs, &value->mPos);
 #if DEBUG_ADVANCES
     ALOGD("Advances - start = %d, count = %d, contextCount = %d, totalAdvance = %f", start, count,
@@ -370,7 +365,7 @@
 }
 
 void TextLayoutShaper::computeValues(const SkPaint* paint, const UChar* chars,
-        size_t start, size_t count, size_t contextCount, int dirFlags,
+        size_t start, size_t count, size_t contextCount,
         Vector<jfloat>* const outAdvances, jfloat* outTotalAdvance,
         Vector<jchar>* const outGlyphs, Vector<jfloat>* const outPos) {
         *outTotalAdvance = 0;
@@ -378,110 +373,94 @@
             return;
         }
 
-        UBiDiLevel bidiReq = 0;
-        bool forceLTR = false;
-        bool forceRTL = false;
-
-        switch (dirFlags & kBidi_Mask) {
-            case kBidi_LTR: bidiReq = 0; break; // no ICU constant, canonical LTR level
-            case kBidi_RTL: bidiReq = 1; break; // no ICU constant, canonical RTL level
-            case kBidi_Default_LTR: bidiReq = UBIDI_DEFAULT_LTR; break;
-            case kBidi_Default_RTL: bidiReq = UBIDI_DEFAULT_RTL; break;
-            case kBidi_Force_LTR: forceLTR = true; break; // every char is LTR
-            case kBidi_Force_RTL: forceRTL = true; break; // every char is RTL
-        }
-
+        UBiDiLevel bidiReq = UBIDI_DEFAULT_LTR;
         bool useSingleRun = false;
-        bool isRTL = forceRTL;
-        if (forceLTR || forceRTL) {
-            useSingleRun = true;
-        } else {
-            UBiDi* bidi = ubidi_open();
-            if (bidi) {
-                UErrorCode status = U_ZERO_ERROR;
+        bool isRTL = false;
+
+        UBiDi* bidi = ubidi_open();
+        if (bidi) {
+            UErrorCode status = U_ZERO_ERROR;
 #if DEBUG_GLYPHS
-                ALOGD("******** ComputeValues -- start");
-                ALOGD("      -- string = '%s'", String8(chars + start, count).string());
-                ALOGD("      -- start = %d", start);
-                ALOGD("      -- count = %d", count);
-                ALOGD("      -- contextCount = %d", contextCount);
-                ALOGD("      -- bidiReq = %d", bidiReq);
+            ALOGD("******** ComputeValues -- start");
+            ALOGD("      -- string = '%s'", String8(chars + start, count).string());
+            ALOGD("      -- start = %d", start);
+            ALOGD("      -- count = %d", count);
+            ALOGD("      -- contextCount = %d", contextCount);
+            ALOGD("      -- bidiReq = %d", bidiReq);
 #endif
-                ubidi_setPara(bidi, chars, contextCount, bidiReq, NULL, &status);
-                if (U_SUCCESS(status)) {
-                    int paraDir = ubidi_getParaLevel(bidi) & kDirection_Mask; // 0 if ltr, 1 if rtl
-                    ssize_t rc = ubidi_countRuns(bidi, &status);
+            ubidi_setPara(bidi, chars, contextCount, bidiReq, NULL, &status);
+            if (U_SUCCESS(status)) {
+                int paraDir = ubidi_getParaLevel(bidi) & kDirection_Mask; // 0 if ltr, 1 if rtl
+                ssize_t rc = ubidi_countRuns(bidi, &status);
 #if DEBUG_GLYPHS
-                    ALOGD("      -- dirFlags = %d", dirFlags);
-                    ALOGD("      -- paraDir = %d", paraDir);
-                    ALOGD("      -- run-count = %d", int(rc));
+                ALOGD("      -- paraDir = %d", paraDir);
+                ALOGD("      -- run-count = %d", int(rc));
 #endif
-                    if (U_SUCCESS(status) && rc == 1) {
-                        // Normal case: one run, status is ok
-                        isRTL = (paraDir == 1);
-                        useSingleRun = true;
-                    } else if (!U_SUCCESS(status) || rc < 1) {
-                        ALOGW("Need to force to single run -- string = '%s',"
-                                " status = %d, rc = %d",
-                                String8(chars + start, count).string(), status, int(rc));
-                        isRTL = (paraDir == 1);
-                        useSingleRun = true;
-                    } else {
-                        int32_t end = start + count;
-                        for (size_t i = 0; i < size_t(rc); ++i) {
-                            int32_t startRun = -1;
-                            int32_t lengthRun = -1;
-                            UBiDiDirection runDir = ubidi_getVisualRun(bidi, i, &startRun, &lengthRun);
-
-                            if (startRun == -1 || lengthRun == -1) {
-                                // Something went wrong when getting the visual run, need to clear
-                                // already computed data before doing a single run pass
-                                ALOGW("Visual run is not valid");
-                                outGlyphs->clear();
-                                outAdvances->clear();
-                                outPos->clear();
-                                *outTotalAdvance = 0;
-                                isRTL = (paraDir == 1);
-                                useSingleRun = true;
-                                break;
-                            }
-
-                            if (startRun >= end) {
-                                continue;
-                            }
-                            int32_t endRun = startRun + lengthRun;
-                            if (endRun <= int32_t(start)) {
-                                continue;
-                            }
-                            if (startRun < int32_t(start)) {
-                                startRun = int32_t(start);
-                            }
-                            if (endRun > end) {
-                                endRun = end;
-                            }
-
-                            lengthRun = endRun - startRun;
-                            isRTL = (runDir == UBIDI_RTL);
-#if DEBUG_GLYPHS
-                            ALOGD("Processing Bidi Run = %d -- run-start = %d, run-len = %d, isRTL = %d",
-                                    i, startRun, lengthRun, isRTL);
-#endif
-                            computeRunValues(paint, chars, startRun, lengthRun, contextCount, isRTL,
-                                    outAdvances, outTotalAdvance, outGlyphs, outPos);
-
-                        }
-                    }
-                } else {
-                    ALOGW("Cannot set Para");
+                if (U_SUCCESS(status) && rc == 1) {
+                    // Normal case: one run, status is ok
+                    isRTL = (paraDir == 1);
                     useSingleRun = true;
-                    isRTL = (bidiReq = 1) || (bidiReq = UBIDI_DEFAULT_RTL);
+                } else if (!U_SUCCESS(status) || rc < 1) {
+                    ALOGW("Need to force to single run -- string = '%s',"
+                            " status = %d, rc = %d",
+                            String8(chars + start, count).string(), status, int(rc));
+                    isRTL = (paraDir == 1);
+                    useSingleRun = true;
+                } else {
+                    int32_t end = start + count;
+                    for (size_t i = 0; i < size_t(rc); ++i) {
+                        int32_t startRun = -1;
+                        int32_t lengthRun = -1;
+                        UBiDiDirection runDir = ubidi_getVisualRun(bidi, i, &startRun, &lengthRun);
+
+                        if (startRun == -1 || lengthRun == -1) {
+                            // Something went wrong when getting the visual run, need to clear
+                            // already computed data before doing a single run pass
+                            ALOGW("Visual run is not valid");
+                            outGlyphs->clear();
+                            outAdvances->clear();
+                            outPos->clear();
+                            *outTotalAdvance = 0;
+                            isRTL = (paraDir == 1);
+                            useSingleRun = true;
+                            break;
+                        }
+
+                        if (startRun >= end) {
+                            continue;
+                        }
+                        int32_t endRun = startRun + lengthRun;
+                        if (endRun <= int32_t(start)) {
+                            continue;
+                        }
+                        if (startRun < int32_t(start)) {
+                            startRun = int32_t(start);
+                        }
+                        if (endRun > end) {
+                            endRun = end;
+                        }
+
+                        lengthRun = endRun - startRun;
+                        isRTL = (runDir == UBIDI_RTL);
+#if DEBUG_GLYPHS
+                        ALOGD("Processing Bidi Run = %d -- run-start = %d, run-len = %d, isRTL = %d",
+                                i, startRun, lengthRun, isRTL);
+#endif
+                        computeRunValues(paint, chars, startRun, lengthRun, contextCount, isRTL,
+                                outAdvances, outTotalAdvance, outGlyphs, outPos);
+
+                    }
                 }
-                ubidi_close(bidi);
             } else {
-                ALOGW("Cannot ubidi_open()");
+                ALOGW("Cannot set Para");
                 useSingleRun = true;
                 isRTL = (bidiReq = 1) || (bidiReq = UBIDI_DEFAULT_RTL);
             }
+            ubidi_close(bidi);
+        } else {
+            ALOGW("Cannot ubidi_open()");
+            useSingleRun = true;
+            isRTL = (bidiReq = 1) || (bidiReq = UBIDI_DEFAULT_RTL);
         }
 
         // Default single run case
@@ -785,10 +764,6 @@
 /**
  * Return the first typeface in the logical change, starting with this typeface,
  * that contains the specified unichar, or NULL if none is found.
- * 
- * Note that this function does _not_ increment the reference count on the typeface, as the
- * assumption is that its lifetime is managed elsewhere - in particular, the fallback typefaces
- * for the default font live in a global cache.
  */
 SkTypeface* TextLayoutShaper::typefaceForScript(const SkPaint* paint, SkTypeface* typeface,
         hb_script_t script) {
@@ -798,7 +773,7 @@
     }
     typeface = SkCreateTypefaceForScriptNG(script, currentStyle);
 #if DEBUG_GLYPHS
-    ALOGD("Using Harfbuzz Script %d, Style %d", script, currentStyle);
+    ALOGD("Using Harfbuzz Script %c%c%c%c, Style %d", HB_UNTAG(script), currentStyle);
 #endif
     return typeface;
 }
@@ -845,6 +820,7 @@
     if (baseGlyphCount != 0) {
         typeface = typefaceForScript(paint, typeface, hb_buffer_get_script(mBuffer));
         if (!typeface) {
+            baseGlyphCount = 0;
             typeface = mDefaultTypeface;
             SkSafeRef(typeface);
 #if DEBUG_GLYPHS
@@ -921,11 +897,11 @@
 }
 
 sp<TextLayoutValue> TextLayoutEngine::getValue(const SkPaint* paint, const jchar* text,
-        jint start, jint count, jint contextCount, jint dirFlags) {
+        jint start, jint count, jint contextCount) {
     sp<TextLayoutValue> value;
 #if USE_TEXT_LAYOUT_CACHE
     value = mTextLayoutCache->getValue(paint, text, start, count,
-            contextCount, dirFlags);
+            contextCount);
     if (value == NULL) {
         ALOGE("Cannot get TextLayoutCache value for text = '%s'",
                 String8(text + start, count).string());
@@ -933,7 +909,7 @@
 #else
     value = new TextLayoutValue(count);
     mShaper->computeValues(value.get(), paint,
-            reinterpret_cast<const UChar*>(text), start, count, contextCount, dirFlags);
+            reinterpret_cast<const UChar*>(text), start, count, contextCount);
 #endif
     return value;
 }
diff --git a/core/jni/android/graphics/TextLayoutCache.h b/core/jni/android/graphics/TextLayoutCache.h
index 704c773..29805ee 100644
--- a/core/jni/android/graphics/TextLayoutCache.h
+++ b/core/jni/android/graphics/TextLayoutCache.h
@@ -71,7 +71,7 @@
     TextLayoutCacheKey();
 
     TextLayoutCacheKey(const SkPaint* paint, const UChar* text, size_t start, size_t count,
-            size_t contextCount, int dirFlags);
+            size_t contextCount);
 
     TextLayoutCacheKey(const TextLayoutCacheKey& other);
 
@@ -98,7 +98,6 @@
     size_t start;
     size_t count;
     size_t contextCount;
-    int dirFlags;
     SkTypeface* typeface;
     SkScalar textSize;
     SkScalar textSkewX;
@@ -182,7 +181,7 @@
     virtual ~TextLayoutShaper();
 
     void computeValues(TextLayoutValue* value, const SkPaint* paint, const UChar* chars,
-            size_t start, size_t count, size_t contextCount, int dirFlags);
+            size_t start, size_t count, size_t contextCount);
 
     void purgeCaches();
 
@@ -216,7 +215,7 @@
     size_t shapeFontRun(const SkPaint* paint);
 
     void computeValues(const SkPaint* paint, const UChar* chars,
-            size_t start, size_t count, size_t contextCount, int dirFlags,
+            size_t start, size_t count, size_t contextCount,
             Vector<jfloat>* const outAdvances, jfloat* outTotalAdvance,
             Vector<jchar>* const outGlyphs, Vector<jfloat>* const outPos);
 
@@ -253,7 +252,7 @@
     void operator()(TextLayoutCacheKey& text, sp<TextLayoutValue>& desc);
 
     sp<TextLayoutValue> getValue(const SkPaint* paint, const jchar* text, jint start,
-            jint count, jint contextCount, jint dirFlags);
+            jint count, jint contextCount);
 
     /**
      * Clear the cache
@@ -305,7 +304,7 @@
      * the call. Be careful of this when doing optimization.
      **/
     sp<TextLayoutValue> getValue(const SkPaint* paint, const jchar* text, jint start,
-            jint count, jint contextCount, jint dirFlags);
+            jint count, jint contextCount);
 
     void purgeCaches();
 
diff --git a/core/jni/android_database_SQLiteConnection.cpp b/core/jni/android_database_SQLiteConnection.cpp
index c9cf2fa..f70f0d1 100644
--- a/core/jni/android_database_SQLiteConnection.cpp
+++ b/core/jni/android_database_SQLiteConnection.cpp
@@ -706,7 +706,7 @@
             }
 
             CopyRowResult cpr = copyRow(env, window, statement, numColumns, startPos, addedRows);
-            if (cpr == CPR_FULL && addedRows && startPos + addedRows < requiredPos) {
+            if (cpr == CPR_FULL && addedRows && startPos + addedRows <= requiredPos) {
                 // We filled the window before we got to the one row that we really wanted.
                 // Clear the window and start filling it again from here.
                 // TODO: Would be nicer if we could progressively replace earlier rows.
diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp
index 3c1b9c8..e8a6569 100644
--- a/core/jni/android_hardware_SensorManager.cpp
+++ b/core/jni/android_hardware_SensorManager.cpp
@@ -16,7 +16,8 @@
 
 #define LOG_TAG "SensorManager"
 
-#include "utils/Log.h"
+#include <utils/Log.h>
+#include <utils/Looper.h>
 
 #include <gui/Sensor.h>
 #include <gui/SensorManager.h>
@@ -24,7 +25,13 @@
 
 #include "jni.h"
 #include "JNIHelp.h"
+#include "android_os_MessageQueue.h"
+#include <android_runtime/AndroidRuntime.h>
 
+static struct {
+    jclass clazz;
+    jmethodID dispatchSensorEvent;
+} gSensorEventQueueClassInfo;
 
 namespace android {
 
@@ -41,20 +48,29 @@
     jfieldID    minDelay;
 } gSensorOffsets;
 
+
 /*
  * The method below are not thread-safe and not intended to be
  */
 
-
-static jint
-sensors_module_init(JNIEnv *env, jclass clazz)
+static void
+nativeClassInit (JNIEnv *_env, jclass _this)
 {
-    SensorManager::getInstance();
-    return 0;
+    jclass sensorClass = _env->FindClass("android/hardware/Sensor");
+    SensorOffsets& sensorOffsets = gSensorOffsets;
+    sensorOffsets.name        = _env->GetFieldID(sensorClass, "mName",      "Ljava/lang/String;");
+    sensorOffsets.vendor      = _env->GetFieldID(sensorClass, "mVendor",    "Ljava/lang/String;");
+    sensorOffsets.version     = _env->GetFieldID(sensorClass, "mVersion",   "I");
+    sensorOffsets.handle      = _env->GetFieldID(sensorClass, "mHandle",    "I");
+    sensorOffsets.type        = _env->GetFieldID(sensorClass, "mType",      "I");
+    sensorOffsets.range       = _env->GetFieldID(sensorClass, "mMaxRange",  "F");
+    sensorOffsets.resolution  = _env->GetFieldID(sensorClass, "mResolution","F");
+    sensorOffsets.power       = _env->GetFieldID(sensorClass, "mPower",     "F");
+    sensorOffsets.minDelay    = _env->GetFieldID(sensorClass, "mMinDelay",  "I");
 }
 
 static jint
-sensors_module_get_next_sensor(JNIEnv *env, jobject clazz, jobject sensor, jint next)
+nativeGetNextSensor(JNIEnv *env, jclass clazz, jobject sensor, jint next)
 {
     SensorManager& mgr(SensorManager::getInstance());
 
@@ -82,106 +98,161 @@
 }
 
 //----------------------------------------------------------------------------
-static jint
-sensors_create_queue(JNIEnv *env, jclass clazz)
-{
+
+class Receiver : public LooperCallback {
+    sp<SensorEventQueue> mSensorQueue;
+    sp<MessageQueue> mMessageQueue;
+    jobject mReceiverObject;
+    jfloatArray mScratch;
+public:
+    Receiver(const sp<SensorEventQueue>& sensorQueue,
+            const sp<MessageQueue>& messageQueue,
+            jobject receiverObject, jfloatArray scratch) {
+        JNIEnv* env = AndroidRuntime::getJNIEnv();
+        mSensorQueue = sensorQueue;
+        mMessageQueue = messageQueue;
+        mReceiverObject = env->NewGlobalRef(receiverObject);
+        mScratch = (jfloatArray)env->NewGlobalRef(scratch);
+    }
+    ~Receiver() {
+        JNIEnv* env = AndroidRuntime::getJNIEnv();
+        env->DeleteGlobalRef(mReceiverObject);
+        env->DeleteGlobalRef(mScratch);
+    }
+    sp<SensorEventQueue> getSensorEventQueue() const {
+        return mSensorQueue;
+    }
+
+    void destroy() {
+        mMessageQueue->getLooper()->removeFd( mSensorQueue->getFd() );
+    }
+
+private:
+    virtual void onFirstRef() {
+        LooperCallback::onFirstRef();
+        mMessageQueue->getLooper()->addFd(mSensorQueue->getFd(), 0,
+                ALOOPER_EVENT_INPUT, this, mSensorQueue.get());
+    }
+
+    virtual int handleEvent(int fd, int events, void* data) {
+        JNIEnv* env = AndroidRuntime::getJNIEnv();
+        sp<SensorEventQueue> q = reinterpret_cast<SensorEventQueue *>(data);
+        ssize_t n;
+        ASensorEvent buffer[16];
+        while ((n = q->read(buffer, 16)) > 0) {
+            for (int i=0 ; i<n ; i++) {
+
+                env->SetFloatArrayRegion(mScratch, 0, 16, buffer[i].data);
+
+                env->CallVoidMethod(mReceiverObject,
+                        gSensorEventQueueClassInfo.dispatchSensorEvent,
+                        buffer[i].sensor,
+                        mScratch,
+                        buffer[i].vector.status,
+                        buffer[i].timestamp);
+
+                if (env->ExceptionCheck()) {
+                    ALOGE("Exception dispatching input event.");
+                    return 1;
+                }
+            }
+        }
+        if (n<0 && n != -EAGAIN) {
+            // FIXME: error receiving events, what to do in this case?
+        }
+
+        return 1;
+    }
+};
+
+static jint nativeInitSensorEventQueue(JNIEnv *env, jclass clazz, jobject eventQ, jobject msgQ, jfloatArray scratch) {
     SensorManager& mgr(SensorManager::getInstance());
     sp<SensorEventQueue> queue(mgr.createEventQueue());
-    queue->incStrong(clazz);
-    return reinterpret_cast<int>(queue.get());
-}
 
-static void
-sensors_destroy_queue(JNIEnv *env, jclass clazz, jint nativeQueue)
-{
-    sp<SensorEventQueue> queue(reinterpret_cast<SensorEventQueue *>(nativeQueue));
-    if (queue != 0) {
-        queue->decStrong(clazz);
-    }
-}
-
-static jboolean
-sensors_enable_sensor(JNIEnv *env, jclass clazz,
-        jint nativeQueue, jstring name, jint sensor, jint delay)
-{
-    sp<SensorEventQueue> queue(reinterpret_cast<SensorEventQueue *>(nativeQueue));
-    if (queue == 0) return JNI_FALSE;
-    status_t res;
-    if (delay >= 0) {
-        res = queue->enableSensor(sensor, delay);
-    } else {
-        res = queue->disableSensor(sensor);
-    }
-    return res == NO_ERROR ? true : false;
-}
-
-static jint
-sensors_data_poll(JNIEnv *env, jclass clazz, jint nativeQueue,
-        jfloatArray values, jintArray status, jlongArray timestamp)
-{
-    sp<SensorEventQueue> queue(reinterpret_cast<SensorEventQueue *>(nativeQueue));
-    if (queue == 0) return -1;
-
-    status_t res;
-    ASensorEvent event;
-
-    res = queue->read(&event, 1);
-    if (res == 0) {
-        res = queue->waitForEvent();
-        if (res != NO_ERROR)
-            return -1;
-        // here we're guaranteed to have an event
-        res = queue->read(&event, 1);
-        ALOGE_IF(res==0, "sensors_data_poll: nothing to read after waitForEvent()");
-    }
-    if (res <= 0) {
-        return -1;
+    sp<MessageQueue> messageQueue = android_os_MessageQueue_getMessageQueue(env, msgQ);
+    if (messageQueue == NULL) {
+        jniThrowRuntimeException(env, "MessageQueue is not initialized.");
+        return 0;
     }
 
-    jint accuracy = event.vector.status;
-    env->SetFloatArrayRegion(values, 0, 3, event.vector.v);
-    env->SetIntArrayRegion(status, 0, 1, &accuracy);
-    env->SetLongArrayRegion(timestamp, 0, 1, &event.timestamp);
-
-    return event.sensor;
+    sp<Receiver> receiver = new Receiver(queue, messageQueue, eventQ, scratch);
+    receiver->incStrong(clazz);
+    return jint(receiver.get());
 }
 
-static void
-nativeClassInit (JNIEnv *_env, jclass _this)
-{
-    jclass sensorClass = _env->FindClass("android/hardware/Sensor");
-    SensorOffsets& sensorOffsets = gSensorOffsets;
-    sensorOffsets.name        = _env->GetFieldID(sensorClass, "mName",      "Ljava/lang/String;");
-    sensorOffsets.vendor      = _env->GetFieldID(sensorClass, "mVendor",    "Ljava/lang/String;");
-    sensorOffsets.version     = _env->GetFieldID(sensorClass, "mVersion",   "I");
-    sensorOffsets.handle      = _env->GetFieldID(sensorClass, "mHandle",    "I");
-    sensorOffsets.type        = _env->GetFieldID(sensorClass, "mType",      "I");
-    sensorOffsets.range       = _env->GetFieldID(sensorClass, "mMaxRange",  "F");
-    sensorOffsets.resolution  = _env->GetFieldID(sensorClass, "mResolution","F");
-    sensorOffsets.power       = _env->GetFieldID(sensorClass, "mPower",     "F");
-    sensorOffsets.minDelay    = _env->GetFieldID(sensorClass, "mMinDelay",  "I");
+static jint nativeEnableSensor(JNIEnv *env, jclass clazz, jint eventQ, jint handle, jint us) {
+    sp<Receiver> receiver(reinterpret_cast<Receiver *>(eventQ));
+    return receiver->getSensorEventQueue()->enableSensor(handle, us);
 }
 
-static JNINativeMethod gMethods[] = {
-    {"nativeClassInit", "()V",              (void*)nativeClassInit },
-    {"sensors_module_init","()I",           (void*)sensors_module_init },
-    {"sensors_module_get_next_sensor","(Landroid/hardware/Sensor;I)I",
-                                            (void*)sensors_module_get_next_sensor },
+static jint nativeDisableSensor(JNIEnv *env, jclass clazz, jint eventQ, jint handle) {
+    sp<Receiver> receiver(reinterpret_cast<Receiver *>(eventQ));
+    return receiver->getSensorEventQueue()->disableSensor(handle);
+}
 
-    {"sensors_create_queue",  "()I",        (void*)sensors_create_queue },
-    {"sensors_destroy_queue", "(I)V",       (void*)sensors_destroy_queue },
-    {"sensors_enable_sensor", "(ILjava/lang/String;II)Z",
-                                            (void*)sensors_enable_sensor },
+static void nativeDestroySensorEventQueue(JNIEnv *env, jclass clazz, jint eventQ, jint handle) {
+    sp<Receiver> receiver(reinterpret_cast<Receiver *>(eventQ));
+    receiver->destroy();
+    receiver->decStrong(clazz);
+}
 
-    {"sensors_data_poll",  "(I[F[I[J)I",     (void*)sensors_data_poll },
+
+//----------------------------------------------------------------------------
+
+static JNINativeMethod gSystemSensorManagerMethods[] = {
+    {"nativeClassInit",
+            "()V",
+            (void*)nativeClassInit },
+
+    {"nativeGetNextSensor",
+            "(Landroid/hardware/Sensor;I)I",
+            (void*)nativeGetNextSensor },
+};
+
+static JNINativeMethod gSensorEventQueueMethods[] = {
+    {"nativeInitSensorEventQueue",
+            "(Landroid/hardware/SystemSensorManager$SensorEventQueue;Landroid/os/MessageQueue;[F)I",
+            (void*)nativeInitSensorEventQueue },
+
+    {"nativeEnableSensor",
+            "(III)I",
+            (void*)nativeEnableSensor },
+
+    {"nativeDisableSensor",
+            "(II)I",
+            (void*)nativeDisableSensor },
+
+    {"nativeDestroySensorEventQueue",
+            "(I)V",
+            (void*)nativeDestroySensorEventQueue },
 };
 
 }; // namespace android
 
 using namespace android;
 
+#define FIND_CLASS(var, className) \
+        var = env->FindClass(className); \
+        LOG_FATAL_IF(! var, "Unable to find class " className); \
+        var = jclass(env->NewGlobalRef(var));
+
+#define GET_METHOD_ID(var, clazz, methodName, methodDescriptor) \
+        var = env->GetMethodID(clazz, methodName, methodDescriptor); \
+        LOG_FATAL_IF(! var, "Unable to find method " methodName);
+
 int register_android_hardware_SensorManager(JNIEnv *env)
 {
-    return jniRegisterNativeMethods(env, "android/hardware/SystemSensorManager",
-            gMethods, NELEM(gMethods));
+    jniRegisterNativeMethods(env, "android/hardware/SystemSensorManager",
+            gSystemSensorManagerMethods, NELEM(gSystemSensorManagerMethods));
+
+    jniRegisterNativeMethods(env, "android/hardware/SystemSensorManager$SensorEventQueue",
+            gSensorEventQueueMethods, NELEM(gSensorEventQueueMethods));
+
+    FIND_CLASS(gSensorEventQueueClassInfo.clazz, "android/hardware/SystemSensorManager$SensorEventQueue");
+
+    GET_METHOD_ID(gSensorEventQueueClassInfo.dispatchSensorEvent,
+            gSensorEventQueueClassInfo.clazz,
+            "dispatchSensorEvent", "(I[FIJ)V");
+
+    return 0;
 }
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index 631cdae..0827f7c 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -76,6 +76,15 @@
 }
 
 static jboolean
+android_media_AudioSystem_isStreamActiveRemotely(JNIEnv *env, jobject thiz, jint stream,
+        jint inPastMs)
+{
+    bool state = false;
+    AudioSystem::isStreamActiveRemotely((audio_stream_type_t) stream, &state, inPastMs);
+    return state;
+}
+
+static jboolean
 android_media_AudioSystem_isSourceActive(JNIEnv *env, jobject thiz, jint source)
 {
     bool state = false;
@@ -270,6 +279,7 @@
     {"muteMicrophone",      "(Z)I",     (void *)android_media_AudioSystem_muteMicrophone},
     {"isMicrophoneMuted",   "()Z",      (void *)android_media_AudioSystem_isMicrophoneMuted},
     {"isStreamActive",      "(II)Z",    (void *)android_media_AudioSystem_isStreamActive},
+    {"isStreamActiveRemotely","(II)Z",  (void *)android_media_AudioSystem_isStreamActiveRemotely},
     {"isSourceActive",      "(I)Z",     (void *)android_media_AudioSystem_isSourceActive},
     {"setDeviceConnectionState", "(IILjava/lang/String;)I", (void *)android_media_AudioSystem_setDeviceConnectionState},
     {"getDeviceConnectionState", "(ILjava/lang/String;)I",  (void *)android_media_AudioSystem_getDeviceConnectionState},
diff --git a/core/jni/android_net_TrafficStats.cpp b/core/jni/android_net_TrafficStats.cpp
index 325fe26..9e60904 100644
--- a/core/jni/android_net_TrafficStats.cpp
+++ b/core/jni/android_net_TrafficStats.cpp
@@ -31,286 +31,162 @@
 
 namespace android {
 
-static const uint64_t VALUE_UNKNOWN = -1;
-static const char* IFACE_STAT_ALL = "/proc/net/xt_qtaguid/iface_stat_all";
-
-enum Tx_Rx {
-    TX,
-    RX
-};
-
-enum Tcp_Udp {
-    TCP,
-    UDP,
-    TCP_AND_UDP
-};
+static const char* QTAGUID_IFACE_STATS = "/proc/net/xt_qtaguid/iface_stat_fmt";
+static const char* QTAGUID_UID_STATS = "/proc/net/xt_qtaguid/stats";
 
 // NOTE: keep these in sync with TrafficStats.java
-enum IfaceStatType {
+static const uint64_t UNKNOWN = -1;
+
+enum StatsType {
     RX_BYTES = 0,
     RX_PACKETS = 1,
     TX_BYTES = 2,
-    TX_PACKETS = 3
+    TX_PACKETS = 3,
+    TCP_RX_PACKETS = 4,
+    TCP_TX_PACKETS = 5
 };
 
-struct IfaceStat {
+struct Stats {
     uint64_t rxBytes;
     uint64_t rxPackets;
     uint64_t txBytes;
     uint64_t txPackets;
+    uint64_t tcpRxPackets;
+    uint64_t tcpTxPackets;
 };
 
-// Returns an ASCII decimal number read from the specified file, -1 on error.
-static jlong readNumber(char const* filename) {
-    char buf[80];
-    int fd = open(filename, O_RDONLY);
-    if (fd < 0) {
-        if (errno != ENOENT) ALOGE("Can't open %s: %s", filename, strerror(errno));
-        return -1;
+static uint64_t getStatsType(struct Stats* stats, StatsType type) {
+    switch (type) {
+        case RX_BYTES:
+            return stats->rxBytes;
+        case RX_PACKETS:
+            return stats->rxPackets;
+        case TX_BYTES:
+            return stats->txBytes;
+        case TX_PACKETS:
+            return stats->txPackets;
+        case TCP_RX_PACKETS:
+            return stats->tcpRxPackets;
+        case TCP_TX_PACKETS:
+            return stats->tcpTxPackets;
+        default:
+            return UNKNOWN;
     }
-
-    int len = read(fd, buf, sizeof(buf) - 1);
-    if (len < 0) {
-        ALOGE("Can't read %s: %s", filename, strerror(errno));
-        close(fd);
-        return -1;
-    }
-
-    close(fd);
-    buf[len] = '\0';
-    return atoll(buf);
 }
 
-static int parseIfaceStat(const char* iface, struct IfaceStat* stat) {
-    FILE *fp = fopen(IFACE_STAT_ALL, "r");
-    if (!fp) {
-        return errno;
+static int parseIfaceStats(const char* iface, struct Stats* stats) {
+    FILE *fp = fopen(QTAGUID_IFACE_STATS, "r");
+    if (fp == NULL) {
+        return -1;
     }
 
-    char buffer[256];
+    char buffer[384];
     char cur_iface[32];
-    int active;
-    uint64_t rxBytes, rxPackets, txBytes, txPackets, devRxBytes, devRxPackets, devTxBytes,
-            devTxPackets;
+    bool foundTcp = false;
+    uint64_t rxBytes, rxPackets, txBytes, txPackets, tcpRxPackets, tcpTxPackets;
 
-    while (fgets(buffer, 256, fp) != NULL) {
-        if (sscanf(buffer, "%31s %d %llu %llu %llu %llu %llu %llu %llu %llu", cur_iface, &active,
-                   &rxBytes, &rxPackets, &txBytes, &txPackets, &devRxBytes, &devRxPackets,
-                   &devTxBytes, &devTxPackets) != 10) {
-            continue;
-        }
-
-        if (!iface || !strcmp(iface, cur_iface)) {
-            stat->rxBytes += rxBytes;
-            stat->rxPackets += rxPackets;
-            stat->txBytes += txBytes;
-            stat->txPackets += txPackets;
-
-            if (active) {
-                stat->rxBytes += devRxBytes;
-                stat->rxPackets += devRxPackets;
-                stat->txBytes += devTxBytes;
-                stat->txPackets += devTxPackets;
+    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
+        int matched = sscanf(buffer, "%31s %llu %llu %llu %llu "
+                "%*llu %llu %*llu %*llu %*llu %*llu "
+                "%*llu %llu %*llu %*llu %*llu %*llu", cur_iface, &rxBytes,
+                &rxPackets, &txBytes, &txPackets, &tcpRxPackets, &tcpTxPackets);
+        if (matched >= 5) {
+            if (matched == 7) {
+                foundTcp = true;
+            }
+            if (!iface || !strcmp(iface, cur_iface)) {
+                stats->rxBytes += rxBytes;
+                stats->rxPackets += rxPackets;
+                stats->txBytes += txBytes;
+                stats->txPackets += txPackets;
+                if (matched == 7) {
+                    stats->tcpRxPackets += tcpRxPackets;
+                    stats->tcpTxPackets += tcpTxPackets;
+                }
             }
         }
     }
 
-    fclose(fp);
+    if (!foundTcp) {
+        stats->tcpRxPackets = UNKNOWN;
+        stats->tcpTxPackets = UNKNOWN;
+    }
+
+    if (fclose(fp) != 0) {
+        return -1;
+    }
     return 0;
 }
 
-static uint64_t getIfaceStatType(const char* iface, IfaceStatType type) {
-    struct IfaceStat stat;
-    memset(&stat, 0, sizeof(IfaceStat));
-
-    if (parseIfaceStat(iface, &stat)) {
-        return VALUE_UNKNOWN;
+static int parseUidStats(const uint32_t uid, struct Stats* stats) {
+    FILE *fp = fopen(QTAGUID_UID_STATS, "r");
+    if (fp == NULL) {
+        return -1;
     }
 
-    switch (type) {
-        case RX_BYTES:
-            return stat.rxBytes;
-        case RX_PACKETS:
-            return stat.rxPackets;
-        case TX_BYTES:
-            return stat.txBytes;
-        case TX_PACKETS:
-            return stat.txPackets;
-        default:
-            return VALUE_UNKNOWN;
+    char buffer[384];
+    char iface[32];
+    uint32_t idx, cur_uid, set;
+    uint64_t tag, rxBytes, rxPackets, txBytes, txPackets;
+
+    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
+        if (sscanf(buffer, "%d %31s 0x%llx %u %u %llu %llu %llu %llu", &idx,
+                iface, &tag, &cur_uid, &set, &rxBytes, &rxPackets, &txBytes,
+                &txPackets) == 9) {
+            if (uid == cur_uid && tag == 0L) {
+                stats->rxBytes += rxBytes;
+                stats->rxPackets += rxPackets;
+                stats->txBytes += txBytes;
+                stats->txPackets += txPackets;
+            }
+        }
     }
+
+    if (fclose(fp) != 0) {
+        return -1;
+    }
+    return 0;
 }
 
 static jlong getTotalStat(JNIEnv* env, jclass clazz, jint type) {
-    return getIfaceStatType(NULL, (IfaceStatType) type);
+    struct Stats stats;
+    memset(&stats, 0, sizeof(Stats));
+    if (parseIfaceStats(NULL, &stats) == 0) {
+        return getStatsType(&stats, (StatsType) type);
+    } else {
+        return UNKNOWN;
+    }
 }
 
 static jlong getIfaceStat(JNIEnv* env, jclass clazz, jstring iface, jint type) {
-    struct IfaceStat stat;
-    const char* ifaceChars = env->GetStringUTFChars(iface, NULL);
-    if (ifaceChars) {
-        uint64_t stat = getIfaceStatType(ifaceChars, (IfaceStatType) type);
-        env->ReleaseStringUTFChars(iface, ifaceChars);
-        return stat;
+    ScopedUtfChars iface8(env, iface);
+    if (iface8.c_str() == NULL) {
+        return UNKNOWN;
+    }
+
+    struct Stats stats;
+    memset(&stats, 0, sizeof(Stats));
+    if (parseIfaceStats(NULL, &stats) == 0) {
+        return getStatsType(&stats, (StatsType) type);
     } else {
-        return VALUE_UNKNOWN;
+        return UNKNOWN;
     }
 }
 
-
-// Per-UID stats require reading from a constructed filename.
-
-static jlong getUidBytes(JNIEnv* env, jobject clazz, jint uid,
-                         enum Tx_Rx tx_or_rx, enum Tcp_Udp tcp_or_udp) {
-    char tcp_filename[80], udp_filename[80];
-    jlong tcp_bytes = -1, udp_bytes = -1, total_bytes = -1;
-
-    switch (tx_or_rx) {
-        case TX:
-            sprintf(tcp_filename, "/proc/uid_stat/%d/tcp_snd", uid);
-            sprintf(udp_filename, "/proc/uid_stat/%d/udp_snd", uid);
-            break;
-        case RX:
-            sprintf(tcp_filename, "/proc/uid_stat/%d/tcp_rcv", uid);
-            sprintf(udp_filename, "/proc/uid_stat/%d/udp_rcv", uid);
-            break;
-        default:
-            return -1;
+static jlong getUidStat(JNIEnv* env, jclass clazz, jint uid, jint type) {
+    struct Stats stats;
+    memset(&stats, 0, sizeof(Stats));
+    if (parseUidStats(uid, &stats) == 0) {
+        return getStatsType(&stats, (StatsType) type);
+    } else {
+        return UNKNOWN;
     }
-
-    switch (tcp_or_udp) {
-        case TCP:
-            tcp_bytes = readNumber(tcp_filename);
-            total_bytes = (tcp_bytes >= 0) ? tcp_bytes : -1;
-            break;
-        case UDP:
-            udp_bytes = readNumber(udp_filename);
-            total_bytes = (udp_bytes >= 0) ? udp_bytes : -1;
-            break;
-        case TCP_AND_UDP:
-            tcp_bytes = readNumber(tcp_filename);
-            total_bytes += (tcp_bytes >= 0 ? tcp_bytes : 0);
-
-            udp_bytes = readNumber(udp_filename);
-            total_bytes += (udp_bytes >= 0 ? udp_bytes : 0);
-            break;
-        default:
-            return -1;
-    }
-
-    return total_bytes;
-}
-
-static jlong getUidPkts(JNIEnv* env, jobject clazz, jint uid,
-                         enum Tx_Rx tx_or_rx, enum Tcp_Udp tcp_or_udp) {
-    char tcp_filename[80], udp_filename[80];
-    jlong tcp_pkts = -1, udp_pkts = -1, total_pkts = -1;
-
-    switch (tx_or_rx) {
-        case TX:
-            sprintf(tcp_filename, "/proc/uid_stat/%d/tcp_snd_pkt", uid);
-            sprintf(udp_filename, "/proc/uid_stat/%d/udp_snd_pkt", uid);
-            break;
-        case RX:
-            sprintf(tcp_filename, "/proc/uid_stat/%d/tcp_rcv_pkt", uid);
-            sprintf(udp_filename, "/proc/uid_stat/%d/udp_rcv_pkt", uid);
-            break;
-        default:
-            return -1;
-    }
-
-    switch (tcp_or_udp) {
-        case TCP:
-            tcp_pkts = readNumber(tcp_filename);
-            total_pkts = (tcp_pkts >= 0) ? tcp_pkts : -1;
-            break;
-        case UDP:
-            udp_pkts = readNumber(udp_filename);
-            total_pkts = (udp_pkts >= 0) ? udp_pkts : -1;
-            break;
-        case TCP_AND_UDP:
-            tcp_pkts = readNumber(tcp_filename);
-            total_pkts += (tcp_pkts >= 0 ? tcp_pkts : 0);
-
-            udp_pkts = readNumber(udp_filename);
-            total_pkts += (udp_pkts >= 0 ? udp_pkts : 0);
-            break;
-        default:
-            return -1;
-    }
-
-    return total_pkts;
-}
-
-static jlong getUidRxBytes(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidBytes(env, clazz, uid, RX, TCP_AND_UDP);
-}
-
-static jlong getUidTxBytes(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidBytes(env, clazz, uid, TX, TCP_AND_UDP);
-}
-
-/* TCP Segments + UDP Packets */
-static jlong getUidTxPackets(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidPkts(env, clazz, uid, TX, TCP_AND_UDP);
-}
-
-/* TCP Segments + UDP Packets */
-static jlong getUidRxPackets(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidPkts(env, clazz, uid, RX, TCP_AND_UDP);
-}
-
-static jlong getUidTcpTxBytes(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidBytes(env, clazz, uid, TX, TCP);
-}
-
-static jlong getUidTcpRxBytes(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidBytes(env, clazz, uid, RX, TCP);
-}
-
-static jlong getUidUdpTxBytes(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidBytes(env, clazz, uid, TX, UDP);
-}
-
-static jlong getUidUdpRxBytes(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidBytes(env, clazz, uid, RX, UDP);
-}
-
-static jlong getUidTcpTxSegments(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidPkts(env, clazz, uid, TX, TCP);
-}
-
-static jlong getUidTcpRxSegments(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidPkts(env, clazz, uid, RX, TCP);
-}
-
-static jlong getUidUdpTxPackets(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidPkts(env, clazz, uid, TX, UDP);
-}
-
-static jlong getUidUdpRxPackets(JNIEnv* env, jobject clazz, jint uid) {
-    return getUidPkts(env, clazz, uid, RX, UDP);
 }
 
 static JNINativeMethod gMethods[] = {
     {"nativeGetTotalStat", "(I)J", (void*) getTotalStat},
     {"nativeGetIfaceStat", "(Ljava/lang/String;I)J", (void*) getIfaceStat},
-
-    /* Per-UID Stats */
-    {"getUidTxBytes", "(I)J", (void*) getUidTxBytes},
-    {"getUidRxBytes", "(I)J", (void*) getUidRxBytes},
-    {"getUidTxPackets", "(I)J", (void*) getUidTxPackets},
-    {"getUidRxPackets", "(I)J", (void*) getUidRxPackets},
-
-    {"getUidTcpTxBytes", "(I)J", (void*) getUidTcpTxBytes},
-    {"getUidTcpRxBytes", "(I)J", (void*) getUidTcpRxBytes},
-    {"getUidUdpTxBytes", "(I)J", (void*) getUidUdpTxBytes},
-    {"getUidUdpRxBytes", "(I)J", (void*) getUidUdpRxBytes},
-
-    {"getUidTcpTxSegments", "(I)J", (void*) getUidTcpTxSegments},
-    {"getUidTcpRxSegments", "(I)J", (void*) getUidTcpRxSegments},
-    {"getUidUdpTxPackets", "(I)J", (void*) getUidUdpTxPackets},
-    {"getUidUdpRxPackets", "(I)J", (void*) getUidUdpRxPackets},
+    {"nativeGetUidStat", "(II)J", (void*) getUidStat},
 };
 
 int register_android_net_TrafficStats(JNIEnv* env) {
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
index d422951..785bf13 100644
--- a/core/jni/android_util_AssetManager.cpp
+++ b/core/jni/android_util_AssetManager.cpp
@@ -685,6 +685,10 @@
                                                            jobject outValue,
                                                            jboolean resolve)
 {
+    if (outValue == NULL) {
+         jniThrowNullPointerException(env, "outValue");
+         return NULL;
+    }
     AssetManager* am = assetManagerForJavaObject(env, clazz);
     if (am == NULL) {
         return 0;
diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp
index 33ed0b9..80573a7 100644
--- a/core/jni/android_view_GLES20Canvas.cpp
+++ b/core/jni/android_view_GLES20Canvas.cpp
@@ -568,9 +568,9 @@
 // ----------------------------------------------------------------------------
 
 static void renderText(OpenGLRenderer* renderer, const jchar* text, int count,
-        jfloat x, jfloat y, int flags, SkPaint* paint) {
+        jfloat x, jfloat y, SkPaint* paint) {
     sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(paint,
-            text, 0, count, count, flags);
+            text, 0, count, count);
     if (value == NULL) {
         return;
     }
@@ -584,9 +584,9 @@
 }
 
 static void renderTextOnPath(OpenGLRenderer* renderer, const jchar* text, int count,
-        SkPath* path, jfloat hOffset, jfloat vOffset, int flags, SkPaint* paint) {
+        SkPath* path, jfloat hOffset, jfloat vOffset, SkPaint* paint) {
     sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(paint,
-            text, 0, count, count, flags);
+            text, 0, count, count);
     if (value == NULL) {
         return;
     }
@@ -599,9 +599,9 @@
 
 static void renderTextRun(OpenGLRenderer* renderer, const jchar* text,
         jint start, jint count, jint contextCount, jfloat x, jfloat y,
-        int flags, SkPaint* paint) {
+        SkPaint* paint) {
     sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(paint,
-            text, start, count, contextCount, flags);
+            text, start, count, contextCount);
     if (value == NULL) {
         return;
     }
@@ -616,64 +616,62 @@
 
 static void android_view_GLES20Canvas_drawTextArray(JNIEnv* env, jobject clazz,
         OpenGLRenderer* renderer, jcharArray text, jint index, jint count,
-        jfloat x, jfloat y, jint flags, SkPaint* paint) {
+        jfloat x, jfloat y, SkPaint* paint) {
     jchar* textArray = env->GetCharArrayElements(text, NULL);
-    renderText(renderer, textArray + index, count, x, y, flags, paint);
+    renderText(renderer, textArray + index, count, x, y, paint);
     env->ReleaseCharArrayElements(text, textArray, JNI_ABORT);
 }
 
 static void android_view_GLES20Canvas_drawText(JNIEnv* env, jobject clazz,
         OpenGLRenderer* renderer, jstring text, jint start, jint end,
-        jfloat x, jfloat y, jint flags, SkPaint* paint) {
+        jfloat x, jfloat y, SkPaint* paint) {
     const jchar* textArray = env->GetStringChars(text, NULL);
-    renderText(renderer, textArray + start, end - start, x, y, flags, paint);
+    renderText(renderer, textArray + start, end - start, x, y, paint);
     env->ReleaseStringChars(text, textArray);
 }
 
 static void android_view_GLES20Canvas_drawTextArrayOnPath(JNIEnv* env, jobject clazz,
         OpenGLRenderer* renderer, jcharArray text, jint index, jint count,
-        SkPath* path, jfloat hOffset, jfloat vOffset, jint flags, SkPaint* paint) {
+        SkPath* path, jfloat hOffset, jfloat vOffset, SkPaint* paint) {
     jchar* textArray = env->GetCharArrayElements(text, NULL);
     renderTextOnPath(renderer, textArray + index, count, path,
-            hOffset, vOffset, flags, paint);
+            hOffset, vOffset, paint);
     env->ReleaseCharArrayElements(text, textArray, JNI_ABORT);
 }
 
 static void android_view_GLES20Canvas_drawTextOnPath(JNIEnv* env, jobject clazz,
         OpenGLRenderer* renderer, jstring text, jint start, jint end,
-        SkPath* path, jfloat hOffset, jfloat vOffset, jint flags, SkPaint* paint) {
+        SkPath* path, jfloat hOffset, jfloat vOffset, SkPaint* paint) {
     const jchar* textArray = env->GetStringChars(text, NULL);
     renderTextOnPath(renderer, textArray + start, end - start, path,
-            hOffset, vOffset, flags, paint);
+            hOffset, vOffset, paint);
     env->ReleaseStringChars(text, textArray);
 }
 
 static void android_view_GLES20Canvas_drawTextRunArray(JNIEnv* env, jobject clazz,
         OpenGLRenderer* renderer, jcharArray text, jint index, jint count,
-        jint contextIndex, jint contextCount, jfloat x, jfloat y, jint dirFlags,
-        SkPaint* paint) {
+        jint contextIndex, jint contextCount, jfloat x, jfloat y, SkPaint* paint) {
     jchar* textArray = env->GetCharArrayElements(text, NULL);
     renderTextRun(renderer, textArray + contextIndex, index - contextIndex,
-            count, contextCount, x, y, dirFlags, paint);
+            count, contextCount, x, y, paint);
     env->ReleaseCharArrayElements(text, textArray, JNI_ABORT);
  }
 
 static void android_view_GLES20Canvas_drawTextRun(JNIEnv* env, jobject clazz,
         OpenGLRenderer* renderer, jstring text, jint start, jint end,
-        jint contextStart, int contextEnd, jfloat x, jfloat y, jint dirFlags,
-        SkPaint* paint) {
+        jint contextStart, int contextEnd, jfloat x, jfloat y, SkPaint* paint) {
     const jchar* textArray = env->GetStringChars(text, NULL);
     jint count = end - start;
     jint contextCount = contextEnd - contextStart;
     renderTextRun(renderer, textArray + contextStart, start - contextStart,
-            count, contextCount, x, y, dirFlags, paint);
+            count, contextCount, x, y, paint);
     env->ReleaseStringChars(text, textArray);
 }
 
 static void renderPosText(OpenGLRenderer* renderer, const jchar* text, int count,
-        const jfloat* positions, jint dirFlags, SkPaint* paint) {
+        const jfloat* positions, SkPaint* paint) {
     sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(paint,
-            text, 0, count, count, dirFlags);
+            text, 0, count, count);
     if (value == NULL) {
         return;
     }
@@ -691,7 +689,7 @@
     jchar* textArray = env->GetCharArrayElements(text, NULL);
     jfloat* positions = env->GetFloatArrayElements(pos, NULL);
 
-    renderPosText(renderer, textArray + index, count, positions, kBidi_LTR, paint);
+    renderPosText(renderer, textArray + index, count, positions, paint);
 
     env->ReleaseFloatArrayElements(pos, positions, JNI_ABORT);
     env->ReleaseCharArrayElements(text, textArray, JNI_ABORT);
@@ -703,7 +701,7 @@
     const jchar* textArray = env->GetStringChars(text, NULL);
     jfloat* positions = env->GetFloatArrayElements(pos, NULL);
 
-    renderPosText(renderer, textArray + start, end - start, positions, kBidi_LTR, paint);
+    renderPosText(renderer, textArray + start, end - start, positions, paint);
 
     env->ReleaseFloatArrayElements(pos, positions, JNI_ABORT);
     env->ReleaseStringChars(text, textArray);
@@ -1026,16 +1024,16 @@
     { "nSetupPaintFilter",  "(III)V",          (void*) android_view_GLES20Canvas_setupPaintFilter },
     { "nResetPaintFilter",  "(I)V",            (void*) android_view_GLES20Canvas_resetPaintFilter },
 
-    { "nDrawText",          "(I[CIIFFII)V",    (void*) android_view_GLES20Canvas_drawTextArray },
-    { "nDrawText",          "(ILjava/lang/String;IIFFII)V",
+    { "nDrawText",          "(I[CIIFFI)V",    (void*) android_view_GLES20Canvas_drawTextArray },
+    { "nDrawText",          "(ILjava/lang/String;IIFFI)V",
             (void*) android_view_GLES20Canvas_drawText },
 
-    { "nDrawTextOnPath",    "(I[CIIIFFII)V",   (void*) android_view_GLES20Canvas_drawTextArrayOnPath },
-    { "nDrawTextOnPath",    "(ILjava/lang/String;IIIFFII)V",
+    { "nDrawTextOnPath",    "(I[CIIIFFI)V",   (void*) android_view_GLES20Canvas_drawTextArrayOnPath },
+    { "nDrawTextOnPath",    "(ILjava/lang/String;IIIFFI)V",
             (void*) android_view_GLES20Canvas_drawTextOnPath },
 
-    { "nDrawTextRun",       "(I[CIIIIFFII)V",  (void*) android_view_GLES20Canvas_drawTextRunArray },
-    { "nDrawTextRun",       "(ILjava/lang/String;IIIIFFII)V",
+    { "nDrawTextRun",       "(I[CIIIIFFI)V",  (void*) android_view_GLES20Canvas_drawTextRunArray },
+    { "nDrawTextRun",       "(ILjava/lang/String;IIIIFFI)V",
             (void*) android_view_GLES20Canvas_drawTextRun },
 
     { "nDrawPosText",       "(I[CII[FI)V",     (void*) android_view_GLES20Canvas_drawPosTextArray },
diff --git a/core/res/Android.mk b/core/res/Android.mk
index 22f4fdc..cfc791d 100644
--- a/core/res/Android.mk
+++ b/core/res/Android.mk
@@ -42,7 +42,3 @@
 
 # Make sure the system .rs files get compiled before building the package-export.apk.
 # $(resource_export_package): $(framework_RenderScript_STAMP_FILE)
-
-# define a global intermediate target that other module may depend on.
-.PHONY: framework-res-package-target
-framework-res-package-target: $(LOCAL_BUILT_MODULE)
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index e5aca48..5d0614c 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -196,7 +196,7 @@
         android:permissionGroupFlags="personalInfo"
         android:priority="360"/>
 
-  <!-- Allows an application to send SMS messages. -->
+    <!-- Allows an application to send SMS messages. -->
     <permission android:name="android.permission.SEND_SMS"
         android:permissionGroup="android.permission-group.MESSAGES"
         android:protectionLevel="dangerous"
@@ -204,14 +204,13 @@
         android:label="@string/permlab_sendSms"
         android:description="@string/permdesc_sendSms" />
 
-    <!-- Allows an application to send SMS messages via the Messaging app with no user
-         input or confirmation.
-         @hide -->
-    <permission android:name="android.permission.SEND_SMS_NO_CONFIRMATION"
+    <!-- Allows an application (Phone) to send a request to other applications
+         to handle the respond-via-message action during incoming calls. -->
+    <permission android:name="android.permission.SEND_RESPOND_VIA_MESSAGE"
         android:permissionGroup="android.permission-group.MESSAGES"
         android:protectionLevel="signature|system"
-        android:label="@string/permlab_sendSmsNoConfirmation"
-        android:description="@string/permdesc_sendSmsNoConfirmation" />
+        android:label="@string/permlab_sendRespondViaMessageRequest"
+        android:description="@string/permdesc_sendRespondViaMessageRequest" />
 
     <!-- Allows an application to monitor incoming SMS messages, to record
          or perform processing on them. -->
@@ -2176,6 +2175,14 @@
         android:description="@string/permdesc_updateLock"
         android:protectionLevel="signatureOrSystem" />
 
+    <!-- Allows an application to read the current set of notifications, including
+         any metadata and intents attached.
+         @hide -->
+    <permission android:name="android.permission.ACCESS_NOTIFICATIONS"
+        android:label="@string/permlab_accessNotifications"
+        android:description="@string/permdesc_accessNotifications"
+        android:protectionLevel="signature|system" />
+
     <!-- The system process is explicitly the only one allowed to launch the
          confirmation UI for full backup/restore -->
     <uses-permission android:name="android.permission.CONFIRM_FULL_BACKUP"/>
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 86554f5..ac422ea 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Stoor"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Gebruik die USB-berging."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Lees die SD-kaart."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Toeganklikheidseienskappe"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Kenmerke wat bystandtegnologie kan versoek."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"deaktiveer of verander statusbalk"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Laat die program toe om die statusbalk te deaktiveer en stelselikone by te voeg of te verwyder."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"statusbalk"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Laat die program toe om seluitsending-boodskappe te lees wat deur jou toestel ontvang word. Seluitsending-waarskuwings word in sommige plekke afgelewer om jou van noodsituasies te waarsku. Kwaadwillige programme mag inmeng met die prestasie of die werking van jou toestel wanneer \'n noodgeval se seluitsending ontvang word."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"stuur SMS-boodskappe"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Laat die program toe om SMS-boodskappe te stuur. Dit kan tot onverwagse heffings lei. Kwaadwillige programme kan jou geld kos deur boodskappe sonder jou bevestiging te stuur."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"stuur sms-boodskappe met geen bestiging"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Laat die program toe om SMS-boodskappe te stuur. Dit kan tot onverwagse heffings lei. Kwaadwillige programme kan jou geld kos deur boodskappe sonder jou bevestiging te stuur."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"stuur antwoord-via-boodskap-geleenthede"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Laat die program toe om versoeke te stuur na ander boodskapprogramme om antwoord-via-boodskap-geleenthede vir inkomende oproepe te hanteer."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"lees jou teksboodskappe (SMS of MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Laat die program toe om SMS-boodskappe wat op jou tablet of SIM-kaart gestoor is, te lees. Dit laat die program toe om alle SMS-boodskappe te lees, ongeag van die inhoud of vertroulikheid daarvan."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Laat die program toe om SMS-boodskappe wat op jou foon of SIM-kaart gestoor is, te lees. Dit laat die program toe om alle SMS-boodskappe te lees, ongeag van die inhoud of vertroulikheid daarvan."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Dit laat die houer toe om aan die topvlak-koppelvlak van \'n invoermetode te bind. Dit moet nooit vir normale programme nodig wees nie."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"verbind aan \'n toeganklikheidsdiens"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Dit laat die houer toe om aan die top-koppelvlak van \'n toeganklikheidsdiens te verbind. Behoort nooit vir gewone programme nodig te wees nie."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"versoek verken-met-aanraking"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Laat die houer toe om \'n interaksiemodus te versoek waarin geraakte items hardop uitgespreek word en die UI via handgebare verken kan word."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"versoek verbeterde webtoeganklikheid"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Laat die houer toe om te versoek dat webtoeganklikheidsverbeterings geaktiveer word. Byvoorbeeld, om skripte te installeer om programinhoud meer toeganklik te maak."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"bind aan \'n teksdiens"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Dit laat die houer toe om aan die topvlak-koppelvlak van \'n teksdiens (bv SpellCheckerService) te bind. Dit moet nooit vir normale programme nodig wees nie."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"bind aan \'n VPN-diens"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Laat die program toe om netwerkbeleide te bestuur en program-spesifieke reëls te definieer."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"verander verrekening van netwerkgebruik"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Laat die program toe om te verander hoe netwerkgebruik teenoor programme gemeet word. Nie vir gebruik deur normale programme nie."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"kry toegang tot kennisgewings"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Laat die program toe om kennisgewings te herwin, bestudeer en te verwyder, met inbegrip van daardie kennisgewings wat deur ander programme geplaas is."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Stel wagwoordreëls"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Beheer lengte en watter karakters wat in die skermontsluit-wagwoorde gebruik word."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Monitor pogings om skerm te ontsluit"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 0e23085..54b5f6f 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"ማከማቻ"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"የUSB ማከማቻ ድረስ።"</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD ካርድ ድረስ"</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"የተደራሽነት ባህሪያት"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"አጋዥ ቴክኖሎጂ ሊጠይቃቸው የሚችላቸው ባህሪያት።"</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"የሁኔቴ አሞሌ አቦዝን ወይም ቀይር"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"የስርዓት አዶዎችን ወደ ሁኔታ አሞሌ ላለማስቻል ወይም ለማከል እና ለማስወገድ ለመተግበሪያው ይፈቅዳሉ፡፡"</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"ኹናቴ አሞሌ"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"መሣሪያህ የህዋስ ስርጭት መልዕክቶች ሲቀበል መተግበሪያው እንዲያነበው ይፈቅድለታል። የህዋስ ስርጭት ማንቂያዎች አስቸኳይ ሁኔታዎች ሲያጋጥሙ አንዳንድ አካባቢዎች ላይ የሚላኩ ናቸው። የህዋስ ስርጭት ሲደርስ ተንኮል አዘል መተግበሪያዎች በመሣሪያህ አፈጻጸም ወይም አሰራር ላይ ጣልቃ ሊገቡ ይችላሉ።"</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"የSMS መልዕክቶች ላክ"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"መተግበሪያው የኤስ.ኤም.ኤስ. መልዕክቶችን እንዲልክ ይፈቅድለታል። ይህ ያልተጠበቁ ወጪዎችን ሊያስከትል ይችላል። ተንኮል አዘል መተግበሪያዎች ያላንተ ማረጋገጫ መልዕክቶችን በመላክ ገንዘብ ሊያስወጡህ ይችላሉ።"</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"ያለ ምንም ማረጋገጫ የSMS መልዕክቶች ላክ"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"መተግበሪያው የኤስ.ኤም.ኤስ. መልዕክቶችን እንዲልክ ይፈቅድለታል። ይህ ያልተጠበቁ ወጪዎችን ሊያስከትል ይችላል። ተንኮል አዘል መተግበሪያዎች ያላንተ ማረጋገጫ መልዕክቶችን በመላክ ገንዘብ ሊያስወጡህ ይችላሉ።"</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"የበመልዕክት-በኩል-ምላሽ-ስጥ ክስተቶችን ይላኩ"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"መተግበሪያው ሌሎች የመልዕክት መላኪያ መተግበሪያዎች ለመጪ ጥሪዎች በመልዕክት-በኩል-ምላሽ-መስጠት ስራን እንዲይዙ ጥያቄዎች እንዲልክላቸው ያስችለዋል።"</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"የጽሑፍ መልዕክቶችህን አንብብ (ኤስ.ኤም.ኤስ. ወይም ኤም.ኤም.ኤስ.)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"መገለጫው በጡባዊ ቱኮህ ወይም በSIM ካርድህ የተከማቹ የኤስ.ኤም.ኤስ. መልእክቶችን እንዲያነብ ይፈቅድለታል። ይህ መተግበሪያው ይዘት ወይም ሚስጥራዊነትን ከግምት ሳያስገባ ሁሉንም የኤስ.ኤም.ኤስ. መልእክቶች እንዲያነብ ይፈቅድለታል።"</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"መገለጫው በስልክህ ወይም በSIM ካርድህ የተከማቹ የኤስ.ኤም.ኤስ. መልእክቶችን እንዲያነብ ይፈቅድለታል። ይህ መተግበሪያው ይዘት ወይም ሚስጥራዊነትን ከግምት ሳያስገባ ሁሉንም የኤስ.ኤም.ኤስ. መልእክቶች እንዲያነብ ይፈቅድለታል።"</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"ያዡ ግቤት ስልቱን ወደ ከፍተኛ-ደረጃ በይነገጽ ለመጠረዝ ይፈቅዳሉ። ለመደበኛ ትግበራዎች በፍፁም አያስፈልግም።"</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"ከአንድ የተደራሽነት አገልግሎት ጋር እሰር"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"ያዢው ወደ የአንድ ተደራሽነት አገልግሎት ከፍተኛ-ደረጃ በይነገጽ እንዲያስር ይፈቅድለታል። ለመደበኛ መተግበሪያዎች መቼም ቢሆን ሊያስፈልግ አይገባም።"</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"በንክኪ ማሰስን ይጠይቁ"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"ያዢው የተነኩ ንጥሎች ጮክ ተብለው የሚነገሩበት እና በይነገጹ በምልክቶች በኩል ሊታሰስ በሚችሉበት የበይነግንኙነት ሁኒታ እንዲጠይቅ ያስችለዋል።"</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"የተሻሻለ የድር ተደራሽነት ይጠይቁ"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"ያዢው የድር ተደራሽነት ማሻሻያዎች እንዲነቁለት እንዲጠይቅ ያስችለዋል። ለምሳሌ፣ የመተግበሪያ ይዘት ይበልጥ ተደራሽ እንዲሆን የGoogle ስክሪፕቶችን እንዲጫኑ መጠየቅ።"</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"ለፅሁፍ አገልግሎት አሰረ"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"ያዡ ግቤት ለከፍተኛ-ደረጃ የፅሁፍ አገልግሎት ገፅታ ለመጠረዝ ይፈቅዳል። ለመደበኛ ትግበራዎች በፍፁም አያስፈልግም።"</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"ለVPN አገልግሎት ተገዛ"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"የአውታረመረብ ቋሚ መመሪያዎችን እና ትግበራ ተኮር ደንቦችን ለማደራጀት ለመተግበሪያው ይፈቅዳሉ፡፡"</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"የአውታረ መረብ አጠቃቀም"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"ከመተግበሪያዎች በተለየ መልኩ እንዴት የአውታረ መረብ አጠቃቀም እንደተመዘገበ ለመቀየር ለመተግበሪያው ይፈቅዳሉ።ለመደበኛ መተግበሪያዎች አገልግሎት አይውልም።"</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"ማሳወቂያዎችን ይድረሱ"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"መተግበሪያው ማሳወቂያዎችን እንዲያስመጣ፣ እንዲመረምር እና እንዲያጸዳ ያስችለዋል፣ በሌሎች መተግበሪያዎች የተለጠፉትንም ጨምሮ።"</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"የይለፍ ቃል ድንቦች አዘጋጅ"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"በማያ-መክፈት የተፈቀዱ የይለፍ ቃል ርዝመት እና ቁምፊዎች ተቆጣጠር።"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"የማሳያ-ክፈት ሙከራዎችን አሳይ"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 32e6d5d..a9ac95d 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"التخزين"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"الدخول إلى وحدة تخزين USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"الدخول إلى بطاقة SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"ميزات إمكانية الوصول"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"الميزات التي يمكن للتقنية المساعدة طلبها"</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"تعطيل شريط الحالة أو تعديله"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"للسماح للتطبيق بتعطيل شريط الحالة أو إضافة رموز نظام وإزالتها."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"شريط الحالة"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"السماح للتطبيق بقراءة رسائل بث الخلية التي يتلقاها هذا الجهاز. يتم تسليم تنبيهات بث الخلية في بعض المواقع لتحذيرك من حالات طارئة. يمكن أن تتداخل التطبيقات الضارة مع أداء أو تشغيل الجهاز عندما يتم تلقي بث خلية طارئ."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"إرسال رسائل قصيرة SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"للسماح للتطبيق بإرسال رسائل قصيرة SMS. وقد يؤدي هذا إلى تحمل رسوم غير متوقعة. وقد تكلفك التطبيقات الضارة أموالاً من خلال إرسال رسائل بدون موافقة منك."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"إرسال رسائل قصيرة SMS بدون تأكيد"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"للسماح للتطبيق بإرسال رسائل قصيرة SMS. وقد يؤدي هذا إلى تحمل رسوم غير متوقعة. وقد تكلفك التطبيقات الضارة أموالاً من خلال إرسال رسائل بدون موافقة منك."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"إرسال أحداث يتم الرد عليها عبر رسالة"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"السماح للتطبيق بإرسال طلبات إلى تطبيقات المراسلة الأخرى للتعامل مع الأحداث التي يتم الرد عليها عبر الرسائل في المكالمات الواردة."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"قراءة الرسائل النصية (الرسائل القصيرة SMS أو رسائل الوسائط المتعددة)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"للسماح للتطبيق بقراءة الرسائل القصيرة SMS المخزنة على الجهاز اللوحي أو على بطاقة SIM. ويتيح هذا للتطبيق قراءة جميع الرسائل القصيرة SMS، بغض النظر عن المحتوى أو مدى السرية."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"للسماح للتطبيق بقراءة الرسائل القصيرة SMS المخزنة على هاتفك أو على بطاقة SIM. ويتيح هذا للتطبيق قراءة جميع الرسائل القصيرة SMS، بغض النظر عن المحتوى أو مدى السرية."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"للسماح للمالك بالالتزام بواجهة المستوى العلوي لأسلوب الإدخال. لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"الالتزام بخدمة إمكانية الدخول"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"للسماح للمالك بالالتزام بواجهة المستوى العلوي لخدمة إمكانية الدخول. لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"طلب الاستكشاف باللمس"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"للسماح للمالك بطلب وضع التفاعل الذي يتم فيه النطق بالعناصر الملموسة بصوت عالٍ واستكشاف واجهة المستخدم بالإيماءات."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"طلب إمكانية وصول محسنة"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"للسماح للمالك بطلب تمكين تحسينات إمكانية الوصول إلى الويب، مثل تثبيت البرامج النصية لمزيد من تسهيل الدخول إلى محتوى التطبيق."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"الالتزام بخدمة إدخال النصوص"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"للسماح للمالك بالالتزام بواجهة المستوى العلوي لخدمة إدخال النصوص (على سبيل المثال، SpellCheckerService). لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"الالتزام بخدمة VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"للسماح لتطبيق بإدارة سياسات الشبكة وتحديد قواعد متعلقة بالتطبيق."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"تعديل حساب استخدام الشبكة"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"للسماح للتطبيق بتعديل كيفية حساب استخدام الشبكة في التطبيقات. ليس للاستخدام بواسطة التطبيقات العادية."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"إشعارات الدخول"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"يتيح للتطبيق استرجاع الإشعارات وفحصها ومسحها، بما في ذلك تلك التي نشرتها تطبيقات أخرى."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"تعيين قواعد كلمة المرور"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"يمكنك التحكم في الطول والأحرف المسموح بها في كلمات مرور إلغاء تأمين الشاشة."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"مراقبة محاولات إلغاء قفل الشاشة"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 0d95884..c1cb9d59 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Сховішча"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Атрымаць доступ да USB-назапашвальнiка."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Доступ да SD-карты."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Спецыяльныя магчымасці"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Функцыі, якія могуць запытаць дадатковыя тэхналогii."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"адключаць ці змяняць радок стану"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Дазваляе прыкладанням адключаць радок стану або дадаваць і выдаляць сістэмныя значкі."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"радок стану"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Дазваляе прыкладанню чытаць паведамленні базавай станцыі, атрыманыя прыладай. Папярэджанні базавай станцыі дасылаюцца ў некаторыя месцы, каб папярэдзіць вас аб надзвычайных сітуацыях. Шкоднасныя прыкладанні могуць уплываць на прадукцыйнасць ці працу прылады пры атрыманні паведамлення базавай станцыі аб надзвычайнай сітуацыі."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"адпраўляць SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Дазваляе прыкладанне для адпраўкі SMS паведамленняў. Гэта можа прывесці да нечаканых абвінавачванняў. Шкоднасныя праграмы могуць каштаваць вам грошай на адпраўку паведамленняў без вашага пацвярджэння."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"адпраўляць SMS-паведамленні без пацверджання"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Дазваляе прыкладанню адпраўляць SMS-паведамленнi. Гэта можа прывесці да нечаканых абвінавачванняў. Шкоднасныя прыкладаннi могуць каштаваць вам грошай на адпраўку паведамленняў без вашага пацвярджэння."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"адправiць мерапрыемства \"адказ праз паведамленне\""</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Прыкладанне зможа адпраўляць запыты ў іншыя прыкладанні для апрацоўкі паведамленняў пра мерапрыемствы туы \"рэагаваць-праз-паведамленне\" для ўваходных выклікаў."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"чытанне сваiх тэкставых паведамленняў (SMS ці MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Дазваляе прыкладанню чытаць SMS-паведамленнi, якія захоўваюцца на планшэце ці SIM-карце. Гэта дазваляе прыкладанням чытаць ўсе SMS-паведамленні, незалежна ад змесцiва або прыватнасці."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Дазваляе прыкладанню чытаць SMS-паведамленні, якія захоўваюцца ў тэлефоне або на SIM-карце. Гэта дазваляе прыкладанням чытаць ўсе SMS-паведамленні, незалежна ад змесцiва або прыватнасці."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Дазваляе ўладальніку прывязвацца да інтэрфейсу верхняга ўзроўню метада ўводу. Не патрабуецца для звычайных прыкладанняў."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"прывязацца да службы доступу"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Дазваляе ўладальніку прывязвацца да інтэрфейсу верхняга ўзроўню службы доступу. Не патрабуецца для звычайных прыкладанняў."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"запытаць даследаванне навобмацак"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Дазваляе ўладальнiку запытваць працу ў рэжыме ўзаемадзеяння, у якiм элементы, да якiх дакранулiся, прагаворваюцца ўслых, а карыстальнiцкi iнтэрфейс можна даследаваць рукамi."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"прасіць пашырэння даступнасці вэб-даступнасцi"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Дазваляе ўладальнiку запытваць уключэнне iнтэрнэт-даступнасцi паляпшэнняў. Напрыклад, усталёўка скрыптаў з Google зробiць кантэнт больш прыдатным для доступу."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"звязаць з тэкставай службай"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Дазваляе ўладальніку прывязвацца да інтэрфейсу верхняга ўзроўню тэкставай паслугі (напрыклад, SpellCheckerService). Ніколі не патрабуецца для звычайных прыкладанняў."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"звязвацца з VPN сэрвісам"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Дазваляе прыкладаннм кіраваць сеткавымі палітыкамі і вызначаць правілы пэўных прыкладанняў."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"змяніць улік выкарыстання сеткі"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Дазваляе прыкладанням змяняць метад уліку выкарыстання сеткі прыкладаннямі. Не для выкарыстання звычайнымі прыкладаннямі."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"доступ да паведамленняў"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Дазваляе прыкладанню атрымлiваць, правяраць i выдаляць апавяшчэннi, у тым лiку апублiкаваныя iншымi прыкладаннямi."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Устанавіць правілы паролю"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Кіраванне даўжынёй і колькасцю знакаў у паролі разблакоўкі экрана."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Сачыць за спробамі разблакоўкі экрана"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 0e8fa7f..158134e 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Съхранение"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Достъп до USB хранилището."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Достъп до SD картата."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Функции за достъпност"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Функции, които подпомагащата технология може да заяви."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"деактивиране или промяна на лентата на състоянието"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Разрешава на приложението да деактивира лентата на състоянието или да добавя и премахва системни икони."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"лента на състоянието"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Разрешава на приложението да чете съобщения с клетъчно излъчване, получени от устройството ви. Сигналите с клетъчно излъчване се получават на някои местоположения, за да ви предупредят за спешни ситуации. Злонамерените приложения могат да възпрепятстват изпълнението или работата на устройството ви при получаване на такова спешно излъчване."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"изпращане на SMS съобщения"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Разрешава на приложението да изпраща SMS съобщения. Това може да доведе до неочаквано таксуване. Злонамерените приложения могат да ви въвлекат в разходи, като изпращат съобщения без потвърждение от ваша страна."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"изпращане на SMS съобщения без потвърждаване"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Разрешава на приложението да изпраща SMS съобщения. Това може да доведе до неочаквано таксуване. Злонамерените приложения могат да ви въвлекат в разходи, като изпращат съобщения без потвърждение от ваша страна."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"изпращане на покани за отговор чрез съобщение"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Разрешава на приложението да изпраща заявки до други приложения за съобщения, за да обработва покани за отговор чрез SMS за входящите обаждания."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"четене на текстовите ви съобщения (SMS или MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Разрешава на приложението да чете SMS съобщенията, съхранени на таблета или SIM картата ви. Това разрешение му позволява да чете всички съобщения независимо от съдържанието или поверителността."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Разрешава на приложението да чете SMS съобщенията, съхранени на телефона или SIM картата ви. Това разрешение му позволява да чете всички съобщения независимо от съдържанието или поверителността."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Разрешава на притежателя да се обвърже с интерфейса от най-високото ниво на метод на въвеждане. Нормалните приложения би трябвало никога да не се нуждаят от това."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"обвързване с услуга за достъпност"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Разрешава на притежателя да се обвърже с интерфейса от най-високото ниво на услуга за достъпност. Нормалните приложения би трябвало никога да не се нуждаят от това."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"заявяване на изследване чрез докосване"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Разрешава на собственика да заяви режим на взаимодействие, при който докоснатите елементи се изговарят на глас и потребителският интерфейс може да бъде изследван чрез жестове."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"заявяване на подобрена достъпност в мрежата"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Разрешава на собственика да заяви активирането на подобрения на достъпността в мрежата – например инсталирането на скриптове, за да стане съдържанието от приложенията по-достъпно."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"обвързване с текстова услуга"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Разрешава на притежателя да се обвърже с интерфейса от най-високото ниво на текстова услуга (напр. SpellCheckerService). Нормалните приложения би трябвало никога да не се нуждаят от това."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"обвързване с услуга за VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Разрешава на приложението да управлява правилата на мрежата и да определя такива за конкретно приложение."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"промяна на отчетността на употребата на мрежа"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Разрешава на приложението да променя това как употребата на мрежа се отчита спрямо приложенията. Не е предназначено за нормални приложения."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"достъп до известията"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Разрешава на приложението да извлича, преглежда и изчиства известия, включително публикуваните от други приложения."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Задаване на правила за паролата"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Контролирайте дължината и разрешените знаци за паролите за отключване на екрана."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Наблюдаване на опитите за отключване на екрана"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index b952bd1..e3ee35d 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Emmagatzematge"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accedeix a l\'emmag. USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accedeix a la targeta SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funcions d\'accessibilitat"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funcions que pot sol·licitar la tecnologia d\'assistència."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"desactivar o modificar la barra d\'estat"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Permet que l\'aplicació desactivi la barra d\'estat o afegeixi i elimini icones del sistema."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"barra d\'estat"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Permet que l\'aplicació llegeixi missatges de difusió mòbil rebuts pel dispositiu. Les alertes de difusió mòbil s\'entreguen en algunes ubicacions per alertar de situacions d\'emergència. És possible que les aplicacions malicioses interfereixin en el rendiment o en el funcionament del dispositiu quan es rep una difusió mòbil d\'emergència."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"enviar missatges SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Permet que l\'aplicació enviï missatges SMS. Aquesta acció pot provocar càrrecs inesperats. Les aplicacions malicioses poden enviar missatges sense la teva confirmació, cosa que et pot fer gastar diners."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviament de missatges SMS sense confirmació"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Permet que l\'aplicació enviï missatges SMS. Aquesta acció pot provocar càrrecs inesperats. Les aplicacions malicioses poden enviar missatges sense la teva confirmació, cosa que et pot fer gastar diners."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"envia els esdeveniments amb \"resposta per missatge\""</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Permet que l\'aplicació enviï sol·licituds a altres aplicacions de missatgeria per gestionar els esdeveniments amb \"resposta per missatge\" de les trucades entrants."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"lectura dels missatges de text (SMS o MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Permet que l\'aplicació llegeixi missatges SMS emmagatzemats a la tauleta o a la targeta SIM. Això permet que l\'aplicació llegeixi tots els missatges SMS, independentment del contingut o de la confidencialitat."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Permet que l\'aplicació llegeixi missatges SMS emmagatzemats al telèfon o a la targeta SIM. Això permet que l\'aplicació llegeixi tots els missatges SMS, independentment del contingut o de la confidencialitat."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Permet que el titular vinculi a la interfície de nivell superior d\'un mètode d\'entrada. No s\'hauria de necessitar mai per a les aplicacions normals."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"vincular amb un servei d\'accessibilitat"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Permet vincular amb la interfície de nivell superior d\'un servei d\'accessibilitat. Les aplicacions normals no haurien de necessitar-ho."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"sol·licitud d\'exploració tàctil"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Permet que el titular sol·liciti un mode d\'interacció en què els elements que es toquin es llegeixin en veu alta i la interfície d\'usuari es pugui explorar mitjançant gestos."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"sol·licitud d\'accessibilitat web millorada"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Permet que el titular sol·liciti l\'activació de les millores per a l\'accessibilitat web. Per exemple, la instal·lació de scripts de Google per fer més accessible el contingut de l\'aplicació."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"vincula a un servei de text"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Permet al titular vincular amb la interfície de nivell superior d\'un servei de text (per exemple, SpellCheckerService). Les aplicacions normals mai no ho haurien de necessitar."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"vincula a un servei de VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Permet que l\'aplicació gestioni les polítiques de la xarxa i que defineixi les regles específiques d\'aplicació."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"modificació del càlcul d\'ús de la xarxa"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Permet que l\'aplicació modifiqui la manera com es calcula l\'ús de la xarxa per part de les aplicacions. No indicat per a les aplicacions normals."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"accedeix a les notificacions"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Permet que l\'aplicació recuperi, examini i esborri les notificacions, incloses les que han publicat altres aplicacions."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Defineix les normes de contrasenya"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Controla la longitud i els caràcters permesos a les contrasenyes de desbloqueig de pantalla."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Control d\'intents de desbloqueig de pantalla"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 16d6490..35798a4 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Úložiště"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Přístup do úložiště USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Přístup ke kartě SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funkce usnadnění"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funkce, o které může asistenční technologie požádat."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"zakázání či změny stavového řádku"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Umožňuje aplikaci zakázat stavový řádek nebo přidat či odebrat systémové ikony."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"stavový řádek"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Umožňuje aplikaci číst zprávy informační služby přijaté ve vašem zařízení. Upozornění informační služby jsou v některých oblastech odesílána za účelem varování před mimořádnými událostmi. Škodlivé aplikace mohou narušit výkon či provoz vašeho zařízení během přijímání zpráv informační služby."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"odesílaní zpráv SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Umožňuje aplikaci odesílat zprávy SMS. Může to mít za následek účtování neočekávaných poplatků. Škodlivé aplikace vás mohou připravit o peníze odesíláním zpráv bez vašeho svolení."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"posílat zprávy SMS bez potvrzení"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Umožňuje aplikaci odesílat zprávy SMS. Může to mít za následek účtování neočekávaných poplatků. Škodlivé aplikace vás mohou připravit o peníze odesíláním zpráv bez vašeho svolení."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"odesílání událostí typu „odpovězte zprávou“"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Umožňuje aplikaci odesílat ostatním aplikacím požadavky na zpracování událostí typu „odpovězte zprávou“ pro příchozí volání."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"čtení textových zpráv (SMS nebo MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Umožňuje aplikaci číst zprávy SMS uložené v tabletu nebo na SIM kartě.Toto oprávnění umožňuje aplikaci číst zprávy SMS bez ohledu na jejich obsah nebo důvěrnost."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Umožňuje aplikaci číst zprávy SMS uložené v telefonu nebo na SIM kartě. Toto oprávnění umožňuje aplikaci číst zprávy SMS bez ohledu na jejich obsah nebo důvěrnost."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Umožňuje držiteli vázat se na nejvyšší úroveň rozhraní pro zadávání dat. Běžné aplikace by toto oprávnění neměly nikdy požadovat."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"navázat se na službu usnadnění přístupu"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Umožňuje držiteli navázat se na nejvyšší úroveň rozhraní služby usnadnění přístupu. Běžné aplikace by toto oprávnění neměly nikdy požadovat."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"požádat o prozkoumání dotykem"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Umožňuje držiteli požádat o interaktivní režim, ve kterém jsou po dotyku vysloveny názvy položek a uživatelské rozhraní lze poznávat pomocí gest."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"požádat o usnadnění přístupu k webu"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Umožňuje držiteli požádat o aktivaci usnadnění přístupu k webu, například o instalaci skriptů, které usnadňují přístup k obsahu aplikace."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"navázat se na textovou službu"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Umožňuje držiteli připojit se k nejvyšší úrovni rozhraní textové služby (např. SpellCheckerService). Běžné aplikace by toto oprávnění neměly nikdy požadovat."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"navázat se na službu VPN"</string>
@@ -462,7 +456,7 @@
     <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"Povoluje aplikaci připojit a konfigurovat displeje přes Wi-Fi."</string>
     <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"ovládat displeje přes Wi-Fi"</string>
     <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"Povoluje aplikaci ovládat základní funkce displejů přes Wi-Fi."</string>
-    <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"změna vašeho nastavení zvuku"</string>
+    <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"změna nastavení zvuku"</string>
     <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"Umožňuje aplikaci změnit globální nastavení zvuku, například hlasitost či reproduktor pro výstup zvuku."</string>
     <string name="permlab_recordAudio" msgid="3876049771427466323">"nahrávání zvuku"</string>
     <string name="permdesc_recordAudio" msgid="4906839301087980680">"Umožňuje aplikaci zaznamenat zvuk pomocí mikrofonu. Toto oprávnění umožňuje aplikaci kdykoliv zaznamenat zvuk bez vašeho svolení."</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Umožňuje aplikaci spravovat zásady sítě a definovat pravidla pro konkrétní aplikace."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"upravit kontrolu používání sítě"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Umožňuje aplikaci upravit způsob výpočtu využití sítě aplikacemi. Toto oprávnění není určeno pro běžné aplikace."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"přístup k oznámením"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Umožňuje aplikacím načítat, zobrazovat a mazat oznámení včetně těch přidaných jinými aplikacemi."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Nastavit pravidla pro heslo"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Řídit délku hesel pro odemčení obrazovky a povolené znaky."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Sledovat pokusy o odemčení obrazovky"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index c8ef522..477f313 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Lagring"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Få adgang til USB-lager."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Få adgang til SD-kortet."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Tilgængelighedsfunktioner"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funktioner, som hjælpeteknologier kan anmode om."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"deaktiver eller rediger statuslinje"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Tillader, at appen kan deaktivere statusbjælken eller tilføje og fjerne systemikoner."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"statusbjælke"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Tillader, at appen læser mobiltransmissionsbeskeder, der modtages af din enhed. I nogle områder sendes mobiltransmissionsbeskeder for at advare om nødsituationer. Ondsindede apps kan forstyrre ydelsen eller driften af ​din ​enhed, når en mobiltransmission om en nødsituation modtages."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"send sms-beskeder"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Tillader, at appen kan sende sms-beskeder. Dette kan resultere i uventede opkrævninger. Skadelige apps kan koste dig penge ved at sende beskeder uden din bekræftelse."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"sende sms-meddelelser uden bekræftelse"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Tillader, at appen kan sende sms-beskeder. Dette kan resultere i uventede opkrævninger. Skadelige apps kan koste dig penge ved at sende beskeder uden din bekræftelse."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"send hændelser, hvor der skal svares pr. besked"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Tillader, at appen kan sende anmodninger til andre apps til beskeder for at håndtere hændelser, hvor der skal svares pr. besked."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"læse dine tekstbeskeder (SMS eller MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Tillader, at appen kan læse de sms-beskeder, der er gemt på din tablet eller dit SIM-kort. Med denne tilladelse kan appen læse alle sms-beskeder, uanset indhold eller fortrolighed."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Tillader, at appen kan læse de sms-beskeder, der er gemt på din telefon eller dit SIM-kort. Med denne tilladelse kan appen læse alle sms-beskeder, uanset indhold eller fortrolighed."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Tillader, at brugeren kan forpligter sig til en inputmetodes grænseflade på øverste niveau. Bør aldrig være nødvendigt til almindelige apps."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"bind dig til en tilgængelighedstjeneste"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Tillader, at brugeren binder sig til en grænseflade for en tilgængelighedstjeneste på øverste niveau. Bør aldrig være nødvendigt til almindelige apps."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"anmod om udforsk ved berøring"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Tillader brugeren at anmode om en interaktionstilstand, hvor elementer, der berøres, læses op, og brugergrænsefladen kan udforskes via berøringer."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"anmod om bedre webtilgængelighed"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Tillader, at brugeren kan anmode om aktivering af webtilgængelighedsforbedringer. Disse omfatter bl.a. at installering af scripts, der gør appindhold mere tilgængeligt."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"forpligte sig til en sms-tjeneste"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Tillader, at ejeren kan binde en teksttjenestes grænseflade (f. eks. SpellCheckerService) på øverste niveau. Dette bør aldrig være nødvendigt til normale apps."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"bind til en VPN-tjeneste"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Tillader, at appen kan administrere netværkspolitikker og definere appspecifikke regler."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"skift afregning af netværksbrug"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Tillader, at appen kan ændre den måde, som netværksforbrug udregnes på i forhold til apps. Anvendes ikke af normale apps."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"adgang til underretninger"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Tillader, at appen kan hente, undersøge og rydde underretninger, herunder dem, der er sendt af andre apps."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Indstil regler for adgangskode"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Kontroller længden samt tilladte tegn i adgangskoder til oplåsning af skærmen."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Overvåg forsøg på oplåsning af skærm"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index a51e459..770cc61 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Speicher"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Zugriff auf USB-Speicher"</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Zugriff auf SD-Karte"</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funktionen der Bedienungshilfen"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funktionen, die für Bedienungshilfentechnologie beantragt werden können"</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"Statusleiste deaktivieren oder ändern"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Ermöglicht der App, die Statusleiste zu deaktivieren oder Systemsymbole hinzuzufügen oder zu entfernen"</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"Statusleiste"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Ermöglicht der App, von Ihrem Gerät empfangene Cell Broadcast-Nachrichten zu lesen. Cell Broadcast-Benachrichtigungen werden an einigen Standorten gesendet, um Sie über Notfallsituationen zu informieren. Schädliche Apps können die Leistung oder den Betrieb Ihres Geräts beeinträchtigen, wenn eine Cell Broadcast-Notfallbenachrichtigung eingeht."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"SMS senden"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Ermöglicht der App, SMS zu senden. Dies kann zu unerwarteten Kosten führen. Schädliche Apps können Kosten verursachen, indem sie Nachrichten ohne Ihre Bestätigung senden."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"SMS ohne Bestätigung senden"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Ermöglicht der App, SMS zu senden. Dies kann zu unerwarteten Kosten führen. Schädliche Apps können Kosten verursachen, indem sie Nachrichten ohne Ihre Bestätigung senden."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"Antwort-per-SMS/MMS-Ereignisse senden"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Ermöglicht der App, Anfragen an andere SMS/MMS-Apps zu senden, um Antwort-per-SMS/MMS-Ereignisse für eingehende Anrufe zu verarbeiten"</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"SMS oder MMS lesen"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Ermöglicht der App, auf Ihrem Tablet oder Ihrer SIM-Karte gespeicherte SMS zu lesen. Die App kann alle SMS lesen, unabhängig von Inhalt und Vertraulichkeit."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Ermöglicht der App, auf Ihrem Telefon oder Ihrer SIM-Karte gespeicherte SMS zu lesen. Die App kann alle SMS lesen, unabhängig von Inhalt und Vertraulichkeit."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Ermöglicht dem Halter, sich an die Oberfläche einer Eingabemethode auf oberster Ebene zu binden. Sollte nie für normale Apps benötigt werden."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"An eine Bedienungshilfe binden"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Ermöglicht dem Halter, sich an die Oberfläche einer Bedienungshilfe auf oberster Ebene zu binden. Sollte nie für normale Apps benötigt werden."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"Tippen &amp; Entdecken beantragen"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Nutzer darf Interaktionsmodus beantragen, in dem berührte Elemente laut vorgelesen werden und die Benutzeroberfläche über Gesten erkundet werden kann."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"Erweiterte Webbedienungshilfen beantragen"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Nutzer darf Verbesserungen für Webbedienungshilfen beantragen, beispielsweise die Installation von Skripts von Google, um die Nutzerfreundlichkeit des App-Inhalts zu verbessern."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"An einen Textdienst binden"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Ermöglicht dem Halter, sich an die Oberfläche eines Textdienstes auf oberster Ebene zu binden, z. B. eines Rechtschreibprüfungsdienstes. Sollte nie für normale Apps benötigt werden."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"An einen VPN-Dienst binden"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Ermöglicht der App, Netzwerkrichtlinien zu verwalten und anwendungsspezifische Regeln festzulegen"</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"Zuordnung für Netzwerknutzung ändern"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Ermöglicht der App, die Art und Weise zu ändern, wie der Netzwerkverbrauch im Hinblick auf Apps berechnet wird. Nicht für normale Apps vorgesehen."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"Auf Benachrichtigungen zugreifen"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Ermöglicht der App das Abrufen, Überprüfen und Löschen von Benachrichtigungen, einschließlich Benachrichtigungen, die von anderen Apps gepostet wurden"</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Passwortregeln festlegen"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Zulässige Länge und Zeichen für Passwörter zum Entsperren des Bildschirms festlegen"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Versuche zum Entsperren des Displays überwachen"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 0ef5064..40fc411 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Αποθηκευτικός χώρος"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Πρόσβαση στον χώρο αποθ. USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Πρόσβαση στην κάρτα SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Λειτουργίες προσβασιμότητας"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Λειτουργίες που μπορεί να ζητήσει η τεχνολογία υποβοήθησης."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"απενεργοποίηση ή τροποποίηση γραμμής κατάστασης"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Επιτρέπει στην εφαρμογή να απενεργοποιεί τη γραμμή κατάστασης ή να προσθέτει και να αφαιρεί εικονίδια συστήματος."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"γραμμή κατάστασης"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Επιτρέπει στην εφαρμογή την ανάγνωση μηνυμάτων που έχουν μεταδοθεί μέσω κινητού τηλεφώνου και έχουν ληφθεί από τη συσκευή σας. Ειδοποιήσεις που μεταδίδονται μέσω κινητού παραδίδονται σε ορισμένες τοποθεσίες για να σας προειδοποιήσουν για καταστάσεις έκτακτης ανάγκης. Κακόβουλες εφαρμογές ενδέχεται να παρεμποδίσουν την απόδοση ή τη λειτουργία της συσκευής σας κατά τη λήψη μετάδοσης μέσω κινητού σχετικά με μια επείγουσα κατάσταση."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"αποστολή μηνυμάτων SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Επιτρέπει στην εφαρμογή των αποστολή μηνυμάτων SMS. Αυτό μπορεί να προκαλέσει μη αναμενόμενες χρεώσεις. Οι κακόβουλες εφαρμογές ενδέχεται να σας κοστίσουν χρήματα, αποστέλλοντας μηνύματα χωρίς την έγκρισή σας."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"αποστολή μηνυμάτων SMS χωρίς επιβεβαίωση"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Επιτρέπει στην εφαρμογή των αποστολή μηνυμάτων SMS. Αυτό μπορεί να προκαλέσει μη αναμενόμενες χρεώσεις. Οι κακόβουλες εφαρμογές ενδέχεται να σας κοστίσουν χρήματα, αποστέλλοντας μηνύματα χωρίς την έγκρισή σας."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"αποστολή συμβάντων απόκρισης μέσω μηνύματος"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Επιτρέπει στην εφαρμογή να στέλνει μηνύματα σε άλλες εφαρμογές ανταλλαγής μηνυμάτων για τη διαχείριση συμβάντων απόκρισης μέσω μηνύματος για εισερχόμενες κλήσεις."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"ανάγνωση των μηνυμάτων κειμένου σας (SMS ή MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Επιτρέπει στην εφαρμογή την ανάγνωση μηνυμάτων SMS που είναι αποθηκευμένα στο tablet σας ή στην κάρτα σας SIM. Αυτό δίνει τη δυνατότητα στην εφαρμογή να διαβάζει όλα τα μηνύματα SMS, ανεξάρτητα από το περιεχόμενο ή το επίπεδο εμπιστευτικότητάς τους."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Επιτρέπει στην εφαρμογή την ανάγνωση μηνυμάτων SMS που είναι αποθηκευμένα στο τηλέφωνό σας ή στην κάρτα σας SIM. Αυτό δίνει τη δυνατότητα στην εφαρμογή να διαβάζει όλα τα μηνύματα SMS, ανεξάρτητα από το περιεχόμενο ή το επίπεδο εμπιστευτικότητάς τους."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Επιτρέπει στον κάτοχο τη δέσμευση στη διεπαφή ανωτάτου επιπέδου μιας μεθόδου εισόδου. Δεν απαιτείται για συνήθεις εφαρμογές."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"δέσμευση σε υπηρεσία προσβασιμότητας"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Επιτρέπει στον κάτοχο τη δέσμευση στη διεπαφή ανώτατου επιπέδου μιας υπηρεσίας προσβασιμότητας. Δεν απαιτείται σε κανονικές εφαρμογές."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"αίτημα εξερεύνησης με αφή"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Επιτρέπει στον κάτοχο να ζητήσει μια λειτουργία αλληλεπίδρασης κατά την οποία τα στοιχεία που αγγίζει ο χρήστης εκφωνούνται και είναι δυνατή η εξερεύνηση της διεπαφής χρήστη μέσω αφής."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"αίτημα βελτιωμένης προσβασιμότητας στον ιστό"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Επιτρέπει στον κάτοχο να ζητήσει την ενεργοποίηση βελτιώσεων προσβασιμότητας ιστού. Για παράδειγμα, εγκατάσταση σεναρίων από την Google προκειμένου το περιεχόμενο των εφαρμογών να είναι πιο προσβάσιμο."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"δέσμευση σε υπηρεσία ανταλλαγής μηνυμάτων"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Επιτρέπει στον κάτοχο τη σύνδεση με τη διεπαφή ανωτέρου επιπέδου μιας υπηρεσίας ανταλλαγής μηνυμάτων (π.χ. SpellCheckerService). Δεν είναι απαραίτητο για κανονικές εφαρμογές."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"δέσμευση σε υπηρεσία VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Επιτρέπει στην εφαρμογή τη διαχείριση των πολιτικών δικτύου και τον ορισμό κανόνων για ορισμένες εφαρμογές."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"τροποποίηση υπολογισμού χρήσης δικτύου"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Επιτρέπει στην εφαρμογή την τροποποίηση του τρόπου υπολογισμού της χρήσης δικτύου έναντι των εφαρμογών. Δεν προορίζεται για χρήση από συνήθεις εφαρμογές."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"πρόσβαση στις ειδοποιήσεις"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Επιτρέπει στην εφαρμογή να ανακτά, να εξετάζει και να απαλείφει ειδοποιήσεις, συμπεριλαμβανομένων εκείνων που δημοσιεύονται από άλλες εφαρμογές."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Ορισμός κανόνων κωδικού πρόσβασης"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Έλεγχος του μεγέθους και των χαρακτήρων που επιτρέπονται στους κωδικούς πρόσβασης ξεκλειδώματος οθόνης."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Παρακολούθηση προσπαθειών ξεκλειδώματος οθόνης"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index d8aa0b4..4af1886 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Storage"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Access the USB storage."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Access the SD card."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Accessibility features"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Features that assistive technology can request."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"disable or modify status bar"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Allows the app to disable the status bar or add and remove system icons."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"status bar"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Allows the app to read mobile broadcast messages received by your device. Cell broadcast alerts are delivered in some locations to warn you of emergency situations. Malicious apps may interfere with the performance or operation of your device when an emergency mobile broadcast is received."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"send SMS messages"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Allows the app to send SMS messages. This may result in unexpected charges. Malicious apps may cost you money by sending messages without your confirmation."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"send SMS messages with no confirmation"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Allows the app to send SMS messages. This may result in unexpected charges. Malicious apps may cost you money by sending messages without your confirmation."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"send respond-via-message events"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Allows the app to send requests to other messaging apps to handle respond-via-message events for incoming calls."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"read your text messages (SMS or MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Allows the app to read SMS messages stored on your tablet or SIM card. This allows the app to read all SMS messages, regardless of content or confidentiality."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Allows the app to read SMS messages stored on your phone or SIM card. This allows the app to read all SMS messages, regardless of content or confidentiality."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Allows the holder to bind to the top-level interface of an input method. Should never be needed for normal apps."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"bind to an accessibility service"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Allows the holder to bind to the top-level interface of an accessibility service. Should never be needed for normal apps."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"request explore by touch"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Allows the hoder to request an interaction mode in which touched items are spoken aloud and the UI can be explored via gestures."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"request enhanced web accessibility"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Allows the hoder to request enabling of web accessibility enhancements. For example, installing scripts to make app content more accessible."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"bind to a text service"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Allows the holder to bind to the top-level interface of a text service (e.g. SpellCheckerService). Should never be needed for normal applications."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"bind to a VPN service"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Allows the app to manage network policies and define app-specific rules."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"modify network usage accounting"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Allows the app to modify how network usage is accounted against apps. Not for use by normal apps."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"access notifications"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Allows the app to retrieve, examine, and clear notifications, including those posted by other apps."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Set password rules"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Control the length and the characters allowed in screen-unlock passwords."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Monitor screen-unlock attempts"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index a05fbb9..8517662 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Espacio de almacenamiento"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Acceder al almacenamiento USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Acceder a la tarjeta SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funciones de accesibilidad"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funciones que la tecnología de asistencia puede solicitar."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"desactivar o modificar la barra de estado"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Permite que la aplicación inhabilite la barra de estado o que agregue y elimine íconos del sistema."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"barra de estado"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Permite a la aplicación leer los mensajes de difusión móvil que recibe tu dispositivo. En algunas ubicaciones, las alertas de difusión móvil se envían para informar situaciones de emergencia. Las aplicaciones maliciosas pueden afectar el rendimiento o funcionamiento de tu dispositivo cuando se recibe un un mensaje de difusión móvil de emergencia."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"enviar mensajes SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Permite que la aplicación envíe mensajes SMS, lo que puede generar cargos inesperados. Las aplicaciones malintencionadas pueden causarte gastos imprevistos al enviar mensajes sin tu confirmación."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"Enviar mensajes SMS sin confirmación"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Permite que la aplicación envíe mensajes SMS, lo que puede generar cargos inesperados. Las aplicaciones malintencionadas pueden causarte gastos imprevistos al enviar mensajes sin tu confirmación."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"enviar eventos de respuesta por mensaje"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Permite que la aplicación envíe solicitudes a otras aplicaciones de mensajería para administrar eventos de respuesta por mensaje para las llamadas entrantes."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"leer tus mensajes de texto (SMS o MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Permite que la aplicación consulte los mensajes SMS almacenados en la tableta o en la tarjeta SIM. La aplicación puede utilizar este permiso para leer todos los mensajes SMS, independientemente de cuál sea su contenido o su nivel de confidencialidad."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Permite que la aplicación consulte los mensajes SMS almacenados en el dispositivo o en la tarjeta SIM. La aplicación puede utilizar este permiso para leer todos los mensajes SMS, independientemente de cuál sea su contenido o su nivel de confidencialidad."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Permite al propietario vincularse a la interfaz de nivel superior de un método de entrada. Las aplicaciones normales no deberían necesitar este permiso."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"vincular a un servicio de accesibilidad"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Permite al propietario vincularse a la interfaz de nivel superior de un servicio de accesibilidad. Las aplicaciones normales no deberían necesitar este permiso."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"solicitar exploración táctil"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Le permite al titular solicitar un modo de interacción en el cual los elementos tocados se pronuncian en voz alta y la IU se puede explorar a través de gestos."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"solicitar accesibilidad mejorada de la Web"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Le permite al titular solicitar la habilitación de las mejoras en la accesibilidad de la Web. Por ejemplo, instalar las secuencias de comandos de Google para hacer el contenido de la aplicación más accesible."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"vincular a un servicio de texto"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Permite al titular vincularse a la interfaz de nivel superior de un servicio de texto (p. ej., SpellCheckerService). Las aplicaciones normales no deberían necesitar este permiso."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"vincular con un servicio de VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Permite que la aplicación administre las políticas de red y defina reglas específicas de la aplicación."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"Modificar la administración del uso de redes"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Permite que la aplicación modifique cómo se registra el uso de red en relación con las aplicaciones. Las aplicaciones normales no deben usar este permiso."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"acceder a las notificaciones"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Permite que la aplicación recupere, examine y elimine notificaciones, incluidas aquellas publicadas por otras aplicaciones."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Establecer reglas de contraseña"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Controlar la longitud y los caracteres permitidos en las contraseñas para desbloquear la pantalla"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Supervisa los intentos para desbloquear la pantalla"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index d7deef4..2b657c8 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Almacenamiento"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Acceso a almacenamiento USB"</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Acceder a la tarjeta SD"</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funciones de accesibilidad"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funciones que pueden solicitar tecnología adaptada"</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"inhabilitar o modificar la barra de estado"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Permite que la aplicación inhabilite la barra de estado o añada y elimine iconos del sistema."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"barra de estado"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Permite que la aplicación lea mensajes de difusión móvil que haya recibido el dispositivo. Las alertas de difusión móvil se envían en algunas ubicaciones para avisar de situaciones de emergencia. Es posible que las aplicaciones malintencionadas interfieran en el rendimiento o en el funcionamiento del dispositivo si se recibe una alerta de difusión móvil de emergencia."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"enviar mensajes SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Permite que la aplicación envíe mensajes SMS, lo que puede generar cargos inesperados. Las aplicaciones malintencionadas pueden causarte gastos imprevistos al enviar mensajes sin tu confirmación."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviar mensajes SMS sin confirmación"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Permite que la aplicación envíe mensajes SMS, lo que puede generar cargos inesperados. Las aplicaciones malintencionadas pueden causarte gastos imprevistos al enviar mensajes sin tu confirmación."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"enviar eventos de respuesta mediante mensaje"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Permite que la aplicación envíe solicitudes a otras aplicaciones de mensajería para procesar eventos de respuesta mediante mensaje para llamadas entrantes."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"leer tus mensajes de texto (SMS o MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Permite que la aplicación lea mensajes SMS almacenados en el tablet o en la tarjeta SIM. La aplicación puede utilizar este permiso para leer todos los mensajes SMS, independientemente de cuál sea su contenido o su nivel de confidencialidad."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Permite que la aplicación lea mensajes SMS almacenados en el teléfono o en la tarjeta SIM. La aplicación puede utilizar este permiso para leer todos los mensajes SMS, independientemente de cuál sea su contenido o su nivel de confidencialidad."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Permite que se enlace con la interfaz de nivel superior de un método de entrada de texto. Las aplicaciones normales no deberían necesitar este permiso."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"enlazar con un servicio de accesibilidad"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Permite enlazar con la interfaz de nivel superior de un servicio de accesibilidad. Las aplicaciones normales no deberían necesitar este permiso."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"Solicitar exploración por tacto"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Permite al titular solicitar un modo de interacción en el que los elementos que se toquen se reproduzcan en voz alta y la interfaz de usuario se pueda explorar mediante gestos."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"Solicitar accesibilidad web mejorada"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Permite que el titular solicite que se habiliten mejoras de accesibilidad web. Por ejemplo, instalar secuencias de comandos de Google para que el contenido de la aplicación sea más accesible."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"enlazar con un servicio de texto"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Permite enlazar con la interfaz de nivel superior de un servicio de texto (por ejemplo, SpellCheckerService). Las aplicaciones normales no deberían necesitar este permiso."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"enlazar con un servicio VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Permite que la aplicación administre políticas de red y defina reglas específicas de la aplicación."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"modificar cálculo de uso de red"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Permite que la aplicación modifique cómo se registra el uso de red en relación con las aplicaciones. Las aplicaciones normales no deben usar este permiso."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"acceder a las notificaciones"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Permite que la aplicación recupere, examine y borre notificaciones, incluidas las que han publicado otras aplicaciones."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Establecimiento de reglas de contraseña"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Controlar la longitud y los caracteres permitidos en las contraseñas de bloqueo de pantalla"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Control de intentos de bloqueo de pantalla"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 1e18a8e..3303f00 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Mäluruum"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Juurdepääs USB-mäluseadmele."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Juurdepääs SD-kaardile."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Pääsufunktsioonid"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funktsioonid, mida saab taotleda abistav tehnoloogia."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"keela või muuda olekuriba"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Võimaldab rakendusel keelata olekuriba või lisada ja eemaldada süsteemiikoone."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"olekuriba"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Võimaldab rakendusel lugeda seadme vastu võetud mobiilsidesõnumeid. Mobiilsidemärguandeid edastatakse mõnes asukohas eriolukorrast teavitamiseks. Pahatahtlikud rakendused võivad segada seadme toimivust või tööd eriolukorra sõnumi vastuvõtmisel."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"saada SMS-sõnumeid"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Võimaldab rakendusel saata SMS-sõnumeid. See võib kaasa tuua ootamatuid tasusid. Pahatahtlikud rakendused võivad teile tekitada kulusid, saates sõnumeid teie kinnituseta."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"lühisõnumite saatmine ilma kinnituseta"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Võimaldab rakendusel saata SMS-sõnumeid. See võib kaasa tuua ootamatuid tasusid. Pahatahtlikud rakendused võivad teile tekitada kulusid, saates sõnumeid teie kinnituseta."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"sõnumiga vastamise sündmuste saatmine"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Lubab rakendusel saata taotlusi teistele sõnumiside rakendustele, et käsitleda sissetulevate kõnedele sõnumiga vastamise sündmusi."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"lugege oma tekstisõnumeid (SMS või MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Võimaldab rakendusel lugeda tahvelarvutisse või SIM-kaardile salvestatud SMS-sõnumeid. See võimaldab rakendusel lugeda kõiki SMS-sõnumeid sisust või konfidentsiaalsusest hoolimata."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Võimaldab rakendusel lugeda telefoni või SIM-kaardile salvestatud SMS-sõnumeid. See võimaldab rakendusel lugeda kõiki SMS-sõnumeid sisust või konfidentsiaalsusest hoolimata."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Lubab omanikul siduda sisestusmeetodi ülataseme liidesega. Tavarakenduste puhul ei peaks seda kunagi vaja minema."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"sidumine juurdepääsuteenusega"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Lubab omanikul luua sideme juurdepääsuteenuse ülataseme liidesega. Tavarakenduste puhul ei tohiks seda kunagi vaja minna."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"puudutusega uurimise taotlus"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Võimaldab taotleda suhtlusrežiimi, milles puudutatud üksused valjusti välja öeldakse ja kus kasutajaliidest saab kasutada liigutuste abil."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"täiustatud veebijuurdepääsu taotlus"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Võimaldab taotleda veebijuurdepääsu täiustuste lubamist. Näiteks installida skripte, mis hõlbustavad juurdepääsu rakenduse sisule."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"tekstiteenusega sidumine"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Võimaldab omanikul siduda tekstiteenuse (nt SpellCheckerService) ülataseme liidesega. Tavarakenduste puhul ei peaks seda kunagi vaja minema."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"seo VPN-teenusega"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Võimaldab rakendusel hallata võrgueeskirju ja määratleda rakendusespetsiifilisi reegleid."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"võrgukasutuse arvestamise muutmine"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Võimaldab rakendusel muuta võrgukasutuse loendamist rakenduste suhtes. Mitte kasutada tavarakenduste puhul."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"juurdepääsu märguanded"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Võimaldab rakendusel tuua, kontrollida ja kustutada märguandeid, sh neid, mille on postitanud teised rakendused."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Parooli reeglite määramine"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Kontrollige ekraaniluku avamise paroolide pikkust ja tähemärke."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Ekraani avamiskatsed"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index ba37b34..b4a15c5 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"حافظه"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"به حافظهٔ USB دسترسی پیدا کنید."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"به کارت SD دسترسی داشته باشید."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"ویژگی‌های قابلیت دسترسی"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"ویژگی‌هایی که فناوری مفید می‌تواند درخواست کند."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"غیرفعال کردن یا تغییر نوار وضعیت"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"به برنامه اجازه می‎دهد تا نوار وضعیت را غیرفعال کند یا نمادهای سیستم را اضافه یا حذف کند."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"نوار وضعیت"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"به برنامه اجازه می‎دهد پیام‌های پخش سلولی دستگاه شما را بخواند. هشدارهای پخش سلولی در برخی از موقعیت‌های مکانی تحویل داده می‎شوند تا موقعیت‌های اضطراری را به شما اعلام کنند. وقتی پخش سلولی دریافت می‎شود، ممکن است برنامه‎های مخرب در عملکرد یا کارکرد دستگاه شما اختلال ایجاد کنند."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"ارسال پیامک ها"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"به برنامه اجازه می‌دهد پیامک‌ها را ارسال کند. این باعث ایجاد هزینه‌های پیش‌بینی نشده می‌شود. برنامه‌های مخرب ممکن است با ارسال پیام بدون تأیید شما هزینه‌هایی را برای شما ایجاد کنند."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"ارسال پیامک بدون تأیید"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"به برنامه اجازه می‌دهد پیامک‌ها را ارسال کند. این باعث ایجاد هزینه‌های پیش‌بینی نشده می‌شود. برنامه‌های مخرب ممکن است با ارسال پیام بدون تأیید شما هزینه‌هایی را برای شما ایجاد کنند."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"ارسال رویدادهای «پاسخ‌ از طریق پیام»"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"به برنامه اجازه می‌دهد درخواست‌ها را برای دیگر برنامه‌های پیام‌رسانی بفرستد تا به رویدادهای «پاسخ‌ از طریق پیام» برای تماس‌های دریافتی رسیدگی کند."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"خواندن پیام‌های نوشتاری شما (پیامک یا MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"به برنامه اجازه می‌دهد پیامک‌های ذخیره شده در رایانهٔ لوحی یا سیم کارت شما را بخواند. این ویژگی به برنامه امکان می‌دهد همه پیامک‌ها را صرفنظر از محتوا یا محرمانه بودن آن‌ها بخواند."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"به برنامه اجازه می‌دهد پیامک‌های ذخیره شده در تلفن یا سیم کارت شما را بخواند. این ویژگی به برنامه امکان می‌دهد همه پیامک‌ها را صرفنظر از محتوا یا محرمانه بودن آن‌ها بخواند."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"به دارنده این دستگاه اجازه می‎دهد تا به رابط سطح بالای یک روش ورودی متصل شود. این ویژگی هیچگاه برای برنامه‎های معمولی ضروری نمی‎باشد."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"اتصال به سرویس دسترسی"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"به دارنده اجازه می‌دهد که به رابط سطح بالای سرویس دسترسی متصل شود. هرگز برای برنامه‌های معمولی مورد نیاز نیست."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"درخواست کاوش با لمس"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"به دارنده اجازه می‌دهد یک حالت تعاملی را درخواست کند که در این حالت موارد لمس شده به صدای بلند بیان می‌شوند و رابط کاربری از طریق حرکات اشاره قابل کاوش است."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"درخواست افزایش دسترسی به وب"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"به دارنده اجازه می‌دهد فعال کردن افزایش دسترسی به وب را درخواست کند، برای مثال، نصب اسکریپت‌ها، تا محتوای برنامه بیشتر در دسترس باشد."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"اتصال به یک سرویس متنی"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"به دارنده اجازه می‌دهد خود را به یک رابط سطح بالای خدمات متنی مرتبط کند (برای مثال SpellCheckerService). هرگز برای برنامه‌های عادی لازم نیست."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"اتصال به یک سرویس VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"به برنامه اجازه می‎دهد تا خط مشی‎های شبکه را مدیریت کند و قوانین خاص برنامه را تعیین کند."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"اصلاح محاسبه استفاده از شبکه"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"به برنامه اجازه می‎دهد تا نحوه محاسبه کاربرد شبکه در برنامه را تغییر دهد. برای استفاده برنامه‎های عادی نیست."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"اعلان‌های دسترسی"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"به برنامه اجازه می‌دهد به بازیابی، بررسی و پاک کردن اعلان‌ها از جمله موارد پست شده توسط سایر برنامه‌ها بپردازد."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"تنظیم قوانین رمز ورود"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"طول و نویسه‎های مجاز در گذرواژه‌های بازکردن قفل صفحه را کنترل کنید."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"نمایش تلاش‌های قفل گشایی صفحه"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index a65e158..45f4a05 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Tallennustila"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Käytä USB-tallennustilaa."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Käytä SD-korttia."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Esteettömyysominaisuudet"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Ominaisuudet, joiden käyttöönottoa avustava tekniikka voi pyytää."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"poista tilapalkki käytöstä tai muokkaa tilapalkkia"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Antaa sovelluksen poistaa tilapalkin käytöstä ja lisätä tai poistaa järjestelmäkuvakkeita."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"tilapalkki"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Antaa sovelluksen lukea laitteesi vastaanottamia tiedotteita. Tiedotteiden avulla ilmoitetaan hätätilanteista joissakin paikoissa. Haitalliset sovellukset voivat häiritä laitteen toimintaa laitteen vastaanottaessa hätätiedotteen."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"lähetä tekstiviestejä"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Antaa sovelluksen lähettää tekstiviestejä. Tästä voi aiheutua odottamattomia kuluja. Haitalliset sovellukset voivat aiheuttaa kuluja lähettämällä viestejä ilman lupaasi."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"lähettää tekstiviestejä ilman vahvistusta"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Antaa sovelluksen lähettää tekstiviestejä. Tästä voi aiheutua odottamattomia kuluja. Haitalliset sovellukset voivat aiheuttaa kuluja lähettämällä viestejä ilman lupaasi."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"lähetä vastaa viestillä -tapahtumia"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Antaa sovelluksen lähettää muille viestisovelluksille pyyntöjä käsitellä saapuvien puheluiden vastaa viestillä -tapahtumia."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"lue tekstiviestejä (teksti tai multimedia)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Antaa sovelluksen lukea tablet-laitteeseen tai SIM-kortille tallennettuja tekstiviestejä. Sovellus voi lukea kaikki tekstiviestit huolimatta niiden arkaluonteisuudesta."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Antaa sovelluksen lukea puhelimeen tai SIM-kortille tallennettuja tekstiviestejä. Sovellus voi lukea kaikki tekstiviestit huolimatta niiden arkaluonteisuudesta."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Antaa sovelluksen sitoutua syötetavan ylätason käyttöliittymään. Ei tavallisten sovellusten käyttöön."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"sitoudu esteettömyyspalveluun"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Antaa sovelluksen sitoutua esteettömyyspalvelun ylemmän tason käyttöliittymään. Ei tavallisten sovelluksien käyttöön."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"pyydä kosketuksella tutkimisen käyttöönottoa"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Antaa luvan haltijan pyytää käyttöön vuorovaikutustilaa, jossa kosketettujen kohteiden nimet sanotaan ääneen ja käyttöliittymää voi tutkia eleiden avulla."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"pyydä parannettua verkon esteettömyyttä"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Antaa luvan haltijan pyytää verkon esteettömyysparannuksien käyttöönottoa. Sovellus voi esimerkiksi pyytää Googlen koodikatkelmien asentamista sovelluksen sisällön esteettömyyden parantamiseksi."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"tekstipalveluun sitoutuminen"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Antaa sovelluksen sitoutua tekstipalvelun (kuten SpellCheckerServicen) ylätason liittymään. Ei tavallisten sovellusten käyttöön."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"sitoudu VPN-palveluun"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Sallii sovelluksen hallinnoida verkkokäytäntöjä ja määritellä sovelluskohtaisia sääntöjä."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"verkon käytön seurannan muokkaaminen"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Antaa sovelluksen muokata, miten sovellusten verkonkäyttöä lasketaan. Ei tavallisten sovellusten käyttöön."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"käytä ilmoituksia"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Antaa sovelluksen noutaa, tutkia ja tyhjentää ilmoituksia (myös muiden sovelluksien lähettämiä)."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Aseta salasanasäännöt"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Hallinnoi ruudun lukituksenpoistosalasanoissa sallittuja merkkejä ja salasanan pituutta."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Tarkkaile ruudun lukituksen poistoyrityksiä"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 6a9354b..c94946e 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Stockage"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accéder à la  mémoire de stockage USB"</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accéder à la carte SD"</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Fonctionnalités d\'accessibilité"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Fonctionnalités pouvant être requises dans le cadre des technologies d\'assistance"</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"Désactivation ou modification de la barre d\'état"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Permet à l\'application de désactiver la barre d\'état, ou d\'ajouter et de supprimer des icônes système."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"barre d\'état"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Permet à l\'application de lire les messages que votre appareil reçoit via un canal de diffusion cellulaire. Dans certaines zones géographiques, des alertes vous sont envoyées afin de vous prévenir en cas de situation d\'urgence. Les applications malveillantes peuvent venir perturber les performances ou le fonctionnement de votre appareil lorsqu\'un message est reçu via un canal de diffusion cellulaire."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"Envoi de messages SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Permet à l\'application d\'envoyer des messages SMS. Cette autorisation peut entraîner des frais inattendus. Les applications malveillantes peuvent générer des frais en envoyant des messages sans votre consentement."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"envoyer des SMS sans confirmation"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Permet à l\'application d\'envoyer des messages SMS. Cette autorisation peut entraîner des frais inattendus. Les applications malveillantes peuvent générer des frais en envoyant des messages sans votre consentement."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"envoyer des réponses par message"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Permet à l\'application d\'envoyer à d\'autres applications de SMS/MMS des demandes pour gérer les réponses par message pour les appels entrants."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"voir les messages texte (SMS ou MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Permet à l\'application de lire les SMS stockés sur votre tablette ou sur la carte SIM. Cette autorisation lui permet de lire tous les SMS, indépendamment de leur contenu ou de leur caractère confidentiel."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Permet à l\'application de lire les SMS stockés sur votre téléphone ou sur la carte SIM. Cette autorisation lui permet de lire tous les SMS, indépendamment de leur contenu ou de leur caractère confidentiel."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Permet à l\'application autorisée de s\'associer à l\'interface de plus haut niveau d\'un mode de saisie. Les applications standards ne doivent jamais avoir recours à cette fonctionnalité."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"associer à un service d\'accessibilité"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Permet à l\'application autorisée de s\'associer à l\'interface de plus haut niveau d\'un service d\'accessibilité. Les applications standards ne doivent jamais avoir recours à cette fonctionnalité."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"demander l\'activation de la fonctionnalité \"Explorer au toucher\""</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Permet à l\'application de demander l\'activation d\'un mode d\'interaction dans lequel les éléments sur lesquels l\'utilisateur appuie sont énoncés à voix haute et dans lequel l\'utilisateur peut explorer l\'interface à l\'aide de gestes."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"demander des améliorations de la fonctionnalité d\'accessibilité Web"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Permet à l\'application de demander l\'activation d\'améliorations de la fonctionnalité d\'accessibilité Web, telles que l\'installation de scripts pour rendre le contenu des applications plus accessible."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"associer à un service de texte"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Permet à l\'application de s\'associer à l\'interface de haut niveau d\'un service de texte (par exemple, SpellCheckerService). Les applications standards ne doivent jamais avoir recours à cette fonctionnalité."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"associer à un service VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Permet à l\'application de gérer les stratégies du réseau et de définir celles qui sont spécifiques à l\'application."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"modifier le système de comptabilisation de l\'utilisation du réseau"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Permet à l\'application de modifier l\'utilisation du réseau par les autres applications. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"accéder aux notifications"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Permet aux applications de récupérer, d\'examiner et d\'autoriser les notifications, y compris celles envoyées par d\'autres applications."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Définir les règles du mot de passe"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Choisir le nombre et le type de caractères autorisés dans les mots de passe de déverrouillage de l\'écran"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Gérer les tentatives de déverrouillage de l\'écran"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 72b881c..3521f4b 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"संग्रहण"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB संग्रहण में पहुंचें."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD कार्ड में पहुंचें."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"पहुंच-योग्यता सुविधाएं"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"सहायक प्रौद्योगिकी के द्वारा अनुरोध की जा सकने वाली सुविधाएं."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"स्‍थिति बार अक्षम या बदलें"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"एप्लिकेशन को स्थिति बार अक्षम करने या सिस्‍टम आइकन को जोड़ने या निकालने देता है."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"स्‍थिति बार"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"एप्‍लिकेशन को आपके उपकरण द्वारा प्राप्त सेल प्रसारण संदेशों को पढ़ने देता है. कुछ स्‍थानों पर आपको आपातकालीन स्‍थितियों की चेतावनी देने के लिए सेल प्रसारण अलर्ट वितरित किए जाते हैं. आपातकालीन सेल प्रसारण प्राप्त होने पर दुर्भावनापूर्ण एप्‍लिकेशन आपके उपकरण के निष्‍पादन या संचालन में हस्‍तक्षेप कर सकते हैं."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"SMS संदेश भेजें"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"एप्लिकेशन को SMS संदेशों को भेजने देता है. इसके परिणामस्वरूप अप्रत्‍याशित शुल्‍क लागू हो सकते हैं. दुर्भावनापूर्ण एप्लिकेशन आपकी पुष्टि के बिना संदेश भेजकर आपका धन व्‍यय कर सकते हैं."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"बिना कि‍सी पुष्टि के SMS संदेश भेजें"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"एप्लिकेशन को SMS संदेशों को भेजने देता है. इसके परिणामस्वरूप अप्रत्‍याशित शुल्‍क लागू हो सकते हैं. दुर्भावनापूर्ण एप्लिकेशन आपकी पुष्टि के बिना संदेश भेजकर आपका धन व्‍यय कर सकते हैं."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"संदेश-द्वारा-जवाब भेजें ईवेंट"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"इनकमिंग कॉल के संदेश-द्वारा-जवाब देने के ईवेंट प्रबंधित करने के लिए, एप्लिकेशन को अन्य संदेश सेवा एप्लिकेशन को अनुरोध भेजने देती है."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"अपने पाठ संदेश (SMS या MMS) पढ़ें"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"एप्लिकेशन को आपके टेबलेट या SIM कार्ड में संग्रहीत SMS संदेश पढ़ने देता है. इससे सामग्री या गोपनीयता पर ध्यान दिए बिना, एप्लिकेशन सभी SMS संदेश पढ़ सकता है."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"एप्लिकेशन को आपके फ़ोन या SIM कार्ड में संग्रहीत SMS संदेश पढ़ने देता है. इससे सामग्री या गोपनीयता पर ध्यान दिए बिना, एप्लिकेशन सभी SMS संदेश पढ़ सकता है."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"धारक को किसी इनपुट विधि के शीर्ष-स्‍तर इंटरफ़ेस से आबद्ध होने देता है. सामान्‍य एप्‍लिकेशन के लिए कभी भी आवश्‍यक नहीं होना चाहिए."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"पहुंच-योग्‍यता सेवा से आबद्ध करें"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"धारक को किसी पहुंच-योग्यता सेवा के शीर्ष-स्‍तर इंटरफ़ेस से आबद्ध होने देता है. सामान्‍य एप्‍लिकेशन के लिए कभी भी आवश्‍यक नहीं होना चाहिए."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"स्पर्श द्वारा एक्सप्लोर करें का अनुरोध करें"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"धारक को ऐसे सहभागी मोड का अनुरोध करने देती है जिसमें स्पर्श किए गए आइटम ज़ोर से बोले जाते हैं और UI को जेस्चर के द्वारा एक्सप्लोर किया जा सकता है."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"उन्नत वेब पहुंच-योग्यता का अनुरोध करें"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"धारक को वेब पहुंच-योग्यता एन्हांसमेंट सक्षम करने का अनुरोध करने देती है. उदाहरण के लिए, एप्लिकेशन सामग्री को अधिक पहुंच-योग्य बनाने के लिए स्क्रिप्ट इंस्टॉल करना."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"किसी पाठ सेवा पर बने रहें"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"धारक को किसी पाठ सेवा (उदा. SpellCheckerService) के शीर्ष-स्‍तर इंटरफ़ेस पर आबद्ध होने देता है. सामान्‍य एप्‍लिकेशन के लिए कभी भी आवश्‍यक नहीं होना चाहिए."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"किसी VPN सेवा से आबद्ध करें"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"एप्‍लिकेशन को नेटवर्क नीतियां प्रबंधित करने और एप्‍लिकेशन-विशिष्‍ट नियमों को परिभाषित करने देता है."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"नेटवर्क उपयोग हिसाब बदलें"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"एप्लिकेशन को यह संशोधित करने देता है कि एप्‍लिकेशन की तुलना में नेटवर्क उपयोग का मूल्यांकन कैसे किया जाता है. सामान्‍य एप्‍लिकेशन द्वारा उपयोग करने के लिए नहीं."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"सूचनाओं तक पहुंचें"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"एप्लिकेशन को सूचनाओं को प्राप्त करने, जांच करने, और साफ़ करने देता है, जिनमें अन्य एप्लिकेशन के द्वारा पोस्ट की गई सूचनाएं भी शामिल हैं."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"पासवर्ड नियम सेट करें"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"स्‍क्रीन-अनलॉक पासवर्ड में अनुमति प्राप्त लंबाई और वर्णों को नियंत्रित करें."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"स्‍क्रीन-अनलॉक के प्रयासों पर निगरानी रखें"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 19c0c9a..ce7e954 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Prostor za pohranu"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Pristupi memoriji USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Pristup SD kartici."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Značajke dostupnosti"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Značajke koje tehnologija za pristupačnost može zahtijevati."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"onemogućavanje ili izmjena trake statusa"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Aplikaciji omogućuje onemogućavanje trake statusa ili dodavanje i uklanjanje sistemskih ikona."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"traka statusa"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Omogućuje aplikaciji čitanje poruka emitiranih unutar mobilne mreže koje prima vaš uređaj. Upozorenja koja se emitiraju na području mobilne mreže dostavljaju se na nekim lokacijama kako bi upozorila korisnike na hitne situacije. Zlonamjerne aplikacije mogu ometati izvršavanje ili rad vašeg uređaja kada stigne hitno upozorenje koje se emitira unutar mobilne mreže."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"slanje SMS poruka"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Aplikaciji omogućuje slanje SMS poruka. To može dovesti do neočekivanih troškova. Zlonamjerne aplikacije mogu vam uzrokovati dodatne troškove slanjem poruka bez vašeg odobrenja."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"slanje SMS poruka bez potvrde"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Aplikaciji omogućuje slanje SMS poruka. To može dovesti do neočekivanih troškova. Zlonamjerne aplikacije mogu vam uzrokovati dodatne troškove slanjem poruka bez vašeg odobrenja."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"slanje događaja \"odgovaranja porukom\""</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Omogućuje aplikaciji slanje zahtijeva drugim aplikacijama za primanje i slanje poruka radi obrade događaja \"odgovaranja porukom\" za dolazne pozive."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"čitanje tekstnih poruka (SMS ili MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Aplikaciji omogućuje čitanje SMS poruka pohranjenih na tabletnom računalu ili SIM kartici. To aplikaciji omogućuje čitanje svih SMS poruka, neovisno o sadržaju ili povjerljivosti."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Aplikaciji omogućuje čitanje SMS poruka pohranjenih na telefonu ili SIM kartici. To aplikaciji omogućuje čitanje svih SMS poruka, neovisno o sadržaju ili povjerljivosti."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Nositelju omogućuje povezivanje sučelja najviše razine načina unosa. Ne bi smjelo biti potrebno za normalne aplikacije."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"vezivanje uz uslugu dostupnosti"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Nositelju omogućuje vezanje uz sučelje najviše razine usluge dostupnosti. Ne bi smjelo biti potrebno za normalne aplikacije."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"zahtijevaj istraživanje dodirom"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Omogućuje korisniku zahtijevanje načina interakcije u kojem se dodirnute stavke izgovaraju naglas, a korisničko sučelje može se istraživati pokretima."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"zahtijevaj poboljšanu web-dostupnost"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Omogućuje korisniku zahtijevanje omogućivanja poboljšanja za dostupnost na webu. Na primjer, instaliranje skripti kako bi sadržaj aplikacije bio pristupačniji."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"vezanje na tekstualnu uslugu"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Omogućuje korisniku povezivanje s najvišom razinom sučelja tekstualne usluge (npr. SpellCheckerService). Ne bi smjelo biti potrebno za normalne aplikacije."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"vezanje na VPN uslugu"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Aplikaciji omogućuje upravljanje mrežnim pravilima i određivanje pravila za aplikacije."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"izmjena evidencije mrežne upotrebe"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Omogućuje aplikaciji izmjenu načina upotrebe mreže u odnosu na aplikacije. Nije namijenjeno uobičajenim aplikacijama."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"pristup obavijestima"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Omogućuje aplikaciji dohvaćanje, pregledavanje i brisanje obavijesti, uključujući obavijesti drugih aplikacija."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Postavi pravila zaporke"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Upravljajte duljinom zaporki za otključavanje zaslona i dopuštenim znakovima u tim zaporkama."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Nadgledaj pokušaje otključavanja zaslona"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 4e10901..a472123 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Tárhely"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Az USB-tár elérése."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Az SD-kártya elérése."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Kisegítő lehetőségek funkciói"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"A kisegítő technológia által kérhető funkciók."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"állapotsor kikapcsolása vagy módosítása"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Lehetővé teszi az alkalmazás számára az állapotsor kikapcsolását, illetve rendszerikonok hozzáadását és eltávolítását."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"állapotsor"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Lehetővé teszi az alkalmazás számára az eszközre érkező cellán belüli üzenetek olvasását. Bizonyos helyeken figyelmeztető üzeneteket kaphat a cellán belül a vészhelyzetekről. A rosszindulatú alkalmazások befolyásolhatják az eszköz  teljesítményét vagy működését vészhelyzeti cellaüzenet érkezésekor."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"SMS-ek küldése"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Lehetővé teszi az alkalmazás számára, hogy SMS-eket küldjön. Ennek eredményeként váratlan terhelésekkel találkozhat. A rosszindulatú alkalmazások az Ön jóváhagyása nélkül küldhetnek üzeneteket, így költségek merülhetnek fel."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"SMS üzenetek küldése megerősítés nélkül"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Lehetővé teszi az alkalmazás számára, hogy SMS-eket küldjön. Ennek eredményeként váratlan terhelésekkel találkozhat. A rosszindulatú alkalmazások az Ön jóváhagyása nélkül küldhetnek üzeneteket, így költségek merülhetnek fel."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"válaszküldés üzenetben"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Lehetővé teszi az alkalmazás számára, hogy kérelmeket küldjön más üzenetküldő alkalmazásoknak, azért hogy kezelje az üzenetben történő válaszküldést a bejövő hívások esetében."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"szöveges üzenetek (SMS vagy MMS) olvasása"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen a táblagépen vagy SIM kártyán tárolt SMS-ekhez. Így az alkalmazás hozzáférhet az összes SMS-hez, azok tartalmától és titkos jellegétől függetlenül."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen a telefonon vagy SIM kártyán tárolt SMS-ekhez. Így az alkalmazás hozzáférhet az összes SMS-hez, azok tartalmától és titkos jellegétől függetlenül."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Lehetővé teszi, hogy a tulajdonos kötelezővé tegye egy beviteli mód legfelső szintű felületét. A normál alkalmazásoknak erre soha nincs szüksége."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"csatlakozás egy kisegítő szolgáltatáshoz"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Lehetővé teszi a használó számára, hogy csatlakozzon egy kisegítő szolgáltatás legfelső szintű kezelőfelületéhez. A normál alkalmazásoknak erre soha nincs szükségük."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"felfedezés érintéssel kérése"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Lehetővé teszi a felhasználó számára egy olyan használati mód engedélyezését, amelyben az eszköz kimondja, hogy milyen elemek lettek megérintve, a felhasználói felület pedig felfedezhető kézmozdulatok révén."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"bővített internetes kisegítő lehetőségek kérése"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Lehetővé teszi a felhasználó számára az internetes kisegítő lehetőségek bővítését. Telepíthet például szkripteket, hogy még inkább elérhetővé tegye az alkalmazás tartalmát."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"csatlakozás szövegszolgáltatáshoz"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Lehetővé teszi, hogy a tulajdonos egy szöveges szolgáltatás felső szintjéhez kapcsolódjon (pl. SpellCheckerService). A normál alkalmazásoknak erre soha nincs szüksége."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"csatlakozás egy VPN-szolgáltatáshoz"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Lehetővé teszi az alkalmazás számára, hogy kezelje a hálózati irányelveket és meghatározza az alkalmazásspecifikus szabályokat."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"hálózathasználat elszámolásának módosítása"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Lehetővé teszi az alkalmazás számára annak módosítását, hogy a hálózathasználatot hogyan számolják el az alkalmazások esetében. Normál alkalmazások nem használhatják."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"hozzáférési értesítések"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Lehetővé teszi, hogy az alkalmazás értesítéseket kérdezzen le, vizsgáljon és tisztítson meg, beleértve az egyéb alkalmazások által közzétett értesítéseket is."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Jelszavakkal kapcsolatos szabályok beállítása"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"A képernyőzár-feloldási jelszavakban engedélyezett karakterek és hosszúság vezérlése."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Képernyőzár-feloldási kísérletek figyelése"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index e9a4226..d0b4d61 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Penyimpanan"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Akses penyimpanan USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Akses kartu SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Fitur aksesibilitas"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Fitur yang dapat diminta oleh teknologi bantu."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"nonaktifkan atau ubah bilah status"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Mengizinkan apl menonaktifkan bilah status atau menambah dan menghapus ikon sistem."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"bilah status"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Mengizinkan aplikasi membaca pesan siaran seluler yang diterima perangkat Anda. Lansiran siaran seluler dikirimkan di beberapa lokasi untuk memperingatkan Anda tentang situasi darurat. Aplikasi berbahaya dapat mengganggu kinerja atau operasi perangkat Anda saat siaran seluler darurat diterima."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"kirim pesan SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Memungkinkan aplikasi mengirim pesan SMS. Izin ini dapat mengakibatkan biaya tak terduga. Aplikasi berbahaya dapat membebankan biaya kepada Anda dengan mengirim pesan tanpa konfirmasi dari Anda."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"mengirim SMS tanpa konfirmasi"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Memungkinkan aplikasi mengirim pesan SMS. Izin ini dapat mengakibatkan biaya tak terduga. Aplikasi berbahaya dapat membebankan biaya kepada Anda dengan mengirim pesan tanpa konfirmasi dari Anda."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"kirim acara tanggapi-lewat-pesan"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Mengizinkan aplikasi mengirimkan permintaan ke aplikasi perpesanan lainnya guna menangani acara tanggapi-lewat-pesan untuk panggilan masuk."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"membaca pesan teks (SMS atau MMS) Anda"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Memungkinkan aplikasi membaca pesan SMS yang tersimpan di tablet atau kartu SIM Anda. Izin ini memungkinkan aplikasi membaca semua pesan SMS, terlepas dari konten atau kerahasiaan."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Memungkinkan aplikasi membaca pesan SMS yang tersimpan di ponsel atau kartu SIM Anda. Izin ini memungkinkan aplikasi membaca semua pesan SMS, terlepas dari konten atau kerahasiaan."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Mengizinkan pemegang mengikat antarmuka tingkat tinggi dari suatu metode masukan. Tidak pernah diperlukan oleh apl normal."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"mengikat ke layanan aksesibilitas"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Mengizinkan pemegang untuk mengikat antarmuka tingkat tinggi dari suatu layanan. Tidak pernah diperlukan oleh aplikasi normal."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"meminta penjelajahan dengan sentuhan"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Memungkinkan pemegang meminta mode interaksi yang mana item yang disentuh diucapkan dengan keras dan UI dapat dijelajahi dengan isyarat."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"meminta aksesibilitas web yang disempurnakan"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Memungkinkan pemegang meminta pengaktifan penyempurnaan aksesibilitas web. Contohnya, memasang skrip agar konten aplikasi lebih mudah diakses."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"mengikat ke layanan SMS"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Mengizinkan pemegang mengikat antarmuka tingkat tinggi dari suatu layanan teks (mis. SpellCheckerService). Tidak pernah diperlukan oleh apl normal."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"mengikat ke layanan VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Mengizinkan apl mengelola kebijakan jaringan dan menentukan peraturan khusus apl."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"mengubah penghitungan penggunaan jaringan"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Mengizinkan apl memodifikasi cara penggunaan jaringan diperhitungkan terhadap apl. Tidak untuk digunakan oleh apl normal."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"mengakses pemberitahuan"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Mengizinkan aplikasi mengambil, memeriksa, dan menghapus pemberitahuan, termasuk pemberitahuan yang diposkan oleh aplikasi lain."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Setel aturan sandi"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Kontrol panjang dan karakter yang diizinkan dalam sandi pembuka layar."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Upaya pembukaan kunci layar monitor"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index b1c9625..87d21fe 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Archiviazione"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accesso all\'archivio USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accesso alla scheda SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funzioni di accessibilità"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funzioni che possono essere richieste dalla tecnologia di ausilio."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"disattivare o modificare la barra di stato"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Consente all\'applicazione di disattivare la barra di stato o di aggiungere e rimuovere icone di sistema."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"barra di stato"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Consente all\'applicazione di leggere i messaggi cell broadcast ricevuti dal dispositivo. Gli avvisi cell broadcast vengono trasmessi in alcune località per avvertire di eventuali situazioni di emergenza. Le applicazioni dannose potrebbero interferire con il rendimento o con il funzionamento del dispositivo quando si riceve un messaggio cell broadcast di emergenza."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"invio SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Consente all\'applicazione di inviare messaggi SMS. Ciò potrebbe comportare costi imprevisti. Applicazioni dannose potrebbero generare dei costi inviando messaggi senza la tua conferma."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"invio di messaggi SMS senza conferma"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Consente all\'applicazione di inviare messaggi SMS. Ciò potrebbe comportare costi imprevisti. Applicazioni dannose potrebbero generare dei costi inviando messaggi senza la tua conferma."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"invio di eventi di risposta tramite messaggio"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Consente all\'app di inviare richieste ad altre app di messaggi per gestire eventi di risposta tramite messaggio per le chiamate in arrivo."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"lettura messaggi di testo personali (SMS o MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Consente all\'applicazione di leggere i messaggi SMS memorizzati sul tablet o sulla scheda SIM. Ciò consente all\'applicazione di leggere tutti i messaggi SMS, indipendentemente dai contenuti o dal livello di riservatezza."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Consente all\'applicazione di leggere i messaggi SMS memorizzati sul telefono o sulla scheda SIM. Ciò consente all\'applicazione di leggere tutti i messaggi SMS, indipendentemente dai contenuti o dal livello di riservatezza."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Consente l\'associazione di un metodo di inserimento all\'interfaccia principale. Non dovrebbe mai essere necessaria per le normali applicazioni."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"collegamento a un servizio di accessibilità"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Consente al titolare di collegarsi all\'interfaccia di primo livello di un servizio di accessibilità. Non dovrebbe essere mai necessaria per le normali applicazioni."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"richiesta di esplorazione al tocco"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Consente al titolare di richiedere una modalità di interazione con cui gli elementi toccati vengono descritti tramite output vocale e l\'interfaccia utente può essere esplorata tramite gesti."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"richiesta di accessibilità web migliorata"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Consente al titolare di richiedere l\'attivazione dei miglioramenti dell\'accessibilità web, ad esempio l\'installazione di script per rendere più accessibili i contenuti dell\'app."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"associazione a un servizio di testo"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Consente al titolare di collegarsi all\'interfaccia di primo livello di un servizio di testo (ad esempio SpellCheckerService). Non dovrebbe essere mai necessaria per le normali applicazioni."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"associazione a un servizio VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Consente all\'applicazione di gestire le norme di rete e definire le regole specifiche delle applicazioni."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"modifica calcolo dell\'utilizzo della rete"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Consente all\'applicazione di modificare il calcolo dell\'utilizzo della rete tra le applicazioni. Da non usare per normali applicazioni."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"accesso a notifiche"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Consente all\'app di recuperare, esaminare e cancellare notifiche, comprese quelle pubblicate da altre app."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Imposta regole password"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Controlla la lunghezza e i caratteri ammessi nelle password di sblocco dello schermo."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Monitora tentativi di sblocco dello schermo"</string>
@@ -1284,7 +1280,7 @@
     <string name="tethered_notification_message" msgid="6857031760103062982">"Tocca per configurare."</string>
     <string name="back_button_label" msgid="2300470004503343439">"Indietro"</string>
     <string name="next_button_label" msgid="1080555104677992408">"Avanti"</string>
-    <string name="skip_button_label" msgid="1275362299471631819">"Salta"</string>
+    <string name="skip_button_label" msgid="1275362299471631819">"Ignora"</string>
     <string name="throttle_warning_notification_title" msgid="4890894267454867276">"Utilizzo dati cell. elevato"</string>
     <string name="throttle_warning_notification_message" msgid="3340822228599337743">"Tocca per ulteriori informazioni sull\'utilizzo dei dati del cellulare."</string>
     <string name="throttled_notification_title" msgid="6269541897729781332">"Limite dati cell. superato"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index c7140c6..d698a77 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"אחסון"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"גישה לאמצעי אחסון מסוג USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"גש לכרטיס SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"תכונות נגישות"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"תכונות שטכנולוגיה מסייעת יכולה לבקש."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"השבת או שנה את שורת המצב"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"מאפשר ליישום להשבית את שורת המצב או להוסיף ולהסיר סמלי מערכת."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"שורת מצב"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"מאפשר ליישום לקרוא הודעות שידור סלולרי שהתקבלו במכשיר שלך. התראות שידור סלולרי נשלחות במקומות מסוימים על מנת להזהיר אותך מפני מצבי חירום. יישומים זדוניים עשויים להפריע לביצועים או לפעולה של המכשיר שלך כאשר מתקבל שידור חירום סלולרי."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"שלוח הודעות SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"מאפשר ליישום לשלוח הודעות SMS. הדבר עשוי לגרום לחיובים בלתי צפויים. יישומים זדוניים עלולים לגרום לעלויות על ידי שליחת הודעות ללא אישורך."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"שלח הודעות SMS ללא אישור"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"מאפשר ליישום לשלוח הודעות SMS. הדבר עשוי לגרום לחיובים בלתי צפויים. יישומים זדוניים עלולים לגרום לעלויות על ידי שליחת הודעות ללא אישורך."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"שליחת אירועי \'תגובה באמצעות הודעה\'"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"מאפשר ליישום לשלוח בקשות ליישומים אחרים של העברת הודעות כדי לטפל באירועי \'תגובה באמצעות הודעה\' עבור שיחות נכנסות."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"קריאת הודעות הטקסט שלך (SMS או MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"מאפשר ליישום לקרוא הודעות SMS המאוחסנות בטאבלט או בכרטיס ה-SIM. דבר זה מתיר ליישום לקרוא את כל הודעות ה-SMS, ללא התחשבות בתוכן או בסודיות."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"מאפשר ליישום לקרוא הודעות SMS המאוחסנות בטלפון או בכרטיס ה-SIM. דבר זה מתיר ליישום לקרוא את כל הודעות ה-SMS, ללא התחשבות בתוכן או בסודיות."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"מאפשר למשתמש לבצע איגוד לממשק ברמה עליונה של שיטת קלט. הרשאה זו לעולם אינה נחוצה ליישומים רגילים."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"הכפפה לשירות נגישות"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"מתיר לבעלים להכפיף לממשק ברמה העליונה של שירות זמינות. הרשאה זו אף פעם אינה אמורה להיות נחוצה ליישומים רגילים."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"בקשת גילוי באמצעות מגע"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"מאפשר לבעלים לבקש מצב אינטראקציה שבו נגיעה בפריטים מלווה בהשמעת התיאור שלהם ושניתן לחקור בו את ה-UI באמצעות מחוות."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"בקשת נגישות משופרת לאינטרנט"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"מאפשר לבעלים לבקש הפעלה של שיפורי נגישות לאינטרנט. לדוגמה, התקנת סקריפטים כדי להגביר את הנגישות של תוכן יישומים."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"הכפפה לשירות טקסט"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"מאפשר למשתמש ליצור איגוד לממשק הרמה העליונה של שירות טקסט (למשל, SpellCheckerService). הרשאה זו לעולם אינה נחוצה ליישומים רגילים."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"אגד לשירות VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"מאפשר ליישום לנהל מדיניות הרשת להגדיר כללים ספציפיים-ליישום."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"שנה ניהול חשבונות של שימוש ברשת"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"הרשאה זו מאפשרת ליישום לשנות את אופן החישוב של נתוני שימוש ברשת מול כל יישום. לא מיועד לשימוש ביישומים רגילים."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"גישה להתראות"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"מאפשר ליישום לאחזר, לבדוק ולמחוק התראות, כולל כאלה שפורסמו על ידי יישומים אחרים."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"הגדר כללי סיסמה"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"שלוט באורך ובתווים המותרים בסיסמאות לביטול נעילת מסך."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"עקוב אחר ניסיונות לביטול נעילת מסך"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 9695e36..fb7ceb9 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"ストレージ"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USBストレージへのアクセス"</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SDカードにアクセスします。"</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"ユーザー補助機能"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"補助テクノロジーがリクエストできる機能です。"</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"ステータスバーの無効化や変更"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"ステータスバーの無効化、システムアイコンの追加や削除をアプリに許可します。"</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"ステータスバーへの表示"</string>
@@ -243,12 +241,12 @@
     <string name="permdesc_receiveMms" msgid="533019437263212260">"MMSメッセージの受信と処理をアプリに許可します。これにより、アプリが端末に届いたメッセージを表示することなく監視または削除できるようになります。"</string>
     <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"緊急放送の受信"</string>
     <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"緊急ブロードキャストメッセージの受信と処理をアプリに許可します。これはシステムアプリのみが利用できる権限です。"</string>
-    <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"エリアメールSMSの読み取り"</string>
-    <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"端末で受信したエリアメールSMSの読み取りをアプリに許可します。エリアメール警報は、緊急事態を警告する目的で一部の地域に配信されます。緊急エリアメールの受信時に、悪意のあるアプリによって端末の動作や処理が妨害される恐れがあります。"</string>
+    <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"緊急警報SMSの読み取り"</string>
+    <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"端末で受信した緊急警報SMSの読み取りをアプリに許可します。緊急警報は、緊急事態を警告する目的で一部の地域に配信されます。緊急警報の受信時に、悪意のあるアプリによって端末の動作や処理が妨害される恐れがあります。"</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"SMSメッセージの送信"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"SMSメッセージの送信をアプリに許可します。これにより、予期せぬ料金が発生する可能性があります。悪意のあるアプリが確認なしでメッセージを送信し、料金が発生する恐れがあります。"</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"確認せずにSMSメッセージを送信する"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"SMSメッセージの送信をアプリに許可します。これにより、予期せぬ料金が発生する可能性があります。悪意のあるアプリが確認なしでメッセージを送信し、料金が発生する恐れがあります。"</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"メッセージ応答イベントの送信"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"着信時にメッセージ応答イベントを処理するよう他のSMSアプリにリクエストを送信することをアプリに許可します。"</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"テキストメッセージ(SMSまたはMMS)の読み取り"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"タブレットまたはSIMカードに保存されているSMSメッセージの読み取りをアプリに許可します。これにより、すべてのSMSメッセージをコンテンツや機密性に関係なくアプリから読み取ることができるようになります。"</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"携帯端末またはSIMカードに保存されているSMSメッセージの読み取りをアプリに許可します。これにより、すべてのSMSメッセージをコンテンツや機密性に関係なくアプリから読み取ることができるようになります。"</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"入力方法のトップレベルインターフェースにバインドすることを所有者に許可します。通常のアプリでは不要です。"</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"ユーザー補助サービスにバインド"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"ユーザー補助サービスのトップレベルインターフェースにバインドすることを所有者に許可します。通常のアプリでは不要です。"</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"タッチガイドのリクエスト"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"触れたアイテムが読み上げられ、ジェスチャーでユーザーインターフェースのガイドを利用できる操作モードをリクエストすることを所有者に許可します。"</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"ウェブアクセシビリティ拡張のリクエスト"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"ウェブアクセシビリティの拡張の有効化をリクエストすることを所有者に許可します。たとえば、アプリコンテンツのアクセシビリティをもっと向上させるためにスクリプトをインストールできます。"</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"テキストサービスにバインド"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"テキストサービス(SpellCheckerServiceなど)のトップレベルインターフェースにバインドすることを所有者に許可します。通常のアプリでは不要です。"</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"VPNサービスにバインド"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"ネットワークポリシーを管理しアプリ固有のルールを定義することをアプリに許可します。"</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"ネットワークの課金の変更"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"アプリに対するネットワーク利用の計算方法を変更することをアプリに許可します。通常のアプリでは使用しません。"</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"通知にアクセス"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"通知(他のアプリから投稿されたものも含む)を取得、調査、クリアすることをアプリに許可します。"</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"パスワードルールの設定"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"画面ロック解除パスワードの長さと使用できる文字を制御します。"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"画面ロック解除試行の監視"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 9ee6559..53fbeb4 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"저장"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB 저장소에 액세스합니다."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD 카드에 액세스합니다."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"접근성 기능"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"장애인 보조 기술이 요청할 수 있는 기능입니다."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"상태 표시줄 사용 중지 또는 수정"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"앱이 상태 표시줄을 사용중지하거나 시스템 아이콘을 추가 및 제거할 수 있도록 허용합니다."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"상태 표시줄"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"앱이 기기가 수신한 셀 브로드캐스트 메시지를 읽을 수 있도록 합니다. 비상 상황임을 알리기 위해 일부 지역에서 셀 브로드캐스트 경고가 전달됩니다. 비상 셀 브로드캐스트를 수신할 때 악성 앱이 기기의 성능이나 작동을 방해할 수 있습니다."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"SMS 메시지 보내기"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"앱이 SMS 메시지를 보낼 수 있도록 허용합니다. 이 경우 예상치 못한 통화 요금이 부과될 수 있습니다. 이 경우 악성 앱이 사용자의 확인 없이 메시지를 전송해 요금이 부과될 수 있습니다."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"확인 없이 SMS 메시지 보내기"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"앱이 SMS 메시지를 보낼 수 있도록 허용합니다. 이 경우 예상치 못한 통화 요금이 부과될 수 있습니다. 이 경우 악성 앱이 사용자의 확인 없이 메시지를 전송해 요금이 부과될 수 있습니다."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"메시지를 통한 응답 이벤트 보내기"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"앱에서 다른 메시징 앱에 요청을 보내어 수신 전화에 대해 메시지를 통한 응답 이벤트를 처리하도록 허용합니다."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"내 문자 메시지 읽기(SMS 또는 MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"앱이 태블릿 또는 SIM 카드에 저장된 SMS 메시지를 읽을 수 있도록 허용합니다. 이렇게 하면 앱이 콘텐츠 또는 비밀유지와 관계 없이 모든 SMS 메시지를 읽을 수 있습니다."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"앱이 휴대전화 또는 SIM 카드에 저장된 SMS 메시지를 읽을 수 있도록 허용합니다. 이렇게 하면 앱이 콘텐츠 또는 비밀유지와 관계 없이 모든 SMS 메시지를 읽을 수 있습니다."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"권한을 가진 프로그램이 입력 방법에 대한 최상위 인터페이스를 사용하도록 허용합니다. 일반 앱에는 필요하지 않습니다."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"접근성 서비스와 연결"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"권한을 가진 프로그램이 접근성 서비스에 대한 최상위 인터페이스를 사용하도록 허용합니다. 일반 앱에는 필요하지 않습니다."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"\'터치하여 탐색\' 요청"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"권한을 가진 프로그램이 터치한 항목을 소리내어 말하고 제스처로 UI를 탐색할 수 있는 상호작용 모드를 요청할 수 있도록 허용합니다."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"웹 접근성 개선 요청"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"권한을 가진 프로그램이 웹 접근성 개선을 요청할 수 있도록 허용합니다. 예를 들어 스크립트를 설치하여 앱 콘텐츠에 더 간편하게 액세스할 수 있습니다."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"텍스트 서비스 연결"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"권한을 가진 프로그램이 텍스트 서비스(예: SpellCheckerService)에 대한 최상위 인터페이스를 사용하도록 허용합니다. 일반 앱에는 필요하지 않습니다."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"VPN 서비스와 연결"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"앱이 네트워크 정책을 관리하고 앱별 규칙을 정의할 수 있도록 허용합니다."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"네트워크 사용량 계산 수정"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"애플리케이션이 애플리케이션의 네트워크 사용량을 계산하는 방식을 수정할 수 있도록 허용합니다. 일반 애플리케이션에서는 사용하지 않습니다."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"알림 액세스"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"앱이 다른 앱에서 게시한 알림을 비롯하여 알림을 검색하고 살펴보며 삭제할 수 있도록 허용합니다."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"비밀번호 규칙 설정"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"화면 잠금해제 비밀번호에 허용되는 길이 및 문자 수를 제어합니다."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"화면 잠금해제 시도 모니터링"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index de79c33..3b6e440 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Saugykla"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Pasiekti USB atmintinę."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Pasiekite SD kortelę."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Pritaikymo neįgaliesiems funkcijos"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funkcijos, kurių užklausas gali teikti pagalbinė technologija."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"išjungti ar keisti būsenos juostą"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Leidžiama programai neleisti būsenos juostos arba pridėti ir pašalinti sistemos piktogramas."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"būsenos juosta"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Programai leidžiama skaityti mobiliuoju transliuojamus pranešimus, gaunamus jūsų įrenginyje. Mobiliuoju transliuojami įspėjimai pristatomi kai kuriose vietose, kad įspėtų apie kritines situacijas. Kai gaunamas  mobiliuoju transliuojamas pranešimas apie kritinę situaciją, kenkėjiškos programos gali trukdyti įrenginiui veikti ar jį naudoti."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"siųsti SMS pranešimus"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Leidžiama programai siųsti SMS pranešimus. Dėl to gali atsirasti nenumatytų apmokestinimų. Kenkėjiškos programos gali siųsti mokamus pranešimus be jūsų patvirtinimo."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"siųsti SMS pranešimus be patvirtinimo"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Leidžiama programai siųsti SMS pranešimus. Dėl to gali atsirasti nenumatytų apmokestinimų. Kenkėjiškos programos gali siųsti mokamus pranešimus be jūsų patvirtinimo."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"siųsti atsakymų pranešimu įvykius"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Programai leidžiama siųsti užklausas į kitas susirašinėjimo pranešimais programas, kad būtų galima apdoroti atsakymų pranešimu įvykius, susijusius su gaunamaisiais skambučiais."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"skaityti teksto pranešimus (SMS arba MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Leidžiama programai skaityti planšetiniame kompiuteryje ar SIM kortelėje saugomus SMS pranešimus. Taip programai leidžiama skaityti visus SMS pranešimus, neatsižvelgiant į turinį ar konfidencialumą."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Leidžiama programai skaityti telefone ar SIM kortelėje saugomus SMS pranešimus. Taip programai leidžiama skaityti visus SMS pranešimus, neatsižvelgiant į turinį ar konfidencialumą."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Leidžiama savininką susaistyti su įvesties metodo aukščiausio lygio sąsaja. Įprastoms programoms to neturėtų prireikti."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"susisaistyti su pasiekiamumo paslauga"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Savininkui leidžiama susisaistyti su aukščiausio lygio pasiekiamumo paslaugos sąsaja. Įprastoms programoms to neturėtų prireikti."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"pateikti užklausą dėl naršymo palietus"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Leidžiama pateikti užklausą dėl sąveikos režimo, kuriam veikiant garsiai pasakomi paliesti elementai ir palietimu galima tyrinėti naudotojo sąsają."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"pateikti užklausą dėl patobulintos prieigos prie žiniatinklio"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Leidžiama pateikti užklausą dėl žiniatinklio pritaikymo neįgaliesiems patobulinimų įgalinimo. Pavyzdžiui, pateikti užklausą dėl scenarijų diegimo, kad programos turinys būtų geriau pritaikytas neįgaliesiems."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"priskirti teksto paslaugą"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Leidžiama savininkui priskirti aukščiausio lygio teksto paslaugos (pvz., „SpellCheckerService“) sąsają. Įprastoms programoms to neturėtų prireikti."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"susaistyti su VPN paslauga"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Leidžiama programai valdyti tinklo politiką ir apibrėžti konkrečios programos taisykles."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"keisti tinklo naudojimo apskaitą"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Leidžiama programai keisti, kaip tinklas naudojamas, palyginti su programomis. Neskirta naudoti įprastoms programoms."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"pasiekti pranešimus"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Programai leidžiama gauti, patikrinti ir išvalyti pranešimus, įskaitant pranešimus, kuriuos paskelbė kitos programos."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Nustatyti slaptažodžio taisykles"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Valdyti leidžiamą ekrano atrakinimo slaptažodžių ilgį ir leidžiamus naudoti simbolius."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Stebėti bandymus atrakinti ekraną"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 1e3722b..646b7fa 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Krātuve"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Piekļūst USB krātuvei."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Piekļūstiet SD kartei."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Pieejamības funkcijas"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funkcijas, kuras palīgtehnoloģija var pieprasīt."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"atspējot vai pārveidot statusa joslu"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Ļauj lietotnei atspējot statusa joslu vai pievienot un noņemt sistēmas ikonas."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"statusa josla"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Ļauj lietotnei lasīt ierīcē saņemtos šūnu apraides ziņojumus. Šūnu apraides brīdinājumi tiek piegādāti dažās atrašanās vietās, lai brīdinātu jūs par ārkārtas situācijām. Ļaunprātīgas lietotnes var traucēt ierīces veiktspēju vai darbības, kad ir saņemts ārkārtas šūnas apraides ziņojums."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"sūtīt īsziņas"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Ļauj lietotnei sūtīt īsziņas. Tas var radīt neparedzētas izmaksas. Ļaunprātīgas lietotnes var radīt jums izmaksas, sūtot ziņojumus bez jūsu apstiprinājuma."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"īsziņu sūtīšana bez apstiprinājuma"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Ļauj lietotnei sūtīt īsziņas. Tas var radīt neparedzētas izmaksas. Ļaunprātīgas lietotnes var radīt jums izmaksas, sūtot ziņojumus bez jūsu apstiprinājuma."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"nosūtīt “atbildēt ziņojumā” notikumus"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Ļauj lietotnei nosūtīt pieprasījumus citām ziņojumapmaiņas lietotnēm par “atbildēt ziņojumā” notikumu apstrādi ienākošajiem zvaniem."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"lasīt ziņojumus (SMS vai MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Ļauj lietotnei lasīt planšetdatorā vai SIM kartē saglabātās īsziņas. Tas ļauj lietotnei lasīt visas īsziņas, neraugoties uz to saturu vai konfidencialitāti."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Ļauj lietotnei lasīt tālrunī vai SIM kartē saglabātās īsziņas. Tas ļauj lietotnei lasīt visas īsziņas, neraugoties uz to saturu vai konfidencialitāti."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Ļauj īpašniekam izveidot saiti ar ievades metodes augstākā līmeņa saskarni. Parastajām lietotnēm tas nekad nav nepieciešams."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"saistīt ar pieejamības pakalpojumu"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Ļauj īpašniekam izveidot saiti ar pieejamības pakalpojuma augšējā līmeņa saskarni. Parastajām lietotnēm šī atļauja nav nepieciešama."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"pieprasīt funkciju “Pārlūkot pieskaroties”"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Ļauj pieprasīt mijiedarbības režīmu. Izmantojot šo režīmu, vienumi, kuriem pieskaraties, tiek izrunāti skaļi, un lietotāja saskarni var pārlūkot ar žestiem."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"pieprasīt uzlabotu tīmekļa pieejamību"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Ļauj pieprasīt tīmekļa pieejamības uzlabojumu iespējošanu, piemēram, ļauj instalēt skriptus, lai padarītu lietotnes saturu pieejamāku."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"saistīt ar īsziņu pakalpojumu"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Ļauj īpašniekam veikt saistīšanu ar īsziņu pakalpojuma augstākā līmeņa saskarni (piem., SpellCheckerService). Parastajām lietotnēm tas nekad nav nepieciešams."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"saistīt ar VPN pakalpojumu"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Ļauj lietotnei pārvaldīt tīkla politikas un noteikt lietotnes kārtulas."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"Tīkla lietojuma uzskaites mainīšana"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Ļauj lietotnei mainīt to, kā tīkla lietojums tiek uzskaitīts saistībā ar lietotnēm. Atļauja neattiecas uz parastām lietotnēm."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"piekļuve paziņojumiem"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Ļauj lietotnei izgūt, pārbaudīt un dzēst paziņojumus, tostarp lietotņu publicētos paziņojumus."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Paroles kārtulu iestatīšana"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Kontrolē ekrāna atbloķēšanas parolē atļautās rakstzīmes un garumu."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Ekrāna atbloķēšanas mēģinājumu pārraudzīšana"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 049aa9b..784a424 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Storan"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Akses storan USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Akses kad SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Ciri kebolehaksesan"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Ciri yang boleh diminta oleh teknologi bantuan."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"lumpuhkan atau ubah suai bar status"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Membenarkan apl melumpuhkan bar status atau menambah dan mengalih keluar ikon sistem."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"bar status"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Membolehkan apl membaca mesej siaran sel yang diterima oleh peranti anda. Isyarat siaran sel dihantar di beberapa lokasi untuk memberi amaran kepada anda tentang situasi kecemasan. Apl hasad boleh mengganggu prestasi atau operasi peranti anda apabila siaran sel kecemasan diterima."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"hantar mesej SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Membenarkan apl menghantar mesej SMS. Ini boleh menyebabkan caj di luar jangkaan. Apl hasad boleh membuat anda kerugian wang dengan menghantar mesej tanpa pengesahan anda."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"hantar mesej SMS tanpa pengesahan"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Membenarkan apl menghantar mesej SMS. Ini boleh menyebabkan caj di luar jangkaan. Apl hasad boleh membuat anda kerugian wang dengan menghantar mesej tanpa pengesahan anda."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"acara hantar respons-melalui-mesej"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Membenarkan apl menghantar permintaan kepada apl permesejan lain untuk mengendalikan acara respons-melalui-mesej untuk panggilan masuk."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"baca mesej teks anda (SMS atau MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Membenarkan apl membaca mesej SMS yang tersimpan pada tablet atau kad SIM anda. Ini membenarkan apl membaca semua mesej SMS, tanpa mengira kandungan atau kerahsiaan."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Membenarkan apl membaca mesej SMS yang tersimpan pada telefon atau kad SIM anda. Ini membenarkan apl membaca semua mesej SMS, tanpa mengira kandungan atau kerahsiaan."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Membenarkan pemegang terikat dengan antara muka peringkat tertinggi bagi kaedah input itu. Tidak sekali-kali diperlukan untuk apl biasa."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"terikat kepada perkhidmatan yang boleh diakses"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Membenarkan pemegang terikat dengan antara muka peringkat tertinggi bagi perkhidmatan yang boleh diakses. Tidak sekali-kali diperlukan untuk apl biasa."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"minta jelajah melalui sentuhan"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Membenarkan pengguna untuk meminta mod interaksi agar item yang disentuh disebut dengan kuat dan UI boleh dijelajahi melalui gerak isyarat."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"minta kebolehaksesan web dipertingkatkan"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Membenarkan pengguna untuk meminta mendayakan penambahbaikan kebolehaksesan web. Sebagai contoh, memasang skrip untuk menjadikan kandungan apl lebih mudah diakses."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"terikat kepada perkhidmatan teks"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Membenarkan pemegang mengikat kepada antara muka peringkat atasan perkhidmatan teks(mis. PerkhidmatanPenyemakEjaan). Tidak seharusnya diperlukan untuk apl biasa."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"terikat kepada perkhidmatan VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Membenarkan apl mengurus dasar rangkaian dan menentukan peraturan khusus apl."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"ubah suai perakaunan penggunaan rangkaian"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Membenarkan apl untuk mengubah suai bagaimana penggunaan rangkaian diambil kira terhadap apl. Bukan untuk digunakan oleh apl biasa."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"pemberitahuan akses"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Membenarkan apl untuk mendapatkan semula, memeriksa dan memadam bersih pemberitahuan, termasuk yang disiarkan oleh apl lain."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Tetapkan peraturan kata laluan"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Mengawal panjang dan aksara yang dibenarkan dalam kata laluan buka kunci skrin."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Memantau percubaan buka kunci skrin"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index d568069..485a11f8 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Lagring"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Tilgang til USB-lagring."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Tilgang til minnekortet."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Tilgjengelighetsfunksjoner"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funksjoner støttende teknologi kan be om."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"deaktivere eller endre statusfeltet"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Lar appen deaktivere statusfeltet eller legge til og fjerne systemikoner."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"statusrad"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Tillater at appen kan lese kringkastede meldinger enheten din mottar. Kringkastede varsler leveres noen steder for å advare deg om nødsituasjoner. Skadelige apper kan forstyrre ytelsen eller funksjonen til enheten din når en kringkastet nødmelding mottas."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"sende SMS-meldinger"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Lar appen sende tekstmeldinger. Dette kan resultere i uventede kostnader. Merk at skadelige apper kan påføre deg kostnader ved å sende meldinger uten bekreftelse fra deg."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"send tekstmeldinger uten godkjenning"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Lar appen sende tekstmeldinger. Dette kan resultere i uventede kostnader. Merk at skadelige apper kan påføre deg kostnader ved å sende meldinger uten bekreftelse fra deg."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"send svar via melding-hendelser"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Lar appen sende forespørsler om håndtering av svar via melding-hendelser for innkommende anrop til andre meldingsapper."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"leser tekstmeldinger (SMS eller MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Lar appen lese tekstmeldinger lagret på nettbrettet eller SIM-kortet ditt. Dette lar appen lese alle tekstmeldingene dine, uavhengig av innhold og konfidensialitet."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Lar appen lese tekstmeldinger lagret på telefonen eller SIM-kortet ditt. Dette lar appen lese alle tekstmeldingene dine, uavhengig av innhold og konfidensialitet."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Lar innehaveren binde det øverste nivået av grensesnittet til en inndatametode. Skal aldri være nødvendig for normale apper."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"binde seg til en tilgjengelighetstjeneste"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Gir innehaveren tillatelse til å bindes til det øverste nivået av grensesnittet for en tilgjengelighetstjeneste. Skal aldri være nødvendig for vanlige apper."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"be om utforsking ved berøring"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Tillater brukeren å be om en interaksjonsmodus der berørte elementer sies høyt, og brukergrensesnittet kan utforskes med bevegelser."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"be om forbedret nettilgjengelighet"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Tillater brukeren å be om aktivering av forbedret nettilgjengelighet. Dette kan for eksempel være installasjon av skript for å gjøre appinnhold mer tilgjengelig."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"binde til en teksttjeneste"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Lar innehaveren binde seg til øverste grensesnittnivå for en teksttjeneste (f.eks. SpellCheckerService). Skal aldri være nødvendig for vanlige apper."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"binde deg til en VPN-tjeneste"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Lar appen administrere retningslinjene for nettverket og definere appspesifikke regler."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"Modifisering av regnskapsføring av nettverksbruk"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Lar appen endre hvordan nettverksbruk regnes ut for apper. Ikke beregnet på vanlige apper."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"varseltilgang"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Lar appen hente, gjennomgå og fjerne varsler, inkludert de som sendes fra andre apper."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Angi passordregler"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Kontroller tillatt lengde og tillatte tegn i passord for opplåsing av skjerm."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Overvåk forsøk på opplåsing av skjerm"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index a914e21..95da93b 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Opslagruimte"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Toegang krijgen tot USB-opslag."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Toegang tot de SD-kaart."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Toegankelijkheidsfuncties"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Functies die kunnen worden aangevraagd door ondersteunende technologie."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"statusbalk uitschakelen of wijzigen"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Hiermee kan de app de statusbalk uitschakelen of systeempictogrammen toevoegen en verwijderen."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"statusbalk"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Toestaan dat de app infodienstberichten leest die worden ontvangen op uw apparaat. Infodienstberichten worden verzonden naar bepaalde locaties om u te waarschuwen voor noodsituaties. Schadelijke apps kunnen de prestaties of verwerking van uw apparaat verstoren wanneer een infodienstbericht wordt ontvangen."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"SMS-berichten verzenden"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Hiermee kan de app sms-berichten verzenden. Dit kan tot onverwachte kosten leiden. Schadelijke apps kunnen u geld kosten doordat ze zonder uw bevestiging berichten kunnen verzenden."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"zonder toestemming sms\'jes verzenden"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Hiermee kan de app sms-berichten verzenden. Dit kan tot onverwachte kosten leiden. Schadelijke apps kunnen u geld kosten doordat ze zonder uw bevestiging berichten kunnen verzenden."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"gebeurtenissen voor reageren-via-berichten verzenden"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Hiermee kan de app verzoeken verzenden aan andere bericht-apps om gebeurtenissen voor reageren-via-berichten voor inkomende oproepen te verwerken."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"uw tekstberichten (SMS of MMS) lezen"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Hiermee kan de app sms-berichten lezen die zijn opgeslagen op uw tablet of simkaart. De app kan alle sms-berichten lezen, ongeacht inhoud of vertrouwelijkheid."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Hiermee kan de app sms-berichten lezen die zijn opgeslagen op uw telefoon of simkaart. De app kan alle sms-berichten lezen, ongeacht inhoud of vertrouwelijkheid."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Hiermee kan de houder zich verbinden met de hoofdinterface van een invoermethode. Nooit vereist voor normale apps."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"koppelen aan een toegankelijkheidsservice"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Hiermee wordt de houder toegestaan verbinding te maken met de hoofdinterface van een toegankelijkheidsservice. Nooit vereist voor normale apps."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"verkennen via aanraking aanvragen"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Hiermee kan de houder een interactiemodus aanvragen waarin aangeraakte items worden uitgesproken en de gebruikersinterface kan worden bediend met gebaren."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"verbeterde internettoegankelijkheid aanvragen"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Hiermee kan de houder het inschakelen van verbeteringen voor internettoegankelijkheid aanvragen. Bijvoorbeeld scripts installeren om app-inhoud toegankelijker te maken."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"koppelen aan een sms-service"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Hiermee kan de gebruiker koppelen met de hoofdinterface van een tekstservice (zoals SpellCheckerService). Dit is niet nodig voor normale apps."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"koppelen aan een VPN-service"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Hiermee kan de app het netwerkbeleid beheren en app-specifieke regels definiëren."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"verrekening van netwerkgebruik aanpassen"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Hiermee kan een app aanpassen hoe het netwerkgebruik wordt toegekend aan apps. Dit wordt niet gebruikt door normale apps."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"toegang tot meldingen"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Hiermee kan de app meldingen ophalen, onderzoeken en wissen, waaronder meldingen die zijn verzonden door andere apps."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Wachtwoordregels instellen"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"De lengte en tekens beheren die zijn toegestaan in wachtwoorden voor schermontgrendeling."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Pogingen voor schermontgrendeling bijhouden"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 81caee1..f15c106 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Pamięć"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Dostęp do nośnika USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Dostęp do karty SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funkcje ułatwień dostępu"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funkcje, których może zażądać technologia ułatwień dostępu."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"wyłączanie lub zmienianie paska stanu"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Pozwala aplikacji na wyłączanie paska stanu oraz dodawanie i usuwanie ikon systemowych."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"pasek stanu"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Zezwala aplikacji na odczyt wiadomości z sieci komórkowej odebranych na urządzeniu. Alerty sieci komórkowej są dostarczane w niektórych lokalizacjach w celu ostrzeżenia Cię o sytuacjach alarmowych. Złośliwe aplikacje mogą wpływać na wydajność lub zakłócać działanie urządzenia po odebraniu wiadomości alarmowej z sieci komórkowej."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"wysyłanie wiadomości SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Pozwala aplikacji na wysyłanie SMS-ów. Może to skutkować nieoczekiwanymi opłatami. Złośliwe aplikacje mogą generować koszty, wysyłając wiadomości bez Twojego potwierdzenia."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"wysyłanie wiadomości SMS bez potwierdzenia"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Pozwala aplikacji na wysyłanie SMS-ów. Może to skutkować nieoczekiwanymi opłatami. Złośliwe aplikacje mogą generować koszty, wysyłając wiadomości bez Twojego potwierdzenia."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"wysyłanie zdarzeń odpowiedzi przez SMS"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Zezwala aplikacjom na wysyłanie żądań do innych aplikacji komunikacyjnych w celu obsługi zdarzeń odpowiedzi przez SMS dla połączeń przychodzących."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"odczytywanie wiadomości tekstowych (SMS i MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Pozwala aplikacji na odczyt SMS-ów zapisanych na tablecie lub na karcie SIM. Aplikacja z tym uprawnieniem może czytać wszystkie SMS-y niezależnie od ich treści lub poufności."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Pozwala aplikacji na odczyt SMS-ów zapisanych na telefonie lub na karcie SIM. Aplikacja z tym uprawnieniem może czytać wszystkie SMS-y niezależnie od ich treści lub poufności."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Pozwala na powiązanie wybranego sposobu wprowadzania tekstu z interfejsem najwyższego poziomu. To uprawnienie nie powinno być nigdy wymagane przez zwykłe aplikacje."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"tworzenie powiązania z usługą ułatwień dostępu"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Zezwala na tworzenie powiązania z interfejsem najwyższego poziomu usługi ułatwień dostępu. Nieprzeznaczone dla zwykłych aplikacji."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"żądanie dotyczące czytania dotykiem"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Pozwala właścicielowi zażądać włączenia trybu interaktywnego, w którym nazwy klikniętych elementów są wypowiadane na głos, a po interfejsie można poruszać się gestami."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"żądanie dotyczące dodatkowych ułatwień dostępu w internecie"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Pozwala właścicielowi zażądać włączenia internetowych funkcji ułatwień dostępu. Może to być np. zainstalowanie skryptów, które sprawią, że treść aplikacji będzie łatwiej dostępna."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"tworzenie powiązania z usługą tekstową"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Pozwala na tworzenie powiązania z interfejsem najwyższego poziomu usługi tekstowej (np. SpellCheckerService). Nie powinno być nigdy potrzebne w przypadku zwykłych aplikacji."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"tworzenie powiązania z usługą VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Pozwala aplikacji na zarządzanie zasadami dotyczącymi sieci i definiowanie reguł aplikacji."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"modyfikowanie sposobu naliczania użycia sieci"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Pozwala aplikacji na zmienianie sposobu rozliczania wykorzystania sieci przez aplikacje. Nieprzeznaczone dla zwykłych aplikacji."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"dostęp do powiadomień"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Umożliwia aplikacji pobieranie, sprawdzanie i usuwanie powiadomień, także tych, które pochodzą z innych aplikacji."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Określ reguły hasła"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Kontrolowanie długości haseł odblokowania ekranu i dozwolonych w nich znaków"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Monitoruj próby odblokowania ekranu"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 6629fd1..186eb3e 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Armazenamento"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Aceder ao armazenamento USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Aceder ao cartão SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funcionalidades de acessibilidade"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funcionalidades que a tecnologia de apoio pode solicitar."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"desactivar ou modificar barra de estado"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Permite à aplicação desativar a barra de estado ou adicionar e remover ícones do sistema."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"barra de estado"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Permite que a aplicação leia mensagens de transmissão celular recebidas pelo seu dispositivo. Os alertas de transmissão celular são fornecidos em algumas localizações para avisá-lo sobre situações de emergência. As aplicações maliciosas podem interferir com o desempenho ou funcionamento do seu dispositivo quando for recebida uma transmissão celular de emergência."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"enviar mensagens SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Permite que a aplicação envie mensagens SMS. Isto pode resultar em custos inesperados. As aplicações maliciosas podem fazer com que incorra em custos, enviando mensagens sem a sua confirmação."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviar mensagens SMS sem confirmação"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Permite que a aplicação envie mensagens SMS. Isto pode resultar em custos inesperados. As aplicações maliciosas podem fazer com que incorra em custos, enviando mensagens sem a sua confirmação."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"enviar eventos de resposta-via-mensagem"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Permite à aplicação enviar pedidos a outras aplicações de mensagens para processar eventos de resposta-via-mensagem para as chamadas recebidas."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"ler as mensagens de texto (SMS ou MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Permite que a aplicação leia mensagens SMS guardadas no tablet ou no cartão SIM. Permite que a aplicação leia todas as mensagens SMS, independentemente do conteúdo ou da confidencialidade das mesmas."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Permite que a aplicação leia mensagens SMS guardadas no telemóvel ou no cartão SIM. Permite que a aplicação leia todas as mensagens SMS, independentemente do conteúdo ou da confidencialidade das mesmas."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Permite ao titular vincular-se à interface de nível superior de um método de entrada. Nunca deve ser necessário para aplicações normais."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"vincular a um serviço de acessibilidade"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Permite que o titular vincule a interface de nível superior de um serviço de acessibilidade. Nunca deverá ser necessário para aplicações normais."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"solicitar exploração por toque"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Permite ao Hoder solicitar um modo de interação em que os itens tocados são falados em voz alta e a IU pode ser explorada através de gestos."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"solicitar acessibilidade Web melhorada"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Permite ao Hoder solicitar a ativação de melhoramentos de acessibilidade Web. Por exemplo, a instalação de scripts do Google para tornar o conteúdo das aplicações mais acessível."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"vincular a um serviço de texto"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Permite ao titular ligar-se à interface de nível superior de um serviço de texto (por exemplo SpellCheckerService). Nunca deverá ser necessário para aplicações normais."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"vincular a um serviço VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Permite que a aplicação faça a gestão de políticas de rede e defina regras específicas de aplicações."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"modificar contabilização da utilização da rede"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Permite que a aplicação modifique o modo como a utilização da rede é contabilizada em relação a aplicações. Nunca é necessário para aplicações normais."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"aceder às notificações"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Permite que a aplicação obtenha, examine e limpe notificações, incluindo as que foram publicadas por outras aplicações."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Definir regras de palavra-passe"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Controlar o comprimento e os caracteres permitidos nas palavras-passe de desbloqueio do ecrã."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Monitorizar tentativas de desbloqueio do ecrã"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 71ef30d..a2c6675 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Armazenamento"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Acessa o armazenamento USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Acessar o cartão SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Recursos de acessibilidade"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Recursos que a tecnologia assistencial pode solicitar."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"desativar ou modificar a barra de status"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Permite que o aplicativo desative a barra de status ou adicione e remova ícones do sistema."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"barra de status"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Permite que o aplicativo leia mensagens de difusão celular recebidas por seu dispositivo. Alertas de difusão celular são recebidos em alguns locais para avisar você de situações de emergência. Aplicativos maliciosos podem interferir no desempenho ou funcionamento de seu dispositivo quando uma difusão celular de emergência é recebida."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"enviar mensagens SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Permite que o aplicativo envie mensagens SMS. Isso pode resultar em cobranças inesperadas. Aplicativos maliciosos podem gerar custos através do envio de mensagens sem sua confirmação."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviar mensagens SMS sem confirmação"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Permite que o aplicativo envie mensagens SMS. Isso pode resultar em cobranças inesperadas. Aplicativos maliciosos podem gerar custos através do envio de mensagens sem sua confirmação."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"enviar eventos de resposta por mensagem"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Permite que o aplicativo envie solicitações a outros aplicativos de mensagens para processar eventos de resposta por mensagem para chamadas recebidas."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"ler suas mensagens de texto (SMS ou MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Permite que o aplicativo leia mensagens SMS armazenadas no tablet ou cartão SIM. Isso permite que o aplicativo leia todas as mensagens SMS, independentemente de seu conteúdo ou confidencialidade."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Permite que o aplicativo leia mensagens SMS armazenadas no telefone ou cartão SIM. Isso permite que o aplicativo leia todas as mensagens SMS, independentemente de seu conteúdo ou confidencialidade."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Permite que o proprietário utilize a interface de nível superior de um método de entrada. Nunca deve ser necessário para aplicativos normais."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"usar um serviço de acessibilidade"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Permite que o proprietário use a interface de nível superior de um serviço de acessibilidade. Nunca deve ser necessário para aplicativos comuns."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"solicitar explorar por toque"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Permite ao proprietário solicitar um modo de interação em que os itens tocados são falados em voz alta e a interface do usuário pode ser explorada com gestos."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"solicitar acessibilidade melhorada da Web"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Permite ao proprietário solicitar melhorias na acessibilidade da Web. Por exemplo, a instalação de scripts para tornar o conteúdo de aplicativos mais acessível."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"sujeitar-se a um serviço de texto"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Permite que o proprietário utilize interface de nível superior de um serviço de texto (por exemplo, SpellCheckerService). Nunca deve ser necessário para aplicativos normais."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"se ligam a um serviço de VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Permite que o aplicativo gerencie políticas de rede e definia regras específicas para o aplicativo."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"modificar contagem de uso da rede"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Permite que o aplicativo modifique como o uso da rede é contabilizado em relação aos aplicativos. Não deve ser usado em aplicativos normais."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"acessar notificações"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Permite que o aplicativo recupere, examine e limpe notificações, inclusive as postadas por outros aplicativos."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Definir regras para senha"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Controle o tamanho e os caracteres permitidos nas senhas de desbloqueio de tela."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Monitorar tentativas de desbloqueio da tela"</string>
diff --git a/core/res/res/values-rm/strings.xml b/core/res/res/values-rm/strings.xml
index 67e5576..53729f7 100644
--- a/core/res/res/values-rm/strings.xml
+++ b/core/res/res/values-rm/strings.xml
@@ -346,9 +346,9 @@
     <string name="permlab_sendSms" msgid="5600830612147671529">"trametter messadis SMS"</string>
     <!-- no translation found for permdesc_sendSms (7094729298204937667) -->
     <skip />
-    <!-- no translation found for permlab_sendSmsNoConfirmation (4781483105951730228) -->
+    <!-- no translation found for permlab_sendRespondViaMessageRequest (8713889105305943200) -->
     <skip />
-    <!-- no translation found for permdesc_sendSmsNoConfirmation (402569800862935907) -->
+    <!-- no translation found for permdesc_sendRespondViaMessageRequest (7107648548468778734) -->
     <skip />
     <!-- no translation found for permlab_readSms (8745086572213270480) -->
     <skip />
@@ -1032,6 +1032,10 @@
     <skip />
     <!-- no translation found for permdesc_modifyNetworkAccounting (5443412866746198123) -->
     <skip />
+    <!-- no translation found for permlab_accessNotifications (7673416487873432268) -->
+    <skip />
+    <!-- no translation found for permdesc_accessNotifications (458457742683431387) -->
+    <skip />
     <!-- no translation found for policylab_limitPassword (4497420728857585791) -->
     <skip />
     <!-- no translation found for policydesc_limitPassword (3252114203919510394) -->
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index a2366d3..e6d142b 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Stocare"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accesează stocarea USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accesează cardul SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funcții de accesibilitate"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funcții pe care tehnologia de asistare le poate solicita."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"dezactivare sau modificare bare de stare"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Permite aplicaţiei să dezactiveze bara de stare sau să adauge şi să elimine pictograme de sistem."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"bară de stare"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Permite aplicaţiei să citească mesajele primite prin transmisie celulară de dispozitivul dvs. Alertele cu transmisie celulară sunt difuzate în unele locaţii pentru a vă avertiza cu privire la situaţiile de urgenţă. Aplicaţiile rău intenţionate pot afecta performanţa sau funcţionarea dispozitivului dvs. când este primită o transmisie celulară de urgenţă."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"trimitere mesaje SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Permite aplicaţiei să trimită mesaje SMS, ceea ce ar putea determina apariţia unor taxe neaşteptate. Aplicaţiile rău intenţionate pot acumula costuri prin trimiterea mesajelor fără confirmarea dvs."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"trimitere mesaje SMS fără confirmare"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Permite aplicaţiei să trimită mesaje SMS, ceea ce ar putea determina apariţia unor taxe neaşteptate. Aplicaţiile rău intenţionate pot acumula costuri prin trimiterea mesajelor fără confirmarea dvs."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"trimitere de evenimente de tipul „răspuns prin mesaj”"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Permite aplicației să trimită solicitări altor aplicații de mesagerie pentru a gestiona evenimentele de tipul „răspuns prin mesaj” pentru apelurile primite."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"citeşte mesajele text (SMS sau MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Permite aplicaţiei să citească mesajele SMS stocate pe tabletă sau pe cardul SIM. În acest fel, aplicaţia poate citi toate mesajele SMS, indiferent de conţinutul sau de gradul de confidenţialitate al acestora."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Permite aplicaţiei să citească mesajele SMS stocate pe telefon sau pe cardul SIM. În acest fel, aplicaţia poate citi toate mesajele SMS, indiferent de conţinutul sau de gradul de confidenţialitate al acestora."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Permite proprietarului să se conecteze la interfaţa de nivel superior a unei metode de introducere. Nu ar trebui să fie niciodată necesară pentru aplicaţiile obişnuite."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"conectare la un serviciu de accesibilitate"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Permite proprietarului să se conecteze la interfaţa de nivel superior a unui serviciu de accesibilitate. Nu ar trebui să fie niciodată necesară pentru aplicaţiile obişnuite."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"solicitare de explorare prin atingere"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Permite proprietarului să solicite un mod de interacțiune în care elementele atinse sunt rostite cu voce tare, iar interfața de utilizare poate fi explorată prin gesturi."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"solicitare de accesibilitate mai bună la internet"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Permite proprietarului să solicite activarea îmbunătățirilor accesibilității web. De exemplu, instalarea unor scripturi pentru a mări accesibilitatea conținutului aplicațiilor."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"conectare la un serviciu text"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Permite proprietarului să se conecteze la o interfaţă de nivel superior a unui serviciu text (de ex., SpellCheckerService). Nu ar trebui să fie niciodată necesară pentru aplicaţiile obişnuite."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"conectare la un serviciu VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Permite aplicaţiei să gestioneze politicile de reţea şi să definească regulile specifice aplicaţiilor."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"modificaţi modul de calcul al utilizării reţelei"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Permite aplicaţiei să modifice modul în care este calculată utilizarea reţelei pentru aplicaţii. Nu se utilizează de aplicaţiile obişnuite."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"accesare notificări"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Permite aplicației să recupereze, să examineze și să șteargă notificări, inclusiv pe cele postate de alte aplicații."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Setaţi reguli pentru parolă"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Stabiliţi lungimea şi tipul de caractere permise în parolele pentru deblocarea ecranului."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Monitorizaţi încercările de deblocare a ecranului"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 692aa78..fa623e0 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Память"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Доступ к USB-накопителю."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Доступ к SD-карте."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Специальные возможности"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Специальные возможности, которые можно запрашивать"</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"отключать или изменять строку состояния"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Приложение сможет отключать строку состояния, а также добавлять и удалять системные значки."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"строка состояния"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Приложение получит доступ к сообщениям широковещательных SMS-служб, которые в некоторых странах используются для информирования населения об экстренных ситуациях. Вредоносные программы могут помешать работе устройства, на которое поступают такие сообщения."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"Отправка SMS-сообщений"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Приложение сможет отправлять SMS. Учтите, что вредоносные программы смогут отправлять сообщения без уведомления, что может привести к непредвиденным расходам."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"отправка SMS без подтверждения"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Приложение сможет отправлять SMS. Учтите, что вредоносные программы смогут отправлять сообщения без уведомления, что может привести к непредвиденным расходам."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"отвечать на звонки текстовыми сообщениями"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Приложение сможет отправлять запросы другим программам обмена сообщениями, чтобы на звонки можно было отвечать текстовыми сообщениями."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"Просмотр SMS и MMS"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Приложение сможет просматривать SMS-сообщения, сохраненные на устройстве или SIM-карте, независимо от содержания или настроек конфиденциальности."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Приложение сможет просматривать SMS-сообщения, сохраненные на устройстве или SIM-карте, независимо от содержания или настроек конфиденциальности."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Приложение сможет подключаться к базовому интерфейсу системы ввода. Это разрешение не используется обычными приложениями."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"подключаться к службе спецвозможностей"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Приложение сможет подключаться к базовому интерфейсу службы специальных возможностей. Это разрешение не используется обычными приложениями."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"запрашивать функцию \"Изучение касанием\""</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Владелец устройства сможет запрашивать включение режима \"Изучение касанием\", чтобы названия элементов управления озвучивались."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"запрашивать установку веб-скриптов"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Владелец устройства сможет запрашивать установку скриптов для повышения доступности веб-контента."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"привязка к службе текстовых сообщений"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Позволяет подключаться к базовому интерфейсу службы текстовых сообщений (например, SpellCheckerService). Это разрешение не используется обычными приложениями."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"подключаться к VPN-службе"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Приложение сможет управлять сетевыми политиками и определять правила для отдельных приложений."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"изменение учета использования сети"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Приложение сможет изменять порядок расчета использования сетевых ресурсов различными программами. Это разрешение не используется обычными приложениями."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"доступ к уведомлениям"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Приложение сможет получать, проверять и удалять уведомления, включая те, что опубликованы другими приложениями."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Правила выбора паролей"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Контролировать длину и символы при вводе паролей для снятия блокировки экрана."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Отслеживать попытки снятия блокировки экрана"</string>
@@ -768,7 +764,7 @@
     <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Неверный PIN-код."</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Для разблокировки нажмите \"Меню\", а затем 0."</string>
     <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"Экстренная служба"</string>
-    <string name="lockscreen_carrier_default" msgid="8963839242565653192">"Сеть не найдена"</string>
+    <string name="lockscreen_carrier_default" msgid="8963839242565653192">"Нет сигнала"</string>
     <string name="lockscreen_screen_locked" msgid="7288443074806832904">"Экран заблокирован."</string>
     <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Нажмите \"Меню\", чтобы разблокировать экран или вызвать службу экстренной помощи."</string>
     <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"Для разблокировки нажмите \"Меню\"."</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 355fe7f..5f49e68 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Ukladací priestor"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Prístup do ukl. priestoru USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Prístup na kartu SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funkcie zjednodušenia ovládania"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funkcie, ktoré môže vyžadovať nápomocná technológia."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"zakázanie alebo zmeny stavového riadka"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Umožňuje aplikácii vypnúť stavový riadok alebo pridať a odstrániť systémové ikony."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"stavový riadok"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Umožňuje aplikácii čítať správy Cell Broadcast prijaté vaším zariadením. Upozornenia Cell Broadcast sú doručované na určitých miestach a upozorňujú na núdzové situácie. Škodlivé aplikácie môžu pri prijatí núdzovej správy Cell Broadcast narušiť výkonnosť alebo prevádzku vášho zariadenia."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"odosielať správy SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Umožňuje aplikácii odosielať správy SMS. Môže to mať za následok účtovanie neočakávaných poplatkov. Škodlivé aplikácie vám môžu spôsobiť výdavky odosielaním správ bez vášho potvrdenia."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"posielať správy SMS bez potvrdenia"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Umožňuje aplikácii odosielať správy SMS. Môže to mať za následok účtovanie neočakávaných poplatkov. Škodlivé aplikácie vám môžu spôsobiť výdavky odosielaním správ bez vášho potvrdenia."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"odosielanie udalostí typu „odpovedzte správou“"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Umožňuje aplikácii odosielať žiadosti ostatným aplikáciám na posielanie správ s cieľom spracovania udalostí typu „odpovedzte správou“ pre prichádzajúce hovory."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"čítať textové správy (SMS alebo MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Umožňuje aplikácii čítať správy SMS uložené v tablete alebo na karte SIM. Toto povolenie umožňuje aplikácii čítať správy SMS bez ohľadu na ich obsah alebo dôvernosť."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Umožňuje aplikácii čítať správy SMS uložené v telefóne alebo na karte SIM. Toto povolenie umožňuje aplikácii čítať správy SMS bez ohľadu na ich obsah alebo dôvernosť."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Umožňuje držiteľovi viazať sa na najvyššiu úroveň rozhrania metódy vstupu. Bežné aplikácie by toto nastavenie nemali nikdy potrebovať."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"viazať na službu zjednodušeného ovládania"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Umožňuje držiteľovi viazať sa na najvyššiu úroveň rozhrania služby zjednodušeného ovládania. Bežné aplikácie by toto nastavenie nemali nikdy potrebovať."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"vyžiadať preskúmanie dotykom"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Držiteľovi umožňuje požiadať o interaktívny režim, v ktorom aplikácia reaguje na dotyky položiek vyslovením ich názvu a v ktorom môže používateľ preskúmať používateľské rozhranie pomocou gest."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"vyžiadať zlepšenie dostupnosti webu"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Držiteľovi umožňuje, aby vyžiadal povolenie vylepšení prístupu k webu, napríklad inštaláciu skriptov, ktoré uľahčujú prístup k obsahu aplikácie."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"väzba na textovú službu"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Umožňuje držiteľovi viazať sa na najvyššiu úroveň rozhrania textovej služby (napr. SpellCheckerService). Bežné aplikácie by toto nastavenie nemali nikdy potrebovať."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"Zaviazať k službe VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Umožňuje aplikácii spravovať pravidlá siete a definovať pravidlá pre konkrétnu aplikáciu."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"zmeniť kontrolu používania siete"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Umožňuje aplikácii upraviť používanie siete jednotlivými aplikáciami. Bežné aplikácie toto nastavenie nepoužívajú."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"prístup k upozorneniam"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Umožňuje aplikácii načítať, zobrazovať a mazať upozornenia vrátane tých, ktoré boli uverejnené inými aplikáciami."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Nastaviť pravidlá pre heslo"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Ovládanie dĺžky hesiel na odomknutie obrazovky a v nich používané znaky."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Sledovať pokusy o odomknutie obrazovky"</string>
@@ -1111,11 +1107,11 @@
     <string name="volume_icon_description_incall" msgid="8890073218154543397">"Hlasitosť hovoru"</string>
     <string name="volume_icon_description_media" msgid="4217311719665194215">"Hlasitosť médií"</string>
     <string name="volume_icon_description_notification" msgid="7044986546477282274">"Hlasitosť upozornení"</string>
-    <string name="ringtone_default" msgid="3789758980357696936">"Predvolený vyzváňací tón"</string>
-    <string name="ringtone_default_with_actual" msgid="8129563480895990372">"Predvolený vyzváňací tón (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
+    <string name="ringtone_default" msgid="3789758980357696936">"Predvolený tón zvonenia"</string>
+    <string name="ringtone_default_with_actual" msgid="8129563480895990372">"Predvolený tón zvonenia (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
     <string name="ringtone_silent" msgid="7937634392408977062">"Žiadny"</string>
     <string name="ringtone_picker_title" msgid="3515143939175119094">"Vyzváňacie tóny"</string>
-    <string name="ringtone_unknown" msgid="5477919988701784788">"Neznámy vyzváňací tón"</string>
+    <string name="ringtone_unknown" msgid="5477919988701784788">"Neznámy tón zvonenia"</string>
   <plurals name="wifi_available">
     <item quantity="one" msgid="6654123987418168693">"K dispozícii je sieť Wi-Fi"</item>
     <item quantity="other" msgid="4192424489168397386">"K dispozícii sú siete Wi-Fi."</item>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index c407d2a..aa240de 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Prostor za shranjevanje"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Dostop do pomnilnika USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Dostop do kartice SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funkcije za ljudi s posebnimi potrebami"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funkcije, ki jih lahko zahteva tehnologija za ljudi s posebnimi potrebami."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"onemogočanje ali spreminjanje vrstice stanja"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Programom omogoča onemogočenje vrstice stanja ali dodajanje in odstranjevanje ikon sistema."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"vrstica stanja"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Omogoča aplikaciji branje sporočil oddaje v celici, ki jih prejme naprava. Opozorila oddaje v celici so dostavljena na nekaterih lokacijah, da vas opozorijo na izredne razmere. Zlonamerne aplikacije lahko vplivajo na delovanje naprave, ko dobi sporočilo oddaje v celici."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"pošiljanje sporočil SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Aplikaciji omogoča pošiljanje SMS-ov. Zaradi tega lahko pride do nepričakovanih stroškov. Zlonamerne aplikacije lahko pošiljajo sporočila brez vaše potrditve, kar vas lahko drago stane."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"pošiljanje SMS-ov brez potrditve"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Aplikaciji omogoča pošiljanje SMS-ov. Zaradi tega lahko pride do nepričakovanih stroškov. Zlonamerne aplikacije lahko pošiljajo sporočila brez vaše potrditve, kar vas lahko drago stane."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"pošiljanje dogodkov z odgovori prek sporočil"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Aplikaciji dovoli, da pošilja zahteve drugim aplikacijam za sporočila za obravnavanje dogodkov z odgovori prek sporočil za dohodne klice."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"branje sporočil (SMS ali MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Aplikaciji omogoča branje SMS-ov, shranjenih v tabličnem računalniku ali na kartici SIM. S tem lahko aplikacija bere vse SMS-e, ne glede na njihovo vsebino ali zaupnost."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Aplikaciji omogoča branje SMS-ov, shranjenih v telefonu ali na kartici SIM. S tem lahko aplikacija bere vse SMS-e, ne glede na njihovo vsebino ali zaupnost."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Lastniku omogoča, da se poveže z vmesnikom načina vnosa najvišje ravni. Tega nikoli ni treba uporabiti za navadne programe."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"povezovanje s storitvijo za ljudi s posebnimi potrebami"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Lastniku omogoča povezovanje z vmesnikom najvišje ravni storitve za ljudi s posebnimi potrebami. Tega nikoli ni treba uporabiti za navadne aplikacije."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"zahteva za raziskovanje z dotikom"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Imetniku dovoli, da zahteva interaktivni način delovanja, v katerem se dotaknjene možnosti izgovorijo na glas in je mogoče uporabniški vmesnik raziskati s potezami."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"zahteva za izboljšano spletno dostopnost"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Imetniku dovoli, da zahteva omogočanje izboljšav spletne dostopnosti, na primer namestitev skriptov, ki naredijo vsebino aplikacije dostopnejšo."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"poveži z besedilno storitvijo"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Dovoljuje, da se lastnik poveže z vmesnikom besedilne storitve najvišje ravni (npr. SpellCheckerService). Tega nikoli ni treba uporabiti za navadne programe."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"povezava s storitvijo navideznega zasebnega omrežja"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Programu omogoča upravljanje pravilnikov o omrežju in določanje pravil za program."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"spremeni obračunavanje uporabe omrežja"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Programu omogoča, da spremeni uporabo omrežja na podlagi programov. Ni za uporabo z navadnimi programi."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"dostop do obvestil"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Dovoli aplikaciji, da prenese, razišče in izbriše obvestila, tudi tista, ki so jih objavile druge aplikacije."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Nastavitev pravil za geslo"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Nadzor nad dolžino in znaki, ki so dovoljeni v geslih za odklepanje zaslona."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"nadzor nad poskusi odklepanja zaslona"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 42c17e0..7a3ff07 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Складиште"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Приступите USB меморији."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Приступ SD картици."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Функције приступачности"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Функције које технологија за помоћ може да захтева."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"онемогућавање или измена статусне траке"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Дозвољава апликацији да онемогући статусну траку или да додаје и уклања системске иконе."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"статусна трака"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Омогућава апликацији да чита поруке инфо сервиса које уређај прима. Упозорења инфо сервиса се на неким локацијама примају као упозорења на хитне случајеве. Злонамерне апликације могу да утичу на учинак или ометају функционисање уређаја када се прими порука инфо сервиса о хитном случају."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"слање SMS порука"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Дозвољава апликацији да шаље SMS поруке. Ово може да доведе до неочекиваних трошкова. Злонамерне апликације могу да шаљу поруке без ваше потврде, што може да изазове трошкове."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"слање SMS порука без потврде"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Дозвољава апликацији да шаље SMS поруке. Ово може да доведе до неочекиваних трошкова. Злонамерне апликације могу да шаљу поруке без ваше потврде, што може да изазове трошкове."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"слање догађаја одговора преко поруке"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Омогућава апликацији да другим апликацијама за размену порука шаље захтеве за обраду догађаја одговора преко порука за долазне позиве."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"читање текстуалних порука (SMS или MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Дозвољава апликацији да чита SMS поруке ускладиштене на таблету или SIM картици. Ово омогућава апликацији да чита све SMS поруке, без обзира на садржај или поверљивост."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Дозвољава апликацији да чита SMS поруке ускладиштене на телефону или SIM картици. Ово омогућава апликацији да чита све SMS поруке, без обзира на садржај или поверљивост."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Омогућава да се власник обавеже на интерфејс методе уноса највишег нивоа. Уобичајене апликације никада не би требало да је користе."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"повезивање са услугом приступачности"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Дозвољава власнику да се повеже са интерфејсом услуге приступачности највишег нивоа. Уобичајене апликације никада не би требало да је користе."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"захтевање истраживања додиром"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Омогућава носиоцу да захтева режим интеракције у коме се називи додирнутих ставки изговарају наглас, а кориснички интерфејс може да се истражује покретима."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"захтевање побољшане приступачности вебу"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Омогућава носиоцу да захтева омогућавање побољшања приступачности веба. На пример, инсталирање скрипти да би садржај апликације постао приступачнији."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"обавезивање на текстуалну услугу"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Омогућава власнику да се обавеже на интерфејс текстуалне услуге највишег нивоа (нпр. SpellCheckerService). Обичне апликације никада не би требало да је користе."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"везивање за VPN услугу"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Дозвољава апликацији да управља смерницама за мрежу и одређује посебна правила за апликацију."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"измените обрачунавање коришћења мреже"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Дозвољава апликацији да измени начин на који апликације користе мрежу. Не користе је уобичајене апликације."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"приступ обавештењима"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Дозвољава апликацији да преузима, испитује и брише обавештења, укључујући она која постављају друге апликације."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Подешавање правила за лозинку"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Контролишите дужину и знакове дозвољене у лозинкама за откључавање екрана."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Надгледање покушаја откључавања екрана"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 535f8e5..eca52e6 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Lagring"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Få åtkomst till USB-enheten."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Få åtkomst till SD-kortet."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Tillgänglighetsfunktioner"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funktioner som kan behövas med hjälpmedel."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"inaktivera eller ändra statusfält"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Tillåter att appen inaktiverar statusfältet eller lägger till och tar bort systemikoner."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"statusfält"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Appen tillåts läsa SMS som skickas till din enhet. På vissa platser skickas SMS för att varna för nödsituationer. Skadliga appar kan påverka enhetens prestanda eller funktionalitet när du får ett meddelande om en nödsituation via SMS."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"skicka SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Tillåter att appen skickar SMS. Detta kan leda till oväntade avgifter. Skadliga appar kan skicka meddelanden utan ditt godkännande vilket kan kosta pengar."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"skicka SMS utan bekräftelse"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Tillåter att appen skickar SMS. Detta kan leda till oväntade avgifter. Skadliga appar kan skicka meddelanden utan ditt godkännande vilket kan kosta pengar."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"skicka svar via meddelanden"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Tillåter att appen skickar förfrågningar till andra meddelandeappar för att kunna skicka meddelanden som svar på inkommande samtal."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"läsa dina textmeddelanden (SMS eller MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Tillåter att appen läser SMS som sparats på surfplattan eller på SIM-kortet. Med den här behörigheten tillåts appen att läsa alla SMS oavsett innehåll eller sekretess."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Tillåter att appen läser SMS som sparats på mobilen eller på SIM-kortet. Med den här behörigheten tillåts appen att läsa alla SMS oavsett innehåll eller sekretess."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Innehavaren tillåts att binda till den översta nivåns gränssnitt för en inmatningsmetod. Ska inte behövas för vanliga appar."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"bind till en tillgänglighetstjänst"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Innehavaren tillåts att binda till den översta nivåns gränssnitt för en tillgänglighetstjänst. Ska inte behövas för vanliga appar."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"begära beröringsstyrda gränssnittsfunktioner"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Innehavaren tillåts begära ett interaktionsläge där objekt som användaren trycker på läses upp och där gränssnittet kan användas med gester."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"begära tillgänglighetsfunktioner"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Innehavaren tillåts begära aktivering av tillgänglighetsfunktioner. Det kan t.ex. vara att installera skript från Google som gör appens innehåll mer tillgängligt."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"bind till en texttjänst"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Tillåter innehavaren att binda mot den högsta gränssnittsnivån i en texttjänst (t.ex. SpellCheckerService). Bör aldrig behövas för normala appar."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"bind till en VPN-tjänst"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Tillåter att appen hanterar nätverkspolicyer och definierar appspecifika regler."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"ändra nätverksredovisningen"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Tillåter att appen ändrar hur nätverksanvändning redovisas för appar. Används inte av vanliga appar."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"få åtkomst till meddelanden"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Tillåter att appen hämtar, granskar och raderar meddelanden, även sådana som skickats av andra appar."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Ange lösenordsregler"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Bestäm hur många och vilka tecken som är tillåtna i skärmlåsets lösenord."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Övervaka försök att låsa upp skärmen"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 71670c1..554921b 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -169,7 +169,7 @@
     <string name="permgrouplab_costMoney" msgid="5429808217861460401">"Huduma ambazo zinakugharimu pesa"</string>
     <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"Fanya mambo ambayo yanaweza kukugharimu pesa."</string>
     <string name="permgrouplab_messages" msgid="7521249148445456662">"Ujumbe wako"</string>
-    <string name="permgroupdesc_messages" msgid="7821999071003699236">"Soma na kuandika SMS, barua pepe, na jumbe zako zingine."</string>
+    <string name="permgroupdesc_messages" msgid="7821999071003699236">"Soma na uandike SMS, barua pepe, na mawasiliano mengine."</string>
     <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Maelezo yako ya kibinafsi"</string>
     <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Kufikia moja kwa moja taarifa kukuhusu, iliyoakibishwa kwenye kadi yako ya anwani."</string>
     <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Taarifa yako ya kijamii"</string>
@@ -190,8 +190,8 @@
     <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"Soma maneno katika kamusi ya mtumiaji."</string>
     <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"Andika Kamusi ya Mtumiaji"</string>
     <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"Ongeza maneno katika kamusi mtumiaji."</string>
-    <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Vialamisho na Historia"</string>
-    <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Kufikia moja kwa moja vialamisho na historia ya kivinjari"</string>
+    <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Alamisho na Historia"</string>
+    <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Kufikia, moja kwa moja, alamisho na historia ya kivinjari."</string>
     <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Kengele"</string>
     <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Weka saa ya kengele."</string>
     <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Barua ya sauti"</string>
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Hifadhi"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Fikia hifadhi ya USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Fikia kadi ya SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Vipengele vya ufikiaji"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Vipengee ambavyo teknolojia saidizi inaweza kuomba."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"zima au rekebisha mwambaa hali"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Inaruhusu programu kulemaza upau wa hali au kuongeza na kutoa ikoni za mfumo."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"mwamba hali"</string>
@@ -237,25 +235,25 @@
     <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Inaruhusu programu kupanua au kukunja upau wa hali."</string>
     <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"panga upya simu zinazotoka"</string>
     <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"Inaruhusu programu kuchakata simu zinazotoka nje na kubadilisha nambari ya kupigwa. Idhini hii inaruhusu programu kuchunguza, kuelekeza upya, au kuzuia simu zinazotoka nje."</string>
-    <string name="permlab_receiveSms" msgid="8673471768947895082">"pokea jumbe za maandishi (SMS)"</string>
+    <string name="permlab_receiveSms" msgid="8673471768947895082">"pokea ujumbe wa maandishi wa SMS"</string>
     <string name="permdesc_receiveSms" msgid="6424387754228766939">"Inaruhusu programu kupokea na kuchakata ujumbe wa SMS. Hii inamaanisha programu hii inaweza kuchunguza na kufuta ujumbe uliotumwa katika kifaa chako bila ya kukuonyesha."</string>
-    <string name="permlab_receiveMms" msgid="1821317344668257098">"pokea jumbe za maandishi (MMS)"</string>
+    <string name="permlab_receiveMms" msgid="1821317344668257098">"pokea ujumbe wa maandishi wa MMS"</string>
     <string name="permdesc_receiveMms" msgid="533019437263212260">"Inaruhusu programu kupokea na kuchakata ujumbe medianwai (MMS). Hii inamaanisha uwezo wa kuchunguza na kufuta ujumbe uliotumwa kwa kifaa chako bila ya kukuonyesha."</string>
     <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"Pokea matangazo ya dharura"</string>
-    <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Inaruhusu programu kupokea na kuchakata jumbe za dharura. Ruhusa hii inapatikana tu kwa programu za mfumo."</string>
-    <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"soma jumbe za matangazo ya simu"</string>
-    <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Huruhusu programu kusoma jumbe za matangazo ya simu zilizopokewa na kifaa chako. Taarifa za matangazo ya simu huwasilishwa katika maeneo mengine ili kukuonya juu ya hali za dharura. Huenda programu hasidi zikatatiza utendajikazi au shughuli ya kifaa chako wakati matangazo ya simu ya dharura yamepokewa."</string>
+    <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Huruhusu programu kupokea na kuchakata mawasiliano ya dharura. Idhini hii inapatikana tu kwa programu za mfumo."</string>
+    <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"soma mawasiliano ya matangazo ya simu"</string>
+    <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Huruhusu programu kusoma mawasiliano ya matangazo ya simu yaliyoingia kwenye kifaa chako. Arifa za matangazo ya simu huwasilishwa katika maeneo mengine ili kukuonya juu ya hali za dharura. Huenda programu hasidi zikatatiza utendajikazi au shughuli ya kifaa chako wakati matangazo ya simu ya dharura yameingia."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"tuma ujumbe wa SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Inaruhusu programu kutuma ujumbe wa SMS. Hii inaweza ikasababisha malipo yasiyotarajiwa. Programu hasidi zinaweza kukugharimu pesa kwa kutuma ujumbe bila uthibitisho wako."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"Tuma ujumbe wa SMS bila ya thibitisho"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Inaruhusu programu kutuma ujumbe wa SMS. Hii inaweza ikasababisha malipo yasiyotarajiwa. Programu hasidi zinaweza kukugharimu pesa kwa kutuma ujumbe bila uthibitisho wako."</string>
-    <string name="permlab_readSms" msgid="8745086572213270480">"soma jumbe zako za maandishi (SMS au MMS)"</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"tuma matukio ya kujibu-kupitia-ujumbe"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Inaruhusu programu kutuma maombi kwa programu nyingine za ujumbe ili kushughulikia matukio ya kujibu-kupitia-ujumbe kwa simu zinazoingia."</string>
+    <string name="permlab_readSms" msgid="8745086572213270480">"soma SMS au MMS zako"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Inaruhusu programu kusoma ujumbe wa SMS uliohifadhiwa kwenye kompyuta kibao yako au SIM kadi. Hii inaruhusu programu kusoma ujumbe wote wa SMS, bila kujali maudhui au usiri."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Inaruhusu programu kusoma ujumbe wa SMS uliohifadhiwa kwenye simu yako au SIM kadi. Hii inaruhusu programu kusoma ujumbe wote wa SMS, bila kujali maudhui au usiri."</string>
-    <string name="permlab_writeSms" msgid="3216950472636214774">"Hariri jumbe zako za maandishi (SMS au MMS)"</string>
-    <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Inaruhusu programu kuandikia jumbe za SMS zinazohifadhiwa kwenye kompyuta yako kibao au SIM kadi. Programu hasidi zinaweza kufuta jumbe zako."</string>
-    <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Inaruhusu programu kuandika jumbe za SMS zinazohifadhiwa kwenye simu yako au SIM kadi. programu hasidi zinaweza kufuta ujumbe zako."</string>
-    <string name="permlab_receiveWapPush" msgid="5991398711936590410">"pokea jumbe za maandishi (WAP)"</string>
+    <string name="permlab_writeSms" msgid="3216950472636214774">"Hariri SMS au MMS zako"</string>
+    <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Huruhusu programu kuandikia SMS zinazohifadhiwa kwenye kompyuta yako kibao au SIM kadi. Programu hasidi zinaweza kufuta SMS zako."</string>
+    <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Huruhusu programu kuandika SMS zinazohifadhiwa kwenye simu yako au SIM kadi. programu hasidi zinaweza kufuta SMS zako."</string>
+    <string name="permlab_receiveWapPush" msgid="5991398711936590410">"pokea ujumbe wa maandishi wa WAP"</string>
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Inaruhusu programu kupokea na kuchakata ujumbe wa WAP. Idhini hii inajumuisha uwezo wa kuchunguza na kufuta ujumbe uliotumwa kwako bila ya kukuonyesha."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"rudisha programu zinazoendeshwa"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Inaruhusu programu kurudisha taarifa kuhusu kazi zinazoendeshwa sasa na hivi karibuni. Hii inaweza kuruhusu programu kugundua taarifa kuhusu ni programu zipi zinazotumika kwenye kifaa."</string>
@@ -310,7 +308,7 @@
     <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"furushi lililotumwa limeondoa tangazo"</string>
     <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"Inaruhusu programu kutangaza taarifa kwamba furushi ya programu imetolewa. Programu hasidi zinaweza kutumia hii kuua programu yoyote inayoendeshwa."</string>
     <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"tuma matanazo yaliyopokewa ya SMS"</string>
-    <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"Inaruhusu programu kutangaza taarifa kwamba ujumbe wa SMS umepokewa. Programu hasidi zinaweza tumia hii kubuni jumbe za SMS zinazoingia."</string>
+    <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"Huruhusu programu kutangaza taarifa kwamba ujumbe wa SMS umeingia. Programu hasidi zinaweza kutumia hii kubuni SMS zinazoingia."</string>
     <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"tuma tangazo lililopokewa la MSUKUMO WA WAP"</string>
     <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Inaruhusu programu kutangaza taarifa kwamba ujumbe wa WAP PUSH umepokewa. Programu hasidi zinaweza kutumia hii kubuni risiti ya ujumbe wa MMS au polepole kubadilisha maudhui yoyote ya ukurasa wa tovuti na vibadala vibovu."</string>
     <string name="permlab_setProcessLimit" msgid="2451873664363662666">"zuia idadi ya michakato inayoendeshwa"</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Inaruhusu mmiliki kushurutisha kwenye kusano ya kiwango cha juu ya mbinu ya ingizo. Haipaswi kuhitajika kwa programu za kawaida."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"funga kwa huduma ya ufikiaji"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Inamuruhusu mmiliki kufunga kipengee kinachojitokeza katika nyanja mbalimbali za kiwango cha juu cha huduma ya afikiaji. Hapaswi kuhitajika kwa programu za kawaida."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"omba uchunguzi kwa kugusa"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Huruhusu programu kuomba hali ya mwingiliano ambapo vipengee vilivyoguswa hutamkwa kwa sauti na Kiolesura kinaweza kuchunguzwa kupitia ishara."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"omba ufikiaji wa wavuti ulioimarishwa"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Huruhusu programu kuomba uwezeshaji wa uimarishaji wa ufikiaji wa wavuti. Kwa mfano, kusakinisha hati ili kufanya maudhui ya programu kufikiwa zaidi."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"Imefungwa kwa huduma ya maandishi"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Inaruhusu kishikiliaji kushurutisha kusano ya kiwango cha juu ya huduma ya matini(k.m.SpellCheckerService). Haipaswi kuhitajika kwa programu za kawaida."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"funga kwa huduma ya VPN"</string>
@@ -435,9 +429,9 @@
     <string name="permlab_writeProfile" msgid="907793628777397643">"rekebisha kadi yako mwenyewe ya mawasiliano"</string>
     <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"Inaruhusu programu kubadilisha au kuongeza taarifa ya maelezo mafupi ya kibinafsi yaliyohifadhiwa kwenye kifaa chako, kama vile jina lako na taarifa ya anwani. Hii inamaanisha kuwa programu inaweza kukutambua na inaweza kutuma taarifa ya maelezo yako mafupi kwa wengine."</string>
     <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"soma mipasho yako wa kijamii"</string>
-    <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"Inaruhusu programu kufikia na kupatanisha sasisho za kijamii kutoka kwa marafiki zako. Kuwa makini wakati unashiriki taarifa -- hii inaruhusu programu kusoma mawasiliano kati yako na marafiki zako kwenye mitandao ya jamii, bila kujali usiri. Kumbuka: idhini hii haiwezi kutekelezwa kwenye mitandao yote ya jamii."</string>
+    <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"Huruhusu programu kufikia na kupatanisha masasisho ya kijamii kutoka kwa marafiki zako. Kuwa makini wakati unashiriki taarifa -- hii huruhusu programu kusoma mawasiliano kati yako na marafiki zako kwenye mitandao ya jamii, bila kujali usiri. Kumbuka: idhini hii haiwezi kutekelezwa kwenye mitandao yote ya jamii."</string>
     <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"andika kwa mipasho yako wa kijamii"</string>
-    <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"Inaruhusu programu kuonyesha sasisho za kijamii kutoka kwa marafiki zako. Kuwa makini wakati unashiriki taarifa -- hii inaruhusu programu kutoa ujumbe unaoweza kuonekana kuwa unatoka kwa rafiki. Kumbuka: idhini hii huenda usitekelezwe kwenye mitandao yote ya kijamii."</string>
+    <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"Huruhusu programu kuonyesha masasisho ya kijamii kutoka kwa marafiki zako. Kuwa makini wakati unashiriki taarifa -- hii inaruhusu programu kutoa ujumbe unaoweza kuonekana kuwa unatoka kwa rafiki. Kumbuka: idhini hii huenda usitekelezwe kwenye mitandao yote ya jamii."</string>
     <string name="permlab_readCalendar" msgid="5972727560257612398">"soma matukio ya kalenda pamoja na maelezo ya siri"</string>
     <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"Inaruhusu programu kusoma matukio yote ya kalenda yaliohifadhiwa kwenye kompyuta kibao yako, yakijumuisha yale ya marafiki au wafanyakazi wenza. Hii inaweza kuruhusu programu kushiriki au kuhifadhi data yako ya kaelnda, bila kujali usiri au unyeti."</string>
     <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"Inaruhusu programu kusoma matukio yote ya kalenda yaliyohifadhiwa kwenye simu yako, pamoja na yale ya marafiki au wafanyakazi wenza. Hii inaweza kuruhusu programu kushiriki au kuhifadhi data yako ya kalenda, bila kujali usiri au umuhimu."</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Inaruhusu programu kudhibiti sera za mtandao na kufafanua sheria maalum za programu."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"badilisha uthibitishaji wa matumizi ya mtandao"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Huruhusu programu kurekebisha jinsi matumizi ya mtandao yana hesabika dhidi ya programu. Sio ya matumizi na programu za kawaida."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"fikia arifa"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Huruhusu programu kurejesha, kuchunguza, na kuondoa arifa, ikiwa ni pamoja na zile zilizochapishwa na programu nyingine."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Weka kanuni za nenosiri"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Dhibiti urefu na vibambo vinavyoruhusiwa katika manenosiri ya kufungua skrini."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Chunguza majaribio ya kutofun gua skrini"</string>
@@ -867,8 +863,8 @@
     <string name="js_dialog_before_unload" msgid="730366588032430474">"Toka kwa ukurasa huu?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Gusa Sawa ili kuendelea, au Ghairi ili kubaki kwenye ukurasa wa sasa."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Thibitisha"</string>
     <string name="double_tap_toast" msgid="4595046515400268881">"Kidokezo: Gonga mara mbili ili kukuza ndani na nje."</string>
-    <string name="autofill_this_form" msgid="4616758841157816676">"Mjazo-otomatiki"</string>
-    <string name="setup_autofill" msgid="7103495070180590814">"Sanidi Mjazo-otomati"</string>
+    <string name="autofill_this_form" msgid="4616758841157816676">"Kujaza kiotomatiki"</string>
+    <string name="setup_autofill" msgid="7103495070180590814">"Weka uwezo wa kujaza kiotomatiki"</string>
     <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
     <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$1$2$3"</string>
     <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
@@ -889,11 +885,11 @@
     <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"Inaruhusu programu kusoma historia ya URL zote ambazo zimetembelewa na Kivinjari, na alamisho zote za Kivinjari. Kumbuka: idhini hii haiwezi kutekelezwa vivinjari vya vingine au programu zingine zenye uwezo wa kuvinjari."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"andika alamisho na historia ya wavuti"</string>
     <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"Inaruhusu programu kurekebisha historia ya Kivinjari au alamisho zilizohifadhiwa kwenye kompyuta kibao yako. Hii inaruhusu programu kufuta au kurekebisha data ya Kivinjari. Kumbuka: huenda idhini hii isitekelezwe na kivinjari kingine au programu nyingine zenye uwezo wa kuvinjari wavuti."</string>
-    <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"Inaruhusu programu kurekebisha historia ya Kivinjari au vialamisho vilivyohifadhiwa kwenye simu yako. Hii huenda ikaruhusu programu kufuta au kurekebisha data ya Kivinjari. Kumbuka: huenda idhini hii isitekelezwe na vivinjari vingine au programu nyingine zenye uwezo wa kuvinjari wavuti."</string>
+    <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"Inaruhusu programu kurekebisha historia ya Kivinjari au alamisho zilizohifadhiwa kwenye simu yako. Hii huenda ikaruhusu programu kufuta au kurekebisha data ya Kivinjari. Kumbuka: huenda idhini hii isitekelezwe na vivinjari vingine au programu nyingine zenye uwezo wa kuvinjari wavuti."</string>
     <string name="permlab_setAlarm" msgid="1379294556362091814">"weka kengele"</string>
     <string name="permdesc_setAlarm" msgid="316392039157473848">"Inaruhusu programu kuweka kengele katika programu iliyosakinishwa ya kengele. Programu zingine za kengele zinawezakosa kutekeleza kipengee hiki."</string>
     <string name="permlab_addVoicemail" msgid="5525660026090959044">"ongeza barua ya sauti"</string>
-    <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Inaruhusu programu kuongeza jumbe kwenye kikasha cha ujumbe wa sauti."</string>
+    <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Huruhusu programu kuongeza mawasiliano kwenye kikasha cha ujumbe wa sauti."</string>
     <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"Rekebisha vibali vya Kivinjari cha eneo la jio"</string>
     <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"Inaruhusu programu kurekebisha ruhusa za eneo la jio za kivinjari. Programu hasidi zinaweza tumia hii kuruhusu kutuma taarifa ya eneo kwa wavuti holela."</string>
     <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"thibitisha furushi"</string>
@@ -1146,7 +1142,7 @@
     <string name="wifi_p2p_frequency_conflict_message" msgid="7363907213787469151">"Simu itaukata muunganisho kwa muda kutoka kwenye Wi-Fi inapokuwa imeunganishwa kwenye <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="select_character" msgid="3365550120617701745">"Ingiza kibambo"</string>
     <string name="sms_control_title" msgid="7296612781128917719">"Inatuma ujumbe wa SMS"</string>
-    <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; inatuma idadi kubwa ya jumbe za SMS. Je, unataka kuruhusu programu hii kuendelea kutuma jumbe?"</string>
+    <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; inatuma idadi kubwa ya SMS. Je, unataka kuruhusu programu hii kuendelea kutuma SMS?"</string>
     <string name="sms_control_yes" msgid="3663725993855816807">"Ruhusu"</string>
     <string name="sms_control_no" msgid="625438561395534982">"Kataza"</string>
     <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ingependa kutuma ujumbe kwa &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt;."</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 0c56b90..e7df782 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"พื้นที่เก็บข้อมูล"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"เข้าถึงที่เก็บข้อมูล USB"</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"เข้าถึงการ์ด SD"</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"คุณลักษณะการเข้าถึง"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"คุณลักษณะที่เทคโนโลยีความช่วยเหลือสามารถร้องขอได้"</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"ปิดการใช้งานหรือแก้ไขแถบสถานะ"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"อนุญาตให้แอปพลิเคชันปิดใช้งานแถบสถานะหรือเพิ่มและนำไอคอนระบบออก"</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"แถบสถานะ"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"อนุญาตให้แอปอ่านข้อความจากสถานีมือถือที่อุปกรณ์ได้รับ การแจ้งเตือนทางมือถือมีให้บริการในบางพื้นที่ โดยจะแจ้งเตือนคุณเกี่ยวกับสถานการณ์ฉุกเฉิน แอปที่เป็นอันตรายอาจเข้าแทรกแซงการทำงานของอุปกรณ์เมื่อได้รับข้อความแจ้งเตือนฉุกเฉิน"</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"ส่งข้อความ SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"อนุญาตให้แอปพลิเคชันส่งข้อความ SMS ซึ่งอาจทำให้มีการเรียกเก็บเงินที่ไม่คาดคิด แอปพลิเคชันที่เป็นอันตรายอาจทำให้คุณเสียค่าใช้จ่ายด้วยการส่งข้อความโดยไม่รอการยืนยันจากคุณ"</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"ส่งข้อความ SMS โดยไม่มีการยืนยัน"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"อนุญาตให้แอปพลิเคชันส่งข้อความ SMS ซึ่งอาจทำให้มีการเรียกเก็บเงินที่ไม่คาดคิด แอปพลิเคชันที่เป็นอันตรายอาจทำให้คุณเสียค่าใช้จ่ายด้วยการส่งข้อความโดยไม่รอการยืนยันจากคุณ"</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"ส่งกิจกรรมการตอบสนองผ่านทางข้อความ"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"อนุญาตให้แอปพลิเคชันส่งคำขอไปยังแอปพลิเคชันการรับส่งข้อความอื่นๆ ในการจัดการกิจกรรมการตอบสนองผ่านทางข้อความสำหรับสายเรียกเข้า"</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"อ่านข้อความของคุณ (SMS หรือ MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"อนุญาตให้แอปพลิเคชันอ่านข้อความ SMS ที่จัดเก็บไว้ในแท็บเล็ตหรือซิมการ์ด ซึ่งจะทำให้แอปพลิเคชันสามารถอ่านข้อความ SMS ทั้งหมดได้ไม่ว่าจะเป็นเนื้อหาใดหรือมีการรักษาข้อมูลที่เป็นความลับแบบใด"</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"อนุญาตให้แอปพลิเคชันอ่านข้อความ SMS ที่จัดเก็บไว้ในโทรศัพท์หรือซิมการ์ด ซึ่งจะทำให้แอปพลิเคชันสามารถอ่านข้อความ SMS ทั้งหมดได้ไม่ว่าจะเป็นเนื้อหาใดหรือมีการรักษาข้อมูลที่เป็นความลับแบบใด"</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"อนุญาตให้ผู้ใช้เชื่อมโยงกับส่วนติดต่อผู้ใช้ระดับสูงสุดของวิธีการป้อนข้อมูล ไม่ควรต้องใช้สำหรับแอปพลิเคชันทั่วไป"</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"เชื่อมโยงกับบริการการเข้าถึง"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"อนุญาตให้เจ้าของเชื่อมโยงกับส่วนติดต่อระดับบนสุดของบริการการเข้าถึง ซึ่งแอปพลิเคชันทั่วไปไม่จำเป็นต้องใช้"</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"ขอการแตะเพื่อสำรวจ"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"อนุญาตให้ผู้ถือสิทธิ์ขอโหมดโต้ตอบซึ่งจะมีเสียงพูดออกมาเมื่อรายการถูกแตะ และสามารถสำรวจ UI ได้โดยการใช้ท่าทางสัมผัส"</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"ขอการเข้าถึงเว็บที่มีประสิทธิภาพมากขึ้น"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"อนุญาตให้ผู้ถือสิทธิ์ขอเปิดใช้การเพิ่มประสิทธิภาพการเข้าถึงเว็บ ตัวอย่างเช่น การติดตั้งสคริปต์เพื่อให้เข้าถึงเนื้อหาแอปพลิเคชันได้ดีขึ้น"</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"เชื่อมโยงกับบริการข้อความ"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"อนุญาตให้ผู้ใช้เชื่อมโยงกับส่วนติดต่อผู้ใช้ระดับสูงสุดของบริการข้อความ (เช่น บริการเครื่องตรวจตัวสะกด) ไม่ควรต้องใช้สำหรับแอปพลิเคชันทั่วไป"</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"เชื่อมโยงกับบริการ VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"อนุญาตให้แอปพลิเคชันจัดการนโยบายเครือข่ายและกำหนดกฎเฉพาะแอปพลิเคชัน"</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"แก้ไขการบันทึกบัญชีการใช้งานเครือข่าย"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"อนุญาตให้แอปพลิเคชันแก้ไขวิธีการบันทึกบัญชีการใช้งานเครือข่ายของแอปพลิเคชัน ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"เข้าถึงการแจ้งเตือน"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"ทำให้แอปสามารถเรียกคืน ตรวจสอบ และล้างการแจ้งเตือนได้ ซึ่งรวมถึงการแจ้งเตือนที่โพสต์โดยแอปอื่นๆ ด้วย"</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"ตั้งค่ากฎรหัสผ่าน"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"ควบคุมความยาวและอักขระที่อนุญาตให้ใช้ในรหัสผ่านการปลดล็อกหน้าจอ"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"ตรวจสอบความพยายามในการปลดล็อกหน้าจอ"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 2479c0a..6268786 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Imbakan"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"I-access ang imbakan na USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"I-access ang SD card."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Mga tampok ng accessibility"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Mga tampok na maaaring hilingin ng tumutulong na teknolohiya."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"huwag paganahin o baguhin ang status bar"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Pinapayagan ang app na huwag paganahin ang status bar o magdagdag at mag-alis ng mga icon ng system."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"status bar"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Binibigyang-daan ang app na magbasa ng mga mensahe ng cell broadcast na natanggap ng iyong device. Inihahatid ang mga alerto ng cell broadcast sa ilang lokasyon upang balaan ka tungkol sa mga emergency na sitwasyon. Maaaring makaabala ang nakakahamak na apps sa pagganap o pagpapatakbo ng iyong device kapag nakatanggap ng emergency na cell broadcast."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"magpadala ng mga SMS na mensahe"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Pinapayagan ang app na magpadala ng mga mensaheng SMS. Maaari itong magresulta sa mga hindi inaasahang pagsingil. Maaaring magpagastos sa iyo ng pera ang nakakahamak na apps sa pamamagitan ng pagpapadala ng mga mensahe nang wala ng iyong kumpirmasyon."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"magpadala ng mga SMS na mensahe nang walang pagkumpirma"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Pinapayagan ang app na magpadala ng mga mensaheng SMS. Maaari itong magresulta sa mga hindi inaasahang pagsingil. Maaaring magpagastos sa iyo ng pera ang nakakahamak na apps sa pamamagitan ng pagpapadala ng mga mensahe nang wala ng iyong kumpirmasyon."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"magpadala ng mga kaganapan ng tumugon sa pamamagitan ng mensahe"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Binibigyang-daan ang app na magpadala ng mga kahilingan sa iba pang apps ng pagmemensahe upang pangasiwaan ang mga kaganapan ng tumugon sa pamamagitan ng mensahe para sa mga papasok na tawag."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"basahin ang iyong mga text message (SMS o MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Pinapayagan ang app na magbasa ng mga mensaheng SMS na naka-imbak sa iyong tablet o SIM card. Pinapayagan nito ang app na basahin ang lahat ng mensaheng SMS, ano pa man ang nilalaman at katayuan sa pagiging kumpedensyal ng mga ito."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Pinapayagan ang app na magbasa ng mga mensaheng SMS na naka-imbak sa iyong telepono o SIM card. Pinapayagan nito ang app na basahin ang lahat ng mensaheng SMS, ano pa man ang nilalaman at katayuan sa pagiging kumpedensyal ng mga ito."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Pinapayagan ang may-hawak na sumailalim sa nangungunang interface ng pamamaraan ng pag-input. Hindi kailanman dapat na kailanganin para sa normal na apps."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"sumailalim sa isang serbisyo sa accessibility"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Binibigyang-daan ang may-ari na sumailalim sa nasa nangungunang antas na interface ng isang serbisyo sa accessibility. Hindi dapat kailanman kailanganin para sa normal na apps."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"humiling ng explore by touch"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Binibigyang-daan ang may-ari na humiling ng mode ng pakikipag-ugnayan kung saan sinasabi nang malakas ang mga napindot na item at nagagalugad ang UI sa pamamagitan ng mga galaw."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"humiling ng pinahusay na accessibility sa web"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Binibigyang-daan ang may-ari na hilingin ang pagpapagana ng mga pagpapahusay sa accessibility sa web. Halimbawa, ang pag-install ng mga script mula sa Google upang gawing mas naa-access ang nilalaman ng app."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"sumailalim sa serbisyo ng teksto"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Pinapayagan ang may-hawak na sumailalim sa nangungunang antas na interface (hal. SpellCheckerService). Hindi kailanman dapat na kailanganin para sa normal na apps."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"sumailalim sa isang serbisyo ng VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Pinapayagan ang app na pamahalaan ang mga patakaran ng network at ilarawan ang mga patakarang tukoy sa app."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"baguhin ang pagkukuwenta sa paggamit ng network"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Pinapayagan ang app na baguhin kung paano isinasaalang-alang ang paggamit ng network laban sa apps. Hindi para sa paggamit ng normal na apps."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"i-access ang mga notification"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Pinapayagan ang app na kumuha, sumuri, at mag-clear ng mga notification, kabilang ang mga na-post ng iba pang apps."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Magtakda ng mga panuntunan sa password"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Kontrolin ang haba at mga character na pinapayagan sa mga password sa pag-unlock ng screen."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Subaybayan ang mga pagsubok sa pag-unlock ng screen"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 78403a6..21fe6d4 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Depolama"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB belleğe erişin."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD karta erişin."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Erişilebilirlik özellikleri"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Engelli kullanıcılara yardımcı olan teknolojinin istekte bulunabileceği özellikler."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"durum çubuğunu devre dışı bırak veya değiştir"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Uygulamaya, durum çubuğunu devre dışı bırakma ve sistem simgelerini ekleyip kaldırma izni verir."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"durum çubuğu"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Uygulamaya, cihazınız tarafından alınan hücre yayını mesajlarını okuma izni verir. Hücre yayını uyarıları bazı yerlerde acil durumlar konusunda sizi uyarmak için gönderilir. Kötü amaçlı uygulamalar acil hücre yayını alındığında cihazınızın performansına ya da çalışmasına engel olabilir."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"SMS mesajları gönder"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Uygulamaya SMS mesajları gönderme izni verir. Bu durum beklenmeyen ödemelere neden olabilir. Kötü amaçlı uygulamalar onayınız olmadan mesajlar göndererek sizi zarara uğratabilir."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"SMS mesajlarını onaysız gönder"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Uygulamaya SMS mesajları gönderme izni verir. Bu durum beklenmeyen ödemelere neden olabilir. Kötü amaçlı uygulamalar onayınız olmadan mesajlar göndererek sizi zarara uğratabilir."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"mesajla yanıtla etkinlikleri gönder"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Uygulamaya, gelen çağrıları mesajla yanıtlama etkinliklerini işlemek üzere diğer mesajlaşma uygulamalarına istek gönderme izni verir."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"kısa mesajlarımı (SMS veya MMS) oku"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Uygulamaya tabletinizde veya SIM kartta saklanan SMS mesajlarını okuma izni verir. Bu izin, uygulamanın tüm SMS mesajlarını içeriğinden veya gizliliğinden bağımsız olarak okumasına olanak sağlar."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Uygulamaya telefonunuzda veya SIM kartta saklanan SMS mesajlarını okuma izni verir. Bu izin, uygulamanın tüm SMS mesajlarını içeriğinden veya gizliliğinden bağımsız olarak okumasına olanak sağlar."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Cihazın sahibine, bir giriş yönteminin en üst düzey arayüzüne bağlanma izni verir. Normal uygulamalarda hiçbir zaman gerek duyulmaz."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"erişilebilirlik hizmetine bağlan"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"İzin sahibine bir erişilebilirlik hizmetinin en üst düzey arayüzüne bağlanma izni verir. Normal uygulamalarda hiçbir zaman gerek duyulmaz."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"dokunarak keşfetme isteğinde bulunur"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"İzin sahibine, dokunulan öğelerin sesli okunduğu ve kullanıcı arayüzünün hareketlerle keşfedilebildiği etkileşimli bir mod isteğinde bulunma olanağı sağlar."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"genişletilmiş Web erişilebilirliği isteğinde bulunur"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"İzin sahibine Web erişim geliştirmelerini etkinleştirme isteğinde bulunma olanağı sağlar. Örneğin, uygulama içeriğinin daha fazla erişilebilir olması için Google\'dan komut dosyası yüklemek gibi."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"kısa mesaj hizmetine bağla"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Cihazın sahibine, bir metin hizmetinin (ör. SpellCheckerService) en üst düzey arayüzüne bağlanma izni verir. Normal uygulamalarda hiçbir zaman gerekmez."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"VPN hizmetine bağlan"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Uygulamaya, ağ politikalarını yönetme ve uygulamaya özgü kuralları tanımlama izni verir."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"ağ kullanım hesaplamasını değiştir"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Uygulamaya, ağın uygulamalara göre nasıl kullanılacağını değiştirme izni verir. Normal uygulamalar tarafından kullanılmak için değildir."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"bildirimlere eriş"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Uygulamanın bildirimler almasına, bildirimleri incelemesine ve temizlemesine izin verir. Buna diğer uygulamalar tarafından yayınlanan bildirimler de dahildir."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Şifre kuralları ayarla"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Ekran kilidini açma şifrelerinde izin verilen uzunluğu ve karakterleri denetleme."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Ekran kilidini açma denemelerini izle"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index d61af1d..7f80706 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Зберігання"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Отрим. доступу до носія USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Доступ до карти SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Функції доступності"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Функції, на які може подавати запит допоміжна технологія."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"вимикати чи змін. рядок стану"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Дозволяє програмі вимикати рядок стану чи додавати та видаляти піктограми системи."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"рядок стану"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Дозволяє програмі читати широкомовні повідомлення мережі, отримані пристроєм. Широкомовні сповіщення мережі надсилаються в деяких країнах для попередження про надзвичайні ситуації. Шкідливі програми можуть втручатися у швидкодію чи роботу пристрою під час отримання широкомовного повідомлення мережі про надзвичайну ситуацію."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"надсил. SMS повідом."</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Дозволяє програмі надсилати SMS-повідомлення. Це може спричинити неочікуване стягнення плати. Шкідливі програми можуть надсилати повідомлення без вашого підтвердження, за що з вас стягуватимуться кошти."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"надсилати SMS-повідомлення без підтвердження"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Дозволяє програмі надсилати SMS-повідомлення. Це може спричинити неочікуване стягнення плати. Шкідливі програми можуть надсилати повідомлення без вашого підтвердження, за що з вас стягуватимуться кошти."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"надсилати події типу \"відповідь повідомленням\""</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Дозволяє програмі надсилати запити іншим програмам обміну повідомленнями, щоб обробляти події типу \"відповідь повідомленням\" для вхідних викликів."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"читати текстові повідомлення (SMS або MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Дозволяє програмі читати SMS повідомлення, збережені в планшетному ПК чи на SIM-карті. Це дозволяє програмі читати всі SMS повідомлення, незалежно від вмісту чи конфіденційності."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Дозволяє програмі читати SMS повідомлення, збережені в телефоні чи на SIM-карті. Це дозволяє програмі читати всі SMS повідомлення, незалежно від вмісту чи конфіденційності."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Дозволяє власнику прив’язуватися до інтерфейсу верхнього рівня методу введення. Ніколи не застосовується для звичайних програм."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"прив’язуватися до служби доступності"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Дозволяє власникові прив’язуватися до інтерфейсу верхнього рівня служби доступності. Ніколи не застосовується для звичайних програм."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"подавати запит на дослідження дотиком"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Дозволяє подавати запит на інтерактивний режим, у якому надаються голосові підказки для елементів, яких торкається користувач, а інтерфейсом можна користуватися за допомогою жестів."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"подавати запит на покращення веб-доступності"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Дозволяє подавати запит на ввімкнення покращень веб-доступності. Наприклад, установлювати сценарії, які робитимуть вміст програм доступнішим."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"прив’язати до текстової служби"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Дозволяє власникові прив’язуватися до інтерфейсу верхнього рівня текстової служби (напр. SpellCheckerService). Ніколи не застосовується для звичайних програм."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"прив’язуватися до служби VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Дозволяє програмі керувати політикою мережі та визначити спеціальні правила для програм."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"змінювати облік використання мережі"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Дозволяє програмі змінювати метод підрахунку того, як програми використовують мережу. Не для використання звичайними програмами."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"отримувати доступ до сповіщень"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Дозволяє програмі отримувати, перевіряти й очищати сповіщення, зокрема опубліковані іншими програмами."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Устан. правила пароля"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Контролювати довжину паролів для розблокування екрана та дозволені в них символи."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Відстежув. спроби розблок. екрана"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 27b91af..70797cb 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Dung lượng"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Truy cập bộ nhớ USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Truy cập thẻ SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Tính năng hỗ trợ truy cập"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Tính năng mà công nghệ hỗ trợ có thể yêu cầu."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"vô hiệu hóa hoặc sửa đổi thanh trạng thái"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Cho phép ứng dụng vô hiệu hóa thanh trạng thái hoặc thêm và xóa biểu tượng hệ thống."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"thanh trạng thái"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Cho phép ứng dụng đọc tin nhắn quảng bá mà thiết bị của bạn nhận được. Tin nhắn quảng bá cảnh báo được gửi ở một số địa điểm nhằm cảnh báo cho bạn về các tình huống khẩn cấp. Các ứng dụng độc hại có thể gây ảnh hưởng đến hiệu suất hoặc hoạt động của thiết bị của bạn khi nhận được tin nhắn quảng bá khẩn cấp."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"gửi tin nhắn SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Cho phép ứng dụng gửi tin nhắn SMS. Việc này có thể dẫn đến các khoản phí không mong muốn. Các ứng dụng độc hai có thể khiến bạn tốn tiền bằng cách gửi tin nhắn mà không cần sự xác nhận của bạn."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"gửi tin nhắn SMS mà không cần xác nhận"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Cho phép ứng dụng gửi tin nhắn SMS. Việc này có thể dẫn đến các khoản phí không mong muốn. Các ứng dụng độc hai có thể khiến bạn tốn tiền bằng cách gửi tin nhắn mà không cần sự xác nhận của bạn."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"gửi sự kiện trả lời qua tin nhắn"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Cho phép ứng dụng gửi yêu cầu đến ứng dụng nhắn tin khác để xử lý các sự kiện trả lời qua tin nhắn cho các cuộc gọi đến."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"đọc tin nhắn văn bản của bạn (SMS hoặc MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Cho phép ứng dụng đọc tin nhắn SMS được lưu trữ trên máy tính bảng hoặc thẻ SIM của bạn. Việc này cho phép ứng dụng đọc tất cả tin nhắn SMS, bất kể nội dung hay tính bí mật là gì."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Cho phép ứng dụng đọc tin nhắn SMS được lưu trữ trên điện thoại hoặc thẻ SIM của bạn. Việc này cho phép ứng dụng đọc tất cả tin nhắn SMS, bất kể nội dung hay tính bí mật là gì."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Cho phép chủ sở hữu liên kết với giao diện cấp cao nhất của phương thức nhập. Không cần thiết cho các ứng dụng thông thường."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"liên kết với dịch vụ truy cập"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Cho phép chủ sở hữu liên kết với giao diện cấp cao nhất của dịch vụ truy cập. Không cần thiết cho các ứng dụng thông thường."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"yêu cầu khám phá bằng cách chạm"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Cho phép chủ sở hữu yêu cầu chế độ tương tác mà các mục đã chạm được đọc to và có thể khám phá giao diện người dùng qua các thao tác."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"yêu cầu khả năng hỗ trợ truy cập web nâng cao"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Cho phép chủ sở hữu yêu cầu bật tính năng cải thiện hỗ trợ truy cập web. Ví dụ: cài đặt tập lệnh để nội dung ứng dụng dễ truy cập hơn."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"liên kết với dịch vụ văn bản"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Cho phép chủ sở hữu liên kết với giao diện cấp cao nhất của dịch vụ văn bản (ví dụ: SpellCheckerService). Không cần thiết cho các ứng dụng thông thường."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"liên kết với dịch vụ VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Cho phép ứng dụng quản lý chính sách mạng và xác định quy tắc dành riêng cho ứng dụng."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"sửa đổi hạch toán sử dụng mạng"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Cho phép ứng dụng sửa đổi cách tính mức sử dụng mạng so với ứng dụng. Không dành cho các ứng dụng thông thường."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"truy cập thông báo"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Cho phép ứng dụng truy xuất, kiểm tra và xóa thông báo, bao gồm những thông báo được đăng bởi các ứng dụng khác."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Đặt quy tắc mật khẩu"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Kiểm soát độ dài và ký tự được phép trong mật khẩu mở khóa màn hình."</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Giám sát những lần thử mở khóa màn hình"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index f80f677..1406064 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"存储"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"访问 USB 存储设备。"</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"访问 SD 卡。"</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"辅助功能"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"辅助技术可请求启用的功能。"</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"停用或修改状态栏"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"允许应用停用状态栏或者增删系统图标。"</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"状态栏"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"允许应用读取您的设备收到的小区广播消息。小区广播消息是在某些地区发送的、用于发布紧急情况警告的提醒信息。恶意应用可能会在您收到小区紧急广播时干扰您设备的性能或操作。"</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"发送短信"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"允许该应用发送短信。此权限可能会导致意外收费。恶意应用可能会未经您的确认而发送短信,由此产生相关费用。"</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"不经确认直接发送短信"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"允许该应用发送短信。此权限可能会导致意外收费。恶意应用可能会未经您的确认而发送短信,由此产生相关费用。"</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"发送“通过信息回复”事件"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"允许应用向其他信息应用发送请求,以便处理来电的“通过信息回复”事件。"</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"读取您的文字讯息(短信或彩信)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"允许该应用读取您平板电脑或 SIM 卡上存储的短信。此权限可让该应用读取所有短信,而不考虑短信内容或机密性。"</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"允许该应用读取您手机或 SIM 卡上存储的短信。此权限可让该应用读取所有短信,而不考虑短信内容或机密性。"</string>
@@ -326,7 +324,7 @@
     <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"修改应用操作统计信息"</string>
     <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"允许该应用修改收集到的应用操作统计信息。普通应用不应使用此权限。"</string>
     <string name="permlab_backup" msgid="470013022865453920">"控制系统备份和还原"</string>
-    <string name="permdesc_backup" msgid="6912230525140589891">"允许应用控制系统的备份和还原机制。普通应用不能使用此权限。"</string>
+    <string name="permdesc_backup" msgid="6912230525140589891">"允许应用控制系统的备份和还原机制。普通应用不应使用此权限。"</string>
     <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"确认完整备份或恢复操作"</string>
     <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"允许应用启动完整备份确认用户界面。不用于任何应用。"</string>
     <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"显示未授权的窗口"</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"允许用户绑定至输入法的顶级接口。普通应用绝不需要此权限。"</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"绑定至辅助服务"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"允许应用绑定至辅助服务的顶级接口。普通应用绝不需要此权限。"</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"请求启用触摸浏览"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"允许应用请求启用互动模式,在该模式下,设备可大声读出用户触摸的内容,而且用户可以通过手势浏览用户界面。"</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"请求启用网页辅助增强功能"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"允许应用请求打开网页辅助增强功能。例如,安装脚本,以方便用户更轻松地访问应用内容。"</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"绑定至文字服务"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"允许用户绑定至文字服务(如 SpellCheckerService)的顶级接口。普通应用绝不需要此权限。"</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"绑定到 VPN 服务"</string>
@@ -409,9 +403,9 @@
     <string name="permlab_writeSettings" msgid="2226195290955224730">"修改系统设置"</string>
     <string name="permdesc_writeSettings" msgid="7775723441558907181">"允许应用修改系统的设置数据。恶意应用可能会破坏您的系统配置。"</string>
     <string name="permlab_writeSecureSettings" msgid="204676251876718288">"修改安全系统设置"</string>
-    <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"允许应用修改系统的安全设置数据。普通应用不能使用此权限。"</string>
+    <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"允许应用修改系统的安全设置数据。普通应用不应使用此权限。"</string>
     <string name="permlab_writeGservices" msgid="2149426664226152185">"修改 Google 服务地图"</string>
-    <string name="permdesc_writeGservices" msgid="1287309437638380229">"允许应用修改 Google 服务地图。普通应用不能使用此权限。"</string>
+    <string name="permdesc_writeGservices" msgid="1287309437638380229">"允许应用修改 Google 服务地图。普通应用不应使用此权限。"</string>
     <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"开机启动"</string>
     <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"允许应用在系统完成引导后立即自动启动。这样可能会延长平板电脑的启动时间,并允许应用始终运行,从而导致平板电脑总体运行速度减慢。"</string>
     <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"允许应用在系统完成引导后立即自动启动。这样可能会延长手机的启动时间,并允许应用始终运行,从而导致手机总体运行速度减慢。"</string>
@@ -510,9 +504,9 @@
     <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"直接启动 CDMA 电话设置"</string>
     <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"允许应用启动 CDMA 配置。恶意应用可能会无端启动 CDMA 配置。"</string>
     <string name="permlab_locationUpdates" msgid="7785408253364335740">"控制位置更新通知"</string>
-    <string name="permdesc_locationUpdates" msgid="1120741557891438876">"允许应用启用/停用来自无线装置的位置更新通知。普通应用不能使用此权限。"</string>
+    <string name="permdesc_locationUpdates" msgid="1120741557891438876">"允许应用启用/停用来自无线装置的位置更新通知。普通应用不应使用此权限。"</string>
     <string name="permlab_checkinProperties" msgid="7855259461268734914">"访问检入属性"</string>
-    <string name="permdesc_checkinProperties" msgid="4024526968630194128">"允许应用对登记服务上传的属性拥有读取/写入权限。普通应用不能使用此权限。"</string>
+    <string name="permdesc_checkinProperties" msgid="4024526968630194128">"允许应用对登记服务上传的属性拥有读取/写入权限。普通应用不应使用此权限。"</string>
     <string name="permlab_bindGadget" msgid="776905339015863471">"选择小部件"</string>
     <string name="permdesc_bindGadget" msgid="8261326938599049290">"允许应用告知系统哪些小部件可供哪个应用使用。拥有此权限的应用可向其他应用授予对个人资料的访问权限。普通应用不应使用此权限。"</string>
     <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"修改手机状态"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"允许应用管理网络政策和定义专门针对应用的规则。"</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"修改网络使用情况记录方式"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"允许该应用修改对于各应用的网络使用情况的统计方式。普通应用不应使用此权限。"</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"查看通知"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"允许该应用检索、检查并清除通知,包括其他应用发布的通知。"</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"设置密码规则"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"控制屏幕解锁密码所允许的长度和字符。"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"监视屏幕解锁尝试次数"</string>
@@ -1238,9 +1234,9 @@
     <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD 卡已移除。请插入新的 SD 卡。"</string>
     <string name="activity_list_empty" msgid="1675388330786841066">"未找到匹配的活动。"</string>
     <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"更新组件使用情况统计"</string>
-    <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"允许应用修改收集到的组件使用情况统计信息。普通应用不能使用此权限。"</string>
+    <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"允许应用修改收集到的组件使用情况统计信息。普通应用不应使用此权限。"</string>
     <string name="permlab_copyProtectedData" msgid="4341036311211406692">"复制内容"</string>
-    <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"允许应用调用默认的容器服务,以便复制内容。普通应用不能使用此权限。"</string>
+    <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"允许应用调用默认的容器服务,以便复制内容。普通应用不应使用此权限。"</string>
     <string name="permlab_route_media_output" msgid="1642024455750414694">"更改媒体输出线路"</string>
     <string name="permdesc_route_media_output" msgid="4932818749547244346">"允许该应用将媒体输出线路更改到其他外部设备。"</string>
     <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"触摸两次可进行缩放控制"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index a7e4b70..b313268 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"儲存"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"存取 USB 儲存裝置。"</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"存取 SD 卡。"</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"協助工具功能"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"輔助技術可要求的功能。"</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"停用或變更狀態列"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"允許應用程式停用狀態列,並可新增或移除系統圖示。"</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"狀態列"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"允許應用程式讀取您裝置收到的區域廣播訊息。某些地點會發出區域廣播警示,警告您有緊急狀況發生。請注意,惡意應用程式可能會在裝置收到緊急區域廣播時,干擾裝置的效能或運作。"</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"傳送 SMS 簡訊"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"允許應用程式傳送簡訊,但可能產生非預期的費用。惡意應用程式可能利用此功能擅自傳送簡訊,增加您不必要的額外支出。"</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"不需經過確認即傳送 SMS 簡訊"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"允許應用程式傳送簡訊,但可能產生非預期的費用。惡意應用程式可能利用此功能擅自傳送簡訊,增加您不必要的額外支出。"</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"傳送「透過訊息回應」事件"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"允許應用程式傳送要求給其他簡訊應用程式,以處理來電的「透過訊息回應」事件。"</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"讀取您的簡訊 (SMS 或 MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"允許應用程式讀取平板電腦或 SIM 卡上儲存的簡訊。這項權限可讓應用程式讀取所有簡訊,包括各種內容及機密簡訊。"</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"允許應用程式讀取手機或 SIM 卡上儲存的簡訊。這項權限可讓應用程式讀取所有簡訊,包括各種內容及機密簡訊。"</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"允許應用程式繫結至輸入法的頂層介面 (一般應用程式不需使用)。"</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"繫結至協助工具服務"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"允許應用程式繫結至協助工具服務的頂層介面 (一般應用程式不需使用)。"</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"要求輕觸探索"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"允許應用程式要求啟用互動模式,讓裝置讀出使用者輕觸的項目,並且讓使用者透過手勢探索使用者介面。"</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"要求增強式網頁協助工具"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"允許應用程式要求啟用網頁協助工具增強功能。例如安裝指令碼,讓使用者更容易存取應用程式的內容。"</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"繫結至文字服務"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"允許應用程式繫結至文字服務 (例如 SpellCheckerService) 的頂層介面 (一般應用程式不需使用)。"</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"繫結至 VPN 服務"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"允許應用程式管理網路政策並定義應用程式專用規則。"</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"修改網路使用量計算方式"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"允許應用程式修改應用程式網路使用量的計算方式 (不建議一般應用程式使用)。"</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"存取通知"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"允許應用程式擷取、檢查及清除通知 (包括由其他應用程式發佈的通知)。"</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"設定密碼規則"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"控制螢幕解鎖密碼所允許的長度和字元。"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"監視螢幕解鎖嘗試次數"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index f4f1982..30893c6 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -225,10 +225,8 @@
     <string name="permgrouplab_storage" msgid="1971118770546336966">"Isitoreji"</string>
     <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Finyelela kwisitoreji se-USB."</string>
     <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Finyelela ikhadi le-SD."</string>
-    <!-- no translation found for permgrouplab_accessibilityFeatures (7919025602283593907) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_accessibilityFeatures (4205196881678144335) -->
-    <skip />
+    <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Izici zokufinyelela"</string>
+    <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Izici ezingacelwa ubuchwepheshe bokusiza."</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"khubaza noma guqula ibha yomumo"</string>
     <string name="permdesc_statusBar" msgid="8434669549504290975">"Ivumela insiza ukuthi yenze umudwa ochaza ngesimo ukuthi ungasebenzi noma ukufaka noma ukukhipha izithonjana zohlelo."</string>
     <string name="permlab_statusBarService" msgid="7247281911387931485">"umudwa ochaza ngesimo"</string>
@@ -247,8 +245,8 @@
     <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Ivumela uhlelo lokusebenza ukufunda imilayezo yokusakaza yeselula etholwe idivayisi yakho. Izaziso zokusakaza zeselula zilethwa kwezinye izindawo ukukuxwayisa ngezimo ezisheshayo. Izinhlelo zokusebenza ezingalungile zingaphazamisana nokusebenza noma umsebenzi wedivayisi yakho uma ukusakaza kweselula kwesimo esisheshayo kutholwa."</string>
     <string name="permlab_sendSms" msgid="5600830612147671529">"thumela imiyalezo ye-SMS"</string>
     <string name="permdesc_sendSms" msgid="7094729298204937667">"Ivumela uhlelo lokusebenza ukuthumela imilayezo ye-SMS. Lokhu kungaholela emashajini angallindelekile. Izinhlelo zokusebenza ezingalungile zingakubiza imali ngokuthumela imilayezo ngaphandle kokuqinisekisa kwakho."</string>
-    <string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"thumela i-SMS engenakuqinisekiswa"</string>
-    <string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Ivumela uhlelo lokusebenza ukuthumela imilayezo ye-SMS. Lokhu kungaholela emashajini angallindelekile. Izinhlelo zokusebenza ezingalungile zingakubiza imali ngokuthumela imilayezo ngaphandle kokuqinisekisa kwakho."</string>
+    <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"thumela imicimbi yokuphendula ngemilayezo"</string>
+    <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Ivumela uhlelo lokusebenza ukuthumela izicelo kwezinye izinhlelo zokusebenza zemilayezo ukuphatha imicimbi yokuphendula ngemilayezo amakholi angenayo."</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"funda imilayezo yakho ebhaliwe (i-SMS noma i-MMS)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Ivumela uhlelo lokusebenza ukufunda imilayezo ye-SMS elondolozwe kuthebulethi noma ekhadini lakho le-SIM. Lokhu kuvumela uhlelo lokusebenza ukufunda yonke imilayezo ye-SMS, ngaphandle kokuqukethwe noma ukugcinwa kuyimfihlo."</string>
     <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Ivumela uhlelo lokusebenza ukufunda imilayezo ye-SMS elondolozwe efonini noma ekhadini lakho le-SIM. Lokhu kuvumela uhlelo lokusebenza ukufunda yonke imilayezo ye-SMS, ngaphandle kokuqukethwe noma ukugcinwa kuyimfihlo."</string>
@@ -348,14 +346,10 @@
     <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Ivumela isimeli ukuhlanganisa uxhumano nomsebenzisi wezinga eliphezulu lendlela yokufaka. Ayisoze yadingeka kwizinhlelo ezivamile."</string>
     <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"hlanganisa kusevisi yokufinyeleleka"</string>
     <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Ivumela isibambi ukuhlanganisa uxhumo nomsebenzisi kwezinga eliphezulu lesevisi yesinqunjwana. Akusoze kwadingekela izinhlelo zokusebenza ezivamile."</string>
-    <!-- no translation found for permlab_canRequestTouchExplorationMode (6094034289937541846) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestTouchExplorationMode (940314268922270663) -->
-    <skip />
-    <!-- no translation found for permlab_canRequestEnahncedWebAccessibility (1905232971331801453) -->
-    <skip />
-    <!-- no translation found for permdesc_canRequestEnahncedWebAccessibility (4500520989321729676) -->
-    <skip />
+    <string name="permlab_canRequestTouchExplorationMode" msgid="6094034289937541846">"cela ukuhlola ngokuthinta"</string>
+    <string name="permdesc_canRequestTouchExplorationMode" msgid="940314268922270663">"Ivumela i-hoder ukuthi icele imodi yokusebenzisana lapho izinto ezithintiwe zikhulunywa ngokumemezwa ne-UI ingahlolwa ngezimpawu."</string>
+    <string name="permlab_canRequestEnahncedWebAccessibility" msgid="1905232971331801453">"cela ukufinyelela kuwebhu okuthuthukisiwe"</string>
+    <string name="permdesc_canRequestEnahncedWebAccessibility" msgid="4500520989321729676">"Ivumela i-hoder ukucela ukunika amandla ukuthuthukiswa kokufinyelela iwebhu. isibonelo, ukufaka izikripthi kusuka ku-Google ukwenza okuqukethwe kohlelo lokusebenza ukuthi kufinyeleleke."</string>
     <string name="permlab_bindTextService" msgid="7358378401915287938">"bophezela kunsizakalo yombhalo"</string>
     <string name="permdesc_bindTextService" msgid="8151968910973998670">"Ivumela umbambi ukuhlanganisa uxhumano nomsebenzisi kwezinga eliphezulu lwesixhumi esibonakalayo sensizakalo yombhalo(isb. InsizakaloYokuhlolaUkubhala). Akusoze kwadingeka kwezinhlelo zokusebenza ezivamile."</string>
     <string name="permlab_bindVpnService" msgid="4708596021161473255">"hlanganisa kwinsizakalo ye-VPN"</string>
@@ -623,6 +617,8 @@
     <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Ivumela insiza ukuthi yengamele iigomo iphinde ichaze imithetho ehambisana ngqo nensiza."</string>
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"lungisa ukubala kokusebenza kohleloxhumano"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Ivumela insiza ukuthi iguqule ukuthii ukusetshenziswa kwenethiwekhi kumiswa kanjani ezinsizeni. Ayisetshenziswa izinsiza ezijwayelekile."</string>
+    <string name="permlab_accessNotifications" msgid="7673416487873432268">"finyelela kuzaziso"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"Ivumela uhlelo lokusebenza ukuthi lithole, lihlole, liphinde lisuse izaziso, ezifaka lezo ezithunyelwe ezinye izinhlelo zokusebenza."</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"Misa imithetho yephasiwedi"</string>
     <string name="policydesc_limitPassword" msgid="3252114203919510394">"Lawula ubude nezinhlamvu ezivunyelwe kumaphasiwedi okuvula isikrini"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"Gaka imizamo yokuvula isikrini"</string>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index aae509e..00c6f6d 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -601,12 +601,12 @@
      This may result in unexpected charges. Malicious apps may cost you money by
      sending messages without your confirmation.</string>
 
-     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
-    <string name="permlab_sendSmsNoConfirmation">send SMS messages with no confirmation</string>
-    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
-    <string name="permdesc_sendSmsNoConfirmation">Allows the app to send SMS
-      messages. This may result in unexpected charges. Malicious apps may cost
-      you money by sending messages without your confirmation.</string>
+     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=NONE] -->
+    <string name="permlab_sendRespondViaMessageRequest">send respond-via-message events</string>
+    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=NONE] -->
+    <string name="permdesc_sendRespondViaMessageRequest">Allows the app to send
+      requests to other messaging apps to handle respond-via-message events for incoming
+      calls.</string>
 
     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permlab_readSms">read your text messages (SMS or MMS)</string>
@@ -1806,6 +1806,11 @@
     <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permdesc_modifyNetworkAccounting">Allows the app to modify how network usage is accounted against apps. Not for use by normal apps.</string>
 
+    <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+    <string name="permlab_accessNotifications">access notifications</string>
+    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+    <string name="permdesc_accessNotifications">Allows the app to retrieve, examine, and clear notifications, including those posted by other apps.</string>
+
     <!-- Policy administration -->
 
     <!-- Title of policy access to limiting the user's password choices -->
diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/AccessPointParserHelper.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/AccessPointParserHelper.java
index 649e39d..0461c0b 100644
--- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/AccessPointParserHelper.java
+++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/AccessPointParserHelper.java
@@ -213,8 +213,8 @@
                         config.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
                         // Initialize other fields.
                         config.enterpriseConfig.setPhase2Method(WifiEnterpriseConfig.Phase2.NONE);
-                        config.enterpriseConfig.setCaCertificate("");
-                        config.enterpriseConfig.setClientCertificate("");
+                        config.enterpriseConfig.setCaCertificateAlias("");
+                        config.enterpriseConfig.setClientCertificateAlias("");
                         config.enterpriseConfig.setIdentity("");
                         config.enterpriseConfig.setAnonymousIdentity("");
                         break;
@@ -288,12 +288,12 @@
             }
             if (cacert) {
                 String cacertValue = new String(ch, start, length);
-                config.enterpriseConfig.setCaCertificate(cacertValue);
+                config.enterpriseConfig.setCaCertificateAlias(cacertValue);
                 cacert = false;
             }
             if (usercert) {
                 String usercertValue = new String(ch, start, length);
-                config.enterpriseConfig.setClientCertificate(usercertValue);
+                config.enterpriseConfig.setClientCertificateAlias(usercertValue);
                 usercert = false;
             }
             if (ip) {
diff --git a/core/tests/benchmarks/src/android/net/TrafficStatsBenchmark.java b/core/tests/benchmarks/src/android/net/TrafficStatsBenchmark.java
new file mode 100644
index 0000000..5a29adc
--- /dev/null
+++ b/core/tests/benchmarks/src/android/net/TrafficStatsBenchmark.java
@@ -0,0 +1,39 @@
+/*
+ * 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.net;
+
+import com.google.caliper.SimpleBenchmark;
+
+public class TrafficStatsBenchmark extends SimpleBenchmark {
+    public void timeGetUidRxBytes(int reps) {
+        for (int i = 0; i < reps; i++) {
+            TrafficStats.getUidRxBytes(android.os.Process.myUid());
+        }
+    }
+
+    public void timeGetMobileRxBytes(int reps) {
+        for (int i = 0; i < reps; i++) {
+            TrafficStats.getMobileRxBytes();
+        }
+    }
+
+    public void timeGetTotalRxBytes(int reps) {
+        for (int i = 0; i < reps; i++) {
+            TrafficStats.getTotalRxBytes();
+        }
+    }
+}
diff --git a/core/tests/coretests/src/android/provider/SettingsProviderTest.java b/core/tests/coretests/src/android/provider/SettingsProviderTest.java
index 6edd2dc..131651a 100644
--- a/core/tests/coretests/src/android/provider/SettingsProviderTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsProviderTest.java
@@ -132,6 +132,42 @@
     }
 
     @MediumTest
+    public void testSettingsChangeForOtherUser() {
+        UserManager um = (UserManager) getContext().getSystemService(Context.USER_SERVICE);
+        ContentResolver r = getContext().getContentResolver();
+
+        // Make sure there's an owner
+        assertTrue(findUser(um, UserHandle.USER_OWNER));
+
+        // create a new user to use for testing
+        UserInfo otherUser = um.createUser("TestUser1", UserInfo.FLAG_GUEST);
+        assertTrue(otherUser != null);
+        try {
+            assertNotSame("Current calling user id should not be the new guest user",
+                    otherUser.id, UserHandle.getCallingUserId());
+
+            Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "gps");
+            Settings.Secure.putStringForUser(r,
+                    Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "network", otherUser.id);
+
+            assertEquals("gps",
+                    Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
+            assertEquals("network", Settings.Secure.getStringForUser(
+                    r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, otherUser.id));
+
+            assertNotSame("Current calling user id should not be the new guest user",
+                    otherUser.id, UserHandle.getCallingUserId());
+            Settings.Secure.setLocationProviderEnabledForUser(r, "network", false, otherUser.id);
+            assertEquals("", Settings.Secure.getStringForUser(
+                    r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, otherUser.id));
+
+        } finally {
+            // Tidy up
+            um.removeUser(otherUser.id);
+        }
+    }
+
+    @MediumTest
     public void testRowNumberContentUri() {
         ContentResolver r = getContext().getContentResolver();
 
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index cf04b5c..d986c1e 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -122,71 +122,6 @@
          others should have a fairly open environment in which to
          interact with the system. -->
 
-    <!-- Standard permissions granted to the shell. -->
-    <assign-permission name="android.permission.WRITE_EXTERNAL_STORAGE" uid="shell" />
-    <assign-permission name="android.permission.SEND_SMS" uid="shell" />
-    <assign-permission name="android.permission.CALL_PHONE" uid="shell" />
-    <assign-permission name="android.permission.READ_CONTACTS" uid="shell" />
-    <assign-permission name="android.permission.WRITE_CONTACTS" uid="shell" />
-    <assign-permission name="android.permission.READ_CALENDAR" uid="shell" />
-    <assign-permission name="android.permission.WRITE_CALENDAR" uid="shell" />
-    <assign-permission name="android.permission.READ_USER_DICTIONARY" uid="shell" />
-    <assign-permission name="android.permission.WRITE_USER_DICTIONARY" uid="shell" />
-    <assign-permission name="android.permission.ACCESS_FINE_LOCATION" uid="shell" />
-    <assign-permission name="android.permission.ACCESS_COARSE_LOCATION" uid="shell" />
-    <assign-permission name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" uid="shell" />
-    <assign-permission name="android.permission.ACCESS_NETWORK_STATE" uid="shell" />
-    <assign-permission name="android.permission.ACCESS_WIFI_STATE" uid="shell" />
-    <assign-permission name="android.permission.BLUETOOTH" uid="shell" />
-    <assign-permission name="android.permission.EXPAND_STATUS_BAR" uid="shell" />
-    <!-- System tool permissions granted to the shell. -->
-    <assign-permission name="android.permission.GET_TASKS" uid="shell" />
-    <assign-permission name="android.permission.CHANGE_CONFIGURATION" uid="shell" />
-    <assign-permission name="android.permission.REORDER_TASKS" uid="shell" />
-    <assign-permission name="android.permission.SET_ANIMATION_SCALE" uid="shell" />
-    <assign-permission name="android.permission.SET_PREFERRED_APPLICATIONS" uid="shell" />
-    <assign-permission name="android.permission.WRITE_SETTINGS" uid="shell" />
-    <assign-permission name="android.permission.WRITE_SECURE_SETTINGS" uid="shell" />
-    <assign-permission name="android.permission.BROADCAST_STICKY" uid="shell" />
-    <!-- Development tool permissions granted to the shell. -->
-    <assign-permission name="android.permission.SET_DEBUG_APP" uid="shell" />
-    <assign-permission name="android.permission.SET_PROCESS_LIMIT" uid="shell" />
-    <assign-permission name="android.permission.SET_ALWAYS_FINISH" uid="shell" />
-    <assign-permission name="android.permission.DUMP" uid="shell" />
-    <assign-permission name="android.permission.SIGNAL_PERSISTENT_PROCESSES" uid="shell" />
-    <assign-permission name="android.permission.KILL_BACKGROUND_PROCESSES" uid="shell" />
-    <!-- Internal permissions granted to the shell. -->
-    <assign-permission name="android.permission.FORCE_BACK" uid="shell" />
-    <assign-permission name="android.permission.BATTERY_STATS" uid="shell" />
-    <assign-permission name="android.permission.INTERNAL_SYSTEM_WINDOW" uid="shell" />
-    <assign-permission name="android.permission.INJECT_EVENTS" uid="shell" />
-    <assign-permission name="android.permission.RETRIEVE_WINDOW_CONTENT" uid="shell" />
-    <assign-permission name="android.permission.SET_ACTIVITY_WATCHER" uid="shell" />
-    <assign-permission name="android.permission.READ_INPUT_STATE" uid="shell" />
-    <assign-permission name="android.permission.SET_ORIENTATION" uid="shell" />
-    <assign-permission name="android.permission.INSTALL_PACKAGES" uid="shell" />
-    <assign-permission name="android.permission.CLEAR_APP_USER_DATA" uid="shell" />
-    <assign-permission name="android.permission.DELETE_CACHE_FILES" uid="shell" />
-    <assign-permission name="android.permission.DELETE_PACKAGES" uid="shell" />
-    <assign-permission name="android.permission.ACCESS_SURFACE_FLINGER" uid="shell" />
-    <assign-permission name="android.permission.READ_FRAME_BUFFER" uid="shell" />
-    <assign-permission name="android.permission.DEVICE_POWER" uid="shell" />
-    <assign-permission name="android.permission.INSTALL_LOCATION_PROVIDER" uid="shell" />
-    <assign-permission name="android.permission.BACKUP" uid="shell" />
-    <assign-permission name="android.permission.FORCE_STOP_PACKAGES" uid="shell" />
-    <assign-permission name="android.permission.STOP_APP_SWITCHES" uid="shell" />
-    <assign-permission name="android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" uid="shell" />
-    <assign-permission name="android.permission.GRANT_REVOKE_PERMISSIONS" uid="shell" />
-    <assign-permission name="android.permission.SET_KEYBOARD_LAYOUT" uid="shell" />
-    <assign-permission name="android.permission.GET_DETAILED_TASKS" uid="shell" />
-    <assign-permission name="android.permission.SET_SCREEN_COMPATIBILITY" uid="shell" />
-    <assign-permission name="android.permission.READ_EXTERNAL_STORAGE" uid="shell" />
-    <assign-permission name="android.permission.WRITE_EXTERNAL_STORAGE" uid="shell" />
-    <assign-permission name="android.permission.INTERACT_ACROSS_USERS" uid="shell" />
-    <assign-permission name="android.permission.INTERACT_ACROSS_USERS_FULL" uid="shell" />
-    <assign-permission name="android.permission.MANAGE_USERS" uid="shell" />
-    <assign-permission name="android.permission.BLUETOOTH_STACK" uid="shell" />
-    
     <assign-permission name="android.permission.MODIFY_AUDIO_SETTINGS" uid="media" />
     <assign-permission name="android.permission.ACCESS_DRM" uid="media" />
     <assign-permission name="android.permission.ACCESS_SURFACE_FLINGER" uid="media" />
diff --git a/docs/downloads/training/BitmapFun.zip b/docs/downloads/training/BitmapFun.zip
index 882ce03..b5fd88b 100644
--- a/docs/downloads/training/BitmapFun.zip
+++ b/docs/downloads/training/BitmapFun.zip
Binary files differ
diff --git a/docs/html-intl/es/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/es/training/monitoring-device-state/battery-monitoring.jd
new file mode 100644
index 0000000..08a42dd
--- /dev/null
+++ b/docs/html-intl/es/training/monitoring-device-state/battery-monitoring.jd
@@ -0,0 +1,120 @@
+page.title=Cómo controlar el nivel de batería y el estado de carga
+parent.title=Cómo optimizar la duración de la batería
+parent.link=index.html
+
+trainingnavtop=true
+next.title=Cómo determinar y controlar el tipo de conector y el estado de la conexión
+next.link=docking-monitoring.html
+
+@jd:body
+ 
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>En esta sección puedes aprender:</h2>
+<ol>
+  <li><a href="#DetermineChargeState">Cómo determinar el estado de carga actual</a></li>
+  <li><a href="#MonitorChargeState">Cómo supervisar los cambios en el estado de carga</a></li>
+  <li><a href="#CurrentLevel">Cómo determinar el nivel de batería actual</a></li>
+  <li><a href="#MonitorLevel">Cómo supervisar cambios importantes en el nivel de batería</a></li>
+</ol>
+
+<h2>También puedes consultar:</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
+</ul>
+
+</div> 
+</div>
+ 
+<p>Al modificar la frecuencia de las actualizaciones en segundo plano para reducir el efecto de las mismas en la duración de la batería, te recomendamos que comiences por comprobar el estado de carga y el nivel actual de la batería.</p>
+
+<p>El impacto derivado de actualizar aplicaciones en la duración de la batería varía en función del nivel de batería y del estado de carga del dispositivo, mientras que es insignificante cuando este está conectado a la corriente. Por ello, en la mayoría de los casos, puedes maximizar la frecuencia de actualización cuando el dispositivo esté conectado a un cargador. Por el contrario, si el dispositivo está en proceso de descarga, disminuir la frecuencia de actualización te permitirá aumentar la duración de la batería.</p>
+
+<p>Del mismo modo, puedes comprobar el nivel de carga de la batería y reducir la frecuencia de las actualizaciones o incluso detenerlas cuando la batería esté a punto de agotarse.</p>
+
+
+<h2 id="DetermineChargeState">Cómo determinar el estado de carga actual</h2> 
+ 
+<p>En primer lugar, te recomendamos que determines el estado de carga actual. {@link android.os.BatteryManager} envía los detalles de carga y de la batería en un {@link android.content.Intent} persistente que incluye el estado de carga.</p>
+
+<p>Se trata de un intento persistente, por lo que no es necesario registrar un {@link android.content.BroadcastReceiver}. Para ello, solo tienes que ejecutar {@code registerReceiver} transmitiendo {@code null} como el receptor (como se muestra en el siguiente fragmento). A continuación, se devuelve el intento de estado actual de la batería. Puedes transmitir un objeto {@link android.content.BroadcastReceiver} real, pero hablaremos sobre las actualizaciones en otra sección, por lo que no es necesario ahora.</p>
+
+<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+Intent batteryStatus = context.registerReceiver(null, ifilter);</pre>
+
+<p>Puedes extraer el estado de carga actual y, si el dispositivo está cargando, puedes saber también si se está usando un cargador de corriente alterna o USB:<p>
+
+<pre>// Are we charging / charged?
+int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
+                     status == BatteryManager.BATTERY_STATUS_FULL;
+
+// How are we charging?
+int chargePlug = battery.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
+boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
+boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
+
+<p>Normalmente, debes maximizar la frecuencia de las actualizaciones en segundo plano si el dispositivo está conectado a un cargador de corriente alterna, disminuir esa frecuencia si se utiliza un cargador USB y reducirla aún más si la batería se está descargando.</p>
+
+
+<h2 id="MonitorChargeState">Cómo supervisar los cambios en el estado de carga</h2> 
+
+<p>Modificar el estado de carga es tan fácil como conectar el dispositivo a un enchufe o USB. Por ello, es importante que supervises el estado de carga por si se producen cambios y modifiques la frecuencia de actualización según corresponda.</p>
+
+<p>{@link android.os.BatteryManager} emite una acción siempre que el dispositivo se conecta o desconecta de la corriente. Es importante recibir estos eventos aunque la aplicación no esté en ejecución (especialmente porque estos eventos pueden afectar a la frecuencia con la que inicias tu aplicación para actualizarla en segundo plano), por lo que debes registrar un {@link android.content.BroadcastReceiver} en tu archivo de manifiesto para detectar ambos eventos definiendo {@link android.content.Intent#ACTION_POWER_CONNECTED} y {@link android.content.Intent#ACTION_POWER_DISCONNECTED} en un filtro de intentos.</p>
+
+<pre>&lt;receiver android:name=".PowerConnectionReceiver">
+  &lt;intent-filter>
+    &lt;action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
+    &lt;action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
+  &lt;/intent-filter>
+&lt;/receiver></pre>
+
+<p>En la implementación de {@link android.content.BroadcastReceiver} asociada, puedes extraer el método y el estado de carga actual como se describe en el paso anterior.</p>
+
+<pre>public class PowerConnectionReceiver extends BroadcastReceiver {
+    &#64;Override
+    public void onReceive(Context context, Intent intent) { 
+        int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+        boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
+                            status == BatteryManager.BATTERY_STATUS_FULL;
+    
+        int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
+        boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
+        boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
+    }
+}</pre>
+
+
+<h2 id="CurrentLevel">Cómo determinar el nivel de batería actual</h2> 
+
+<p>En algunos casos, también es útil determinar el nivel de batería actual. Puedes disminuir la frecuencia de las actualizaciones en segundo plano si el nivel de carga de la batería es inferior a un valor determinado.</p>
+
+<p>Puedes consultar la carga actual de la batería extrayendo el nivel actual de la batería y subir a partir del intento de estado de batería, como se muestra a continuación:</p>
+
+<pre>int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
+int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
+
+float batteryPct = level / (float)scale;</pre>
+
+
+<h2 id="MonitorLevel">Cómo supervisar cambios importantes en el nivel de batería</h2> 
+
+<p>No puedes controlar el estado de la batería de forma continua fácilmente, pero tampoco es necesario.</p>
+
+<p>En términos generales, el impacto sobre la batería derivado de controlar continuamente el nivel de batería es mayor que el comportamiento habitual de la aplicación. Por ello, te recomendamos que supervises únicamente los cambios en el nivel de batería más significativos, especialmente cuando el dispositivo tenga poca batería o acabe de cargarse.</p>
+
+<p>El fragmento de manifiesto que aparece a continuación se ha extraído del elemento de filtro de intento de un receptor de emisión. El receptor detecta {@link android.content.Intent#ACTION_BATTERY_LOW} y {@link android.content.Intent#ACTION_BATTERY_OKAY} y se activa cuando el nivel de batería del dispositivo es bajo o cuando se sale de un estado bajo de batería.</p>
+
+<pre>&lt;receiver android:name=".BatteryLevelReceiver">
+&lt;intent-filter>
+  &lt;action android:name="android.intent.action.ACTION_BATTERY_LOW"/>
+  &lt;action android:name="android.intent.action.ACTION_BATTERY_OKAY"/>
+  &lt;/intent-filter>
+&lt;/receiver></pre>
+
+<p>Cuando la batería esté a punto de agotarse, te recomendamos que inhabilites las actualizaciones en segundo plano. Si el teléfono se apaga antes de poder utilizar las aplicaciones, no importa que tengan los datos actualizados.</p>
+
+<p>En muchos casos, el hecho de cargar un dispositivo coincide con la acción de utilizar un conector. En la próxima sección, hablaremos sobre cómo determinar el estado de conexión actual y cómo supervisar los cambios que se produzcan al conectar el dispositivo.</p>
+
diff --git a/docs/html-intl/es/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/es/training/monitoring-device-state/connectivity-monitoring.jd
new file mode 100644
index 0000000..2a5ff12
--- /dev/null
+++ b/docs/html-intl/es/training/monitoring-device-state/connectivity-monitoring.jd
@@ -0,0 +1,70 @@
+page.title=Cómo determinar y controlar el estado de la conectividad
+parent.title=Cómo optimizar la duración de la batería
+parent.link=index.html
+
+trainingnavtop=true
+
+previous.title=Cómo determinar y controlar el tipo de conector y el estado de la conexión
+previous.link=docking-monitoring.html
+next.title=Cómo manipular los receptores de emisión bajo demanda
+next.link=manifest-receivers.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>En esta sección puedes aprender:</h2>
+<ol>
+  <li><a href="#DetermineConnection">Cómo determinar si tienes conexión a Internet</a></li>
+  <li><a href="#DetermineType">Cómo determinar el tipo de conexión a Internet</a></li>
+  <li><a href="#MonitorChanges">Cómo supervisar los cambios en la conectividad</a></li>
+</ol>
+
+
+<h2>También puedes consultar:</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
+</ul>
+
+</div> 
+</div>
+
+<p>Algunos de los usos más comunes para las alarmas con repetición y los servicios en segundo plano es programar actualizaciones regulares de los datos de aplicaciones a partir de recursos de Internet, almacenar datos en la memoria caché o ejecutar descargas a largo plazo. Sin embargo, si no estás conectado a Internet o la conexión es demasiado débil para completar la descarga, ¿para qué activar el dispositivo y programar la actualización?</p>
+
+<p>Puedes utilizar {@link android.net.ConnectivityManager} para comprobar si estás conectado a Internet y, en ese caso, el tipo de conexión que estás utilizando.</p>
+
+
+<h2 id="DetermineConnection">Cómo determinar si tienes conexión a Internet</h2> 
+ 
+<p>No es necesario programar una actualización basada en un recurso de Internet si no estás conectado. En el fragmento que aparece a continuación, se muestra cómo utilizar {@link android.net.ConnectivityManager} para consultar la red activa y determinar si hay conexión a Internet.</p>
+
+<pre>ConnectivityManager cm =
+        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ 
+NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
+boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
+
+
+<h2 id="DetermineType">Cómo determinar el tipo de conexión a Internet</h2> 
+
+<p>También puedes determinar el tipo de conexión a Internet que hay disponible.</p>
+
+<p>El dispositivo se puede conectar a Internet a través de conexiones Ethernet, Wi-Fi, WiMAX y de datos móviles. Al consultar el tipo de red activa, como se muestra a continuación, puedes modificar la frecuencia de actualización en función del ancho de banda disponible.</p>
+
+<pre>boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;</pre>
+
+<p>El coste de las conexiones de datos móviles suele ser superior al de las conexiones Wi-Fi, por lo que en la mayoría de los casos, la frecuencia de actualización de tu aplicación debería ser menor si utilizas conexiones móviles. Del mismo modo, las descargas grandes deberían cancelarse hasta que estés conectado a una red Wi-Fi.</p>
+
+<p>Cuando hayas inhabilitado las actualizaciones, es importante que detectes si se hay cambios en la conectividad para poder reanudarlas cuando se haya establecido una conexión a Internet.</p>
+
+
+<h2 id="MonitorChanges">Cómo supervisar los cambios en la conectividad</h2> 
+
+<p>{@link android.net.ConnectivityManager} emite la acción {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION} ({@code "android.net.conn.CONNECTIVITY_CHANGE"}) cuando se han modificado los detalles de la conectividad. Puedes registrar un receptor de emisión en el archivo de manifiesto para detectar estos cambios y reanudar (o cancelar) las actualizaciones en segundo plano según corresponda.</p>
+
+<pre>&lt;action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></pre>
+
+<p>Los cambios en la conectividad de un dispositivo pueden ser muy frecuentes (esta emisión se activa siempre que cambias de una conexión de datos móviles a una conexión Wi-Fi). Como resultado, te recomendamos que supervises esta emisión únicamente cuando hayas cancelado anteriormente las actualizaciones o las descargas para reanudarlas. Normalmente, basta con comprobar la conexión a Internet antes de iniciar una actualización y, si no hay ninguna, cancelar el resto de actualizaciones hasta que se restablezca la conexión.</p>
+
+<p>Esta técnica requiere que alternes receptores de emisión que hayas declarado en el archivo de manifiesto, que se describe en la próxima sección.</p>
diff --git a/docs/html-intl/es/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/es/training/monitoring-device-state/docking-monitoring.jd
new file mode 100644
index 0000000..d612281
--- /dev/null
+++ b/docs/html-intl/es/training/monitoring-device-state/docking-monitoring.jd
@@ -0,0 +1,74 @@
+page.title=Cómo determinar y controlar el tipo de conector y el estado de la conexión
+parent.title=Cómo optimizar la duración de la batería
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=Cómo controlar el nivel de batería y el estado de carga
+previous.link=battery-monitoring.html
+next.title=Cómo determinar y controlar el estado de la conectividad
+next.link=connectivity-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>En esta sección puedes aprender:</h2>
+<ol>
+  <li><a href="#CurrentDockState">Cómo solicitar el foco de audio</a></li>
+  <li><a href="#DockType">Cómo determinar el tipo de conector actual</a></li>
+  <li><a href="#MonitorDockState">Cómo supervisar los cambios en el tipo de conector o en el estado del mismo</a></li>
+</ol>
+
+
+<h2>También puedes consultar:</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
+</ul>
+
+</div> 
+</div>
+
+<p>Los dispositivos Android se pueden conectar a distintos tipos de conectores. Por ejemplo, se puede utilizar conectores para coche o domésticos y tanto digitales como analógicos. Normalmente, el estado del conector está vinculado al estado de carga, ya que muchos conectores cargan el dispositivo mientras está conectado.</p>
+
+<p>El modo en el que el estado del conector del teléfono afecta a la frecuencia de actualización depende de tu aplicación. Puedes aumentar la frecuencia de actualización de una aplicación sobre noticias cuando el dispositivo esté conectado a un conector de escritorio o inhabilitar las actualizaciones completamente si está conectado a un conector de coche. Por el contrario, puedes maximizar las actualizaciones si el dispositivo está conectado a un conector de coche y tu servicio en segundo plano se actualiza con el estado del tráfico.</p>
+
+<p>El estado del conector se emite también como un {@link android.content.Intent} persistente, lo que te permite consultar si el dispositivo está conectado o no y, si lo está, determinar el tipo de conector.</p>
+
+
+<h2 id="CurrentDockState">Cómo determinar el estado de conexión actual</h2> 
+ 
+<p>La información sobre el estado del conector se incluye como información adicional en una emisión persistente de la acción {@link android.content.Intent#ACTION_DOCK_EVENT}. Por ello, no es necesario registrar un {@link android.content.BroadcastReceiver}. Solo tienes que ejecutar {@link android.content.Context#registerReceiver registerReceiver()} transmitiendo {@code null} como el receptor de emisión, como se muestra en el fragmento de código que aparece a continuación.</p>
+
+<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
+Intent dockStatus = context.registerReceiver(null, ifilter);</pre>
+
+<p>Puedes extraer el estado actual de la conexión de la información adicional de {@code EXTRA_DOCK_STATE}:<p>
+
+<pre>int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
+boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
+
+
+<h2 id="DockType">Cómo determinar el tipo de conector actual</h2> 
+
+<p>Si un dispositivo está insertado en un conector, se puede conectar a cualquiera de estos cuatro tipos de conectores: 
+<ul><li>coche,</li>
+<li>escritorio,</li>
+<li>escritorio de gama baja (analógico),</li>
+<li>escritorio de gama alta (digital).</li></ul></p>
+
+<p>Ten en cuenta que las últimas dos opciones se introdujeron en Android únicamente en el nivel 11 del API. Por ello, te recomendamos que compruebes las tres opciones solo cuando te interese más el tipo de conector que si se trata de un conector digital o analógico:</p>
+
+<pre>boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
+boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK || 
+                 dockState == EXTRA_DOCK_STATE_LE_DESK ||
+                 dockState == EXTRA_DOCK_STATE_HE_DESK;</pre>
+
+
+<h2 id="MonitorDockState">Cómo supervisar los cambios en el tipo de conector o en el estado del mismo</h2> 
+
+<p>Cuando el dispositivo está conectado a un conector o desconectado del mismo, se emite la acción {@link android.content.Intent#ACTION_DOCK_EVENT}. Para controlar los cambios que se produzcan en el estado del conector del dispositivo, solo tienes que registrar un receptor de emisión en el archivo de manifiesto de la aplicación, como se muestra en el fragmento que aparece a continuación:</p>
+
+<pre>&lt;action android:name="android.intent.action.ACTION_DOCK_EVENT"/></pre>
+
+<p>Puedes extraer el estado y el tipo de conector en la implementación del receptor con las mismas técnicas que se han descrito en el paso anterior.</p>
diff --git a/docs/html-intl/es/training/monitoring-device-state/index.jd b/docs/html-intl/es/training/monitoring-device-state/index.jd
new file mode 100644
index 0000000..bf6b1c1
--- /dev/null
+++ b/docs/html-intl/es/training/monitoring-device-state/index.jd
@@ -0,0 +1,49 @@
+page.title=Cómo optimizar la duración de la batería
+
+trainingnavtop=true
+startpage=true
+next.title=Cómo controlar el nivel de batería y el estado de carga
+next.link=battery-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>Dependencias y requisitos previos</h2> 
+<ul>
+  <li>Android 2.0 (nivel 5 del API) o superior</li>
+  <li>Experiencia con <a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a></li>
+</ul>
+
+<h2>También puedes consultar:</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/services.html">Servicios</a>
+</ul>
+
+</div> 
+</div>
+
+<p>Uno de los objetivos de tu aplicación debe ser limitar su impacto en la duración de la batería del dispositivo en el que esté instalada. Después de leer estas secciones, podrás desarrollar aplicaciones que optimizarán el uso de la batería en función del estado del dispositivo en el que estén instaladas.</p>
+
+<p>Al tomar medidas como inhabilitar las actualizaciones de servicios en segundo plano o disminuir la frecuencia de dichas actualizaciones cuando el nivel de batería sea bajo, puedes garantizar que se minimice el impacto de tu aplicación en la duración de la batería sin afectar a la experiencia del usuario.</p>
+
+<h2>Secciones</h2> 
+ 
+<!-- Create a list of the lessons in this class along with a short description of each lesson.
+These should be short and to the point. It should be clear from reading the summary whether someone
+will want to jump to a lesson or not.--> 
+ 
+<dl>
+  <dt><b><a href="battery-monitoring.html">Cómo controlar el nivel de batería y el estado de carga</a></b></dt>
+  <dd>Obtén más información sobre cómo determinar y controlar el nivel de batería actual y los cambios en el estado de carga para modificar la frecuencia de actualizaciones en segundo plano de tu aplicación.</dd>
+
+  <dt><b><a href="docking-monitoring.html">Cómo determinar y controlar el tipo de conector y el estado de la conexión</a></b></dt>
+  <dd>La frecuencia de actualización óptima puede variar en función de cómo se utilice el dispositivo en el que está instalada la aplicación. Obtén más información sobre cómo determinar y controlar cuándo el dispositivo está conectado a algún sistema de acoplamiento u otra conexión.</dd>
+
+  <dt><b><a href="connectivity-monitoring.html">Cómo determinar y controlar el estado de la conectividad</a></b></dt>
+  <dd>Si no tienes conexión a Internet, no puedes actualizar tu aplicación a partir de una fuente online. Obtén más información sobre cómo comprobar el estado de la conectividad para modificar la frecuencia de actualización en segundo plano de tu aplicación. También puedes obtener más información sobre cómo comprobar la conectividad móvil o Wi-Fi antes de iniciar operaciones que requieran un nivel elevado de ancho de banda.</dd>
+
+  <dt><b><a href="manifest-receivers.html">Cómo manipular los receptores de emisión bajo demanda</a></b></dt>
+  <dd>Los receptores de emisión que declaras en el archivo de manifiesto se pueden alternar durante la ejecución para inhabilitar los que no son necesarios debido al estado actual del dispositivo. Obtén más información sobre cómo alternar y superponer receptores de cambio de estado para mejorar el rendimiento y cómo posponer acciones hasta que el dispositivo se encuentre en un estado concreto.</dd>
+</dl> 
\ No newline at end of file
diff --git a/docs/html-intl/es/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/es/training/monitoring-device-state/manifest-receivers.jd
new file mode 100644
index 0000000..a90468e
--- /dev/null
+++ b/docs/html-intl/es/training/monitoring-device-state/manifest-receivers.jd
@@ -0,0 +1,50 @@
+page.title=Cómo manipular los receptores de emisión bajo demanda
+parent.title=Cómo optimizar la duración de la batería
+parent.link=index.html
+
+trainingnavtop=true
+
+previous.title=Cómo determinar y controlar el estado de la conectividad
+previous.link=connectivity-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>En esta sección puedes aprender:</h2>
+<ol>
+  <li><a href="#ToggleReceivers">Cómo alternar y superponer receptores de cambio de estado para mejorar el rendimiento</a></li>
+</ol>
+
+
+<h2>También puedes consultar:</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
+</ul>
+
+</div> 
+</div>
+
+<p>La forma más sencilla de controlar los cambios en el estado del dispositivo es crear un {@link android.content.BroadcastReceiver} para cada estado que vayas a controlar y registrar cada uno de ellos en el archivo de manifiesto de tu aplicación. A continuación, en cada uno de esos receptores solo tienes que volver a programar las alarmas recurrentes en función del estado actual del dispositivo.</p>
+
+<p>Un efecto secundario de este método es que tu aplicación activará el dispositivo siempre que uno de los receptores se active (probablemente, con más frecuencia de la necesaria).</p>
+
+<p>Te recomendamos que inhabilites o habilites los receptores de emisión en el momento de la ejecución. De este modo, puedes utilizar los receptores que hayas declarado en el archivo de manifiesto como alarmas pasivas que se activan mediante los eventos del sistema solo cuando es necesario.</p>
+ 
+
+<h2 id="ToggleReceivers">Cómo alternar y superponer receptores de cambio de estado para mejorar el rendimiento </h2> 
+ 
+<p>Se puede utilizar el {@link android.content.pm.PackageManager} para alternar el estado habilitado en cualquier componente definido en el archivo de manifiesto, incluidos los receptores de emisión que quieras habilitar o inhabilitar, como se muestra en el fragmento que aparece a continuación:</p>
+
+<pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
+
+PackageManager pm = context.getPackageManager();
+
+pm.setComponentEnabledSetting(receiver,
+        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+        PackageManager.DONT_KILL_APP)</pre>
+
+<p>Al utilizar esta técnica, si determinas que la conectividad se ha perdido, puedes inhabilitar todos los receptores excepto el receptor de cambio de conectividad. Por el contrario, cuando estés conectado, puedes dejar de detectar cambios de conectividad y solo comprobar si tienes conexión antes de realizar una actualización y de volver a programar una alarma de actualización recurrente.</p>
+
+<p>Puedes utilizar la misma técnica para posponer una descarga que requiera un nivel de ancho de banda superior para completarse. Solo tienes que habilitar un receptor de emisión que detecte los cambios de conectividad y que inicie la descarga solo cuando estés conectado a una red Wi-Fi.</p>
diff --git a/docs/html-intl/es/training/multiscreen/adaptui.jd b/docs/html-intl/es/training/multiscreen/adaptui.jd
new file mode 100644
index 0000000..61f0735
--- /dev/null
+++ b/docs/html-intl/es/training/multiscreen/adaptui.jd
@@ -0,0 +1,212 @@
+page.title=Cómo implementar interfaces de usuario adaptables
+parent.title=Cómo diseñar aplicaciones para varias pantallas
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=Cómo admitir varias densidades de pantalla
+previous.link=screendensities.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+ 
+<h2>En esta sección puedes aprender:</h2>
+
+<ol>
+  <li><a href="#TaskDetermineCurLayout">Cómo determinar el diseño actual</a></li>
+  <li><a href="#TaskReactToLayout">Cómo reaccionar en función del diseño actual</a></li>
+  <li><a href="#TaskReuseFrag">Cómo volver a utilizar fragmentos en otras actividades</a></li>
+  <li><a href="#TaskHandleConfigChanges">Cómo gestionar los cambios en la configuración de la pantalla</a></li>
+</ol>
+
+<h2>También puedes consultar:</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Cómo admitir tablets y dispositivos móviles</a></li>
+</ul>
+ 
+<h2>¡Pruébalo!</h2>
+ 
+<div class="download-box">
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+ 
+</div> 
+</div> 
+
+<p>En función del diseño actual de tu aplicación, la interfaz puede variar. Por ejemplo, si tu aplicación está en modo de panel dual, haz clic en un elemento del panel izquierdo para que aparezca en el panel de la derecha. Asimismo, si está en modo de panel único, el contenido debería aparecer por sí mismo (en otra actividad).</p>
+
+
+<h2 id="TaskDetermineCurLayout">Cómo determinar el diseño actual</h2>
+
+<p>Dado que la implementación de cada diseño variará en cierta medida, probablemente una de las primeras cosas que tendrás que hacer será determinar el diseño que el usuario puede ver en ese momento. Por ejemplo, puedes determinar si el usuario utiliza el modo de "panel único" o de "panel dual". Para ello, puedes consultar si una vista determinada existe y es visible:</p>
+
+<pre class="prettyprint">
+public class NewsReaderActivity extends FragmentActivity {
+    boolean mIsDualPane;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main_layout);
+
+        View articleView = findViewById(R.id.article);
+        mIsDualPane = articleView != null &amp;&amp; 
+                        articleView.getVisibility() == View.VISIBLE;
+    }
+}
+</pre>
+
+<p>Ten en cuenta que este código consulta la disponibilidad del panel del "artículo", lo que es mucho más flexible que incluir una consulta para un diseño determinado.</p>
+
+<p>Otro ejemplo de cómo puedes adaptar la existencia de diferentes componentes es comprobar su disponibilidad antes de realizar una operación relacionada con los mismos. Por ejemplo, en la aplicación de ejemplo News Reader, hay un botón que abre un menú, pero ese botón solo aparece en las versiones anteriores a Android 3.0 (porque  <PH>{@link android.app.ActionBar}</PH> en el nivel 11 del API y en niveles superiores). Por tanto, para añadir el detector de eventos para este botón, puedes hacer lo siguiente:</p>
+
+<pre class="prettyprint">
+Button catButton = (Button) findViewById(R.id.categorybutton);
+OnClickListener listener = /* create your listener here */;
+if (catButton != null) {
+    catButton.setOnClickListener(listener);
+}
+</pre>
+
+
+<h2 id="TaskReactToLayout">Cómo reaccionar en función del diseño actual</h2>
+
+<p>El resultado de algunas acciones puede variar en función del diseño actual. Por ejemplo, en el ejemplo de News Reader, al hacer clic en un encabezado de la lista se abrirá el artículo del panel situado a la derecha si la interfaz de usuario está en modo de panel dual, pero se iniciará una actividad independiente si esta está en modo de panel único:</p>
+
+<pre>
+&#64;Override
+public void onHeadlineSelected(int index) {
+    mArtIndex = index;
+    if (mIsDualPane) {
+        /* display article on the right pane */
+        mArticleFragment.displayArticle(mCurrentCat.getArticle(index));
+    } else {
+        /* start a separate activity */
+        Intent intent = new Intent(this, ArticleActivity.class);
+        intent.putExtra("catIndex", mCatIndex);
+        intent.putExtra("artIndex", index);
+        startActivity(intent);
+    }
+}
+</pre>
+
+<p>De igual modo, si la aplicación está en modo de panel dual, debe configurar la barra de acción con pestañas para la navegación, mientras que si la aplicación está en modo de panel único, debe configurar la navegación con un widget giratorio. Por tanto, el código debe comprobar también cuál es el caso adecuado:</p>
+
+<pre>
+final String CATEGORIES[] = { "Top Stories", "Politics", "Economy", "Technology" };
+
+public void onCreate(Bundle savedInstanceState) {
+    ....
+    if (mIsDualPane) {
+        /* use tabs for navigation */
+        actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_TABS);
+        int i;
+        for (i = 0; i &lt; CATEGORIES.length; i++) {
+            actionBar.addTab(actionBar.newTab().setText(
+                CATEGORIES[i]).setTabListener(handler));
+        }
+        actionBar.setSelectedNavigationItem(selTab);
+    }
+    else {
+        /* use list navigation (spinner) */
+        actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
+        SpinnerAdapter adap = new ArrayAdapter<String>(this, 
+                R.layout.headline_item, CATEGORIES);
+        actionBar.setListNavigationCallbacks(adap, handler);
+    }
+}
+</pre>
+
+
+<h2 id="TaskReuseFrag">Cómo volver a utilizar fragmentos en otras actividades</h2>
+
+<p>Un patrón recurrente a la hora de diseñar para distintas pantallas es utilizar una parte de la interfaz que se implementa como un panel en algunas configuraciones de pantalla y como actividad independiente en otras. Por ejemplo, en el ejemplo de News Reader, el texto del artículo de noticias se presenta en el panel de la derecha en las pantallas grandes, pero es una actividad independiente en las pantallas más pequeñas.</p>
+
+<p>En otros casos similares, puedes evitar la duplicación de código reutilizando la misma <PH>{@link android.app.Fragment}</PH> en distintas actividades. Por ejemplo, <code>ArticleFragment</code> se utiliza en el diseño de panel dual:</p>
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+
+<p>A continuación, se vuelve a utilizar (sin diseño) en el diseño de actividad para pantallas más pequeñas (<code>ArticleActivity</code>):</p>
+
+<pre>
+ArticleFragment frag = new ArticleFragment();
+getSupportFragmentManager().beginTransaction().add(android.R.id.content, frag).commit();
+</pre>
+
+<p>Evidentemente, esto tiene el mismo efecto que declarar el fragmento en un diseño XML. Sin embargo, en este caso, un diseño XML sería un trabajo innecesario porque el fragmento del artículo es el único componente de esta actividad.</p>
+
+<p>Un punto muy importante que debes tener en cuenta al diseñar tus fragmentos es no crear un acoplamiento fuerte para una actividad determinada. Para ello, normalmente puedes definir una interfaz que resuma todas las formas en las que tiene que interactuar el fragmento con su actividad principal y, a continuación, la actividad principal implementa esa interfaz:</p>
+
+<p>Por ejemplo, ese es precisamente el objetivo del <code>HeadlinesFragment</code> de la aplicación News Reader:</p>
+
+<pre>
+public class HeadlinesFragment extends ListFragment {
+    ...
+    OnHeadlineSelectedListener mHeadlineSelectedListener = null;
+
+    /* Must be implemented by host activity */
+    public interface OnHeadlineSelectedListener {
+        public void onHeadlineSelected(int index);
+    }
+    ...
+
+    public void setOnHeadlineSelectedListener(OnHeadlineSelectedListener listener) {
+        mHeadlineSelectedListener = listener;
+    }
+}
+</pre>
+
+<p>A continuación, cuando el usuario selecciona un encabezado, el fragmento notifica el detector especificado por la actividad principal (en lugar de notificar una actividad predefinida específica):</p>
+
+<pre>
+public class HeadlinesFragment extends ListFragment {
+    ...
+    &#64;Override
+    public void onItemClick(AdapterView&lt;?&gt; parent, 
+                            View view, int position, long id) {
+        if (null != mHeadlineSelectedListener) {
+            mHeadlineSelectedListener.onHeadlineSelected(position);
+        }
+    }
+    ...
+}
+</pre>
+
+<p>Si quieres obtener más información sobre esta técnica, puedes consultar la guía sobre <a
+href="{@docRoot}guide/practices/tablets-and-handsets.html">Cómo admitir tablets y dispositivos móviles</a>.</p>
+
+
+<h2 id="TaskHandleConfigChanges">Cómo gestionar los cambios en la configuración de la pantalla</h2>
+
+<p>Si utilizas actividades independientes para implementar partes individuales de tu interfaz, debes tener en cuenta que es posible que tengas que reaccionar ante determinados cambios en la configuración (como un cambio de rotación) para mantener la homogeneidad de tu interfaz.</p>
+
+<p>Por ejemplo, en un tablet de 7" que utilice Android 3.0 o una versión superior, el ejemplo de News Reader utiliza una actividad independiente para mostrar el artículo de noticias en el modo vertical, pero utiliza el diseño de panel dual en el modo horizontal.</p>
+
+<p>Esto significa que cuando el usuario utiliza el modo vertical y está consultando un artículo, tienes que detectar que la orientación ha cambiado al modo horizontal y reaccionar de forma adecuada finalizando la actividad. A continuación, debes volver a la actividad principal para que el contenido pueda mostrarse en el diseño de panel dual:</p>
+
+<pre>
+public class ArticleActivity extends FragmentActivity {
+    int mCatIndex, mArtIndex;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mCatIndex = getIntent().getExtras().getInt("catIndex", 0);
+        mArtIndex = getIntent().getExtras().getInt("artIndex", 0);
+
+        // If should be in two-pane mode, finish to return to main activity
+        if (getResources().getBoolean(R.bool.has_two_panes)) {
+            finish();
+            return;
+        }
+        ...
+}
+</pre>
+
+
diff --git a/docs/html-intl/es/training/multiscreen/index.jd b/docs/html-intl/es/training/multiscreen/index.jd
new file mode 100644
index 0000000..0a1461b
--- /dev/null
+++ b/docs/html-intl/es/training/multiscreen/index.jd
@@ -0,0 +1,63 @@
+page.title=Cómo diseñar aplicaciones para varias pantallas
+trainingnavtop=true
+startpage=true
+next.title=Cómo admitir varios tamaños de pantalla
+next.link=screensizes.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb"> 
+ 
+<h2>Dependencias y requisitos previos</h2> 
+
+<ul>
+  <li>Android 1.6 o superior (Android 2.1 o superior para la aplicación de ejemplo)</li>
+  <li>Conocimiento básico de <a
+href="http://developer.android.com/guide/components/activities.html">Actividades</a> y <a href="http://developer.android.com/guide/components/fragments.html">Fragmentos</a></li>
+  <li>Experiencia en el desarrollo de una <a
+href="http://developer.android.com/guide/topics/ui/index.html">Interfaz de usuario</a> de Android</li>
+  <li>Algunas funciones requieren el uso de la <a
+href="{@docRoot}tools/extras/support-library.html">biblioteca de compatibilidad</a></li>
+</ul>
+
+<h2>También puedes consultar:</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">Cómo admitir varias pantallas</a></li>
+</ul>
+ 
+<h2>¡Pruébalo!</h2> 
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+</div> 
+</div> 
+ 
+<p>Android se utiliza en cientos de dispositivos con diferentes tamaños de pantalla, desde pequeños teléfonos hasta enormes televisores. Por ello, es importante que diseñes tu aplicación para que sea compatible con todos los tamaños de pantalla y esté disponible para el mayor número de usuarios posible.</p>
+
+<p>Sin embargo, no es suficiente con que tu aplicación sea compatible con diferentes dispositivos. Cada tamaño de pantalla ofrece diferentes posibilidades y retos para la interacción del usuario. Por ello, para satisfacer completamente a tus usuarios e impresionarlos, tu aplicación debe ir más allá de simplemente <em>admitir</em> varias pantallas: debe <em>optimizar</em> la experiencia de usuario para cada configuración de pantalla.</p>
+
+<p>En esta sección se explica cómo implementar una interfaz de usuario que esté optimizada para diferentes configuraciones de pantalla.</p>
+
+<p>El código que aparece en cada sección se ha extraído de una aplicación de ejemplo para explicar las prácticas recomendadas a la hora de optimizar tu aplicación para varias pantallas. Puedes descargar el ejemplo (situado a la derecha) y utilizarlo como fuente de código reutilizable para tu propia aplicación.</p>
+
+<p class="note"><strong>Nota:</strong> en esta sección y en el ejemplo correspondiente, se utiliza la <a
+href="{@docRoot}tools/extras/support-library.html">biblioteca de compatibilidad</a> para poder usar las API de <PH>{@link android.app.Fragment}</PH> en versiones anteriores a Android 3.0. Debes descargar y la biblioteca y añadirla a tu aplicación para poder utilizar todas las API que se indican en esta sección.</p>
+ 
+
+<h2>Secciones</h2> 
+ 
+<dl> 
+  <dt><b><a href="screensizes.html">Cómo admitir varios tamaños de pantalla</a></b></dt> 
+    <dd>En esta sección se explica cómo crear diseños que se adapten a diferentes tamaños de pantalla (mediante dimensiones flexibles para vistas, <PH>{@link android.widget.RelativeLayout}</PH>, calificadores de orientación y tamaño de pantalla, filtros de alias y mapas de bits de la clase NinePatch).</dd> 
+ 
+  <dt><b><a href="screendensities.html">Cómo admitir varias densidades de pantalla</a></b></dt> 
+    <dd>En esta sección se explica cómo admitir pantallas con diferentes densidades de píxeles (mediante píxeles independientes de la densidad y mapas de bits adecuados a cada densidad).</dd> 
+ 
+  <dt><b><a href="adaptui.html">Cómo implementar interfaces de usuario adaptables</a></b></dt> 
+    <dd>En esta sección se explica cómo implementar tu interfaz de usuario para que se adapte a varias combinaciones de densidad o de tamaño de pantalla (detección de tiempo de ejecución del diseño activo, cómo reaccionar en función del diseño actual y cómo administrar los cambios en la configuración de la pantalla).</dd> 
+</dl> 
diff --git a/docs/html-intl/es/training/multiscreen/screendensities.jd b/docs/html-intl/es/training/multiscreen/screendensities.jd
new file mode 100644
index 0000000..0edb89f
--- /dev/null
+++ b/docs/html-intl/es/training/multiscreen/screendensities.jd
@@ -0,0 +1,100 @@
+page.title=Cómo admitir varias densidades de pantalla
+parent.title=Cómo diseñar aplicaciones para varias pantallas
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=Cómo admitir varios tamaños de pantalla
+previous.link=screensizes.html
+next.title=Cómo implementar interfaces de usuario adaptables
+next.link=adaptui.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+
+<h2>En esta sección puedes aprender:</h2>
+<ol>
+  <li><a href="#TaskUseDP">Cómo utilizar píxeles independientes de la densidad</a></li>
+  <li><a href="#TaskProvideAltBmp">Cómo proporcionar mapas de bits alternativos</a></li>
+</ol>
+
+<h2>También puedes consultar:</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">Cómo admitir varias pantallas</a></li>
+  <li><a href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">Directrices para diseñar iconos</a></li>
+</ul>
+
+<h2>¡Pruébalo!</h2>
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+ 
+</div> 
+</div> 
+
+<p>En esta sección se explica cómo proporcionar diferentes recursos y utilizar unidades de medida de resolución independiente para admitir diferentes densidades de pantalla.</p>
+
+<h2 id="TaskUseDP">Cómo utilizar píxeles independientes de la densidad</h2>
+
+<p>Un error común que debes evitar al crear tus diseños es utilizar píxeles absolutos para definir distancias o tamaños. Definir dimensiones de diseño mediante píxeles es problemático porque cada pantalla tiene densidades de píxeles diferentes, por lo que es posible que el mismo número de píxeles corresponda a varios tamaños físicos en distintos dispositivos. Por tanto, al especificar dimensiones, debes utilizar siempre unidades <code>dp</code> o <code>sp</code>. <code>dp</code> es un píxel independiente de la densidad que corresponde al tamaño físico de un píxel a 160 dpi. <code>sp</code> es la misma unidad de base, pero aumentada en función del tamaño de letra preferido por el usuario (se trata de un píxel independiente de la escala). Por tanto, debes utilizar esta unidad de medida para definir el tamaño de letra (pero no para tamaños de diseños).</p>
+
+<p>Por ejemplo, al especificar un espacio entre dos vistas, debes utilizar <code>dp</code> en lugar de <code>px</code>:</p>
+
+<pre>
+&lt;Button android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:text="&#64;string/clickme"
+    android:layout_marginTop="20dp" /&gt;
+</pre>
+
+<p>Al especificar el tamaño de letra, debes usar siempre <code>sp</code>:</p>
+
+<pre>
+&lt;TextView android:layout_width="match_parent" 
+    android:layout_height="wrap_content" 
+    android:textSize="20sp" /&gt;
+</pre>
+
+
+<h2 id="TaskProvideAltBmp">Cómo proporcionar mapas de bits alternativos</h2>
+
+<p>Dado que Android se ejecuta en dispositivos con diferentes densidades de pantalla, siempre debes proporcionar tus recursos de mapas de bits adaptados a los conjuntos de densidades generalizados: baja, media, alta y muy alta. De este modo, podrás conseguir un rendimiento y una calidad gráfica óptimos en todas las densidades de pantalla.</p>
+
+<p>Para generar estas imágenes, debes empezar con tu recurso genérico en formato vectorial y generar las imágenes para cada densidad con la siguiente escala de tamaños:</p>
+
+<p><ul>
+  <li><code>xhdpi</code>: 2,0
+  <li><code>hdpi</code>: 1,5
+  <li><code>mdpi</code>: 1.0 (base)
+  <li><code>ldpi</code>: 0,75
+</ul></p>
+
+<p>Esto significa que si generas una imagen de 200 x 200 para dispositivos <code>xhdpi</code>, debes generar el mismo recurso en 150 x 150 para <code>hdpi</code>, en 100 x 100 para <code>mdpi</code> y, por último, una imagen de 75 x 75 para dispositivos <code>ldpi</code>.</p>
+
+<p>A continuación, sitúa los archivos de imagen generados en el subdirectorio adecuado en <code>res/</code> y el sistema seleccionará el archivo correspondiente automáticamente en función de la densidad de la pantalla del dispositivo en el que se esté ejecutando la aplicación:</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+  res/
+    drawable-xhdpi/
+        awesomeimage.png
+    drawable-hdpi/
+        awesomeimage.png
+    drawable-mdpi/
+        awesomeimage.png
+    drawable-ldpi/
+        awesomeimage.png
+</pre>
+
+<p>Por tanto, cada vez que hagas referencia a <code>&#64;drawable/awesomeimage</code>, el sistema seleccionará el mapa de bits adecuado en función de los puntos por pulgada de la pantalla.</p>
+
+<p>Para consultar más sugerencias y directrices sobre cómo crear recursos de iconos para tu aplicación, consulta la sección <a
+href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">Directrices para diseñar iconos</a>.</p>
+
diff --git a/docs/html-intl/es/training/multiscreen/screensizes.jd b/docs/html-intl/es/training/multiscreen/screensizes.jd
new file mode 100644
index 0000000..9a971d1
--- /dev/null
+++ b/docs/html-intl/es/training/multiscreen/screensizes.jd
@@ -0,0 +1,279 @@
+page.title=Cómo admitir varios tamaños de pantalla
+parent.title=Cómo diseñar aplicaciones para varias pantallas
+parent.link=index.html
+
+trainingnavtop=true
+next.title=Cómo admitir varias densidades de pantalla
+next.link=screendensities.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+
+<h2>En esta sección puedes aprender:</h2>
+<ol>
+  <li><a href="#TaskUseWrapMatchPar">Cómo utilizar los valores "wrap_content" y "match_parent"</a></li>
+  <li><a href="#TaskUseRelativeLayout">Cómo utilizar RelativeLayout</a></li>
+  <li><a href="#TaskUseSizeQuali">Cómo utilizar calificadores de tamaño</a></li>
+  <li><a href="#TaskUseSWQuali">Cómo utilizar el calificador de ancho más pequeño</a></li>
+  <li><a href="#TaskUseAliasFilters">Cómo utilizar alias de diseño</a></li>
+  <li><a href="#TaskUseOriQuali">Cómo utilizar calificadores de orientación</a></li>
+  <li><a href="#TaskUse9Patch">Cómo utilizar mapas de bits de la clase NinePatch</a></li>
+</ol>
+
+<h2>También puedes consultar:</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">Cómo admitir varias pantallas</a></li>
+</ul>
+
+<h2>¡Pruébalo!</h2> 
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+</div> 
+</div> 
+
+<p>En esta sección se explica cómo admitir varios tamaños de pantalla. Para ello, sigue estos pasos:</p>
+<ul> 
+  <li>Asegúrate de que el diseño se haya ajustado correctamente al tamaño de la pantalla.</li> 
+  <li>Configura la pantalla con el diseño de interfaz adecuado.</li> 
+  <li>Asegúrate de aplicar el diseño adecuado a la pantalla correspondiente.</li>
+  <li>Utiliza el mapa de bits con la escala adecuada.</li> 
+</ul> 
+
+
+<h2 id="TaskUseWrapMatchPar">Cómo utilizar los valores "wrap_content" y "match_parent"</h2> 
+
+<p>Para garantizar que el diseño es flexible y que se adapta a varios tamaños de pantalla, debes utilizar los valores <code>"wrap_content"</code> y <code>"match_parent"</code> para la altura y el ancho de algunos componentes de la vista. Si utilizas <code>"wrap_content"</code>, el ancho o la altura de la vista se establece en el tamaño mínimo necesario para adaptar el contenido a esta vista, mientras que <code>"match_parent"</code> (también conocido como <code>"fill_parent"</code> antes del nivel 8 del API) provoca que el componente se amplíe hasta coincidir con el tamaño de la vista principal.</p>
+
+<p>Al utilizar los valores de tamaño <code>"wrap_content"</code> y <code>"match_parent"</code> en lugar de los tamaños predefinidos, las vistas pueden utilizar únicamente el espacio requerido para esa vista o ampliarse hasta rellenar el espacio disponible respectivamente. Por ejemplo:</p>
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane_with_bar.xml all}
+
+<p>Observa cómo se utilizan en el ejemplo los valores <code>"wrap_content"</code> y <code>"match_parent"</code> para los tamaños de los componentes en lugar de dimensiones específicas. Esto permite que el diseño se adapte correctamente a diferentes tamaños y orientaciones de la pantalla.</p>
+
+<p>Por ejemplo, esta es la apariencia del diseño en modo horizontal y vertical. Ten en cuenta que los tamaños de los componentes se adaptan automáticamente a la altura y al ancho:</p>
+
+<img src="{@docRoot}images/training/layout-hvga.png" />
+<p class="img-caption"><strong>Figura 1.</strong> La aplicación de ejemplo News Reader en modo vertical (izquierda) y horizontal (derecha)</p>
+
+
+<h2 id="TaskUseRelativeLayout">Cómo utilizar RelativeLayout</h2> 
+
+<p>Puedes crear diseños de un cierto nivel de complejidad con instancias anidadas de <PH>{@link android.widget.LinearLayout}</PH> y combinaciones de los valores de tamaño <code>"wrap_content"</code> y <code>"match_parent"</code>. Sin embargo, <PH>{@link android.widget.LinearLayout}</PH> no te permite controlar con precisión las relaciones espaciales de las vistas secundarias; las vistas de <PH>{@link android.widget.LinearLayout}</PH> simplemente se alinean en paralelo. Si quieres orientar las vistas secundarias de una forma que no sea una línea recta, a menudo la mejor solución es utilizar <PH>{@link android.widget.RelativeLayout}</PH>que te permite especificar el diseño según las relaciones espaciales entre los componentes. Por ejemplo, puedes alinear una vista secundaria en el lateral izquierdo y otra vista en el lateral derecho de la pantalla.</p>
+
+<p>Por ejemplo:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;TextView
+        android:id="&#64;+id/label"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="Type here:"/&gt;
+    &lt;EditText
+        android:id="&#64;+id/entry"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="&#64;id/label"/&gt;
+    &lt;Button
+        android:id="&#64;+id/ok"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="&#64;id/entry"
+        android:layout_alignParentRight="true"
+        android:layout_marginLeft="10dp"
+        android:text="OK" /&gt;
+    &lt;Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toLeftOf="&#64;id/ok"
+        android:layout_alignTop="&#64;id/ok"
+        android:text="Cancel" /&gt;
+&lt;/RelativeLayout&gt;
+</pre>
+
+<p>La figura 2 indica cómo se muestra este diseño en una pantalla QVGA.</p>
+
+<img src="{@docRoot}images/training/relativelayout1.png" />
+<p class="img-caption"><strong>Figura 2.</strong> Captura de pantalla de una pantalla QVGA (pantalla pequeña)</p>
+
+<p>La figura 3 indica cómo se muestra este diseño en una pantalla más grande.</p>
+
+<img src="{@docRoot}images/training/relativelayout2.png" />
+<p class="img-caption"><strong>Figura 3.</strong> Captura de pantalla de una pantalla WSVGA (pantalla grande)</p>
+
+<p>Ten en cuenta que aunque el tamaño de los componentes es diferente, las relaciones espaciales se mantienen según se ha especificado con <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>.</p>
+
+ 
+<h2 id="TaskUseSizeQuali">Cómo utilizar calificadores de tamaño</h2> 
+
+<p>Hay mucha diferencia entre un diseño flexible y un diseño relativo como el que se ha utilizado en las secciones anteriores. Aunque ambos diseños se adaptan a diferentes pantalla estirando el espacio dentro de los componentes y alrededor de los mismos, puede que no ofrezcan la mejor experiencia de usuario para cada tamaño de pantalla. Por tanto, tu aplicación no solo debe implementar los diseños flexibles, sino que también debe ofrecer varios diseños alternativos para diferentes configuraciones de pantalla. Para ello, se utilizan <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">calificadores de configuración</a>, que permiten que el tiempo de ejecución seleccione el recurso adecuado en función de la configuración actual del dispositivo (por ejemplo, un diseño diferente para diferentes tamaños de pantalla).</p>
+
+<p>Por ejemplo, muchas aplicaciones implementan el patrón de "panel dual" para pantallas grandes (la aplicación mostraría una lista de elementos en un panel y el contenido en otro panel). Aunque los tablets y las televisiones son lo suficientemente grandes como para que los dos paneles aparezcan simultáneamente en la pantalla, las pantallas de los teléfonos tienen que mostrarlos por separado. Para implementar estos diseños, puedes utilizar los siguientes archivos:</p>
+
+<ul>
+  <li><code>res/layout/main.xml</code>, diseño de panel único (predeterminado):
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+</li>
+  <li><code>res/layout-large/main.xml</code>, diseño de panel dual:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+</li>
+</ul>
+
+<p>Observa el calificador <code>large</code> en el nombre de directorio del segundo diseño. Este diseño se seleccionará en dispositivos con pantallas clasificadas como grandes (por ejemplo, tablets de 7" y superiores). El otro diseño (sin calificadores) se seleccionará en el caso de dispositivos más pequeños.</p>
+
+
+<h2 id="TaskUseSWQuali">Cómo utilizar el calificador de ancho mínimo</h2>
+
+<p>Una de las dificultades a las que se enfrentaron los desarrolladores con los dispositivos Android anteriores a la versión 3.2 fue el contenedor de tamaño de pantalla "grande". Algunos ejemplos de este tipo de dispositivo son el tablet Dell Streak, el tablet Galaxy Tab original y los tablets de 7" en general. Sin embargo, es posible que muchas aplicaciones quieran mostrar varios diseños para diferentes dispositivos de esta categoría (por ejemplo, para dispositivos de 5" y de 7"), aunque todos estos dispositivos se consideren de pantalla grande. Por esta razón, Android introdujo el calificador de "ancho mínimo" (entre otros) en Android 3.2.</p>
+
+<p>Este calificador te permite mostrar contenido en pantallas que tengan un ancho mínimo determinado en píxeles independientes de la densidad. Por ejemplo, el tablet típico de 7" tiene un ancho mínimo de 600 dp, por lo que si quieres que la interfaz de usuario sea de panel dual en esta pantalla (y una única lista en pantallas más pequeñas), puedes utilizar los mismos dos diseños de la sección anterior para los diseños de panel único y de panel dual, solo que en lugar de utilizar el calificador de tamaño <code>large</code>, debes utilizar <code>sw600dp</code> para indicar que el diseño de panel dual se utiliza con las pantallas cuyo ancho mínimo sea de 600 dp:</p>
+
+<ul>
+  <li><code>res/layout/main.xml</code>, diseño de panel único (predeterminado):
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+</li>
+  <li><code>res/layout-sw600dp/main.xml</code>, diseño de panel dual:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+</li>
+</ul>
+
+<p>Esto significa que los dispositivos cuyo ancho mínimo sea igual o superior a 600 dp utilizarán el diseño <code>layout-sw600dp/main.xml</code> (panel dual), mientras que las pantallas más pequeñas utilizarán el diseño <code>layout/main.xml</code> (panel único).</p>
+
+<p>No obstante, esto no funcionará en los dispositivos anteriores a Android 3.2 porque no reconocen <code>sw600dp</code> como calificador de tamaño, por lo que también tendrás que seguir utilizando el calificador <code>large</code>. Por tanto, debes tener un archivo con el nombre <code>res/layout-large/main.xml</code> idéntico a <code>res/layout-sw600dp/main.xml</code>. En la siguiente sección, obtendrás información sobre una técnica que te permite evitar que se dupliquen los archivos de diseños.</p>
+
+
+<h2 id="TaskUseAliasFilters">Cómo utilizar alias de diseño</h2> 
+
+<p>El calificador de ancho mínimo solo está disponible en Android 3.2 o superior. Por tanto, tendrás que seguir utilizando los contenedores de tamaño abstractos (pequeño, normal, grande y extragrande) para que sean compatibles con versiones anteriores. Por ejemplo, si quieres que tu interfaz de usuario sea de panel único en teléfonos pero multipanel en tablets de 7", televisiones y otros dispositivos grandes, tendrás que utilizar los siguientes archivos:</p>
+
+<p><ul>
+<li><code>res/layout/main.xml:</code> diseño de panel único,</li>
+<li><code>res/layout-large:</code> diseño multipanel,</li>
+<li><code>res/layout-sw600dp:</code> diseño multipanel.</li>
+</ul></p>
+
+<p>Los dos últimos archivos son idénticos porque uno de ellos se utilizará con dispositivos Android 3.2 y el otro con tablets y televisiones que utilicen versiones anteriores de Android.</p>
+
+<p>Para evitar la duplicación del mismo archivo para tablets y televisiones (así como todos los problemas que esto conlleva), puedes utilizar archivos alias. Por ejemplo, puedes establecer los siguientes diseños:</p>
+
+<ul>
+<li><code>res/layout/main.xml</code>: diseño de panel único,</li>
+<li><code>res/layout/main_twopanes.xml</code>: diseño de panel dual.</li>
+</ul>
+
+<p>Añade estos dos archivos:</p>
+
+<p><ul>
+<li><code>res/values-large/layout.xml</code>:
+<pre>
+&lt;resources>
+    &lt;item name="main" type="layout">&#64;layout/main_twopanes&lt;/item>
+&lt;/resources>
+</pre>
+</li>
+
+<li><code>res/values-sw600dp/layout.xml</code>:
+<pre>
+&lt;resources>
+    &lt;item name="main" type="layout">&#64;layout/main_twopanes&lt;/item>
+&lt;/resources>
+</pre>
+
+</li>
+</ul></p>
+
+<p>Estos dos últimos archivos tienen el mismo contenido, pero en realidad no definen el diseño. Solo configuran <PH>{@code main}</PH> para que sea un alias de <PH>{@code main_twopanes}</PH>. Como los archivos tienen selectores <code>large</code> y <code>sw600dp</code>, se aplican a tablets y a televisiones independientemente de la versión de Android (las televisiones y los tablets anteriores a la versión 3.2 utilizarán
+<PH>{@code large}</PH>y las televisiones y los tablets posteriores a la versión 3.2 utilizarán <code>sw600dp</code>).</p>
+
+
+<h2 id="TaskUseOriQuali">Cómo utilizar calificadores de orientación</h2> 
+
+<p>Aunque algunos diseños se pueden utilizar tanto en modo horizontal como vertical, la mayoría de ellos pueden beneficiarse de los ajustes. A continuación, se indica cómo se comporta el diseño según cada tamaño y orientación de la pantalla en la aplicación de ejemplo News Reader:</p>
+
+<p><ul>
+<li><b>pantalla pequeña, vertical:</b> panel único con logotipo,</li>
+<li><b>pantalla pequeña, horizontal:</b> panel único con logotipo,</li>
+<li><b>tablet de 7", vertical:</b> panel único con barra de acciones,</li>
+<li><b>tablet de 7", horizontal:</b> panel dual ancho con barra de acciones,</li>
+<li><b>tablet de 10", vertical:</b> panel dual estrecho con barra de acciones,</li>
+<li><b>tablet de 10", horizontal:</b> panel dual ancho con barra de acciones,</li>
+<li><b>televisión, horizontal:</b> panel dual ancho con barra de acciones.</li>
+</ul></p>
+
+<p>Cada uno de estos diseños se establecen en un archivo XML en el directorio <code>res/layout/</code>. Para definir posteriormente las diferentes configuraciones de pantalla, la aplicación utiliza alias de diseño para asignarlos a cada configuración:</p>
+
+<p><code>res/layout/onepane.xml:</code></p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+
+<p><code>res/layout/onepane_with_bar.xml:</code></p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane_with_bar.xml all}
+
+<p><code>res/layout/twopanes.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+
+<p><code>res/layout/twopanes_narrow.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes_narrow.xml all}
+
+<p>Una vez que se hayan definido todos los diseños posibles, solo se debe asignar el diseño adecuado a cada configuración a través de calificadores de configuración. Ahora ya puedes utilizar la técnica de los alias de diseño:</p>
+
+<p><code>res/values/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values/layouts.xml all}
+
+<p><code>res/values-sw600dp-land/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-sw600dp-land/layouts.xml
+all}
+
+<p><code>res/values-sw600dp-port/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-sw600dp-port/layouts.xml
+all}
+
+<p><code>res/values-large-land/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-large-land/layouts.xml all}
+
+<p><code>res/values-large-port/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-large-port/layouts.xml all}
+
+
+
+<h2 id="TaskUse9Patch">Cómo utilizar mapas de bits de la clase NinePatch</h2>
+
+<p>Admitir diferentes tamaños de pantalla normalmente implica que las fuentes de imagen también deben poder adaptarse a varios tamaños. Por ejemplo, un fondo de botón debe adaptarse a cualquier forma de botón a la que se aplique.</p>
+
+<p>Si utilizas imágenes sencillas en componentes que pueden cambiar de tamaño, observarás rápidamente que los resultados no es que sean precisamente impresionantes, ya que las imágenes se estirarán o estrecharán. La solución es utilizar mapas de bits de la clase NinePatch, que son archivos PNG con un formato especial que indican las áreas que se pueden y no se pueden estirar.</p>
+
+<p>Por tanto, al diseñar mapas de bits que se vayan a utilizar en componentes con tamaño variable, utiliza siempre mapas de bits de la clase NinePatch. Para convertir un mapa de bits en uno de la clase NinePatch, puedes empezar con una imagen normal (consulta la figura 4, que se ha ampliado cuatro veces para obtener una mayor claridad).</p>
+
+<img src="{@docRoot}images/training/button.png" />
+<p class="img-caption"><strong>Figura 4.</strong> <code>button.png</code></p>
+
+<p>A continuación, puedes pasar a la utilidad <ode
+href="{@docRoot}tools/help/draw9patch.html"><code>draw9patch</code></a> del SDK (que se localiza en el directorio <code>tools/</code>) en la que puedes marcar las áreas que se deben estirar dibujando píxeles a lo largo de los bordes superior e izquierdo. También puedes marcar el área que debe incluir el contenido dibujando píxeles a lo largo de los bordes inferior y derecho, como se muestra en la figura 5.</p>
+
+<img src="{@docRoot}images/training/button_with_marks.png" />
+<p class="img-caption"><strong>Figura 5.</strong> <code>button.9.png</code></p>
+
+<p>Observa los píxeles de color negro situados junto a los bordes. Los que aparecen en los bordes superior e izquierdo indican los lugares en los que se puede estirar la imagen, mientras que los que aparecen en los bordes inferior y derecho indican dónde se debe situar el contenido.</p>
+
+<p>Además, observa la extensión <code>.9.png</code>. Debes utilizar esta extensión, ya que, de este modo, el marco detecta que se trata de una imagen de la clase NinePatch, en lugar de una imagen PNG normal.</p>
+
+<p>Cuando aplicas este fondo a un componente (definiendo <code>android:background="&#64;drawable/button"</code>), el marco estira la imagen de forma adecuada para adaptarla al botón, como se muestra en varios tamaños de la figura 6.</p>
+
+<img src="{@docRoot}images/training/buttons_stretched.png" />
+<p class="img-caption"><strong>Figura 6.</strong> Botón que utiliza la clase NinePatch <code>button.9.png</code> en varios tamaños</p>
+
diff --git a/docs/html-intl/ja/guide/publishing/app-signing.jd b/docs/html-intl/ja/guide/publishing/app-signing.jd
new file mode 100644
index 0000000..2d2acfa
--- /dev/null
+++ b/docs/html-intl/ja/guide/publishing/app-signing.jd
@@ -0,0 +1,336 @@
+page.title=アプリケーションへの署名
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>署名の概略</h2>
+
+<ul>
+<li>Android アプリケーションはすべて<em>署名する必要がある</em></a></li>
+<li>自己署名キーで署名可能</li>
+<li>アプリケーションの署名方法は重要です。このドキュメントをよくお読みください</li>
+<li>開発プロセスの初期段階で署名戦略を決定します</li>
+</ul>
+
+<h2>このドキュメントの内容</h2>
+
+<ol>
+<li><a href="#overview">概要</a></li>
+<li><a href="#strategies">署名戦略</a></li>
+<li><a href="#setup">署名の基本設定</a></li>
+<li><a href="#debugmode">デバッグ モードでの署名</a></li>
+<li><a href="#releasemode">公開リリースへの署名</a>
+    <ol>
+    <li><a href="#releasecompile">リリース向けのコンパイル</a></li>
+    <li><a href="#cert">適切な秘密鍵の取得</a></li>
+    <li><a href="#signapp">アプリケーションの署名</a></li>
+    <li><a href="#ExportWizard">Eclipse ADT によるコンパイルと署名</a></li>
+    </ol>
+</li>
+<li><a href="#secure-key">秘密鍵のセキュリティ設定</a></li>
+
+</ol>
+
+<h2>関連項目</h2>
+
+<ol>
+<li><a href="{@docRoot}tools/publishing/versioning.html">アプリケーションのバージョニング</a></li>
+<li><a href="{@docRoot}tools/publishing/preparing.html">公開の準備</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>このドキュメントでは、Android アプリケーションを携帯端末ユーザーに公開する前に署名する方法について説明します。</p>
+
+<h2 id="overview">概要</h2>
+
+<p>Android システムでは、インストールするすべてのアプリケーションに対してデジタル署名されて証明書を必要とします。この証明書の秘密鍵は、アプリケーションのデベロッパーが所持するものです。Android システムは証明書をアプリケーションの作成者の識別手段、およびアプリケーション間の信頼関係の確立手段として使用します。証明書は、ユーザーがどのアプリケーションをインストールできるかを制御するものではありません。証明書は認証機関によって署名される必要はありません。通常の Android アプリケーションは自己署名証明書を使用して正常に機能します。</p>
+
+<p>Android アプリケーションの署名について、次の点を理解することが重要です:</p>
+
+<ul>
+  <li>すべてのアプリケーションは<em>署名される必要があります</em>。署名されていないアプリケーションはシステムにインストールされません。</li>
+  <li>アプリケーションの署名に、自己署名証明書を使用できます。認証機関は不要です。</li>
+  <li>アプリケーションをエンド ユーザーにリリースする準備ができたら、適切な秘密鍵を使用してアプリケーションに署名する必要があります。SDK ツールで生成されたデバッグ キーで署名されたアプリケーションは、公開できません。 
+  </li>
+  <li>システムが署名証明書の有効期限を確認するのは、インストール時のみです。アプリケーションのインストール後に署名者証明書が期限切れになった場合、アプリケーションは正常な動作を継続します。</li>
+  <li>標準ツールである Keytool と Jarsigner を使用してキーを生成し、アプリケーションの .apk ファイルに署名できます。</li>
+</ul>
+
+<p>Android システムは、適切に署名されていないアプリケーションをインストールせず、実行もしません。この規則は、実際のデバイスでもエミュレータでも、Android システムが実行されるすべての状況で適用されます。このため、エミュレータまたはデバイス上で実行またはデバッグする前に、アプリケーションの署名を設定する必要があります。</p>
+
+<p>Android SDK ツールは、デバッグ時のアプリケーション署名を支援します。「ADT Plugin for Eclipse」と「Ant ビルド ツール」では両方とも、<em>デバッグ モード</em>と<em>リリース モード</em>の 2 種類の署名モードを利用できます。 
+
+<ul>
+<li>開発およびテスト中は、デバッグ モードでコンパイルできます。デバッグ モードでは、ビルド ツールは JDK に付属の Keytool ユーティリティを使用して、キーストアとキーを既知のエイリアスとパスワードで作成します。コンパイルのたびに、ツールはデバッグ キーを使用してアプリケーションの .apk ファイルに署名します。パスワードは既知のものなので、コンパイルのたびにツールにキーストア/キー パスワードを入力する必要はありません。</li>
+
+<li>アプリケーションをリリースする準備ができたら、リリース モードでコンパイルして、.apk に<span style="color:red">秘密鍵</span>で署名する必要があります。次の 2 通りの方法があります:
+  <ul>
+    <li>Keytool と Jarsigner をコマンド ラインで使用する方法。このアプローチでは、まずアプリケーションを<em>署名されていない</em> .apk にコンパイルします。次に、Jarsigner(または類似のツール)を使用して秘密鍵で .apk に手動で署名します。適切な秘密鍵を所持していない場合は、Keytool を手動で実行して独自のキーストア/キーを生成し、Jarsigner でアプリケーションに署名できます。</li>
+    <li>ADT Export Wizard を使用する方法。ADT プラグイン搭載の Eclipse を使用して開発している場合、Export Wizard を使用してアプリケーションをコンパイルし、秘密鍵を生成して(必要な場合)、.apk に署名できます。この作業をすべて Export Wizard を使用して 1 つのプロセスで実行できます。
+    </li>
+  </ul>
+</li>
+</ul>
+
+<h2 id="strategies">署名戦略</h2>
+
+<p>アプリケーションの署名は、開発アプローチに一部影響します。特に、複数のアプリケーションをリリースする予定の場合、高い影響を与えます。 </p>
+
+<p>一般に、すべてのデベロッパーに推奨される戦略は、アプリケーションの予期される使用期間を通じて同じ証明書ですべてのアプリケーションに署名することです。このようにするには、複数の理由があります: </p>
+
+<ul>
+<li>アプリケーションのアップグレード - アプリケーションのアップグレードをリリースするとき、ユーザーが新バージョンにシームレスにアップグレードできるように、アップグレードされたアプリケーションにも同じ証明書で署名します。システムがアプリケーションのアップデートをインストールする際は、新バージョンの証明書のいずれかが旧バージョンの証明書と一致する場合、システムがアップデートを許可します。一致する証明書を使用せずに署名する場合は、アプリケーションに別のパッケージ名を割り当てる必要があります。この場合、新しいバージョンがまったく新しいアプリケーションとしてインストールされます。 </li>
+
+<li>アプリケーションのモジュール性 - Android システムでは、アプリケーションが要求する場合、同じ証明書で署名されたアプリケーションを同じプロセスで実行できます。これにより、システムはこれらを単一のアプリケーションとして取り扱います。このようにすればアプリケーションをモジュールとして配備でき、ユーザーは必要に応じて各モジュールを個別に更新できます。</li>
+
+<li>許可によるコード/データ共有 - Android システムでは、署名ベースの権限付与を実施しているため、アプリケーションは指定された証明書で署名されている別のアプリケーションに機能を提供できます。同じ証明書で複数のアプリケーションに署名し、署名に基づいた権限のチェックを行うことで、アプリケーションはコードとデータを安全な方法で共有できます。 </li>
+
+</ul>
+
+<p>署名戦略を決定する際のもう 1 つの重要な検討事項として、アプリケーションの署名に使用するキーの有効期間の設定方法があります。</p>
+
+<ul>
+<li>アプリケーションのアップグレードをサポートするには、キーの有効期間は、アプリケーションの予定される試用期間以上である必要があります。有効期間は、25年以上であることが推奨されます。キーの有効期間が切れた場合、ユーザーはアプリケーションの新バージョンにシームレスにアップグレードできなくなります。</li>
+
+<li>同じキーで複数の異なるアプリケーションに署名する場合、キーの有効期間が、今後のアプリケーション スイートに追加される依存アプリケーションを含め、<em>すべてのアプリケーションのすべてのバージョンの</em>予定される使用期間を超えることを確認してください。 </li>
+
+<li>アプリケーションを Android マーケットに公開する予定の場合、アプリケーションの署名に使用するキーの有効期間を、2033 年 10 月 22 日以降の期限に設定する必要があります。マーケット サーバーは、新バージョンが公開されたときにユーザーがマーケット アプリケーションをシームレスにアップグレードできるよう、この要件を義務付けています。 </li>
+</ul>
+
+<p>アプリケーションの設計時にこれらの点を考慮し、アプリケーションの署名に<a href="#cert">適切な証明書</a>を使用してください。 </p>
+
+<h2 id="setup">署名の基本設定</h2>
+
+<p>キーストアとデバッグ キーの生成をサポートするため、SDK ビルド ツールで Keytool を使用できることを初めに確認してください。たいていの場合、「JAVA_HOME」環境変数を設定して適切な JDK を参照させることで、SDK ビルド ツールで Keytool を認識できます。または、JDK バージョンの Keytool を PATH 変数に追加しても認識できます。</p>
+
+<p>Linux バージョンに付属されている GNU Java コンパイラで開発している場合は、gcj バージョンではなく、JDK バージョンの Keytool を使用していることを確認してください。Keytool が既に PATH に指定されている場合は、<code>/usr/bin/keytool</code> の symlink を指していることがあります。この場合は、symlink ターゲットが JDK の Keytool を指していることを確認してください。</p>
+
+<p>アプリケーションを公開する場合は、Jarsigner ツールをコンピュータで使用できるようにする必要があります。Jarsigner と Keytool の両方が JDK によって提供されます。 </p>
+
+<h2 id="debugmode">デバッグ モードでの署名</h2>
+
+<p>Android ビルド ツールにはデバッグ署名モードがあり、アプリケーションの開発とデバッグがスムーズに行えます。また、.apk をエミュレータまたはデバイスにインストールする際の、署名に対する Android システム要件を満たします。デバッグモードでは、SDK ツールは Keytool を呼び出してデバッグ キーストアとキーを作成します。</p>
+
+<p>SDK ツールは事前に指定された名前とパスワードを使用してデバッグ キーストア/キーを作成します。</p>
+<ul>
+<li>キーストア名 – 「debug.keystore」</li>
+<li>キーストアのパスワード – 「android」</li>
+<li>キーのエイリアス – 「androiddebugkey」</li>
+<li>キーのパスワード – 「android」</li>
+<li>CN – 「CN=Android Debug,O=Android,C=US」</li>
+</ul></p>
+
+<p>必要に応じて、デバッグ キーストア/キーの場所および名前を変更できます。また、自分で作成したデバッグ キーストア/キーを指定することもできます。Eclipse/ADT で、[[]<strong>ウィンドウ(Windows)</strong>] &gt; [[]<strong>設定(Prefs)</strong>] &gt; [[]<strong>Android</strong>] &gt; [[]<strong>ビルド(Build)</strong>] を選択します。ただし、自分で作成したデバッグ キーストア/キーは、デフォルトのデバッグ キー(上述)と同じキーストア/キー名とパスワードを使用する必要があります。</p>
+
+<p class="note"><strong>注:</strong> デバッグ証明書で署名した場合は、アプリケーションを<em>公開できません</em>。</p>
+
+<h3>Eclipse ユーザー</h3>
+
+<p>Eclipse/ADT で開発し、Keytool を上記のように設定してある場合は、デバッグモードにおける署名はデフォルトで有効になっています。アプリケーションを実行またはデバッグするときに、ADT は .apk にデバッグ証明書で署名し、エミュレータにインストールします。ADT が Keytool にアクセスできる場合は、ユーザーは特に操作する必要はありません。</p>
+
+<h3>Ant ユーザー</h3>
+
+<p>Ant を使用して .apk ファイルを構築する場合、デバッグ署名モードは <code>debug</code> オプションを使用することで有効になります(<code>android</code> ツールで生成された <code>build.xml</code> ファイルを使用していることが前提となります)。<code>ant debug</code> を実行してアプリケーションをコンパイルする際、ビルド スクリプトはキーストア/キーを生成し、.apk に署名します。ユーザーは操作する必要はありません。詳細は、<a href="{@docRoot}guide/developing/other-ide.html#DebugMode">その他の統合開発環境での開発: デバッグモードにおけるビルド </a> をお読みください。</p>
+
+
+<h3 id="debugexpiry">デバッグ証明書の有効期限</h3>
+
+<p>デバッグ モード(Eclipse/ADT と Ant ビルドのデフォルト)でのアプリケーション署名に使用した自己署名証明書には、作成日から 365 日の有効期限が設定されます。</p>
+
+<p>証明書の期限が切れると、ビルド エラーが発生します。Ant ビルドでは、エラーは次のようになります:</p>
+
+<pre>debug:
+[echo] Packaging bin/samples-debug.apk, and signing it with a debug key...
+[exec] Debug Certificate expired on 8/4/08 3:43 PM</pre>
+
+<p>Eclipse/ADT では、Android コンソールに同様のエラーが表示されます。</p>
+
+<p>この問題を解決するには、<code>debug.keystore</code> ファイルを削除します。AVD のデフォルトの格納場所は、OS X と Linux の場合は <code>~/.android/avd</code>、Windows XP の場合は <code>C:\Documents and Settings\<user>\.android\</code>、Windows Vista の場合は <code>C:\Users\<user>\.android\</code> です。</p>
+
+
+<p>次にビルドを行うと、ビルド ツールは新しいキーストアとデバッグ キーを再度生成します。</p>
+
+<p>開発コンピュータがグレゴリオ暦以外のロケールを使用している場合、ビルド ツールが誤って期限切れのデバッグ証明書を生成することがあります。このため、アプリケーションをコンパイルしようとするとエラーが発生します。解決策については、トラブルシューティング トピックの <a href="{@docRoot}resources/faq/troubleshooting.html#signingcalendar">ビルド ツールが期限切れのデバッグ証明書を生成するため、アプリケーションがコンパイルできない</a> をご覧ください。 </p>
+
+
+<h2 id="releasemode">公開リリースへの署名</h2>
+
+<p>アプリケーションを他のユーザーに公開する準備ができたら、次のことを行う必要があります:</p>
+<ol>
+  <li>アプリケーションをリリース モードでコンパイルする</li>
+  <li>適切な秘密鍵を取得する</li>
+  <li>アプリケーションに秘密鍵で署名する</li>
+</ol>
+
+<p>以下のセクションでは、これらの手順を実行する方法について説明します。</p>
+
+<p>ADT プラグイン搭載の Eclipse を使用している場合、これらの手順を実行する代わりに Export Wizard を使用して .apk をコンパイルして秘密鍵で署名できます。Export Wizard では、処理過程で新しいキーストアと秘密鍵の生成も可能です。<a href="#ExportWizard">Eclipse ADT によるコンパイルと署名</a>を参考にコンパイルを行ってください。</p>
+
+
+<h3 id="releasecompile">リリース向けのコンパイル</h3>
+
+<p>アプリケーションのリリースを準備するには、リリース モードでコンパイルする必要があります。リリース モードでは、Android ビルド ツールはアプリケーションを通常どおりにコンパイルしますが、デバッグ キーで署名しません。</p>
+
+<p class="warning"><strong>注:</strong> 署名されていないアプリケーション、またはデバッグ キーで署名されたアプリケーションはリリースできません。</p>
+
+<h4>Eclipse ユーザー</h4>
+
+<p><em>署名されていない</em> .apk ファイルを Eclipse からエクスポートするには、パッケージ エクスプローラー(Package Explorer)でプロジェクトを右クリックして、[[]<strong>Android ツール(Android Tools)</strong>] &gt; [[]<strong>署名されていないアプリケーション パッケージのエクスポート(Export Unsigned Application Package)</strong>] を選択します。次に、署名されていない .apk ファイルの場所を指定します(または、<code>AndroidManifest.xml</code> ファイルを Eclipse で開き、[[]<em>概要(Overview)</em>] タブを開いて [[]<strong>署名されていない .apk のエクスポート(Export an unsigned .apk)</strong>] をクリックします)。</p>
+
+<p>Export Wizard では、コンパイルと署名の手順を一緒に処理できます。<a href="#ExportWizard">Eclipse ADT によるコンパイルと署名</a>をご覧ください。</p>
+
+<h4>Ant ユーザー</h4>
+
+<p>Ant を使用している場合は、必要な作業は Ant コマンドでビルド ターゲットとして「release」を指定するだけです。たとえば、Ant を build.xml ファイルがあるディレクトリから実行している場合、コマンドは次のようになります:</p>
+
+<pre>$ ant release</pre>
+
+<p>ビルド スクリプトは、アプリケーション .apk を署名せずにコンパイルします。</p>
+
+
+<h3 id="cert">適切な秘密鍵の取得</h3>
+
+<p>アプリケーションの署名を準備するには、まず署名に使用する適切な秘密鍵があることを確認することが必要です。適切な秘密鍵とは、次の条件を満たすものです:</p>
+
+<ul>
+<li>自分が所有している。</li>
+<li>アプリケーションで識別される、個人、法人、または組織の実体を表す。</li>
+<li>アプリケーションまたはアプリケーション スイートの予期される使用期間を超える有効期間を持っている。有効期間として、25 年以上を推奨します。 
+<p>アプリケーションを Android マーケットに公開する予定の場合、2033 年 10 月 22 日までの有効期間が必要です。有効期間がこの日付以前に期限切れになるキーで署名されたアプリケーションは、アップロードできません。 
+</p></li>
+<li>Android SDK ツールで生成されたデバッグ キーではない。 </li>
+</ul>
+
+<p>自己署名されたキーを使用できます。適切なキーがない場合、Keytool を使用して生成する必要があります。<a href="#setup">基本設定</a>で説明した手順に従って、Keytool を使用できるようにしてください。</p>
+
+<p>Keytool で自己署名キーを生成するには、<code>keytool</code> コマンドを使用して以下に示すオプション(および、必要に応じてその他のオプション)を渡します。 </p>
+
+<p class="warning"><strong>注:</strong> Keytool を実行する前に、<a href="#secure-key">秘密鍵のセキュリティ設定</a>を読んで、キーのセキュリティを確保する方法と、自分とユーザーにとってセキュリティ確保が重要な理由を理解してください。特に、自分のキーを生成する場合、キーストアとキーの両方に強力なパスワードを選択する必要があります。</p>
+
+<table>
+<tr>
+<th>Keytool のオプション</th>
+<th>説明</th>
+</tr>
+<tr>
+<td><code>-genkey</code></td><td>キー ペアを生成します(公開キーと秘密鍵)。</td>
+</tr>
+<tr>
+<td><code>-v</code></td><td>詳しいメッセージを出力する。</td>
+</tr>
+<tr>
+<td><code>-keystore&nbsp;&lt;keystore-name&gt;.keystore</code></td><td>秘密鍵を含むキーストアの名前。</td>
+</tr>
+<tr>
+<td><code>-storepass &lt;password&gt;</code></td><td><p>キーストアのパスワード。</p><p>セキュリティ上の注意として、安全なコンピュータで作業している場合を除き、このオプションをコマンド ラインに指定しないでください。指定しなかった場合、Keytool からパスワードの入力が求められます。このため、パスワードはシェルの履歴に記録されません。</p></td>
+</tr>
+<tr>
+<td><code>-alias &lt;alias_name&gt;</code></td><td>キーのエイリアス。</td>
+</tr>
+<tr>
+<td><code>-keyalg &lt;alg&gt;</code></td><td>キーの生成時に使用する暗号化アルゴリズム。DSA と RSA の 2 つをサポートしています。</td>
+</tr>
+<tr>
+<td><code>-dname &lt;name&gt;</code></td><td><p>キーの作成者を識別する、識別名。値は、自己署名証明書の発行者およびサブジェクト フィールドとして使用されます。 </p><p>このオプションはコマンド ラインで指定する必要はありません。指定しなかった場合、Jarsigner からそれぞれの識別名フィールド(CN、OU など)の入力が求められます。</p></td>
+</tr>
+<tr>
+<td><code>-validity &lt;valdays&gt;</code></td><td><p>キーの有効期間(日数)。 </p><p><strong>注:</strong> 10000 以上の値を推奨します。</p></td>
+</tr>
+<tr>
+<td><code>-keypass &lt;password&gt;</code></td><td><p>キーのパスワード。</p>
+<p>セキュリティ上の注意として、安全なコンピュータで作業している場合を除き、このオプションをコマンド ラインに指定しないでください。指定しなかった場合、Keytool からパスワードの入力が求められます。このため、パスワードはシェルの履歴に記録されません。</p></td>
+</tr>
+</table>
+
+
+<p>秘密鍵を生成する Keytool コマンドの例を示します。</p>
+
+<pre>$ keytool -genkey -v -keystore my-release-key.keystore 
+-alias alias_name -keyalg RSA -validity 10000</pre>
+
+<p>上記のコマンド例を実行すると、Keytool からキーストアとキーのパスワードと、キーの識別名フィールドの指定が求められます。キーストアが <code>my-release-key.keystore</code> というファイルとして生成されます。キーストアとキーは、入力したパスワードで保護されます。キーストアには 1 つのキーが含まれ、10000 日間有効です。エイリアスは、後で使用する名前で、アプリケーションに署名するときにこのキーストアを参照する名前です。 </p>
+
+<p>Keytool の詳細は <a
+href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security">http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security</a> のドキュメント(英語のみ)をご覧ください。</p>
+
+
+<h3 id="signapp">アプリケーションの署名</h3>
+
+<p>リリースする .apk に実際に署名する準備ができたら、Jarsigner ツールを使用して署名できます。<a href="#setup">基本設定</a>で説明したように、Jarsigner をコンピュータで使用できることを確認してください。また、秘密鍵を含むキーストアがあることも確認してください。</p>
+
+<p>アプリケーションに署名するには、Jarsigner を実行して、アプリケーションの .apk と、.apk の署名に使用する秘密鍵を含むキーストアの両方を参照します。以下の表では、使用できるオプションを示します。 <p>
+
+<table>
+<tr>
+<th>Jarsigner のオプション</th>
+<th>説明</th>
+</tr>
+<tr>
+<td><code>-keystore&nbsp;&lt;keystore-name&gt;.keystore</code></td><td>秘密鍵を含むキーストアの名前。</td>
+</tr>
+<tr>
+<td><code>-verbose</code></td><td>詳しいメッセージを出力する。</td>
+</tr>
+<tr>
+<td><code>-storepass &lt;password&gt;</code></td><td><p>キーストアのパスワード。 </p><p>セキュリティ上の注意として、安全なコンピュータで作業している場合を除き、このオプションをコマンド ラインに指定しないでください。指定しなかった場合、Jarsigner からパスワードの入力が求められます。このため、パスワードはシェルの履歴に記録されません。</p></td>
+</tr>
+<tr>
+<td><code>-keypass &lt;password&gt;</code></td><td><p>秘密鍵のパスワード。 </p><p>セキュリティ上の注意として、安全なコンピュータで作業している場合を除き、このオプションをコマンド ラインに指定しないでください。指定しなかった場合、Jarsigner からパスワードの入力が求められます。このため、パスワードはシェルの履歴に記録されません。</p></td>
+</tr>
+</table>
+
+<p>Jarsigner を使用して <code>my_application.apk</code> というアプリケーション パッケージに署名する例を、上記で作成したキーストアを使用して示します。 
+</p>
+
+<pre>$ jarsigner -verbose -keystore my-release-key.keystore 
+my_application.apk alias_name</pre>
+
+<p>上記のコマンドを実行すると、Jarsigner からキーストアとキーのパスワードの入力が求められます。.apk がその場で変更され、.apk は署名されます。.apk に別のキーで複数回署名できます。</p>
+
+<p>.apk が署名されたことを確認するには、次のようなコマンドを使用できます:</p>
+
+<pre>$ jarsigner -verify my_signed.apk</pre>
+
+<p>.apk が適切に署名されると、Jarsigner から「jar verified」と出力されます。詳細情報が必要な場合は、次のコマンドを使用できます。</p>
+
+<pre>$ jarsigner -verify -verbose my_application.apk</pre>
+
+<p>または、次のコマンドを使用します。</p>
+
+<pre>$ jarsigner -verify -verbose -certs my_application.apk</pre>
+
+<p>上記の <code>-certs</code> オプションが付加されたコマンドでは、「CN=」行が出力され、キーの作成者が示されます。</p>
+
+<p class="note"><strong>注:</strong> 「CN=Android Debug」と出力される場合、.apk が Android SDK によって生成されたデバッグ キーで署名されたことを示しています。アプリケーションをリリースする予定の場合は、デバッグ キーではなく秘密鍵で署名する必要があります。</p>
+
+<p>Jarsigner の詳細は <a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security">http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security</a> のドキュメント(英語のみ)をご覧ください。</p>
+
+
+<h3 id="ExportWizard">Eclipse ADT によるコンパイルと署名</h3>
+
+<p>ADT 搭載 Eclipse を使用している場合、Export Wizard を使用して<em>署名済み</em> .apk をエクスポートできます(必要に応じて、新しいキーストアを作成することもできます)。Export Wizard は、Keytool と Jarsigner のすべての処理を、コマンド ラインを使用せず、グラフィカル ユーザー インターフェースで署名を実行できます。Export Wizard は Keytool と Jarsigner の両方を使用するため、上記の<a href=#setup">署名の基本設定</a>の条件を満たすコンピュータで使用できます。</p>
+
+<p>署名された .apk を作成するには、パッケージ エクスプローラー(Package Explorer)でプロジェクトを右クリックして、<strong>[[]Android ツール(Android Tools)] &gt; [[]署名済みアプリケーション パッケージのエクスポート(Export Signed Application Package)]</strong> を選択します(または、<code>AndroidManifest.xml</code> ファイルを Eclipse で開き、[[]<em>概要(Overview)</em>] タブを開いて [[]<strong>Export Wizard を使用する(Use the Export Wizard)</strong>] をクリックします)。表示されたウィンドウには、アプリケーションのエクスポート中に見つかったエラーが表示されます。エラーが見つからなかった場合は Export Wizard で処理を続行します。.apk に署名する秘密鍵の選択や、新しいキーストアと秘密鍵の作成など、アプリケーション署名のプロセスを手順を追って実行できます。</p>
+
+<p>Export Wizard が完了すると、配布可能な署名済み .apk が作成されています。</p>
+
+
+<h2 id="secure-key">秘密鍵のセキュリティ設定</h2>
+
+<p>秘密鍵のセキュリティ設定は、作成者とユーザーの両者にとって重要です。他人にキーを使用させたり、第三者が見つけて使用できるような安全ではない場所にキーストアとキーを放置したりすると、作成者とユーザー間の信頼が損なわれます。 </p>
+
+<p>他者が許可を得ずにキーを取得した場合、その人物はアプリケーションに署名して配布し、本物のアプリケーションを故意に置き換えたり破損させたりすることができます。このような人物は、身元を詐称してアプリケーションに署名して配布し、その他のアプリケーションまたはシステム自体を攻撃したり、ユーザー データを破損させたり盗み出したりすることもあります。 </p>
+
+<p>キーの有効期限が切れるまで、秘密鍵のセキュリティを常に適切に維持できるかは、デベロッパーとしての評価を左右します。キーを安全に保つためのヒントをいくつか紹介します。 </p>
+
+<ul>
+<li>キーストアとキーに強力なパスワードを選択します。</li>
+<li>Keytool でキーを生成するとき、<em></em>コマンド ラインで <code>-storepass</code> および <code>-keypass</code> オプションを指定しないようにします。指定すると、パスワードがシェル履歴に記録され、コンピュータのすべてのユーザーがアクセスできるようになります。</li>
+<li>同様に、Jarsigner でアプリケーションに署名するとき、<em></em>コマンド ラインで <code>-storepass</code> と <code>-keypass</code> オプションを指定しないようにします。 </li>
+<li>秘密鍵を誰にも与えたり貸したりせず、不正なユーザーにキーストアとキーのパスワードを知られないようにします。</li>
+</ul>
+
+<p>一般的には、キーの生成、使用、保管に関して常識的な注意を払っていれば、セキュリティを確保することができます。 </p>
\ No newline at end of file
diff --git a/docs/html-intl/ja/guide/publishing/preparing.jd b/docs/html-intl/ja/guide/publishing/preparing.jd
new file mode 100644
index 0000000..c7a2950
--- /dev/null
+++ b/docs/html-intl/ja/guide/publishing/preparing.jd
@@ -0,0 +1,158 @@
+page.title=公開の準備
+@jd:body
+
+<!--
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document</h2>
+
+<ol>
+<li><a href=""></a></li>
+</ol>
+
+</div>
+</div>
+-->
+
+<p>アプリケーションの公開とは、アプリケーションをテストして適切にパッケージし、Android 搭載の携帯端末のユーザーが利用できる状態にすることです。</p>
+
+<p>アプリケーションを公開して Android 搭載デバイスにインストールするには、いくつかの作業を行ってアプリケーションの準備を整える必要があります。このドキュメントでは、アプリケーションのリリースを成功させるための準備における、重要なチェックポイントを説明しています。
+</p>
+
+<p>アプリケーションを Android マーケットに公開する場合は、アプリケーションの具体的な準備要件について <a
+href="{@docRoot}tools/publishing/publishing.html#market">Android マーケットでの公開</a> もご覧ください。 </p>
+
+<p>アプリケーションを公開する方法の一般的な情報については、<a href="{@docRoot}tools/publishing/publishing.html">Publishing Your Applications</a> のドキュメントをご覧ください。 </p>
+
+<div class="special">
+
+<p>アプリケーションのリリースを準備する前の作業:</p>
+
+<ol>
+<li>アプリケーションを実際のデバイスで徹底的にテストする </li>
+<li>アプリケーションへのエンド ユーザー ライセンス契約の追加を検討する</li>
+<li>アプリケーションのマニフェストにアイコンとラベルを指定する</li>
+<li>ロギングとデバッグを無効にして、データとファイルをクリーンアップする</li>
+</ol>
+
+<p>アプリケーションの最終コンパイルを実行する前の作業:</p>
+
+<ol start="5">
+<li>アプリケーションでバージョン管理を行う</li>
+<li>適切な暗号化キーを取得する</li>
+<li>アプリケーションが MapView 要素を使用している場合は、Maps API キーに登録する</li>
+</ol>
+
+<p><em>アプリケーションのコンパイル</em></p>
+<p>アプリケーションをコンパイルした後の作業:</p>
+<ol start="8">
+<li>アプリケーションに署名する</li>
+<li>コンパイルしたアプリケーションをテストする</li>
+</ol>
+</div>
+
+<h2 id="releaseready">アプリケーションのリリースを準備する前の作業</h2>
+
+<h3 id="test">1. アプリケーションを実際のデバイスで徹底的にテストする</h3>
+
+<p>アプリケーションをできる限り広範に徹底的にテストすることが重要です。この作業を支援するため、Android では多数のテスト用クラスとツールを用意しています。{@link android.app.Instrumentation Instrumentation} を使用して JUnit およびその他のテスト ケースを実行できます。また、<a href="{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a> などのテスティング ツールを使用できます。  </p>
+
+<ul>
+<li>ユーザーがアプリケーションを正常に実行できるようにするため、アプリケーションが実行されると予想されるタイプの携帯端末の実機を入手してください。実際のデバイスで、実際のネットワーク条件の下でアプリケーションをテストします。アプリケーションを実際のデバイスでテストすることは非常に重要です。これによって、作成したユーザー インターフェース要素のサイズが正しく(特にタッチスクリーン UI の場合)、アプリケーションのパフォーマンスと電池効率が適正であることを確認できるからです。</li>
+
+<li>アプリケーションの対象とするタイプの携帯端末が手に入らない場合は、<code>-dpi</code>、<code>-device</code>、<code>-scale</code>、<code>-netspeed</code>、<code>-netdelay</code>、<code>-cpu-delay</code> などのエミュレータ オプションを使用して、エミュレータの画面、ネットワーク パフォーマンス、その他の属性をモデル化して可能な限り対象デバイスに適応させることができます。このようにして、アプリケーションの UI とパフォーマンスをテストできます。ただし、公開する前にアプリケーションを実際の対象デバイスでテストすることを強く推奨します。 </li>
+
+<li>アプリケーションが <a href="http://www.t-mobileg1.com/">T-Mobile G1</a> デバイスを対象としている場合、UI が画面の向き変更に対応しているか確認してください。 </li>
+</ul>
+
+<h3 id="eula">2. アプリケーションへのエンドユーザー ライセンス契約の追加を検討する</h3>
+
+<p>個人、組織、知的財産を保護するため、アプリケーションのエンドユーザー ライセンス契約(EULA)を付加することを推奨します。 
+
+<h3 id="iconlabel">3. アプリケーションのマニフェストにアイコンとラベルを指定する</h3>
+
+<p>アプリケーションのマニフェストに指定するアイコンとラベルは、アプリケーションのアイコンと名前としてユーザーに表示されるため、重要な要素です。アイコンとラベルは、デバイスの [[]ホーム] 画面や、[[]アプリケーションの管理]、[[]マイダウンロード] などに表示されます。また、公開サービスによってアイコンとラベルがユーザーに表示される可能性もあります。 </p>
+
+<p>アイコンとラベルを指定するには、<code>android:icon</code> と <code>android:label</code> 属性をマニフェストの <code>&lt;application&gt;</code> 要素に定義します。 </p>
+
+<p>アイコンのデザインについては、組み込みの Android アプリケーションのスタイルとできるだけ統一感を持たせてください。</p>
+
+<h3 id="logging">4. ロギングとデバッグを無効にして、データとファイルをクリーンアップする</h3>
+
+<p>リリース時にはデバッグ機能を無効にし、デバッグおよびその他の不要なデータ/ファイルをアプリケーション プロジェクトから削除してください。</p>
+<ul>
+<li><code>android:debuggable="true"</code> 属性をマニフェストの <code>&lt;application&gt;</code> 要素から削除します。</li>
+<li>ログ ファイル、バックアップ ファイル、およびその他の不要なファイルをアプリケーション プロジェクトから削除します。</li>
+<li>個人的または自分専用のデータがないか確認し、必要に応じて削除します。</li>
+<li>ソース コード内に {@link android.util.Log} メソッドへの呼び出しがある場合は、無効にします。</li>
+</ul>
+
+<h2 id="finalcompile">アプリケーションの最終コンパイルを実行する前の作業</h2>
+
+<h3 id="versionapp">5. アプリケーションでバージョン管理を行う</h3>
+
+<p>アプリケーションをコンパイルする前に、アプリケーションにバージョン番号を定義しておく必要があります。定義するには、アプリケーションのマニフェスト ファイルの <code>&lt;manifest&gt;</code> 要素の <code>android:versionCode</code> と <code>android:versionName</code> 属性の両方に適切な値を指定します。バージョン番号の設定は、全体的なアプリケーションアップグレードの計画を考慮して、慎重に検討してください。 </p>
+
+<p>これまでにリリースしたバージョンがある場合、最新のアプリケーションのバージョン番号を旧バージョンから増加させる必要があります。アプリケーションのマニフェスト ファイルの <code>&lt;manifest&gt;</code> 要素の <code>android:versionCode</code> と <code>android:versionName</code> 属性の両方を適切な値を使用して増加する必要があります。 </p>
+
+<p>アプリケーションのバージョン情報を定義する方法は、<a href="{@docRoot}tools/publishing/versioning.html">Versioning Your Applications</a>をご覧ください。</p>
+
+<h3 id="cryptokey">6. 適切な暗号化キーを取得する</h3>
+
+<p>ここまで準備作業をすべて読んで実行していれば、アプリケーションはコンパイルされ、署名の準備ができています。.apk の内部では、アプリケーションは適切にバージョン管理されており、上記のように余分なファイルや非公開データは削除されています。 </p>
+
+<p>アプリケーションに署名する前に、適切な非公開キーがあることを確認する必要があります。非公開キーを取得(または生成)する方法については、<a href="{@docRoot}tools/publishing/app-signing.html#cert">適切な非公開キーの取得</a>をご覧ください。</p>
+
+<p>適切な非公開キーを取得(または生成)したら、キーを使用して次の手順を実行します:</p>
+
+<ul>
+<li>アプリケーションが MapView 要素を使用している場合は、Maps API キー(以下をご覧ください)に登録します。</li>
+<li>以降の準備プロセスで、リリースするアプリケーションに署名します。</li>
+</ul>
+
+<h3 id="mapsApiKey">7. アプリケーションが MapView 要素を使用している場合は、Maps API キーに登録する</h3>
+
+<div class="sidebox-wrapper">
+<div class="sidebox"><p>
+Maps API キーを取得する方法は、<a
+href="http://code.google.com/android/add-ons/google-apis/mapkey.html">Maps API キーの取得(英語のみ)</a>
+をご覧ください。</p>
+</div>
+</div>
+
+<p>アプリケーションが Mapview 要素を使用する場合、アプリケーションを Google Maps サービスで登録し、Maps API キーを取得する必要があります。その後、MapView で Google Maps からデータを取得できるようになります。この処理を行うため、Maps サービスに署名証明書の MD5 フィンガープリントを提出します。 </p>
+
+<p>開発中は、SDK ツールが生成したデバッグ キーを登録して一時的な Maps API キーを取得できます。ただし、アプリケーションを公開する前には、非公開キーに基づく新しい Maps API キーで登録する必要があります。 </p>
+
+<p>アプリケーションが MapView 要素を使用する場合、次の点を理解することが重要です:</p>
+
+<ol>
+<li>アプリケーションをリリース用にコンパイルする前に、Maps API キーを取得する必要があります。<em></em>このキーを、アプリケーションのレイアウト ファイルにある各 MapView 要素の、<code>android:apiKey</code> という特殊な属性に追加する必要があるからです。MapView オブジェクトをコードから直接インスタンス化している場合は、Maps API キーをコンストラクタのパラメータとして渡す必要があります。
+</li>
+<li>アプリケーションの MapView 要素が参照する Maps API キーは Google Maps 内で登録され、アプリケーションの署名に使用される証明書に登録される必要があります。これはアプリケーションを公開する際に特に重要です。MapView 要素は、アプリケーションの署名に使用されるリリース証明書に登録されるキーを参照する必要があります。  </li>
+<li>SDK ツールが生成したデバッグ証明書を登録して一時的な Maps API キーを取得している場合、リリース証明書を登録して新しい Maps API キーを取得する<em>必要があります</em>。また、MapView 要素を変更して、デバッグ証明書と関連付けられたキーではなく、新しいキーを参照させることも忘れないでください。このようにしないと、MapView 要素には Maps データをダウンロードする許可が与えられません。 </li>
+<li>アプリケーションの署名に使用する非公開キーを変更するには、Google Maps サービスから新しい Maps API キーを取得する<em>必要があります</em>。新しい Maps API キーを取得してすべての MapView 要素に適用してください。以前のキーを参照する MapView 要素には、Maps データをダウンロードする許可が与えられません。 </li>
+</ol>
+
+<p>署名と非公開キーについては、<a
+href="{@docRoot}tools/publishing/app-signing.html">アプリケーションへの署名</a>をご覧ください。</p>
+
+
+<h2 id="compile">アプリケーションのコンパイル</h2>
+
+<p>前述のセクションで説明したアプリケーションの準備ができたら、アプリケーションをリリース用にコンパイルできます。 </p>
+
+<h2 id="post-compile">アプリケーションをコンパイルした後の作業</h2>
+
+<h3 id="signapp">8. アプリケーションに署名する</h3>
+
+<p>非公開キーを使用してアプリケーションに署名します。アプリケーションに正しく署名することは、非常に重要です。詳細は、<a href="{@docRoot}tools/publishing/app-signing.html">アプリケーションへの署名</a>をご覧ください。 </p>
+
+<h3 id="testapp">9. コンパイルして署名したアプリケーションのテスト</h3>
+
+<p>コンパイルしたアプリケーションをリリースする前に、対象とする携帯端末(および可能ならば対象ネットワーク)上で徹底的にテストする必要があります。特に、UI 部分の MapView 要素がマップ データを正常に受信していることを確認してください。正常に受信していない場合、<a href="#mapsApiKey">Maps API キーに登録する</a>に戻って問題を解決してください。アプリケーションがサーバー側サービスを正しく利用できること、指定データまたは使用データを正しく処理できること、そして認証要件を正常に処理できることも確認してください。  </p>
+
+<p>これらのテストが完了したら、アプリケーションを携帯端末ユーザーに公開する準備が整ったと言えるでしょう。</p>
+
+
diff --git a/docs/html-intl/ja/guide/publishing/versioning.jd b/docs/html-intl/ja/guide/publishing/versioning.jd
new file mode 100644
index 0000000..1928610
--- /dev/null
+++ b/docs/html-intl/ja/guide/publishing/versioning.jd
@@ -0,0 +1,100 @@
+page.title=アプリケーションのバージョニング
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>バージョン管理の概略</h2>
+
+<ul>
+<li>アプリケーションにはバージョンを設定する必要がある<em></em></a></li>
+<li>バージョンは、アプリケーションのマニフェスト ファイルで設定する</li>
+<li>アプリケーションのバージョン管理方法は、ユーザーのアップグレード方法に影響 </li>
+<li>開発プロセスの初期段階で、今後のリリースの検討事項を含めて、バージョン管理戦略を決定します</li>
+</ul>
+
+<h2>このドキュメントの内容</h2>
+
+<ol>
+<li><a href="#appversion">アプリケーションのバージョンの設定</a></li>
+<li><a href="#minsdkversion">最小システム API バージョンの指定</a>
+</ol>
+
+
+<h2>関連項目</h2>
+
+<ol>
+<li><a href="{@docRoot}tools/publishing/preparing.html">公開の準備</a></li>
+<li><a href="{@docRoot}tools/publishing/publishing.html#market">Android マーケットでの公開</a></li>
+<li><a href="{@docRoot}guide/topics/manifest/manifest-intro.html">The AndroidManifest.xml File</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>バージョン管理のコンポーネントは、アプリケーションのアップグレード及びメンテナンスの計画を立てるのに重要です。 </p>
+
+<ul>
+<li>ユーザーは、デバイスにインストールされたアプリケーション バージョンと、インストールが可能なアップグレード バージョンについて、特定の情報が必要です。 </li>
+<li>スイートとして公開されたその他のアプリケーションなどでは、アプリケーションのバージョンをシステムに問い合わせて、互換性と依存関係を確認する必要があります。</li>
+<li>アプリケーションを公開するサービスでは、アプリケーションにバージョンを問い合わせて、バージョンをユーザーに表示できるようにする必要があります。公開サービスでは、互換性を確認してアップグレードとダウングレードの関係を確立するために、アプリケーション バージョンを確認する必要があります。</li>
+</ul>
+
+<p>Android システム自体は、アップグレードや互換性の制約の実施などのために、アプリケーション バージョン情報をアプリケーションに対して<em>確認することはありません</em>。代わりに、アプリケーションにおけるバージョン制約はユーザーまたはアプリケーション自体によって完全に実施されます。 </p>
+
+<p>Android システムが確認を行うのは、アプリケーションによってマニフェストの <code>minSdkVersion</code> 属性に指定されたシステム バージョン互換性です。<em></em>この属性によりアプリケーションは互換性を持つ最小システム API を指定できます。詳細は、<a href="#minsdkversion">最小システム API バージョンの指定</a>をご覧ください。
+
+<h2 id="appversioning">アプリケーションのバージョンの設定</h2>
+<p>アプリケーションのバージョン情報を定義するには、アプリケーションのマニフェスト ファイルで属性を設定します。2 つの属性を使用でき、常にこの両方に値を定義することが推奨されています: </p>
+
+<ul>
+<li><code>android:versionCode</code> - アプリケーション コードのバージョンを他のバージョンと相対的に示す整数値。 
+
+<p>この値は整数なので、その他のアプリケーションはプログラムでバージョンの値を評価して関係を確認できます(たとえば、このバージョンがアップグレードかダウングレードなのか、など)。任意の整数値を設定できますが、アプリケーションの後続のリリースでは、現在より大きな値を使用するようにしてください。システムではこのバージョン管理の基準を強制しませんが、後継リリースの値を増加させることは標準的です。 </p>
+
+<p>通常、アプリケーションの最初のバージョンの versionCode を 1 に設定してリリースし、その後は各リリースについて、リリースがメジャー リリースであってもマイナー リリースであっても、値を単調増加させます。これは、<code>android:versionCode</code> の値は、ユーザーに表示されるアプリケーション リリース バージョンと類似している必要性はないことを意味します。以下の <code>android:versionName</code> をご覧ください。アプリケーションと公開サービスでは、このバージョンの値はユーザーには表示されません。</p>
+</li>
+<li><code>android:versionName</code> - アプリケーション コードのリリース バージョンを表す文字列値で、ユーザーに表示される値です。 
+<p>値は文字列なので、アプリケーション バージョンを「&lt;major&gt;.&lt;minor&gt;.&lt;point&gt;」といった文字列や、その他のタイプの絶対的または相対的バージョン ID として記述できます。 </p>
+
+<p><code>android:versionCode</code> の場合と同様に、システムではこの値をアプリケーションでユーザーに表示する以外の目的で内部的に利用することはありません。公開サービスでは、ユーザーに表示するために <code>android:versionName</code> 値を取り出す可能性もあります。</p>
+</li>
+</ul>
+
+<p>これらのバージョン属性の両方をマニフェスト ファイルの <code>&lt;manifest&gt;</code> 要素で定義します。 </p>
+
+<p>ここに、<code>&lt;manifest&gt;</code> 要素の <code>android:versionCode</code> と <code>android:versionName</code> 属性を示すマニフェストの例を示します。 </p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+      package="com.example.package.name"
+      android:versionCode="2"
+      android:versionName="1.1"&gt;
+    &lt;application android:icon="@drawable/icon" android:label="@string/app_name"&gt;
+        ...
+    &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>この例では、<code>android:versionCode</code> 値は現在の .apk がこのアプリケーション コードの 2 番目のリリースを含んでいることを表し、これは <code>android:codeName</code> 文字列が示すようにマイナー後継リリースであることを示します。 </p>
+
+<p>Android フレームワークには、アプリケーションがシステムに別のアプリケーションのバージョン情報を問い合わせる API が用意されています。バージョン情報を取得するため、アプリケーションは {@link android.content.pm.PackageManager#getPackageInfo(java.lang.String, int)} 
+method of {@link android.content.pm.PackageManager PackageManager}. </p> を使用します。
+
+<h2 id="minsdkversion">最小システム API バージョンの指定</h2>
+
+<p>アプリケーションが最低でも Android プラットフォームの特定のバージョンを必要とする場合、このバージョンを API レベルの ID としてアプリケーションのマニフェスト ファイルに指定できます。このようにすると、互換性のあるバージョンの Android システムを実行しているデバイスにのみアプリケーションをインストールできるようになります。 </p>
+
+<p>最小システム バージョンをマニフェストに指定するには、次の属性を使用します: </p>
+
+<ul>
+<li><code>android:minSdkVersion</code> - Android プラットフォームのコード バージョンに対応する整数値。 
+<p>アプリケーションのインストールを準備する際に、システムはこの属性の値を確認して、システム バージョンと比較します。<code>android:minSdkVersion</code> 値がシステム バージョンよりも大きい場合、システムはアプリケーションのインストールを中止します。 </p>
+
+<p>この属性をマニフェストに指定しない場合、システムではアプリケーションがすべてのプラットフォーム バージョンと互換性があると仮定します。</p></li>
+</ul>
+
+<p>アプリケーションに最小プラットフォーム バージョンを指定するには、<code>&lt;uses-sdk&gt;</code> 要素を <code>&lt;manifest&gt;</code> の子として追加し、<code>android:minSdkVersion</code> を属性として定義します。 </p>
+
+<p>詳細は、<a href="{@docRoot}about/versions/android-1.1.html">Android System Image 1.1 Version Notes</a> もご覧ください。</p>
diff --git a/docs/html-intl/ja/guide/topics/fundamentals.jd b/docs/html-intl/ja/guide/topics/fundamentals.jd
new file mode 100644
index 0000000..cf9f7dd
--- /dev/null
+++ b/docs/html-intl/ja/guide/topics/fundamentals.jd
@@ -0,0 +1,922 @@
+page.title=開発の基礎
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>主なクラス</h2>
+<ol>
+<li>{@link android.app.Activity}</li>
+<li>{@link android.app.Service}</li>
+<li>{@link android.content.BroadcastReceiver}</li>
+<li>{@link android.content.ContentProvider}</li>
+<li>{@link android.content.Intent}</li>
+</ol>
+
+<h2>このドキュメントの内容</h2>
+<ol>
+<li><a href="#appcomp">アプリケーションのコンポーネント</a>
+  <ol>
+    <li><a href="#actcomp">コンポーネントのアクティブ化: インテント</a></li>
+    <li><a href="#endcomp">コンポーネントの終了</a></li>
+    <li><a href="#manfile">マニフェスト ファイル</a></li>
+    <li><a href="#ifilters">インテント フィルタ</a></li>
+  </ol></li>
+<li><a href="#acttask">アクティビティとタスク</a>
+  <ol>
+    <li><a href="#afftask">親和性と新しいタスク</a></li>
+    <li><a href="#lmodes">起動モード</a></li>
+    <li><a href="#clearstack">スタックのクリア</a></li>
+    <li><a href="#starttask">タスクの開始</a></li>
+  </ol></li>
+<li><a href="#procthread">プロセスとスレッド</a>
+  <ol>
+    <li><a href="#procs">プロセス</a></li>
+    <li><a href="#threads">スレッド</a></li>
+    <li><a href="#rpc">リモート プロシージャ コール</a></li>
+    <li><a href="#tsafe">スレッドセーフなメソッド</a></li>
+  </ol></li>
+<li><a href="#lcycles">コンポーネントのライフサイクル</a>
+  <ol>
+    <li><a href="#actlife">アクティビティのライフサイクル</a></li>
+    <li><a href="#servlife">サービスのライフサイクル</a></li>
+    <li><a href="#broadlife">ブロードキャスト レシーバのライフサイクル</a></li>
+    <li><a href="#proclife">プロセスとライフサイクル</a></li>
+  </ol></li>
+</ol>
+</div>
+</div>
+
+<p>
+Android アプリケーションはすべて Java プログラミング言語で記述します。コンパイル済みの Java コード(およびそのアプリケーションに必要なすべてのデータやリソース ファイル)は、<a href="{@docRoot}tools/aapt.html"><code>aapt</code> ツール</a>を使用して Android パッケージにバンドルします。Android パッケージは、拡張子が {@code .apk} のアーカイブ ファイルです。<i></i>ユーザーは、このファイルをデバイスにダウンロードして利用します。つまり、Android パッケージは、アプリケーションをモバイル デバイスに配布およびインストールするための媒体として機能します。1 つの {@code .apk} ファイルに含まれているすべてのコードが、1 つのアプリケーションと見なされます。<i></i>
+</p>
+
+<p>
+各 Android アプリケーションは、以下に示すさまざまな方法で他のアプリケーションから隔離されています:
+</p>
+
+<ul>
+<li>すべてのアプリケーションは、デフォルトではそのアプリケーション個別の Linux プロセスで実行されます。Android は、アプリケーション コードの実行が必要になったときにプロセスを開始し、その必要がなくなって他のアプリケーションからシステム リソースを要求されたときにプロセスを終了します。</li>
+
+<li>プロセスごとに専用の Java 仮想マシン(VM)が割り当てられるため、アプリケーション コードは他のアプリケーションから隔離された状態で実行されます。</li>
+
+<li>デフォルトでは、アプリケーションごとに固有の Linux ユーザー ID が割り当てられます。権限が設定されているため、アプリケーションのファイルはそのユーザーからしか認識できず、そのアプリケーション自体からのみ利用できます。ただし、ファイルを他のアプリケーションにエクスポートすることは可能です。</li>
+</ul>
+
+<p>
+2 つのアプリケーションで同じユーザー ID を共有することもできます。その場合は、それぞれのアプリケーションのファイルを相互に認識できます。システム リソースを節約するため、同じ ID のアプリケーションで同じ VM を共有し、同じ Linux プロセスで実行することも可能です。
+</p>
+
+
+<h2 id="appcomp">アプリケーションのコンポーネント</h2>
+
+<p>
+Android の大きな特長の 1 つは、許可されていれば、あるアプリケーションから別のアプリケーションの要素を利用できる点です。たとえば、開発中のアプリケーションで画像の一覧をスクロール表示したい場合、他のアプリケーションで開発済みの適切なスクローラがあり、その利用が許可されていれば、独自に開発しなくてもそのスクローラを利用できます。アプリケーションに他のアプリケーションのコードを組み込んだり、リンクを設定したりする必要はありません。必要になった時点で、他のアプリケーションの一部分を開始するだけです。
+</p>
+
+<p>
+この仕組みが機能するには、アプリケーション プロセスの一部分を必要に応じて開始でき、その部分の Java オブジェクトをインスタンス化できなくてはなりません。そのため、Android アプリケーションには、他のシステムで動作するアプリケーションでよく使用されるような、アプリケーション全体にアクセスするための単一のエントリ ポイント(たとえば {@code main()} 関数)はありません。代わりに、システムが必要に応じてインスタンス化して実行できるコンポーネントで構成されます。<i></i>コンポーネントには以下の 4 つのタイプがあります:
+</p>
+
+<dl>
+
+<dt><b>アクティビティ</b></dt>
+<dd>アクティビティは、ユーザーが 1 つの操作を集中的に行うための視覚的なユーザー インターフェースを表します。<i></i>たとえば、ユーザーが選択できるメニュー アイテムの一覧を表示するアクティビティや、写真をキャプション付きで表示するアクティビティなどが考えられます。SMS アプリケーションなら、あるアクティビティでメッセージを送信する連絡先の一覧を表示し、別のアクティビティで選択した連絡先へのメッセージを入力し、その他のアクティビティで古いメッセージを参照したり設定を変更したりできます。これらのアクティビティを組み合わせて全体としてのユーザー インターフェースを形成しますが、それぞれのアクティビティは相互に独立しています。各アクティビティは、{@link android.app.Activity} 基本クラスのサブクラスとして実装されます。  
+
+<p>
+アプリケーションは、1 つのアクティビティで構成することも、上記のSMS アプリケーションのように複数のアクティビティで構成することもできます。どのようなアクティビティがいくつ必要になるかは、アプリケーションやその設計に応じて異なります。通常は、アクティビティのうちのいずれかを最初のアクティビティとして指定し、ユーザーがアプリケーションを起動したときに表示します。あるアクティビティから別のアクティビティに移動するには、現在のアクティビティから次のアクティビティを開始します。  
+</p>
+
+<p>
+各アクティビティには、それを表示するためのデフォルトのウィンドウが割り当てられます。通常はウィンドウを画面全体に表示しますが、画面より小さいウィンドウを他のウィンドウの前面に表示することもできます。アクティビティに、新たなウィンドウを追加することも可能です。たとえば、アクティビティの途中でユーザーの応答を要求するポップアップ ダイアログを表示したり、ユーザーが画面上の特定のアイテムを選択したときに別ウィンドウで重要な情報を表示したりできます。
+</p>
+
+<p>
+ウィンドウの視覚的なコンテンツは、ビュー({@link android.view.View} 基本クラスの派生オブジェクト)の階層として提供されます。各ビューは、ウィンドウ内の特定の矩形領域を制御します。親ビューは、その子となるビューで構成され、それらの子ビューのレイアウトを決定します。リーフ ビュー(階層の最下位に位置するビュー)は、そのビューが制御する矩形領域に表示され、その領域でのユーザーのアクションに対して応答します。つまり、ビューはアクティビティとユーザーが対話する場所です。たとえば、ビューに小さな画像を表示し、ユーザーがその画像をタップしたら何らかのアクションを開始することもできます。Android には、ボタン、テキスト フィールド、スクロール バー、メニュー アイテム、チェックボックスなど、さまざまなビューがあらかじめ用意されています。
+</p>
+
+<p>
+ビューの階層は、<code>{@link android.app.Activity#setContentView Activity.setContentView()}</code> メソッドを使用してアクティビティのウィンドウ内に配置します。コンテンツ ビューは、階層のルートとなる View オブジェクトです<i></i>(ビューおよびその階層について詳しくは<a href="{@docRoot}guide/topics/ui/index.html">User Interface</a> のドキュメントをご覧ください)。
+</p>
+
+<p><dt><b>サービス</b></dt>
+<dd>サービスは、視覚的なユーザー インターフェースを持たず、バックグラウンドにおいて明確な終了期限がなくで実行されます。<i></i>たとえば、ユーザーが他の操作をしている間 BGM を再生するサービス、ネットワーク経由でデータをフェッチするサービス、何かを計算してその結果をアクティビティに提供するサービスなどが考えられます。各サービスは、{@link android.app.Service} 基本クラスの拡張です。
+
+<p>
+典型的な例としては、プレイリストの曲を再生するメディア プレーヤーが挙げられます。プレーヤー アプリケーションは、ユーザーが曲を選んで再生するための 1 つ以上のアクティビティで構成することが予想されますが、ユーザーはプレーヤーを離れて別の操作に移った後も曲を聞いていたいと考えられることから、曲の再生自体をアクティビティで処理するわけにはいきません。音楽の再生を続けるには、メディア プレーヤー アクティビティから、バックグラウンドで実行するサービスを開始します。音楽再生サービスは、それを開始したアクティビティが画面上に見えなくなった後もそのまま実行されます。
+</p>
+
+<p> 
+また、実行中のサービスに接続(バインド)することもできます(実行されていない場合はそのサービスを開始することも可能です)。接続中は、サービスが公開しているインターフェースを使ってサービスと対話できます。音楽再生サービスであれは、このインターフェースを使って一時停止、巻き戻し、停止、再生の再開などの操作を実行できるようにします。
+</p>
+
+<p>
+アクティビティや他のコンポーネントと同様に、サービスもアプリケーション プロセスのメイン スレッドで実行します。したがって、サービスによって他のコンポーネントやユーザー インターフェースの実行を妨げられることはなく、時間がかかるタスク(たとえば曲の再生)については、通常は別のスレッドを生成して処理します。詳しくは、<a href="#procthread">プロセスとスレッド</a>をご覧ください。
+</p></dd>
+
+<dt><b>ブロードキャスト レシーバ</b></dt>
+<dd>ブロードキャスト レシーバは、ブロードキャストの連絡を受信してそれに対処するだけのコンポーネントです。<i></i>ブロードキャストの多くが元々はシステム コードで、たとえばタイム ゾーンが変更されたこと、電池の残量が少なくなったこと、写真が撮影されたこと、ユーザーが言語設定を変更したことなどを連絡するために使用します。アプリケーションでも、たとえば何らかのデータがデバイスにダウンロードされて利用できるようになったことを、他のアプリケーションにブロードキャストで知らせることができます。
+
+<p>
+アプリケーションでは、重要と思われるすべての連絡に応答できるよう、ブロードキャスト レシーバをいくつでも設定できます。すべてのレシーバは、{@link android.content.BroadcastReceiver} 基本クラスの拡張です。
+</p>
+
+<p>
+ブロードキャスト レシーバがユーザー インターフェースを表示することはありません。ただし、受信した情報への応答としてアクティビティを開始したり、{@link android.app.NotificationManager} を使用してユーザーにアラートを送信したりすることはあります。通知の際には、バックライトを点滅させる、バイブレーションを起動する、音を鳴らすなど、さまざまな方法でユーザーの注意を喚起できます。通常は、ステータス バーに永続アイコンを表示し、ユーザーがこれを開いてメッセージを取得できるようにします。 
+</p></dd>
+
+<dt><b>コンテンツ プロバイダ</b></dt>
+<dd>コンテンツ プロバイダは、アプリケーションのデータを他のアプリケーションでも利用できるようにします。<i></i>データは、ファイル システムや SQLite データベースなど、一般に利用できる方法で格納されていれば使用できます。コンテンツ プロバイダは、{@link android.content.ContentProvider} 基本クラスの拡張です。プロバイダが制御する型のデータを、他のアプリケーションから取得および格納するための標準メソッド セットを実装しています。ただし、これらのメソッドをアプリケーションから直接呼び出すことはできません。代わりに、{@link android.content.ContentResolver} オブジェクトのメソッドを呼び出します。ContentResolver は、すべてのプロバイダと通信でき、プロバイダと連携して関係のあるすべてのプロセス間通信を管理します。 
+
+<p>
+コンテンツ プロバイダの使用方法について詳しくは、<a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>のドキュメントをご覧ください。
+</p></dd>
+
+</dl>
+
+<p>
+Android では、特定のコンポーネントで処理すべきリクエストがあると、そのコンポーネントのアプリケーション プロセスが実行中かどうかを確認(必要に応じてプロセスを開始)し、そのコンポーネントの適切なインスタンスが利用可能かどうかを確認(必要に応じてインスタンスを作成)します。  
+</p>
+
+
+<h3 id="actcomp">コンポーネントのアクティブ化: インテント</h3> 
+
+<p>
+コンテンツ プロバイダは、ContentResolver からのリクエストの対象になるとアクティブ化されます。それ以外の 3 つのコンポーネント(アクティビティ、サービス、ブロードキャスト レシーバ)は、インテントと呼ばれる非同期メッセージによってアクティブ化されます。<i></i>インテントは、メッセージのコンテンツを保持する {@link android.content.Intent} オブジェクトです。アクティビティやサービスの場合の Intent オブジェクトの主な役割は、リクエストされているアクションを指名し、その対象となるデータの URI を指定することです。たとえば、ユーザーに画像を表示するためのリクエストや、ユーザーにテキストを編集させるリクエストをアクティビティに伝達できます。ブロードキャスト レシーバの場合は、Intent オブジェクトがこれから通知を行うアクションを指名します。たとえば、カメラのボタンが押されたことを、関係のあるブロードキャスト レシーバに通知できます。
+</p>
+
+<p>
+以下に示すように、コンポーネントのタイプごとに別々のアクティブ化メソッドが用意されています: 
+</p>
+
+<ul>
+
+<li>アクティビティを起動する(または何か新しい処理を実行させる)には、Intent オブジェクトを <code>{@link android.content.Context#startActivity 
+Context.startActivity()}</code> または <code>{@link 
+android.app.Activity#startActivityForResult 
+Activity.startActivityForResult()}</code> に渡します。応答アクティビティで <code>{@link android.app.Activity#getIntent getIntent()}</code> メソッドを呼び出すと、最初にそのアクティビティが起動されたときのインテントの内容を確認できます。Android によってアクティビティの <code>{@link 
+android.app.Activity#onNewIntent onNewIntent()}</code> メソッドが呼び出され、アクティビティが後続のインテントに渡されます。
+
+<p>
+多くの場合、アクティビティから次のアクティビティを開始します。開始するアクティビティから結果が返される場合は、{@code startActivity()} ではなく {@code startActivityForResult()} を呼び出します。たとえば、ユーザーに写真を選択させるアクティビティを開始する場合は、ユーザーによって選択された写真が返されるかもしれません。結果は、呼び出し側のアクティビティの <code>{@link android.app.Activity#onActivityResult 
+onActivityResult()}</code> メソッドに渡した Intent オブジェクトで返されます。
+</p>
+</li>
+
+<li><p>サービスを開始する(または実行中のサービスに新しい指示を与える)には、<code>{@link 
+android.content.Context#startService Context.startService()}</code> に Intent オブジェクトを渡します。Android により、サービスの <code>{@link android.app.Service#onStart 
+onStart()}</code> メソッドが呼び出されて Intent オブジェクトが渡されます。</p>
+
+<p>
+同様に、インテントを <code>{@link 
+android.content.Context#bindService Context.bindService()}</code> に渡すと、呼び出し側のコンポーネントと対象となるサービスの間の継続中の接続を確立できます。サービスは、<code>{@link android.app.Service#onBind onBind()}</code> 呼び出しで Intent オブジェクトを受け取ります(サービスがまだ開始されていない場合は、必要に応じて {@code bindService()} で開始できます)。たとえば、上で例に挙げた音楽再生サービスとの接続を確立するアクティビティを使用して、ユーザーが再生を操作するための手段(ユーザー インターフェース)を提供できます。アクティビティで {@code bindService()} を呼び出して接続を確立してから、サービスに定義されているメソッドを呼び出して再生を操作します。
+</p>
+
+<p>
+サービスのバインドについては、後ほど<a href="#rpc">リモート プロシージャ コール</a>のセクションで詳しく説明します。
+</p>
+</li>
+
+<li><p>アプリケーションでブロードキャストを開始するには、<code>{@link 
+android.content.Context#sendBroadcast(Intent) Context.sendBroadcast()}</code>、<code>{@link android.content.Context#sendOrderedBroadcast(Intent, String) 
+Context.sendOrderedBroadcast()}</code>、<code>{@link 
+android.content.Context#sendStickyBroadcast Context.sendStickyBroadcast()}</code> などのメソッドのいずれかのバリエーションに Intent オブジェクトを渡します。Android によって <code>{@link 
+android.content.BroadcastReceiver#onReceive onReceive()}</code> メソッドが呼び出され、関係のあるすべてのブロードキャスト レシーバにインテントが配信されます。</p></li>
+
+</ul>
+
+<p>
+インテント メッセージについて詳しくは、<a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a> をご覧ください。
+</p>
+
+
+<h3 id="endcomp">コンポーネントの終了</h3>
+
+<p>
+コンテンツ プロバイダは、ContentResolver からのリクエストに応答している間のみアクティブになります。ブロードキャスト レシーバは、ブロードキャスト メッセージに応答している間のみアクティブになります。つまり、これらのコンポーネントを明示的に終了させる必要はありません。
+</p>
+
+<p>
+一方、アクティビティはユーザー インターフェースを提供します。長い時間をかけてユーザーと会話するためのものであり、待機状態の間も、会話が続いてきる限りはアクティブなままになっている可能性があります。同様に、サービスも長い間実行されたままになる可能性があります。Android には、アクティビティとサービスを以下のような規則的な方法で終了させるためのメソッドが用意されています:
+</p>
+
+<ul>
+<li>アクティビティを終了させるには、その <code>{@link android.app.Activity#finish finish()}</code> メソッドを呼び出します。あるアクティビティから {@code startActivityForResult()} で開始した別のアクティビティは、<code>{@link android.app.Activity#finishActivity finishActivity()}</code> を呼び出して終了させることができます。</li>
+
+<li>サービスは、その <code>{@link android.app.Service#stopSelf stopSelf()}</code> メソッドを呼び出すか、<code>{@link android.content.Context#stopService Context.stopService()}</code> を呼び出すことで停止できます。</li>
+</ul>
+
+<p>
+コンポーネントが、既に利用されていない場合や、Android がよりアクティブな他のコンポーネントにメモリを割り当てる必要がある場合は、システムがコンポーネントを終了させることもあります。このような状況およびその影響については、<a href="#lcycles">コンポーネントのライフサイクル</a>で詳しく説明します。
+</p>
+
+
+<h3 id="manfile">マニフェスト ファイル</h3>
+
+<p>
+アプリケーション コンポーネントを開始するには、Android がそのコンポーネントの存在を認識している必要があります。アプリケーションのコンポーネントは、マニフェスト ファイルで宣言します。このファイルは、アプリケーションのコード、ファイル、リソースなどとともに Android パッケージ({@code .apk} ファイル)にバンドルされます。  
+</p>
+
+<p>
+マニフェストは構造化された XML ファイルで、どのアプリケーションでも常に AndroidManifest.xml という名前になります。アプリケーション コンポーネントの宣言以外にも、アプリケーションをリンクさせる必要のあるライブラリ(デフォルトの Android ライブラリを除く)の指定や、アプリケーションに付与されるべき権限の指定などにも使用します。
+</p>
+
+<p>
+しかし、マニフェストの最も重要な役割は、アプリケーションのコンポーネントに関する情報を Android に提供することです。たとえば、アクティビティを次のように宣言できます:
+</p>
+
+<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest . . . &gt;
+    &lt;application . . . &gt;
+        &lt;activity android:name="com.example.project.FreneticActivity"
+                  android:icon="@drawable/small_pic.png"
+                  android:label="@string/freneticLabel" 
+                  . . .  &gt;
+        &lt;/activity&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 要素の {@code name} 属性は、そのアクティビティを実装する {@link android.app.Activity} サブクラスを指名します。{@code icon} および {@code label} 属性には、ユーザーに対して表示するアイコンやラベルが保持されているリソース ファイルを指定します。
+</p>
+
+<p>
+その他のコンポーネントも、サービスは <code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> 要素、ブロードキャスト レシーバは <code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code> 要素、コンテンツ プロバイダは <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 要素を使用して同じような方法で宣言します。マニフェストに宣言されていないアクティビティ、サービス、およびコンテンツ プロバイダは、システムから認識できないため実行されることはありません。ただし、ブロードキャスト レシーバの場合は、マニフェストで宣言する方法と、コード内で {@link android.content.BroadcastReceiver} オブジェクトとして動的に作成し、<code>{@link android.content.Context#registerReceiver Context.registerReceiver()}</code> を呼び出してシステムに登録する方法があります。
+</p>
+
+<p>
+マニフェスト ファイルの作成方法について詳しくは、<a href="{@docRoot}guide/topics/manifest/manifest-intro.html">The AndroidManifest.xml File</a>をご覧ください。
+</p>
+
+
+<h3 id="ifilters">インテント フィルタ</h3>
+
+<p>
+Intent オブジェクトでは、対象とするコンポーネントを明示的に指名できます。明示的に指名されている場合、Android はマニフェスト ファイル内の宣言に基づいてコンポーネントを特定してアクティブにします。一方、明示的に指名されていない場合は、そのインテントに応答する上で最適なコンポーネントが選択されます。方法としては、Intent オブジェクトを、その対象となりうるコンポーネントのインテント フィルタと照合します。<i></i>コンポーネントのインテント フィルタは、そのコンポーネントで処理できるインテントの種類を示します。これもコンポーネントに関する重要な情報の 1 つなので、マニフェスト ファイルで宣言します。次に、上に示した例を拡張して 2 つのインテント フィルタを追加したアクティビティを示します:
+</p>
+
+<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest . . . &gt;
+    &lt;application . . . &gt;
+        &lt;activity android:name="com.example.project.FreneticActivity"
+                  android:icon="@drawable/small_pic.png"
+                  android:label="@string/freneticLabel" 
+                  . . .  &gt;
+            &lt;intent-filter . . . &gt;
+                &lt;action android:name="android.intent.action.MAIN" /&gt;
+                &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+            &lt;/intent-filter&gt;
+            &lt;intent-filter . . . &gt;
+                &lt;action android:name="com.example.project.BOUNCE" /&gt;
+                &lt;data android:mimeType="image/jpeg" /&gt;
+                &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+            &lt;/intent-filter&gt;
+        &lt;/activity&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+この例の 1 つ目のフィルタは、アクション「{@code android.intent.action.MAIN}」とカテゴリ「{@code android.intent.category.LAUNCHER}」を組み合わせた一般的なフィルタです。このフィルタは、アプリケーション ランチャ(ユーザーがデバイス上で起動できるアプリケーションを一覧表示した画面)に、このアクティビティを表示する必要があることを示しています。つまり、このアクティビティはアプリケーションへのエントリ ポイントとして機能し、ユーザーがランチャでそのアプリケーションを選択したときに最初に表示されるということです。
+</p>
+
+<p>
+2 つ目のフィルタでは、アクティビティが特定のタイプのデータに対して実行できるアクションを宣言しています。
+</p>
+
+<p>
+コンポーネントにはインテント フィルタをいくつでも指定でき、それぞれのフィルタで別々の機能を宣言できます。フィルタが 1 つも指定されていないコンポーネントは、そのコンポーネントが対象として明示的に指名されているインテントでのみアクティブにできます。
+</p>
+
+<p>
+コード内で作成して登録したブロードキャスト レシーバの場合、インテント フィルタは {@link android.content.IntentFilter} オブジェクトとして直接インスタンス化されます。それ以外の全てのフィルタは、マニフェストで設定します。
+</p>
+
+<p>
+インテント フィルタについて詳しくは、<a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a> をご覧ください。
+</p>
+
+
+<h2 id="acttask">アクティビティとタスク</h2>
+
+<p>
+既に説明したように、あるアクティビティから別のアクティビティを開始することができます。これには、別のアプリケーションで定義されているアクティビティも含まれます。たとえば、ユーザーに特定の場所の地図を表示するとします。そのためのアクティビティは既に存在しているので、現在のアクティビティで必要な情報を Intent オブジェクトに格納して {@code startActivity()} に渡すだけで、マップ ビューアに地図を表示できます。ユーザーが [戻る] キーを押すと、画面に元のアクティビティが再表示されます。
+</p>
+
+<p>
+この場合、マップ ビューアは別のアプリケーションで定義されており、そのアプリケーションのプロセスで実行されていますが、ユーザーにとってはマップ ビューアが元のアプリケーションの一部であるかのように感じられます。Android では、両方のアクティビティを同じタスクに組み込むことで、このようなユーザー エクスペリエンスを実現できます。<i></i>簡単に言えば、ユーザーが 1 つの「アプリケーション」と感じるものがタスクです。関連するアクティビティをスタックにまとめたものがタスクです。スタック内のルート アクティビティは、タスクを開始するアクティビティです。通常であれば、ユーザーがアプリケーション ランチャで選択するアクティビティがこれに相当します。スタックの最上位にあるアクティビティは、ユーザーのアクションの焦点となっている実行中のアクティビティです。あるアクティビティから別のアクティビティを開始すると、そのアクティビティが新たにスタックにプッシュされて実行中のアクティビティになります。1 つ前のアクティビティはスタック内に残されています。ユーザーが [[]戻る] キーを押すと、現在のアクティビティがスタックからポップされ、1 つ前のアクティビティが実行中のアクティビティとして再開されます。  
+</p>
+
+<p>
+スタックはオブジェクトを保持します。したがって、同じ Activity サブクラスのインスタンス(たとえばマップ インスタンス)を複数開くと、それぞれのインスタンスが別々のエントリになります。スタック内のアクティビティは、プッシュまたはポップされるのみで再配置されることはありません。
+</p>
+
+<p>
+タスクはアクティビティのスタックであり、マニフェスト ファイル内のクラスや要素ではありません。したがって、アクティビティと無関係にタスクの値を設定することはできません。タスクの値は、ルート アクティビティでまとめて設定します。たとえば、次のセクションでは「タスクの親和性」について説明しますが、値はタスクのルート アクティビティの親和性のセットから読み込まれます。
+</p>
+
+<p>
+タスク内のアクティビティは、1 つのユニットとして一緒に移動します。タスク全体(アクティビティ スタック全体)をフォアグラウンドに移動したり、バックグラウンドに移動したりできます。たとえば、現在のタスクは 4 つのアクティビティからなるスタックで、現在のアクティビティの下にアクティビティが 3 つあるとします。ここで、ユーザーが [ホーム] キーを押してアプリケーション ランチャに移動し、新しいアプリケーション(実際には新しいタスク)を選択したとします。<i></i>すると、現在のタスクはバックグラウンドに移動し、新しいタスクのルート アクティビティが表示されます。しばらくして、ユーザーがホーム画面に戻り 1 つ前のアプリケーション(タスク)を選択すると、そのタスクがスタック内の 4 つのアクティビティとともにフォアグラウンドに移動します。ここでユーザーが [戻る] キーを押しても、中断したばかりのアプリケーション(1 つ前のタスクのルート アクティビティ)は表示されません。代わりに、スタックの最上位のアクティビティがポップされ、同じタスクの 1 つ前のアクティビティが表示されます。 
+</p>
+
+<p>
+アクティビティとタスクの動作としては、ここで説明した動作がデフォルトです。ただし、この動作のほとんどの要素は変更可能です。タスクとアクティビティの関連付けやタスク内でのアクティビティの動作は、アクティビティを開始した Intent オブジェクトのフラグ セットと、マニフェストに指定されているアクティビティの <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 要素の属性セットとの相互作用によって決まります。リクエスト側と応答側の両方が動作に影響を及ぼします。
+</p>
+
+<p>
+この点において、主に使用する Intent フラグは以下のとおりです:
+
+<p style="margin-left: 2em">{@code FLAG_ACTIVITY_NEW_TASK} <br/>{@code FLAG_ACTIVITY_CLEAR_TOP} <br/>{@code FLAG_ACTIVITY_RESET_TASK_IF_NEEDED} <br/>{@code FLAG_ACTIVITY_SINGLE_TOP}</p>
+
+<p>
+また、主に使用する {@code &lt;activity&gt;} 属性は以下のとおりです:
+  
+<p style="margin-left: 2em">{@code taskAffinity} <br/>{@code launchMode} <br/>{@code allowTaskReparenting} <br/>{@code clearTaskOnLaunch} <br/>{@code alwaysRetainTaskState} <br/>{@code finishOnTaskLaunch}</p>
+
+<p>
+以降のセクションでは、これらのフラグや属性の役割、相互作用の仕組み、使用する際の留意事項などについて説明します。
+</p>
+
+
+<h3 id="afftask">親和性と新しいタスク</h3>
+
+<p>
+デフォルトでは、アプリケーション内のすべてのアクティビティは相互に親和性があり、すべてのアクティビティができる限り同じタスクに属そうとします。<i></i>ただし、{@code &lt;activity&gt;} 要素の {@code taskAffinity} 属性を使用して、アクティビティごとに個別の親和性を設定することもできます。つまり、別々のアプリケーションで定義されているアクティビティで親和性を共有したり、同じアプリケーションで定義されているアクティビティに別々の親和性を割り当てたりできるということです。親和性が作用する状況は 2 つあります。1 つはアクティビティを起動する Intent オブジェクトに {@code FLAG_ACTIVITY_NEW_TASK} フラグが含まれている場合、もう 1 つはアクティビティの {@code allowTaskReparenting} 属性が "{@code true}" に設定されている場合です。 
+</p>
+
+<dl>
+<dt><code>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</code> フラグ</dt>
+<dd>既に説明したとおり、新しいアクティビティは、デフォルトでは {@code startActivity()} を呼び出したアクティビティのタスクの一部として起動します。つまり、呼び出し側のアクティビティと同じスタックにプッシュされるということです。しかし、{@code startActivity()} に渡された Intent オブジェクトに {@code FLAG_ACTIVITY_NEW_TASK} フラグが含まれている場合、システムはその新しいアクティビティを別のタスクに収容しようとします。フラグの名前からも判断できますが、ほとんどの場合は新しいタスクが開始されます。ただし常にそうなるとは限りません。既存のタスクに新しいアクティビティと同じ親和性が割り当てられている場合、そのアクティビティはそのタスクの一部として起動します。そうでない場合には、新しいタスクが開始されます。</dd>
+
+<dt><code><a 
+href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">allowTaskReparenting</a></code> 属性</dt>
+<dd>{@code allowTaskReparenting} 属性が "{@code true}" に設定されているアクティビティは、そのアクティビティと親和性のあるタスクがフォアグラウンドに移ったときに、アクティビティを開始したタスクから親和性のあるタスクに移動できます。たとえば、旅行アプリケーションの一部として、選択された都市の天気予報を表示するアクティビティが定義されているとします。このアクティビティには、同じアプリケーション内の他のアクティビティと同じ親和性(デフォルトの親和性)が割り当てられていますが、その親の割り当てを変更することも可能です。あるアクティビティが天気予報アクティビティを開始すると、その時点では開始側のアクティビティと同じタスクに属した状態になります。しかし、次に旅行アプリケーションがフォアグラウンドに移ると、天気予報アクティビティの割り当てが変更され、旅行アプリケーションのタスクの一部として表示されます。</dd>
+</dl>
+
+<p>
+ユーザーから見て複数の「アプリケーション」が 1 つの {@code .apk} ファイルに含まれている場合は、それぞれのアプリケーションに関連付けられているアクティビティに別々の親和性を割り当てることをおすすめします。
+</p>
+
+
+<h3 id="lmodes">起動モード</h3>
+
+<p>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code> 属性の {@code &lt;activity&gt;} 要素には、以下の 4 種類の起動モードを割り当てることができます:
+</p>
+
+<p style="margin-left: 2em">"{@code standard}"(デフォルト モード)<br>"{@code singleTop}"<br>"{@code singleTask}"<br>"{@code singleInstance}"</p>
+
+<p>
+これらのモードは、それぞれが以下の 4 つの点で異なります:
+</p>
+
+<ul>
+
+<li><b>インテントに応答するアクティビティをどのタスクに保持するか</b>。"{@code standard}" および "{@code singleTop}" モードの場合は、そのインテントを開始した(つまり <code>{@link android.content.Context#startActivity startActivity()}</code> を呼び出した)タスクに保持されます。ただし、Intent オブジェクトに <code>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</code> フラグが含まれている場合は、前のセクション<a href="#afftask">親和性と新しいタスク</a>で説明したとおり、別のタスクが選択されます。  
+
+<p>
+一方、"{@code singleTask}" および "{@code singleInstance}" モードの場合は、アクティビティが常にタスクのルート アクティビティになります。タスクは定義されており、他のタスクの一部として起動されることはありません。
+</p>  
+
+<li><p><b>アクティビティのインスタンスを複数生成できるか</b>。"{@code standard}" または "{@code singleTop}" アクティビティは複数回インスタンス化できます。それらのインスタンスを複数のタスクに割り当てることも、特定のタスクに同じアクティビティの複数のインスタンスを割り当てることも可能です。
+</p> 
+
+<p>
+一方、"{@code singleTask}" および "{@code singleInstance}" アクティビティのインスタンスは 1 つに制限されます。これらのアクティビティはタスクのルートに当たります。したがって、これらのタスクの複数のインスタンスがデバイス上に同時に存在することはないということになります。
+</p>    
+
+<li><p><b>インスタンスのタスクに他のアクティビティを含めることができるか</b>。"{@code singleInstance}" アクティビティは、そのタスク内の唯一のアクティビティとして単独で動作します。ここから別のアクティビティを開始した場合、そのアクティビティは起動モードに関係なく、あたかもインテントに {@code FLAG_ACTIVITY_NEW_TASK} フラグが含まれているかのように別のタスクで起動します。"{@code singleInstance}" モードと "{@code singleTask}" モードは、これ以外の点ではまったく同じです。</p>
+
+<p>
+他の 3 つのモードでは、タスクに複数のアクティビティを割り当てることができます。"{@code singleTask}" アクティビティは、常にタスクのルート アクティビティになりますが、同じタスクに割り当てることになる別のアクティビティを開始することができます。"{@code standard}" および "{@code singleTop}" アクティビティのインスタンスは、スタック内のどの位置にでも配置できます。  
+</p></li>
+
+<li><b>クラスの新しいインスタンスを起動して新しいインテントを処理するかどうか</b>。デフォルトの "{@code standard}" モードの場合は、新しいインテントに応答するときには必ず新しいインスタンスが作成されます。それぞれのインスタンスで処理するインテントは 1 つのみです。"{@code singleTop}" モードの場合は、クラスの既存のインスタンスが対象タスクのアクティビティ スタックの最上位にあれば、それを再利用して新しいインテントを処理します。スタックの最上位にない場合は再利用されません。代わりに、新しいインスタンスが作成されてスタックにプッシュされ、新しいインテントの処理に使用されます。
+
+<p>
+たとえば、タスクのアクティビティ スタックに、ルート アクティビティ A とアクティビティ B、C、D が含まれているとします。スタック内のアクティビティの順序は A-B-C-D で D が最上位です。ここに、アクティビティのタイプが D のインテントが届きます。D の起動モードがデフォルトの "{@code standard}" である場合は、そのクラスの新しいインスタンスが起動し、スタックは A-B-C-D-D となります。しかし、D の起動モードが "{@code singleTop}" であれば、スタックの最上位は D なので、新しいインテントは既存のインスタンスによって処理されるはずです。したがって、スタックは A-B-C-D のままとなります。  
+</p>
+
+<p>
+一方、届いたインテントのアクティビティ タイプが B だった場合は、B のモードが "{@code standard}" であっても "{@code singleTop}"であっても B の新しいインスタンスが起動します。これは B がスタックの最上位ではないためで、結果としてスタックは A-B-C-D-B となります。
+</p>
+
+<p>
+"{@code singleTask}" または "{@code singleInstance}" アクティビティの場合は、既に説明したとおり同時に複数のインスタンスが存在することはないため、インスタンスは常に新しいインテントを処理することになります。"{@code singleInstance}" アクティビティはスタック内の唯一のアクティビティであるため、常にスタックの最上位、つまりインテントを処理する位置にあります。一方、"{@code singleTask}" アクティビティは、スタック内の上位に他のアクティビティがある場合とない場合があります。上位にアクティビティがある場合、インテントを処理する位置にはないため、そのインテントはドロップされます(インテントがドロップされたとしても、そのインテントが届いたことによって、タスクがフォアグラウンドに移ったままの状態になります)。
+</p>
+</li>
+
+</ul>
+
+<p>
+既存のアクティビティで新しいインテントを処理することになった場合は、<code>{@link android.app.Activity#onNewIntent onNewIntent()}</code> の呼び出しによって Intent オブジェクトがアクティビティに渡されます(最初にアクティビティを開始したインテント オブジェクトは <code>{@link android.app.Activity#getIntent getIntent()}</code> を呼び出して取得できます)。
+</p>
+
+<p>
+なお、新しいインテントを処理するためにアクティビティの新しいインスタンスが作成された場合、ユーザーは [[]戻る] キーを押して 1 つ前の状態(1 つ前のアクティビティ)に戻ることができます。しかし、アクティビティの既存のインスタンスで新しいインテントを処理する場合は、[[]戻る] キーを押しても、新しいインテントが届く前にそのインスタンスで処理していた作業に戻ることはできません。
+</p>
+
+<p>
+起動モードについて詳しくは、<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 要素の説明をご覧ください。 
+</p>
+
+
+<h3 id="clearstack">スタックのクリア</h3>
+
+<p>
+ユーザーがタスクを長時間放置すると、タスクのルート アクティビティを除くすべてのアクティビティがクリアされます。ユーザーがタスクに戻ると、タスクは以前のように表示されますが、残っているのは最初のアクティビティだけです。つまり、一定の時間が経過していればユーザーは以前の作業を放棄していて、新しい作業をするためにそのタスクに戻ってきたと考えるわけです。
+</p>
+
+<p>
+これがデフォルトです。この動作を変更したい場合は、以下のアクティビティ属性を使用します:
+</p>
+
+<dl>
+<dt><code><a 
+href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code> 属性</dt>
+<dd>タスクのルート アクティビティでこの属性を "{@code true}" に設定すると、上で説明したデフォルトの動作は発生しません。長時間経過しても、タスク内のすべてのアクティビティはそのまま残されます。</dd>
+
+<dt><code><a 
+href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code> 属性</dt>
+<dd>タスクのルート アクティビティでこの属性を "{@code true}" に設定した場合、ユーザーがいったんタスクを離れると、戻ったときにはルートを含むすべてのアクティビティがクリアされています。つまり、{@code alwaysRetainTaskState} の正反対の動作になります。ユーザーが一瞬でもタスクを離れると、最初の状態からやり直すことになります。</dd>
+
+<dt><code><a 
+href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code> 属性</dt>
+<dd>この属性は {@code clearTaskOnLaunch} に似ていますが、タスク全体ではなく単一のアクティビティに作用します。また、ルート アクティビティを含むどのアクティビティもクリアの対象となりえます。この属性が "{@code true}" に設定されたアクティビティは、現在のセッションの間のみタスクの一部を形成します。ユーザーがいったんそのタスクから離れてから、再度タスクに戻ると、このアクティビティはクリアされています</dd>
+</dl>
+
+<p>
+アクティビティをスタックから削除する方法は他にもあります。Intent オブジェクトに <code>{@link 
+android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_CLEAR_TOP}</code> フラグが含まれており、そのインテントを処理すべきタイプのアクティビティのインスタンスが対象タスクのスタック内に存在する場合は、そのインスタンスがスタックの最上位になってインテントに応答できるよう、それより上位のアクティビティはすべてクリアされます。指定されたアクティビティの起動モードが "{@code standard}" である場合は、そのアクティビティもスタックから削除され、新しいインスタンスが起動してインテントを処理します。起動モード "{@code standard}" では、新しいインテントを処理する際、常に新しいインスタンスが作成されるためです。
+</p>
+
+<p>
+{@code FLAG_ACTIVITY_CLEAR_TOP} は、ほとんどの場合 {@code FLAG_ACTIVITY_NEW_TASK} と組み合わせて使用します。これらのフラグを組み合わせると、別のタスクに既に存在しているアクティビティを探し、それをインテントに応答できる位置に配置できます。  
+</p>
+
+
+<h3 id="starttask">タスクの開始</h3>
+
+<p>
+アクティビティをタスクのエントリ ポイントとして設定するには、アクションとして "{@code android.intent.action.MAIN}"、カテゴリとして "{@code android.intent.category.LAUNCHER}" を指定したインテント フィルタをアクティビティに追加します(このタイプのフィルタの例については、<a href="#ifilters">インテント フィルタ</a>をご覧ください)。このタイプのフィルタを追加すると、アクティビティのアイコンとラベルがアプリケーション ランチャに表示されます。これにより、ユーザーがタスクを起動するための手段を提供できるだけでなく、起動後はいつでもそのタスクに戻れるようにすることができます。
+</p>
+
+<p>
+この 2 番目の機能、つまりユーザーがいったんタスクを離れても後で戻ることができるようにする点が重要です。この理由から、アクティビティに {@code MAIN} と {@code LAUNCHER} フィルタが指定されている場合は、必ずタスクが開始される起動モード("{@code singleTask}" または "{@code singleInstance}")を使用する必要があります。たとえば、このフィルタを指定しなかった場合を考えてみましょう。インテントが "{@code singleTask}" アクティビティを起動し、新しいタスクが開始され、ユーザーがしばらくの間このタスクで作業を行います。その後、ユーザーが [ホーム] キーを押したとします。ホーム画面が表示され、先ほどのタスクはバックグラウンドに移動します。しかし、このタスクはアプリケーション ランチャには表示されていないため、ユーザーがタスクに戻るための手段がありません。
+</p>
+
+<p>
+{@code FLAG_ACTIVITY_NEW_TASK} フラグにも、これと同じような難しさがあります。このフラグを指定したアクティビティでは、新しいタスクを開始した後にユーザーが [ホーム] キーを押してそのタスクを離れた場合に備え、タスクに戻るための手段を用意しておく必要があります。一部のエンティティ(たとえば通知マネージャ)は、アクティビティを常に外部タスクとして開始します。エンティティの一部として開始することはないため、{@code startActivity()} に渡すインテントには必ず {@code FLAG_ACTIVITY_NEW_TASK} を指定します。外部エンティティから呼び出すことのできるアクティビティでこのフラグが使用されている可能性がある場合は、開始されたタスクにユーザーが戻るための手段を別途提供するようにしてください。
+</p> 
+
+<p>
+ユーザーがアクティビティに戻ることができるようにしない場合は、{@code &lt;activity&gt;} 要素の {@code finishOnTaskLaunch} を "{@code true}" に設定します。詳しくは、<a href="#clearstack">スタックのクリア</a>をご覧ください。
+</p>
+
+
+<h2 id="procthread">プロセスとスレッド</h2>
+
+<p>
+Android では、最初のアプリケーション コンポーネントを実行する必要が生じると、そのための Linux プロセスを単一の実行スレッドで開始します。デフォルトでは、アプリケーションのすべてのコンポーネントがそのプロセスとスレッドで実行されます。
+</p>
+
+<p>
+ただし、コンポーネントが他のプロセスで実行されるようにしたり、特定のプロセスに使用する追加スレッドを生成したりすることも可能です。
+</p>
+
+
+<h3 id="procs">プロセス</h3>
+
+<p>
+コンポーネントを実行するプロセスは、マニフェスト ファイルで管理します。コンポーネントの各要素({@code &lt;activity&gt;}、{@code &lt;service&gt;}、{@code &lt;receiver&gt;}、および {@code &lt;provider&gt;})には {@code process} 属性があり、そのコンポーネントをどのプロセスで実行すべきかを指定できるようになっています。これらの属性の設定によって、それぞれのコンポーネントを専用のプロセスで実行したり、一部のコンポーネントだけでプロセスを共有したりできます。また、別々のアプリケーションのコンポーネントが、同じプロセスで実行されるように設定することもできます。この場合は、それらのアプリケーションが同じ Linux ユーザー ID を共有し、同じ認証機関によって署名されている必要があります。{@code &lt;application&gt;} 要素にも {@code process} 属性があり、すべてのコンポーネントに適用されるデフォルト値を設定できます。
+</p>
+
+<p>
+すべてのコンポーネントは指定されたプロセスのメイン スレッドでインスタンス化され、コンポーネントに対するシステム コールはそのスレッドからディスパッチされます。1 つのインスタンスに対して、複数のスレッドが作成されることはありません。したがって、システム コールに応答するメソッド(たとえば、後ほど<a href="#lcycles">コンポーネント ライフサイクル</a>で説明するライフサイクル通知や、ユーザーのアクションを報告する <code>{@link android.view.View#onKeyDown View.onKeyDown()}</code> のようなメソッド)は、常にそのプロセスのメイン スレッドで実行されます。つまり、コンポーネントがシステムから呼び出されたときに、プロセス内の他のコンポーネントの実行を妨げないよう、実行に時間がかかる処理や他の妨げになることの多い処理(ネットワーク処理、ループ計算など)をできる限り避ける必要があるということです。時間がかかる処理には別のスレッドを生成できます。詳しくは、次の<a href="#threads">スレッド</a> セクションをご覧ください。
+</p>
+
+<p>
+状況によっては、Android がプロセスを終了させるべきと判断する場合があります。たとえば、メモリが不足してきた場合や、他のプロセスでユーザーにすばやく応答する必要がある場合です。プロセスが終了すると、そのプロセス内で実行されているアプリケーション コンポーネントは破棄されます。それらのコンポーネントで処理する作業がもう一度発生すると、そのためのプロセスが再び開始されます。
+</p>  
+
+<p>
+Android では、どのプロセスを終了させるかを判断するため、ユーザーにとっての相対的な重要度を重み付けして管理します。たとえば、アクティビティがまだ画面に表示されているプロセスを終了させるよりも、アクティビティが画面に表示されていないプロセスを終了させる方が合理的です。したがって、プロセスを終了させるかどうかは、そのプロセスで実行されているコンポーネントの状態に応じて判断されるということです。コンポーネントの状態については、後ほど<a href="#lcycles">コンポーネントのライフサイクル</a>で詳しく説明します。
+</p>
+
+
+<h3 id="threads">スレッド</h3>
+
+<p>
+アプリケーションを単一のプロセスに限定したとしても、バックグラウンドでの処理にスレッドが必要になることはよくあります。ユーザー インターフェースはユーザーのアクションに対して常にすばやく応答できなければならないため、アクティビティをホストするスレッドで、ネットワーク ダウンロードのような時間のかかる処理を一緒にホストしないようにする必要があります。すぐに完了しない可能性のあるすべての処理は、別のスレッドに割り当てるようにしてください。 
+</p>
+
+<p>
+スレッドは、標準の Java {@link java.lang.Thread} オブジェクトを使用してコード内で作成します。Android には、スレッドを管理するための便利なクラスが数多く用意されています。たとえば、スレッド内でメッセージ ループを実行するための {@link android.os.Looper}、メッセージを処理するための {@link android.os.Handler}、メッセージ ループでスレッドを設定するための {@link android.os.HandlerThread} などがあります。
+</p>
+
+
+<h3 id="rpc">リモート プロシージャ コール</h3>
+
+<p>
+Androidは軽量な仕組みのリモート・プロシージャ・コール (RPC) を採用しています。RPC とは、メソッドをローカルで呼び出しますが、実行はリモート(別のプロセス)で行い、その結果を呼び出し側に返します。そのためには、メソッド呼び出しとそれに付随するデータをオペレーティングシステムが解釈できるレベルまで分解してから、それらをローカルのプロセスとアドレス空間からリモートのプロセスとアドレス空間に転送し、リモートで呼び出しを再構築する必要があります。戻り値は、反対方向に転送しなければなりません。Android にはこの処理を行うためのコードがすべて用意されているため、RPC インターフェースを定義して実装するだけで RPC を利用できます。
+</p>
+
+<p>
+RPC インターフェースに含めることができるのはメソッドのみです。すべてのメソッドは、戻り値がない場合でも同期的に実行されます(つまり、リモート メソッドが完了するまでローカル メソッドがブロックされます)。
+</p>
+
+<p>
+このメカニズムを簡単に説明すると次のようになります。まず、シンプルなインターフェース定義言語(IDL)を使用して、実装したい RPC インターフェースを宣言します。<code><a href="{@docRoot}guide/components/aidl.html">aidl</a></code> ツールにより、RPC インターフェースの宣言から Java インターフェース定義が生成されます。この定義は、ローカルとリモートの両方のプロセスで使用する必要があります。定義には、次の図に示すように 2 つの内部クラスが含まれています:
+</p>
+
+<p style="margin-left: 2em">
+<img src="{@docRoot}images/binder_rpc.png" alt="RPC のメカニズム"  />
+</p>
+
+<p>
+これらの内部クラスには、IDL で宣言したインターフェースのリモート プロシージャ コールを管理するために必要なコードがすべて含まれています。どちらの内部クラスも {@link android.os.IBinder} インターフェースを実装します。一方の内部クラスは、ローカルのシステムで内部的に使用しますが、記述するコードでは無視しても構いません。もう一方の内部クラスはスタブと呼ばれ、{@link android.os.Binder} クラスを拡張します。スタブには、IPC(プロセス間通信)呼び出しを発生させるための内部コードに加え、IDL で宣言した RPC インターフェース内のメソッドの宣言が含まれます。これらのメソッドを実装するには、図に示すようにスタブをサブクラス化します。2つの内部クラスのうちの一方は、システムがローカルかつ内部的に使用するので、開発者が記述するコードでは無視してかまいません。... リモート側では、図のようにスタブをサブクラス化して、これらのメソッドを実装する必要があります。
+</p>
+
+<p>
+	通常、リモート プロセスはサービスで管理します。サービスなら、プロセスや他のプロセスへの接続に関する情報をシステムに伝えることができるからです。サービスには、{@code aidl} ツールで生成されたインターフェース ファイルと、RPC メソッドを実装するスタブ サブクラスの両方を持たせることになります。サービスのクライアントには、{@code aidl} ツールで生成されたインターフェース ファイルのみを持たせます。
+</p>
+
+<p>
+以下に、サービスとそのクライアントの間の接続がどのように設定されるかを示します:
+</p>
+
+<ul>
+<li>サービスのクライアント(ローカル側)には <code>{@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()}</code> および<code>{@link android.content.ServiceConnection#onServiceDisconnected
+onServiceDisconnected()}</code> メソッドが実装されているため、リモート サービスとの接続が確立されたときや切断されたときには通知を受けることができます。通知があり次第、<code>{@link android.content.Context#bindService bindService()}</code> を呼び出して接続を設定します。
+</li>  
+
+<li> 
+サービスの <code>{@link android.app.Service#onBind onBind()}</code> メソッドは、受け取ったインテント({@code bindService()} に渡されたインテント)に応じて、接続を承認または拒否するために実装します。接続が承認されると、接続を承認するのであれば、スタブ サブクラスのインスタンスを返します。
+</li>
+
+<li>サービスが接続を承認すると、Android がクライアントの {@code onServiceConnected()} メソッドを呼び出し、IBinder オブジェクト(サービスが管理するスタブ サブクラスのプロキシ)を渡します。クライアントは、このプロキシを介してリモートサービスを呼び出すことができます。  
+</li>
+</ul>
+
+<p>
+ここでは、説明を簡単にするため、RPC メカニズムの細かい点は省略しています。詳しくは、<a href="{@docRoot}guide/components/aidl.html">Designing a Remote Interface Using AIDL</a>、および {@link android.os.IBinder IBinder} クラスの説明をご覧ください。
+</p>  
+
+
+<h3 id="tsafe">スレッドセーフなメソッド</h3>
+
+<p>
+状況によっては実装したメソッドが複数のスレッドから呼び出されることもあるため、スレッドセーフな記述を心掛ける必要があります。
+</p>
+
+<p>
+前のセクションで説明した RPC のようにメソッドをリモートで呼び出すことができる場合は、このような状況が特に発生しやすくなります。IBinder オブジェクトに実装されているメソッドを IBinder と同じプロセスから呼び出すと、そのメソッドは呼び出し側のスレッドで実行されます。一方、別のプロセスからメソッドを呼び出した場合は、プロセスのメイン スレッドではなく、IBinder と同じプロセス内に保持されているスレッドのプールから選択されたスレッドで実行されます。たとえば、サービスの {@code onBind()} メソッドはそのサービスのプロセスのメイン スレッドから呼び出されるのに対し、{@code onBind()} から返されたオブジェクトに実装されているメソッド(たとえば RPC メソッドを実装するスタブ サブクラス)はプール内のスレッドから呼び出されます。サービスには複数のクライアントを割り当てることができるため、複数のプール スレッドを同じ IBinder に同時に割り当てることも可能です。したがって、IBinder メソッドはスレッドセーフになるように実装する必要があります。
+</p>  
+
+<p>
+同様に、コンテンツ プロバイダも別のプロセスからのデータ リクエストを受け取ることができます。ContentResolver および ContentProvider クラスはプロセス間通信の管理の詳細を隠蔽しますが、それらのリクエストに応答する ContentProvider メソッド(<code>{@link android.content.ContentProvider#query query()}</code>、<code>{@link android.content.ContentProvider#insert insert()}</code>、<code>{@link android.content.ContentProvider#delete delete()}</code>、<code>{@link android.content.ContentProvider#update update()}</code>、および <code>{@link android.content.ContentProvider#getType getType()}</code> メソッド)は、プロセスのメイン スレッドではなく、コンテンツ プロバイダのプロセス内のスレッドのプールから呼び出されます。これらのメソッドを同時に呼び出すことのできるメソッドの数に制限はありません。したがって、これらのメソッドもスレッドセーフになるように実装する必要があります。
+</p> 
+
+
+<h2 id="lcycles">コンポーネントのライフサイクル</h2>
+
+<p>
+アプリケーション コンポーネントにはライフサイクルがあります。ライフサイクルは、インテントへ応答することでのインスタンス化で始まり、そのインスタンスの破棄で終わります。この間、コンポーネントがアクティブなときとアクティブでないときがあり、アクティビティであればユーザーから見えるときと見えないときがあります。このセクションでは、アクティビティ、サービス、およびブロードキャスト レシーバのライフサイクルについて説明します。具体的には、それぞれがライフタイムの間に取ることのできる状態、状態の遷移を通知する方法、およびそれらの状態が、コンポーネントを実行しているプロセスが終了させられたり、インスタンスが破棄されたりする可能性への影響などについて説明します。
+</p> 
+
+
+<h3 id="actlife">アクティビティのライフサイクル</h3>
+
+<p>アクティビティは、基本的に以下の 3 つの状態を取ります:</p>
+
+<ul>
+<li> 状態がアクティブまたは実行中のアクティビティは、画面のフォアグラウンドに表示されている(つまり現在のタスクのアクティビティ スタックの最上位にある)アクティビティです。<em></em><em></em>これが、ユーザーのアクションの焦点となっているアクティビティです。</li>
+
+<li><p>状態が一時停止のアクティビティは、ユーザーのアクションの焦点から外れていますが、まだユーザーから見ることのできるアクティビティです。<em></em>つまり、それよりも前面に他のアクティビティが表示されていますが、そのアクティビティが透明か全画面表示でないかのどちらかで、一時停止しているアクティビティの一部が見えている状態です。一時停止しているアクティビティは、完全に動作しています(すべての状態やメンバー情報は保持されており、ウィンドウ マネージャにアタッチされたままになっています)。ただし、メモリが極端に不足した場合は、システムによって強制終了させられる可能性があります。</p></li>
+
+<li><p>状態が停止のアクティビティは、別のアクティビティに隠されて完全に見えなくなったアクティビティです。<em></em>すべての状態とメンバー情報はまだ保持しています。しかし、もうユーザーに対して表示されていないため、他でメモリが必要な場合は強制終了させられる可能性が高いアクティビティです。</p></li>
+</ul>
+
+<p>
+システムが一時停止または停止しているアクティビティをメモリから削除する場合は、アクティビティの {@link android.app.Activity#finish finish()} メソッドを呼び出して終了を要求するか、単純のそのプロセスを強制終了します。そのアクティビティをもう一度ユーザーに表示する際は、完全に再起動して以前の状態に復元する必要があります。
+</p>
+
+<p>
+アクティビティがある状態から別の状態に遷移すると、以下の protected メソッドに対する呼び出しによって変更が通知されます:
+</p>
+
+<p style="margin-left: 2em">{@code void onCreate(Bundle <i>savedInstanceState</i>)} <br/>{@code void onStart()} <br/>{@code void onRestart()} <br/>{@code void onResume()} <br/>{@code void onPause()} <br/>{@code void onStop()} <br/>{@code void onDestroy()}</p>
+
+<p>
+これらのメソッドはすべて、状態が変化したときに適切な処理を行うためにオーバーライドできるフックです。オブジェクトが初めてインスタンス化されたときに初期設定を行うため、すべてのアクティビティには <code>{@link android.app.Activity#onCreate onCreate()}</code> を実装する必要があります。多くのアクティビティには、データの変更をコミットするための <code>{@link android.app.Activity#onPause onPause()}</code> も実装します。これを実装しない場合は、何らかの方法でユーザーとの対話を停止できるようにしておく必要があります。
+</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>スーパークラスの呼び出し</h2>
+<p>
+どのアクティビティ ライフサイクル メソッドの実装でも、必ず最初にスーパークラス バージョンを呼び出す必要があります。次に例を示します:
+</p>
+
+<pre>protected void onPause() {
+    super.onPause();
+    . . .
+}</pre>
+</div>
+</div> 
+
+
+<p>
+これら 7 つのメソッドを使用すると、アクティビティのライフサイクル全体を定義できます。これらを実装することで、ネストされた 3 つのループからなるアクティビティのライフサイクルを監視できます: 
+</p> 
+
+<ul>
+<li>アクティビティの<b>ライフタイム全体</b>は、<code>{@link android.app.Activity#onCreate onCreate()}</code> が初めて呼び出されたときに始まり、最後に <code>{@link android.app.Activity#onDestroy}</code> が呼び出されたときに終了します。アクティビティは、{@code onCreate()} で「全体的」な状態のすべての初期設定を行い、{@code onDestroy()} 残っていたリソースをすべて解放します。たとえば、ネットワークからのデータのダウンロードをバックグラウンドで実行するスレッドは、{@code onCreate()} で作成され、{@code onDestroy()} で停止します。</li>
+
+<li><p>アクティビティの<b>可視ライフタイム</b>は、<code>{@link android.app.Activity#onStart onStart()}</code> の呼び出しで始まり、対応する <code>{@link android.app.Activity#onStop onStop()}</code> の呼び出しで終了します。このライフタイムの間は、ユーザーが画面上でそのアクティビティを見ることができます。ただし、アクティビティがフォアグラウンドにない場合や、ユーザーと対話していない場合もあります。これらの 2 つのメソッドの間は、ユーザーに対してアクティビティを表示するために必要なリソースを確保できます。たとえば、{@code onStart()} で {@link android.content.BroadcastReceiver} を登録して UI に影響する変化を監視し、表示しているアクティビティがユーザーから見えなくなったら {@code onStop()} で登録を解除できます。{@code onStart()} および {@code onStop()} メソッドは、アクティビティがユーザーから見え隠れするたびに繰り返し呼び出すことができます。</p></li>
+
+<li><p>アクティビティの<b>フォアグラウンド ライフタイム</b>は、<code>{@link android.app.Activity#onResume onResume()}</code> の呼び出しで始まり、対応する <code>{@link android.app.Activity#onPause onPause()}</code> の呼び出しで終了します。フォアグラウンド ランタイムの間は、このアクティビティが他のどのアクティビティよりも前面に表示され、ユーザーと対話しています。アクティビティは、一時停止状態と再開状態の間を頻繁に遷移します。たとえば、デバイスがスリープ状態になるときや新しいアクティビティを開始するときには {@code onPause()} が呼び出され、アクティビティの結果や新しいインテントが届いたときには {@code onResume()} が呼び出されます。したがって、これらのメソッドを記述する際は、できるだけ軽量化しておく必要があります。</p></li>
+</ul>
+
+<p>
+次の図に、これらのループとアクティビティの遷移経路を示します。色の付いた楕円は、アクティビティが取ることのできる主な状態です。長方形は、アクティビティが状態間を遷移するときに処理を実行するために実装できるコールバック メソッドを表します。
+<p>
+
+<p style="margin-left: 2em"><img src="{@docRoot}images/activity_lifecycle.png"
+alt="Android のアクティビティ ライフサイクルの状態遷移図"  /></p>  
+  
+<p>
+次の表では、各メソッドについて詳しく説明し、ライフサイクル全体における位置付けを示します:
+</p>
+
+<table border="2" width="85%" frame="hsides" rules="rows">
+<colgroup align="left" span="3"></colgroup>
+<colgroup align="left"></colgroup>
+<colgroup align="center"></colgroup>
+<colgroup align="center"></colgroup>
+
+<thead>
+<tr><th colspan="3">メソッド</th> <th>説明</th> <th>強制終了</th> <th>次</th></tr>
+</thead>
+
+<tbody>
+<tr>
+  <td colspan="3" align="left"><code>{@link android.app.Activity#onCreate onCreate()}</code></td>
+  <td>アクティビティが初めて作成されるときに呼び出されます。通常の静的な設定(ビューの作成、リストへのデータのバインドなど)は、すべてのこのメソッドで行う必要があります。このアクティビティの      以前の状態が保存されていた場合、このメソッドにはその状態を保持している Bundle オブジェクトが引数として(詳しくは、後述の<a href="#actstate">アクティビティの状態の保存</a>をご覧ください)。
+      <p>この後には、必ず {@code onStart()} が呼び出されます。</p></td>
+  <td align="center">不可</td>
+      <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td rowspan="5" style="border-left: none; border-right: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart 
+onRestart()}</code></td>
+   <td>アクティビティが停止した後、それをもう一度開始する直前に呼び出されます。
+       <p>この後には、必ず {@code onStart()} が呼び出されます。</p></td>
+   <td align="center">不可</td>
+   <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStart onStart()}</code></td>
+   <td>アクティビティがユーザーから見えるようになる直前に呼び出されます。
+       <p>その後、アクティビティがフォアグラウンドに表示された場合は {@code onResume()} が、他のアクティビティの後ろに隠れた場合は {@code onStop()} が呼び出されます。</p></td>
+    <td align="center">不可</td>
+    <td align="center">{@code onResume()} <br/>または<br/>{@code onStop()}</td>
+</tr>
+
+<tr>
+   <td rowspan="2" style="border-left: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td align="left"><code>{@link android.app.Activity#onResume onResume()}</code></td>
+   <td>アクティビティがユーザーとの対話を開始する直前に呼び出されます。この時点で、アクティビティはアクティビティ スタックの最上位にあり、ユーザーからの入力はこのアクティビティに対して行われます。
+       <p>この後には、必ず {@code onPause()} が呼び出されます。</p></td>
+   <td align="center">不可</td>
+   <td align="center">{@code onPause()}</td>
+</tr>
+
+<tr>
+   <td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
+   <td>システムが別のアクティビティを開始しようとしているときに呼び出されます。このメソッドは、保存されていない変更を永続データにコミットする場合や、アニメーションのように CPU を大量に消費する処理を停止する場合に使用するのが一般的です。このメソッドが終了するまでは次のアクティビティが開始されたないため、できる限り短時間で実行できるようにしておく必要があります。
+       <p>その後、アクティビティがフォアグラウンドに戻った場合は {@code onResume()} が、ユーザーから見えなくなった場合は {@code onStop()} が呼び出されます。</td>
+   <td align="center"><strong style="color:#800000">可能</strong></td>
+   <td align="center">{@code onResume()} <br/>または<br/>{@code onStop()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
+   <td>アクティビティがユーザーから見えなくなったときに呼び出されます。見えなくなる状況としては、アクティビティが破棄された場合や、再開された別のアクティビティ(既存か新規かを問わず)によって隠された場合が考えられます。 
+       <p>その後、アクティビティがユーザーとの対話に戻った場合は {@code onRestart()} が、アクティビティが完全に終了する場合は {@code onDestroy()} が呼び出されます。</p></td>
+   <td align="center"><strong style="color:#800000">可能</strong></td>
+   <td align="center">{@code onRestart()} <br/>または<br/>{@code onDestroy()}</td>
+</tr>
+
+<tr>
+   <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy 
+onDestroy()}</code></td>
+   <td>アクティビティが破棄される前に呼び出されます。これが、アクティビティが受け取る最後の呼び出しとなります。このメソッドが呼び出される状況としては、アクティビティが完了する場合(<code>{@link android.app.Activity#finish 
+       finish()}</code> が呼び出されたとき)や、システムが領域を確保するために一時的にそのアクティビティのインスタンスを破棄する場合が考えられます。これらの 2 つの状況は、<code>{@link
+       android.app.Activity#isFinishing isFinishing()}</code> メソッドを使用して識別できます。</td>
+   <td align="center"><strong style="color:#800000">可能</strong></td>
+   <td align="center"><em>なし</em></td>
+</tr>
+</tbody>
+</table>
+
+<p>
+表の<b>強制終了</b>列に注目してください。この列は、メソッドが終了した後であれば、システムがアクティビティのコードの別の行を実行することなくいつでもアクティビティを実行しているプロセスを強制終了できるかどうかを示しています。<em></em>{@code onPause()}、{@code onStop()}、および {@code onDestroy()} メソッドの 3 つは「可能」となっています。1 番目に挙げた {@code onPause()} だけは、プロセスが強制終了する前に必ず呼び出されます。{@code onStop()} と {@code onDestroy()} は、必ず呼び出されるとは限りません。したがって、永続データ(たとえばユーザーによる編集)をストレージに書き込む際は {@code onPause()} を使用する必要があります。
+</p>
+
+<p>
+<b>強制終了</b>列が「不可」になっているメソッドは、それらが呼び出された瞬間から、アクティビティを実行しているプロセスを保護して強制終了されないようにします。したがって、アクティビティが強制終了可能な状態にあるのは、たとえば {@code onPause()} が返されてから {@code onResume()} が呼び出されるまでの間ということです。その後は、もう一度 {@code onPause()} が返されるまで、強制終了できる状態には戻りません。
+</p>
+
+<p>
+後述の<a href="#proclife">プロセスとライフサイクル</a>のセクションで詳しく説明しますが、ここでの定義で技術的には「強制終了可能」でないアクティビティでも、システムによって強制終了させられる可能性はありますが、他に利用できるリソースがないなど、極端に急を要する場合に限られます。
+</p>
+
+
+<h4 id="actstate">アクティビティの状態の保存</h4>
+
+<p>
+メモリ不足を補うためにユーザーではなくシステムがアクティビティを終了させた場合には,ユーザがそのアクティビティに戻ったときに、以前の状態のままであることを期待するでしょう。
+</p>
+
+<p>
+アクティビティが強制終了させられる前の状態を保存しておきたい場合は、アクティビティに <code>{@link android.app.Activity#onSaveInstanceState 
+onSaveInstanceState()}</code> メソッドを実装します。このメソッドは、アクティビティが破棄されやすい状態になる前(つまり {@code onPause()} が呼び出される前)に呼び出されます。その際、アクティビティの動的な状態を名前/値ペアとして記録できる {@link android.os.Bundle} オブジェクトが渡されます。アクティビティがもう一度開始されると、Bundle は {@code onCreate()} だけでなく、{@code onStart()} の後に呼び出される <code>{@link 
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}</code> メソッドにも渡され、保存されている状態をそのどちらかまたは両方で復元できます。
+</p>
+
+<p>
+{@code onSaveInstanceState()} および {@code onRestoreInstanceState()} メソッドは、これまでに説明した {@code onPause()} などとは異なり、ライフサイクル メソッドではありません。これらのメソッドは、常に呼び出されるわけではありません。たとえば、{@code onSaveInstanceState()} は、システムによってアクティビティが破棄しやすい状態にされる前には呼び出されますが、ユーザーのアクション(たとえば [[]戻る] キー)によってインスタンスが実際に破棄されるときには呼び出されません。そのような場合は、ユーザーがそのアクティビティに戻ることを想定する必要はないため、状態を保存する理由がないのです。
+</p>
+
+<p>
+{@code onSaveInstanceState()} は常に呼び出されるとは限らないため、アクティビティの一時的な状態を記録する目的のみに使用し、永続データの格納には使用しないようにしてください。この目的には {@code onPause()} を使用します。
+</p>
+
+
+<h4 id="coordact">アクティビティの協調</h4>
+
+<p>
+あるアクティビティが別のアクティビティを開始すると、両方のアクティビティのライフサイクル状態が遷移します。一方が一時停止または停止し、もう一方が開始されます。場合によっては、これらの協調させる必要があります。
+</p>
+
+<p>
+ライフサイクルのコールバックの順序は明確に定義されており、特に 2 つのアクティビティが同じプロセス内に存在する場合は次のようになります:
+</p>
+
+<ol>
+<li>現在のアクティビティの {@code onPause()} メソッドが呼び出されます。</li>
+
+<li>続いて、開始されるアクティビティの {@code onCreate()}、{@code onStart()}、および {@code onResume()} メソッドが順番に呼び出されます。</li>
+
+<li>その後、開始されたアクティビティが画面上で見えなくなると、その {@code onStop()} メソッドが呼び出されます。</li>
+</ol>
+
+
+<h3 id="servlife">サービスのライフサイクル</h3>
+
+<p>
+サービスは、以下の 2 つの方法で使用できます:
+</p>
+
+<ul>
+<li>いったん開始したら、停止させられる(または自ら停止する)まで実行し続けることができます。このモードでは、<code>{@link android.content.Context#startService Context.startService()}</code> が呼び出されて開始し、<code>{@link android.content.Context#stopService Context.stopService()}</code> 呼び出されて停止します。サービス自体が <code>{@link android.app.Service#stopSelf() Service.stopSelf()}</code> または <code>{@link android.app.Service#stopSelfResult Service.stopSelfResult()}</code> を呼び出して停止することもできます。サービスの開始時に {@code startService()} が何度呼び出されたとしても、{@code stopService()} を一度呼び出せばサービスは停止します。</li>
+
+<li><p>サービスで定義されているインターフェースをエクスポートし、これを介してプログラム的に操作できます。クライアントから Service オブジェクトへの接続を確立し、その接続を使用してサービスにアクセスします。接続は、<code>{@link android.content.Context#bindService Context.bindService()}</code> を呼び出して確立し、<code>{@link android.content.Context#unbindService Context.unbindService()}</code> でサービスを開始します。複数のクライアントが同じサービスにバインドすることも可能です。サービスがまだ開始されていなかった場合は,必要に応じて {@code bindService()} で開始できます。
+</p></li>
+</ul>
+
+<p>
+これら 2 つのモードは、完全に分離されているわけではありません。{@code startService()} で開始されたサービスにバインドすることも可能です。たとえば、再生する曲を指定した Intent オブジェクトで {@code startService()} を呼び出して音楽再生サービスを開始したとします。その後、たとえばユーザーがプレーヤーを操作したい場合や再生中の曲に関する情報を入手したい場合には、アクティビティから {@code bindService()} を呼び出してサービスとの接続を確立できます。このような場合、最後のバインドが閉じられるまでは、{@code stopService()} を呼び出してもサービスは停止しません。
+</p>
+
+<p>
+アクティビティと同様、サービスにもライフサイクル メソッドがあり、これらを実装することでサービスの状態の変化を監視できます。ただし、protected ではなく public で、以下の 3 つしかありません:
+</p>
+
+<p style="margin-left: 2em">{@code void onCreate()} <br/>{@code void onStart(Intent <i>intent</i>)} <br/>{@code void onDestroy()}</p>
+
+<p>
+これらのメソッドを実装することで、ネストされた 2 つのループからなるサービスのライフサイクルを監視できます:
+</p>
+
+<ul>
+<li>サービスの<b>ライフタイム全体</b>は、<code>{@link android.app.Service#onCreate onCreate()}</code> が呼び出されたときに始まり、<code>{@link android.app.Service#onDestroy}</code> 終了したときに終わります。アクティビティと同じく、サービスも {@code onCreate()} で初期設定を行い、{@code onDestroy()} で残っていたリソースをすべて解放します。たとえば、音楽再生サービスであれば、{@code onCreate()} で音楽を再生するスレッドを作成し、{@code onDestroy()} でそのスレッドを停止できます。</li>
+
+<li><p>サービスの<b>アクティブ ライフタイム</b>は、<code>{@link android.app.Service#onStart onStart()}</code> を呼び出したときに始まります。このメソッドには、{@code startService()} に渡された Intent オブジェクトが渡されます。音楽再生サービスは、この Intent オブジェクトをみて曲を見つけ、その再生を開始します。</p>
+
+<p>
+サービスの停止に相当するコールバック、つまり {@code onStop()} メソッドはありません。
+</p></li>
+</ul>
+
+<p>
+{@code onCreate()} および {@code onDestroy()} メソッドは、サービスを <code>{@link android.content.Context#startService Context.startService()}</code> または <code>{@link android.content.Context#bindService Context.bindService()}</code> のどちらで開始したかに関係なく、すべてのサービスで呼び出されます。一方、{@code onStart()} は、サービスを {@code startService()} で開始した場合のみ呼び出されます。
+</p>
+
+<p>
+サービスが他からのバインドを許可している場合は、以下のコールバック メソッドを追加で実装できます:
+</p>
+
+<p style="margin-left: 2em">{@code IBinder onBind(Intent <i>intent</i>)} <br/>{@code boolean onUnbind(Intent <i>intent</i>)} <br/>{@code void onRebind(Intent <i>intent</i>)}</p>
+
+<p>
+<code>{@link android.app.Service#onBind onBind()}</code> コールバックには {@code bindService()} に渡された Intent オブジェクトが渡され、<code>{@link android.app.Service#onUnbind onUnbind()}</code> には {@code unbindService()} 渡された Intent オブジェクトが渡されます。サービスがバインドを許可している場合は、クライアントがサービスと対話する通信チャネルを {@code onBind()} で返します。{@code onUnbind()} メソッドは、サービスに新しいクライアントが接続した場合に <code>{@link android.app.Service#onRebind onRebind()}</code> の呼び出しを要求できます。
+</p>
+
+<p>
+次の図に、サービスのコールバック メソッドを示します。なお、{@code startService()} で作成されたサービスと、{@code bindService()} で作成されたサービスを分けて記述していますが、作成された方法に関係なく,すべてのサービスはクライアントからのバインドを許可できます。したがって、どのサービスも {@code onBind()} および{@code onUnbind()} メソッドの呼び出しを受け取る可能性はあります。
+</p>
+
+<p style="margin-left: 2em"><img src="{@docRoot}images/service_lifecycle.png"
+alt="サービス コールバックの状態遷移図"  /></p>
+
+
+<h3 id="broadlife">ブロードキャスト レシーバのライフサイクル</h3>
+
+<p>
+ブロードキャスト レシーバのコールバック メソッドは次の 1 つのみです:
+</p>
+
+<p style="margin-left: 2em">{@code void onReceive(Context <i>curContext</i>, Intent <i>broadcastMsg</i>)}</p>
+
+<p>
+レシーバにブロードキャスト メッセージが届くと、<code>{@link android.content.BroadcastReceiver#onReceive onReceive()}</code> メソッドが呼び出され、メッセージを保持する Intent オブジェクトが渡されます。ブロードキャスト レシーバは、このメソッドの実行中のみアクティブと見なされます。{@code onReceive()} 終了すると、ブロードキャスト レシーバはアクティブでなくなります。
+</p>
+
+<p>
+ブロードキャスト レシーバがアクティブになっているプロセスは、強制終了しないよう保護されます。一方、アクティブでないコンポーネントのみからなるプロセスは、それが消費しているメモリが他のプロセスで必要になった場合は、いつでも強制終了される可能性があります。
+</p>
+
+<p>
+この点は、ブロードキャスト メッセージへの応答に時間がかかるため、ユーザー インターフェースの他のコンポーネントを実行しているメイン スレッドとは別のスレッドで何らかの処理を行う必要がある場合に問題になります。{@code onReceive()} が新しいスレッドを生成して終了した場合、プロセス内に他にアクティブなアプリケーション コンポーネントがなければ、そのスレッドを含めたプロセス全体がアクティブでないと判断されて強制終了させられるおそれがあります。この問題を回避するには、{@code onReceive()} でサービスを開始し、そのサービスにジョブを実行させます。これにより、プロセス内にまだアクティブなコンポーネントがあると見なされます。
+</p>
+
+<p>
+次のセクションでは、プロセスが強制終了される可能性が高くなる状況についてさらに詳しく説明します。
+</p>
+
+
+<h3 id="proclife">プロセスとライフサイクル</h3>
+
+<p>Android は、プロセスをできるだけ長い間維持しようとします。しかし、最終的にメモリが不足したときには、古いプロセスを削除しなければならなくなります。Android では、どのプロセスを維持し、どのプロセスを強制終了させるかを判断するため、プロセス内で実行されているコンポーネントと各コンポーネントの状態に基づいて、各プロセスを「重要度の階層」の位置づけます。まず最も重要度の低いプロセスが削除され、次は 2 番目に重要度の低いプロセス、その次に 3 番目、というように判断されます。階層は 5 つのレベルで構成されます。以下では、重要度の高いものから順に説明します:
+</p>
+
+<ol>
+
+<li><b>フォアグラウンド プロセス</b>は、ユーザーがその時点で行っている作業に必要なプロセスです。以下のいずれかの条件を満たしているプロセスは、フォアグラウンド プロセスと見なされます:
+
+<ul>
+<li>ユーザーと対話中のアクティビティを実行している(Activity オブジェクトの <code>{@link android.app.Activity#onResume 
+onResume()}</code> メソッドが呼び出されている)。</li>
+
+<li><p>ユーザーと対話中のアクティビティにバインドされているサービスを実行している。</p></li>
+
+<li><p>いずれかのライフサイクル コールバック(<code>{@link android.app.Service#onCreate 
+onCreate()}</code>、<code>{@link android.app.Service#onStart onStart()}</code>、または <code>{@link android.app.Service#onDestroy onDestroy()}</code>)を実行している {@link android.app.Service} オブジェクトを保持している。</p></li>
+
+<li><p><code>{@link android.content.BroadcastReceiver#onReceive 
+onReceive()}</code> メソッドを実行している {@link android.content.BroadcastReceiver} オブジェクトを保持している。</p></li>
+</ul>
+
+<p>
+同時に存在するフォアグラウンド プロセスは少数に限られています。フォアグラウンド プロセスは、メモリが極端に不足し、すべてのフォアグラウンド プロセスの実行を継続できない場合の最終手段として強制終了させられます。通常、その時点でデバイスはメモリ ページングの状態に達しており、ユーザー インターフェースを応答可能な状態に維持するためには、フォアグラウンド プロセスの一部を強制終了させなければならない状況に陥っています。
+</p></li>
+
+<li><p><b>可視プロセス</b>は、フォアグラウンド コンポーネントではないものの、ユーザーが見ている画面に影響を及ぼすことのできるプロセスです。以下のいずれかの条件を満たしているプロセスは、可視プロセスと見なされます:</p>
+
+<ul>
+<li>フォアグラウンドではないがユーザーから見ることができるアクティビティを実行している(その <code>{@link android.app.Activity#onPause onPause()}</code> メソッドが呼び出されている)。これは、たとえばフォアグラウンド アクティビティがダイアログで、その背後に直前のアクティビティが見えるような状況です。</li>
+
+<li><p>ユーザーから見ることのできるアクティビティにバインドされているサービスを実行している。</p></li>
+</ul>
+
+<p>
+可視プロセスは、非常に重要なプロセスと見なされ、すべてのフォアグラウンド プロセスの実行を維持するために必要でない限り、強制終了させられることはありません。
+</p></li>
+
+<li><p><b>サービス プロセス</b>は、<code>{@link android.content.Context#startService startService()}</code> メソッドで開始されたサービスを実行しているプロセスのうち、より重要度の高い 2 つのレベルのどちらにも該当しないプロセスです。サービス プロセスは、ユーザーに見えるものとの直接的な関係はありませんが、たとえばバックグラウンドでの MP3 の再生、ネットワークからのデータのダウンロードなど、ユーザーが気にかけている処理であることが一般的です。したがって、すべてのフォアグラウンド プロセスと可視プロセスに加え、これらのサービス プロセスの実行を維持するだけのメモリが確保できる限り、強制終了させられることはありません。  
+</p></li>
+
+<li><p><b>バックグラウンド プロセス</b>は、その時点でユーザーから見えないアクティビティを保持している(Activity オブジェクトの <code>{@link android.app.Activity#onStop onStop()}</code> メソッドが呼び出されている)プロセスです。これらのプロセスは、ユーザー エクスペリエンスに直接的には影響しておらず、フォアグラウンド、可視、サービス プロセスからメモリが要求された場合はいつでも強制終了する可能性があります。通常は数多くのバックグラウンド プロセスが実行されているため、それらを LRU(least recently used)リストに登録し、ユーザーが一番最近見たアクティビティのプロセスが最後に強制終了するような仕組みになっています。アクティビティにライフサイクル メソッドが正しく実装されており、現在の状態が正しく保存されていれば、プロセスを強制終了してもユーザー エクスペリエンスに悪影響が及ぶことはありません。 
+</p></li>
+
+<li><p><b>空のプロセス</b>は、アクティブなアプリケーション コンポーネントを保持していないプロセスです。このようなプロセスを維持しておく唯一の理由は、これをキャッシュとして使用し、次回コンポーネントを実行するときの起動時間を短くするためです。多くの場合、システムはこれらのプロセスを強制終了させて、プロセス キャッシュとその基礎となるカーネル キャッシュの間でシステム リソース全体のバランスを取ります。</p></li>
+
+</ol>
+
+<p>
+各プロセスは、その時点でアクティブなコンポーネントの重要度に基づいて、そのプロセスが取りうる最も高いレベルにランク付けされます。たとえば、あるプロセスがサービスと可視アクティビティをホストしている場合、そのプロセスはサービス プロセスではなく可視プロセスとしてランク付けされます。
+</p>
+
+<p>
+また、あるプロセスに他のプロセスが依存しているために、そのプロセスのランクが引き上げられる可能性もあります。他のプロセスから依存されているプロセスが、依存しているプロセスよりも低いレベルにランク付けされることはありません。たとえば、プロセス A 内のコンテンツ プロバイダにプロセス B 内のクライアントが依存している場合や、プロセス A 内のサービスがプロセス B 内のコンポーネントにバインドされている場合、プロセス A は常にプロセス B よりは重要度が高いと見なされます。
+</p> 
+
+<p>
+サービスを実行しているプロセスは、バックグラウンド アクティビティを実行しているプロセスよりも高くランク付けされます。したがって、時間のかかる処理を実行する場合、特にその処理がアクティビティよりも長く続くような場合は、単にスレッドを生成するのではなく、その処理用のサービスを開始することをおすすめします。たとえば、バックグラウンドで音楽を再生する場合や、カメラで撮影した写真を Web サイトにアップロードする場合などはこれに当たります。サービスを使用することで、アクティビティがどのような状況にあっても、処理の重要度として「サービス プロセス」レベル以上を維持できます。<a href="#broadlife">ブロードキャスト レシーバのライフサイクル</a>のセクションでも説明しましたが、ブロードキャスト レシーバにおいてもこれと同じ理由で、処理に時間がかかる場合はスレッドではなくサービスを使用することをおすすめします。
+</p>
diff --git a/docs/html-intl/ja/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/ja/training/monitoring-device-state/battery-monitoring.jd
new file mode 100644
index 0000000..c4aafe4
--- /dev/null
+++ b/docs/html-intl/ja/training/monitoring-device-state/battery-monitoring.jd
@@ -0,0 +1,120 @@
+page.title=電池残量と充電状態の監視
+parent.title=電池消費量の最適化
+parent.link=index.html
+
+trainingnavtop=true
+next.title=ホルダーの装着状態とタイプの特定と監視
+next.link=docking-monitoring.html
+
+@jd:body
+ 
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>このレッスンの内容</h2>
+<ol>
+  <li><a href="#DetermineChargeState">現在の充電状態を特定する</a></li>
+  <li><a href="#MonitorChargeState">充電状態の変化を監視する</a></li>
+  <li><a href="#CurrentLevel">現在の電池残量を特定する</a></li>
+  <li><a href="#MonitorLevel">電池残量の大きな変化を監視する</a></li>
+</ol>
+
+<h2>関連項目</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>
+</ul>
+
+</div> 
+</div>
+ 
+<p>バックグラウンド更新が電池消費量に及ぼす影響を抑えるために更新の頻度を変更するには、初めに現在の電池残量と充電状態を調べることをおすすめします。</p>
+
+<p>アプリの更新が電池消費量に及ぼす影響の度合いは、端末の電池残量と充電状態によって異なります。AC 電源から端末を充電しているときは、更新の実行による影響はごくわずかなので、ほとんどの場合は、端末が AC 電源に接続されている限り、更新頻度を最大にして差し支えありません。逆に、端末が電池で駆動しているときは、更新頻度を下げると電池消費量を抑えることができます。</p>
+
+<p>同様に、電池残量を調べると、残量がごくわずかであるときに更新頻度を下げたり、場合によっては停止させたりすることができます。</p>
+
+
+<h2 id="DetermineChargeState">現在の充電状態を特定する</h2> 
+ 
+<p>初めに、現在の充電状態を特定します。{@link android.os.BatteryManager} によって電池と充電状態に関するすべての詳細情報が sticky {@link android.content.Intent} としてブロードキャストされますが、この中に充電状態が格納されています。</p>
+
+<p>これは sticky インテントであるため、{@link android.content.BroadcastReceiver} を登録する必要はありません。{@code registerReceiver} を呼び出し、{@code null} をレシーバとして渡すだけで(次のコード例を参照)、現在の電池状態のインテントが返されます。ここで実際の {@link android.content.BroadcastReceiver} オブジェクトを渡すこともできますが、このレッスンでは後で更新についての処理を行うので、これは必要ありません。</p>
+
+<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+Intent batteryStatus = context.registerReceiver(null, ifilter);</pre>
+
+<p>現在の充電状態に加えて、充電中の場合は USB 経由か AC 充電器経由かを調べることもできます。<p>
+
+<pre>// Are we charging / charged?
+int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
+                     status == BatteryManager.BATTERY_STATUS_FULL;
+
+// How are we charging?
+int chargePlug = battery.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
+boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
+boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
+
+<p>一般的には、端末が AC 充電器に接続されているときはバックグラウンド更新の頻度を最大にし、USB 経由で充電中のときは頻度を下げ、電池で駆動中のときはさらに頻度を下げます。</p>
+
+
+<h2 id="MonitorChargeState">充電状態の変化を監視する</h2> 
+
+<p>充電状態は、端末が充電器に接続されたときにすぐに変化するので、充電状態の変化を監視し、その変化に応じて更新の頻度を変更することが重要です。</p>
+
+<p>{@link android.os.BatteryManager} は、端末が電源に接続されたときや接続が解除されたときに、アクションをブロードキャストします。このようなイベントは、アプリが実行中でないときでも受信することが重要です。特にそのイベントが、アプリのバックグラウンド更新を開始するためにアプリを起動させる頻度に影響するものである場合です。したがって、{@link android.content.BroadcastReceiver} をアプリのマニフェスト内で登録し、両方のイベントを受信するために {@link android.content.Intent#ACTION_POWER_CONNECTED} と {@link android.content.Intent#ACTION_POWER_DISCONNECTED} をインテント フィルタ内で定義します。</p>
+
+<pre>&lt;receiver android:name=".PowerConnectionReceiver">
+  &lt;intent-filter>
+    &lt;action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
+    &lt;action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
+  &lt;/intent-filter>
+&lt;/receiver></pre>
+
+<p>関連付けられている {@link android.content.BroadcastReceiver} 実装の中で、前のステップで説明したように、現在の充電状態と充電方法を抽出します。</p>
+
+<pre>public class PowerConnectionReceiver extends BroadcastReceiver {
+    &#64;Override
+    public void onReceive(Context context, Intent intent) { 
+        int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+        boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
+                            status == BatteryManager.BATTERY_STATUS_FULL;
+    
+        int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
+        boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
+        boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
+    }
+}</pre>
+
+
+<h2 id="CurrentLevel">現在の電池残量を特定する</h2> 
+
+<p>状況によっては、現在の電池残量がわかると便利なことがあります。たとえば、電池残量が所定のレベルを下回った場合にアプリのバックグラウンド更新の頻度を下げることができます。</p>
+
+<p>現在の電池残量を調べるには、次に示すように、電池状態のインテントから現在の電池残量と最大量を抽出します。</p>
+
+<pre>int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
+int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
+
+float batteryPct = level / (float)scale;</pre>
+
+
+<h2 id="MonitorLevel">電池残量の大きな変化を監視する</h2> 
+
+<p>電池状態を継続的に監視することは簡単ではありませんが、その必要もありません。</p>
+
+<p>一般的に、電池残量を継続的に監視するほうが、電池への影響はアプリの通常の動作によるものよりも大きくなるため、電池残量の大きな変化のみを監視することをおすすめします。特に、端末が電池残量低下状態に入ったときや、その状態が解消されたときです。</p>
+
+<p>次に示すマニフェストの断片は、ブロードキャスト レシーバの中にあるインテント フィルタ要素からの抜粋です。このレシーバは、端末が電池残量低下状態に入ったときや、その状態が解消されたときに呼び出されます。そのために、{@link android.content.Intent#ACTION_BATTERY_LOW} と {@link android.content.Intent#ACTION_BATTERY_OKAY} を受信します。</p>
+
+<pre>&lt;receiver android:name=".BatteryLevelReceiver">
+&lt;intent-filter>
+  &lt;action android:name="android.intent.action.ACTION_BATTERY_LOW"/>
+  &lt;action android:name="android.intent.action.ACTION_BATTERY_OKAY"/>
+  &lt;/intent-filter>
+&lt;/receiver></pre>
+
+<p>一般的に、電池残量がごくわずかになったときはアプリのバックグラウンド更新をすべて停止することをおすすめします。データがいくら新しくても、端末自体の電源が切れてしまったのではデータを活用できません。</p>
+
+<p>多くの場合、端末の充電という動作が開始するのは、端末がホルダーにセットされるのと同時です。次のレッスンでは、現在のホルダーの状態を特定し、端末のホルダー装着状態の変化を監視する方法を紹介します。</p>
+
diff --git a/docs/html-intl/ja/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/ja/training/monitoring-device-state/connectivity-monitoring.jd
new file mode 100644
index 0000000..82b0c6b
--- /dev/null
+++ b/docs/html-intl/ja/training/monitoring-device-state/connectivity-monitoring.jd
@@ -0,0 +1,70 @@
+page.title=接続状態の特定と監視
+parent.title=電池消費量の最適化
+parent.link=index.html
+
+trainingnavtop=true
+
+previous.title=ホルダーの装着状態とタイプの特定と監視
+previous.link=docking-monitoring.html
+next.title=オンデマンドでのブロードキャスト レシーバ操作
+next.link=manifest-receivers.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>このレッスンの内容</h2>
+<ol>
+  <li><a href="#DetermineConnection">インターネット接続の有無を特定する</a></li>
+  <li><a href="#DetermineType">インターネット接続のタイプを特定する</a></li>
+  <li><a href="#MonitorChanges">接続状態の変化を監視する</a></li>
+</ol>
+
+
+<h2>関連項目</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>
+</ul>
+
+</div> 
+</div>
+
+<p>反復アラームとバックグラウンド サービスの用途のうち代表的なものとしては、インターネット リソースからアプリのデータを定期的に更新するためのスケジュール設定や、データのキャッシュへの格納、長時間に及ぶダウンロードの実行などがあります。しかし、インターネットに接続されていないときや、速度が低すぎるためにダウンロードを完了できない場合にまで、更新をスケジューリングするために端末をスリープ状態から復帰させる必要があるでしょうか。</p>
+
+<p>{@link android.net.ConnectivityManager} を使用すると、端末が実際にインターネットに接続されているかどうかと、接続されている場合の接続タイプを調べることができます。</p>
+
+
+<h2 id="DetermineConnection">インターネット接続の有無を特定する</h2> 
+ 
+<p>端末がインターネットに接続されていない場合は、インターネット リソースに基づく更新をスケジューリングする必要性はありません。次のスニペットは、{@link android.net.ConnectivityManager} を使用してアクティブなネットワークを問い合わせて、インターネットに接続しているかどうかを特定する方法を示すものです。</p>
+
+<pre>ConnectivityManager cm =
+        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ 
+NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
+boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
+
+
+<h2 id="DetermineType">インターネット接続のタイプを特定する</h2> 
+
+<p>現在使用可能なインターネット接続のタイプも調べることができます。</p>
+
+<p>端末の接続のタイプとしては、モバイル データ、WiMAX、Wi-Fi、イーサネットがあります。次に示すように、アクティブなネットワークのタイプを問い合わせると、使用可能な帯域幅に合わせて更新頻度を変更することができます。</p>
+
+<pre>boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;</pre>
+
+<p>モバイル データ接続のコストは Wi-Fi 接続を大きく上回る傾向があるため、端末がモバイル接続しているときはアプリの更新頻度を下げるのが一般的です。同様に、大量のデータをダウンロードするときは、Wi-Fi 接続されるまで停止するとよいでしょう。</p>
+
+<p>更新を停止した場合は、接続状態の変化を受信することが重要です。インターネット接続が確立されたら更新を再開できるようにするためです。</p>
+
+
+<h2 id="MonitorChanges">接続状態の変化を監視する</h2> 
+
+<p>接続状態の詳細が変化すると、{@link android.net.ConnectivityManager} によって {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}({@code "android.net.conn.CONNECTIVITY_CHANGE"})アクションがブロードキャストされます。アプリのマニフェスト内でブロードキャスト レシーバを登録し、このような変化を検出することで、それに応じてアプリのバックグラウンド更新を再開(または停止)することができます。</p>
+
+<pre>&lt;action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></pre>
+
+<p>端末の接続状態の変化は、きわめて頻繁になることもあります。このブロードキャストは、モバイル データ接続と Wi-Fi 接続とが切り替わるたびに発行されるからです。したがって、このブロードキャストの監視は、更新やダウンロードを停止した後に再開すべきかどうかを判断するために限って行うことをおすすめします。一般的には、更新を開始する前にインターネット接続の有無を調べれば十分です。インターネットに接続していない場合は、再び接続されるまでの間、更新を停止します。</p>
+
+<p>このようにするには、マニフェスト内で宣言したブロードキャスト レシーバのオンとオフを切り替える必要があります。これについて、次のレッスンで説明します。</p>
diff --git a/docs/html-intl/ja/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/ja/training/monitoring-device-state/docking-monitoring.jd
new file mode 100644
index 0000000..9c0e054
--- /dev/null
+++ b/docs/html-intl/ja/training/monitoring-device-state/docking-monitoring.jd
@@ -0,0 +1,74 @@
+page.title=ホルダーの装着状態とタイプの特定と監視
+parent.title=電池消費量の最適化
+parent.link=index.html
+
+trainingnavtop=true
+previous.title= 電池残量と充電状態の監視
+previous.link=battery-monitoring.html
+next.title= 接続状態の特定と監視
+next.link=connectivity-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>このレッスンの内容</h2>
+<ol>
+  <li><a href="#CurrentDockState">オーディオ フォーカスをリクエストする</a></li>
+  <li><a href="#DockType">現在のホルダーのタイプを特定する</a></li>
+  <li><a href="#MonitorDockState">ホルダーの装着状態またはタイプの変化を監視する</a></li>
+</ol>
+
+
+<h2>関連項目</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>
+</ul>
+
+</div> 
+</div>
+
+<p>Android 搭載端末を装着できるホルダーの種類には、さまざまなものがあります。たとえば、車載用や家庭用のホルダーがあり、デジタルかアナログかという区別もあります。ホルダー装着状態は一般的に、充電状態と密接にリンクしています。多くのホルダーは、装着されている端末に電力を供給しているからです。</p>
+
+<p>端末のホルダー装着状態が更新の頻度にどのように影響するかは、アプリによって異なります。たとえば、スポーツ センター アプリなら、卓上ホルダー装着時には更新頻度を上げ、カー ホルダー装着時には更新を完全に停止するとよいでしょう。逆に、カー ホルダー装着時に更新頻度を最大にするケースとしては、バックグラウンド サービスによって道路交通状況を更新する場合が考えられます。</p>
+
+<p>ホルダー装着状態も sticky {@link android.content.Intent} としてブロードキャストされるので、端末がホルダーに装着されているかどうかと、装着されている場合のホルダーのタイプを問い合わせることができます。</p>
+
+
+<h2 id="CurrentDockState">現在のホルダー装着状態を特定する</h2> 
+ 
+<p>ホルダー装着状態の詳細は、{@link android.content.Intent#ACTION_DOCK_EVENT} アクションの sticky ブロードキャストにエクストラとして含まれています。これは sticky であるため、{@link android.content.BroadcastReceiver} を登録する必要はありません。次のコード例に示すように、{@link android.content.Context#registerReceiver registerReceiver()} を呼び出し、{@code null} をブロードキャスト レシーバとして渡します。</p>
+
+<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
+Intent dockStatus = context.registerReceiver(null, ifilter);</pre>
+
+<p>現在のホルダー装着状態は、次のように {@code EXTRA_DOCK_STATE} エクストラから抽出します。<p>
+
+<pre>int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
+boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
+
+
+<h2 id="DockType">現在のホルダーのタイプを特定する</h2> 
+
+<p>端末がホルダーに装着されている場合のホルダーのタイプは、次の 4 つのいずれかです。 
+<ul><li>カー</li>
+<li>卓上</li>
+<li>ローエンド(アナログ)卓上</li>
+<li>ハイエンド(デジタル)卓上</li></ul></p>
+
+<p>最後の 2 つは、Android API レベル 11 で追加されたものです。したがって、ホルダーのタイプだけがわかればよく、デジタルとアナログの区別は問わないという場合は、次のように 3 つすべてについて調べるとよいでしょう。</p>
+
+<pre>boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
+boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK || 
+                 dockState == EXTRA_DOCK_STATE_LE_DESK ||
+                 dockState == EXTRA_DOCK_STATE_HE_DESK;</pre>
+
+
+<h2 id="MonitorDockState">ホルダーの装着状態またはタイプの変化を監視する</h2> 
+
+<p>端末がホルダーに装着されたり、装着が解除されたりするたびに、{@link android.content.Intent#ACTION_DOCK_EVENT} アクションがブロードキャストされます。端末のホルダー装着状態の変化を監視するには、次のコード例に示すように、アプリのマニフェスト内でブロードキャスト レシーバを登録します。</p>
+
+<pre>&lt;action android:name="android.intent.action.ACTION_DOCK_EVENT"/></pre>
+
+<p>レシーバ実装の中でホルダーのタイプと状態を抽出する方法は、前のステップで使用したものと同じです。</p>
diff --git a/docs/html-intl/ja/training/monitoring-device-state/index.jd b/docs/html-intl/ja/training/monitoring-device-state/index.jd
new file mode 100644
index 0000000..07897b1
--- /dev/null
+++ b/docs/html-intl/ja/training/monitoring-device-state/index.jd
@@ -0,0 +1,49 @@
+page.title=電池消費量の最適化
+
+trainingnavtop=true
+startpage=true
+next.title=電池残量と充電状態の監視
+next.link=battery-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>依存関係と前提条件</h2> 
+<ul>
+  <li>Android 2.0(API レベル 5)以上</li>
+  <li>「<a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>」を読み終えていること</li>
+</ul>
+
+<h2>関連項目</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/services.html">サービス</a>
+</ul>
+
+</div> 
+</div>
+
+<p>アプリを開発するときは、ホスト端末の電池消費量への影響を抑えるよう心がける必要があります。このクラスを修了すると、開発するアプリの中でホスト端末の状態を監視し、それに基づいて機能や動作を変更することができるようになります。</p>
+
+<p>接続が失われたときはバックグラウンド サービスの更新を停止する、電池残量が低下したときは更新の頻度を下げるといった対策を講じることにより、ユーザー エクスペリエンスを損なうことなく、アプリが電池消費量に及ぼす影響を最小限に抑えることができます。</p>
+
+<h2>レッスン</h2> 
+ 
+<!-- Create a list of the lessons in this class along with a short description of each lesson.
+These should be short and to the point. It should be clear from reading the summary whether someone
+will want to jump to a lesson or not.--> 
+ 
+<dl>
+  <dt><b><a href="battery-monitoring.html">電池残量と充電状態の監視</a></b></dt>
+  <dd>アプリの更新頻度を変更するために現在の電池残量や充電状態の変化を特定および監視する方法を学習します。</dd>
+
+  <dt><b><a href="docking-monitoring.html">ホルダーの装着状態とタイプの特定と監視</a></b></dt>
+  <dd>最適な更新頻度は、ホスト端末がどのように使用されているかによって異なります。ホルダーの装着状態とタイプに応じてアプリの動作を変更するために、これらを特定および監視する方法を学習します。</dd>
+
+  <dt><b><a href="connectivity-monitoring.html">接続状態の特定と監視</a></b></dt>
+  <dd>インターネットに接続していないときは、オンライン ソースからアプリを更新することはできません。接続状態を調べ、それに応じてバックグラウンド更新の頻度を変更する方法を学習します。また、大量の帯域幅を消費する処理を開始する前に接続が Wi-Fi かモバイル データかを調べる方法も学習します。</dd>
+
+  <dt><b><a href="manifest-receivers.html">オンデマンドでのブロードキャスト レシーバ操作</a></b></dt>
+  <dd>マニフェスト内で宣言したブロードキャスト レシーバのオンとオフを実行時に切り替えます。端末の状態に応じて、不要なレシーバを無効にすることができます。効率を上げるために、状態変化レシーバのオンとオフを切り替える方法や、端末が特定の状態になるまでアクションを延期する方法を学習します。</dd>
+</dl> 
\ No newline at end of file
diff --git a/docs/html-intl/ja/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/ja/training/monitoring-device-state/manifest-receivers.jd
new file mode 100644
index 0000000..7635d9f
--- /dev/null
+++ b/docs/html-intl/ja/training/monitoring-device-state/manifest-receivers.jd
@@ -0,0 +1,50 @@
+page.title=オンデマンドでのブロードキャスト レシーバ操作
+parent.title=電池消費量の最適化
+parent.link=index.html
+
+trainingnavtop=true
+
+previous.title=接続状態の特定と監視
+previous.link=connectivity-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>このレッスンの内容</h2>
+<ol>
+  <li><a href="#ToggleReceivers">効率を上げるために状態変化レシーバのオンとオフを切り替える</a></li>
+</ol>
+
+
+<h2>関連項目</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>
+</ul>
+
+</div> 
+</div>
+
+<p>端末の状態変化を監視する最も単純な方法は、監視対象とする状態ごとに {@link android.content.BroadcastReceiver} を作成し、それぞれをアプリのマニフェスト内で登録するというものです。これらの各レシーバ内で、端末の現在の状態に基づいて反復アラームのスケジュールを再設定します。</p>
+
+<p>この方法のデメリットは、これらのレシーバのいずれかがトリガされるたびに端末がスリープから復帰することですが、このことは必要以上に頻繁に発生する可能性があります。</p>
+
+<p>これよりも良い方法は、実行時にブロードキャスト レシーバをオンまたはオフにするというものです。このようにすれば、マニフェスト内で宣言したレシーバを受動的アラームとして使用できます。つまり、このアラームは、必要なときにだけシステム イベントによって呼び出されます。</p>
+ 
+
+<h2 id="ToggleReceivers">効率を上げるために状態変化レシーバのオンとオフを切り替える </h2> 
+ 
+<p>{@link android.content.pm.PackageManager} を使用すると、マニフェスト内で定義されているコンポーネントの有効化状態を切り替えることができます。このコンポーネントにはブロードキャスト レシーバも該当するので、次に示すようにオンとオフを切り替えることができます。</p>
+
+<pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
+
+PackageManager pm = context.getPackageManager();
+
+pm.setComponentEnabledSetting(receiver,
+        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+        PackageManager.DONT_KILL_APP)</pre>
+
+<p>この手法を使用すれば、接続が失われたことが判明した場合に、接続状態変化レシーバ以外のレシーバをすべて無効にすることができます。逆に、接続が確立された後は、接続状態変化の受信を停止します。オンラインかどうかを調べるのは、更新を実行する直前や、反復更新アラームのスケジュール再設定の直前だけで十分です。</p>
+
+<p>同じ手法を使用して、大量の帯域幅を必要とするダウンロードを延期することもできます。それには、接続状態の変化をリッスンするブロードキャスト レシーバを有効にしておき、端末が Wi-Fi に接続されたらダウンロードを開始します。</p>
diff --git a/docs/html-intl/ja/training/multiscreen/adaptui.jd b/docs/html-intl/ja/training/multiscreen/adaptui.jd
new file mode 100644
index 0000000..8b1e6ac
--- /dev/null
+++ b/docs/html-intl/ja/training/multiscreen/adaptui.jd
@@ -0,0 +1,212 @@
+page.title=順応性のある UI フローの実装
+parent.title=複数画面のデザイン
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=さまざまな画面密度のサポート
+previous.link=screendensities.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+ 
+<h2>このレッスンでの学習内容</h2>
+
+<ol>
+  <li><a href="#TaskDetermineCurLayout">現在のレイアウトを判別する</a></li>
+  <li><a href="#TaskReactToLayout">現在のレイアウトに合わせて応答する</a></li>
+  <li><a href="#TaskReuseFrag">他のアクティビティのフラグメントを再利用する</a></li>
+  <li><a href="#TaskHandleConfigChanges">画面設定の変更を処理する</a></li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">タブレットと携帯端末のサポート</a></li>
+</ul>
+ 
+<h2>試してみる</h2>
+ 
+<div class="download-box">
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリのダウンロード</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+ 
+</div> 
+</div> 
+
+<p>アプリが現在表示しているレイアウトによって、UI フローが異なる可能性があります。たとえば、アプリがデュアルペイン モードであれば、左ペインのアイテムをクリックすると、単に右ペインにコンテンツが表示されるだけですが、シングルペイン モードであれば、コンテンツは(別のアクティビティ内の)コンテンツ専用のペインに表示される必要があります。</p>
+
+
+<h2 id="TaskDetermineCurLayout">現在のレイアウトを判別する</h2>
+
+<p>レイアウトによって実装が多少異なるので、まず、ユーザーが現在どのようなレイアウトを表示しているかを判別する必要があります。たとえば、ユーザーが表示しているレイアウトが「シングルペイン」モードなのか、「デュアルペイン」モードなのかを確認する必要があります。それは、以下のようなコードで、ある特定のビューが存在し、かつ可視になっているかを照会することで可能です:</p>
+
+<pre class="prettyprint">
+public class NewsReaderActivity extends FragmentActivity {
+    boolean mIsDualPane;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main_layout);
+
+        View articleView = findViewById(R.id.article);
+        mIsDualPane = articleView != null &amp;&amp; 
+                        articleView.getVisibility() == View.VISIBLE;
+    }
+}
+</pre>
+
+<p>このコードにおいて「article」ペインが使用可能かどうかを照会している点に注目してください。特定のレイアウトの照会をハードコーディングするよりもはるかに柔軟性があります。</p>
+
+<p>その他にも、さまざまなコンポーネントでも対応できる方法として、コンポーネントを操作する前に使用可能かどうかを確認する方法もあります。たとえば、News Reader サンプル アプリでは、メニューを開くボタンがありますが、このボタンは Android 3.0 よりも古いバージョンで動作しているときにしか表示されません(この機能は、API レベル 11 以上の <PH>{@link android.app.ActionBar}</PH> で提供されるため)。そこで、以下のようなコードを追加して、このボタンのイベント リスナーを追加します:</p>
+
+<pre class="prettyprint">
+Button catButton = (Button) findViewById(R.id.categorybutton);
+OnClickListener listener = /* create your listener here */;
+if (catButton != null) {
+    catButton.setOnClickListener(listener);
+}
+</pre>
+
+
+<h2 id="TaskReactToLayout">現在のレイアウトに合わせて応答する</h2>
+
+<p>現在のレイアウトによって、一部のアクションの結果が異なる可能性があります。たとえば、News Reader サンプルでは、見出しリストで見出しをクリックしたとき、デュアルペイン モードの UI の場合は右ペインに記事が表示されますが、シングルペインの UI の場合は別のアクティビティが起動します:</p>
+
+<pre>
+&#64;Override
+public void onHeadlineSelected(int index) {
+    mArtIndex = index;
+    if (mIsDualPane) {
+        /* display article on the right pane */
+        mArticleFragment.displayArticle(mCurrentCat.getArticle(index));
+    } else {
+        /* start a separate activity */
+        Intent intent = new Intent(this, ArticleActivity.class);
+        intent.putExtra("catIndex", mCatIndex);
+        intent.putExtra("artIndex", index);
+        startActivity(intent);
+    }
+}
+</pre>
+
+<p>同様に、アプリがデュアルペイン モードの場合は、ナビ用タブでアクション バーを設定し、一方、シングルペイン モードの場合は、スピナー ウィジェットでナビを設定することになります。したがって、コードでは以下のようにどちらのケースが適切かを調べることも必要です:</p>
+
+<pre>
+final String CATEGORIES[] = { "トップ ニュース 政治", "政治", "経済", "Technology" };
+
+public void onCreate(Bundle savedInstanceState) {
+    ....
+    if (mIsDualPane) {
+        /* use tabs for navigation */
+        actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_TABS);
+        int i;
+        for (i = 0; i &lt; CATEGORIES.length; i++) {
+            actionBar.addTab(actionBar.newTab().setText(
+                CATEGORIES[i]).setTabListener(handler));
+        }
+        actionBar.setSelectedNavigationItem(selTab);
+    }
+    else {
+        /* use list navigation (spinner) */
+        actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
+        SpinnerAdapter adap = new ArrayAdapter<String>(this, 
+                R.layout.headline_item, CATEGORIES);
+        actionBar.setListNavigationCallbacks(adap, handler);
+    }
+}
+</pre>
+
+
+<h2 id="TaskReuseFrag">他のアクティビティのフラグメントを再利用する</h2>
+
+<p>複数の画面に対応するように設計する場合、あるパターンが繰り返されますが、そうしたパターンは、ある画面設定ではペインとして、別の画面設定では別のアクティビティとして実装されるインターフェースの一部に存在します。たとえば、News Reader サンプルでは、ラージ画面の場合はニュース記事のテキストが右ペインに表示されますが、それよりも小さい画面の場合は別のアクティビティになります。</p>
+
+<p>このような場合、通常、複数のアクティビティで同じ <PH>{@link android.app.Fragment}</PH> サブクラスを再利用することでコードの重複を回避できます。たとえば、<code>ArticleFragment</code> は以下のようにデュアルペイン レイアウトで使用されます:</p>
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+
+<p>また、より小さな画面向けのアクティビティ レイアウト内では(レイアウトを使用せずに)再利用されます(<code>ArticleActivity</code>):</p>
+
+<pre>
+ArticleFragment frag = new ArticleFragment();
+getSupportFragmentManager().beginTransaction().add(android.R.id.content, frag).commit();
+</pre>
+
+<p>当然、これは XML レイアウトでフラグメントを宣言するのと同じ効果がありますが、この場合は、XML レイアウトは必要ありません。このアクティビティのコンポーネントは記事フラグメントしかないからです。</p>
+
+<p>フラグメントを設計する際に注意すべき非常に重要なポイントの 1 つとして、特定のアクティビティに対して強い結合を作成しないことがあります。通常、これは、フラグメントが自分のホスト アクティビティとやり取りするのに必要なあらゆる手段を抽象化したインターフェースを定義し、さらに、そのインターフェースをホスト アクティビティに実装することで可能になります:</p>
+
+<p>たとえば、News Reader アプリの <code>HeadlinesFragment</code> は、まさにそのようになっています:</p>
+
+<pre>
+public class HeadlinesFragment extends ListFragment {
+    ...
+    OnHeadlineSelectedListener mHeadlineSelectedListener = null;
+
+    /* Must be implemented by host activity */
+    public interface OnHeadlineSelectedListener {
+        public void onHeadlineSelected(int index);
+    }
+    ...
+
+    public void setOnHeadlineSelectedListener(OnHeadlineSelectedListener listener) {
+        mHeadlineSelectedListener = listener;
+    }
+}
+</pre>
+
+<p>これにより、ユーザーが見出しを選択すると、フラグメントは以下のように(特定のハードコーディングされたアクティビティに通知するのではなく)ホスト アクティビティが指定したリスナーに通知します:</p>
+
+<pre>
+public class HeadlinesFragment extends ListFragment {
+    ...
+    &#64;Override
+    public void onItemClick(AdapterView&lt;?&gt; parent, 
+                            View view, int position, long id) {
+        if (null != mHeadlineSelectedListener) {
+            mHeadlineSelectedListener.onHeadlineSelected(position);
+        }
+    }
+    ...
+}
+</pre>
+
+<p>このテクニックについては、<a
+href="{@docRoot}guide/practices/tablets-and-handsets.html">タブレットと携帯端末のサポート</a>で詳しく説明されています。</p>
+
+
+<h2 id="TaskHandleConfigChanges">画面設定の変更を処理する</h2>
+
+<p>インターフェースの各パーツを実装するのに個別のアクティビティを使用している場合、インターフェースの一貫性を維持するために、(向きの変更などの)特定の設定変更に対応できるように注意する必要があります。</p>
+
+<p>たとえば、Android 3.0 以上が動作する一般的な 7 インチ タブレットでは、News Reader サンプルがニュース記事を表示する場合、縦表示では個別のアクティビティを使用しますが、横表示では 2 ペイン レイアウトを使用します。</p>
+
+<p>つまり、縦表示のときに記事閲覧用アクティビティが画面上にある場合、画面の向きが横方向に変わったことを検出したら、コンテンツを 2 ペイン レイアウトで表示するために、そのアクティビティを終了してメインのアクティビティに戻り、適切に応答しなければなりません:</p>
+
+<pre>
+public class ArticleActivity extends FragmentActivity {
+    int mCatIndex, mArtIndex;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mCatIndex = getIntent().getExtras().getInt("catIndex", 0);
+        mArtIndex = getIntent().getExtras().getInt("artIndex", 0);
+
+        // If should be in two-pane mode, finish to return to main activity
+        if (getResources().getBoolean(R.bool.has_two_panes)) {
+            finish();
+            return;
+        }
+        ...
+}
+</pre>
+
+
diff --git a/docs/html-intl/ja/training/multiscreen/index.jd b/docs/html-intl/ja/training/multiscreen/index.jd
new file mode 100644
index 0000000..ff84f8a
--- /dev/null
+++ b/docs/html-intl/ja/training/multiscreen/index.jd
@@ -0,0 +1,64 @@
+page.title=複数画面のデザイン
+
+trainingnavtop=true
+startpage=true
+next.title=さまざまな画面サイズのサポート
+next.link=screensizes.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb"> 
+ 
+<h2>必要な知識と前提条件</h2> 
+
+<ul>
+  <li>Android 1.6 以上(サンプル アプリを使用するには 2.1 以上)</li>
+  <li><a
+href="http://developer.android.com/guide/components/activities.html">アクティビティ</a>と<a href="http://developer.android.com/guide/components/fragments.html">フラグメント</a>の基礎知識</li>
+  <li>Android <a
+href="http://developer.android.com/guide/topics/ui/index.html">ユーザー インターフェース</a>の開発経験</li>
+  <li><a
+href="{@docRoot}tools/extras/support-library.html">サポート ライブラリ</a>の利用(一部の機能で必要)</li>
+</ul>
+
+<h2>関連ドキュメント</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">複数画面のサポート</a></li>
+</ul>
+ 
+<h2>試してみる</h2> 
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリのダウンロード</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+</div> 
+</div> 
+ 
+<p>Android は、小さな携帯電話から大きなテレビまで、画面サイズも種類もさまざまなデバイスに搭載できます。そのため、できる限り多くのユーザーが使用できるように、すべての画面サイズに対応できるようアプリを設計することが重要になります。</p>
+
+<p>しかし、さまざまな種類のデバイスに対応できるだけでは十分ではありません。画面サイズによって、ユーザーが操作できることが決まってくるため、本当にユーザーを満足させてよい印象を持ってもらうためには、アプリが単に複数の画面をサポートするだけでは不十分です: 画面設定ごとにユーザー エクスペリエンスを最適化する必要があります。<em></em><em></em></p>
+
+<p>このクラスは、いくつかの画面設定に合わせて最適化されたユーザー インターフェースを実装する方法を提供します。</p>
+
+<p>各レッスンで紹介されているコードは、複数の画面に合わせて最適化する際、ベスト プラクティスとなるサンプル アプリから抜粋したものです。このサンプルを(右側から)ダウンロードして、再利用可能なコードのソースとしてご自分のアプリに使用することができます。</p>
+
+<p class="note"><strong>注:</strong> このクラスと関連サンプルでは、<a
+href="{@docRoot}tools/extras/support-library.html">サポート ライブラリ</a>を使用します。理由は、Android 3.0 未満のバージョンで <PH>{@link android.app.Fragment}</PH> API を使用するためです。このクラスのすべての API を使用するには、ライブラリをダウンロードして、アプリに追加する必要があります。</p>
+ 
+
+<h2>レッスン</h2> 
+ 
+<dl> 
+  <dt><b><a href="screensizes.html">さまざまな画面サイズのサポート</a></b></dt> 
+    <dd>このレッスンでは、さまざまな画面サイズに適したレイアウトを(柔軟なビュー サイズ、 <PH>{@link android.widget.RelativeLayout}</PH>、画面サイズと画面の向きの修飾子、エイリアス フィルタ、ナインパッチ ビットマップを使用して)設計する方法について学習します。</dd> 
+ 
+  <dt><b><a href="screendensities.html">さまざまな画面密度のサポート</a></b></dt> 
+    <dd>このレッスンでは、(密度非依存ピクセルを使用し、各密度に適したビットマップを提供して)ピクセル密度が異なる画面をサポートする方法について学習します。</dd> 
+ 
+  <dt><b><a href="adaptui.html">順応性のある UI フローの実装</a></b></dt> 
+    <dd>このレッスンでは、いくつかの画面サイズ/密度の組み合わせに適した方法(実行時にアクティブなレイアウトを検出する方法、現在のレイアウトに合わせて応答する方法、画面設定の変更を処理する方法)で UI を実装する方法について学習します。</dd> 
+</dl> 
diff --git a/docs/html-intl/ja/training/multiscreen/screendensities.jd b/docs/html-intl/ja/training/multiscreen/screendensities.jd
new file mode 100644
index 0000000..3482d5c
--- /dev/null
+++ b/docs/html-intl/ja/training/multiscreen/screendensities.jd
@@ -0,0 +1,100 @@
+page.title=さまざまな画面密度のサポート
+parent.title=複数画面のデザイン
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=さまざまな画面サイズのサポート
+previous.link=screensizes.html
+next.title=順応性のある UI フローの実装
+next.link=adaptui.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+
+<h2>このレッスンでの学習内容</h2>
+<ol>
+  <li><a href="#TaskUseDP">密度非依存ピクセルを使用する</a></li>
+  <li><a href="#TaskProvideAltBmp">代替ビットマップを生成する</a></li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">複数画面のサポート</a></li>
+  <li><a href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">アイコン設計のガイドライン</a></li>
+</ul>
+
+<h2>試してみる</h2>
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリのダウンロード</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+ 
+</div> 
+</div> 
+
+<p>このレッスンでは、異なるリソースを生成し、かつ解像度非依存単位を使用して、異なる画面密度をサポートする方法について学習します。</p>
+
+<h2 id="TaskUseDP">密度非依存ピクセルを使用する</h2>
+
+<p>レイアウトを設計する際に回避すべきよくある落とし穴の 1 つとして、絶対ピクセルを使用して距離やサイズを定義することがあります。ピクセルを使用してレイアウトのサイズを定義すると、画面によってピクセル密度が異なるため、問題が起こります。したがって、同じピクセル数では、デバイスが異なる場合に物理サイズが異なる可能性があります。そのため、サイズを指定する場合は、常に <code>dp</code> 単位や <code>sp</code> 単位を使用します。<code>dp</code> とは、1 ピクセルの物理サイズが 160 dpi に相当する密度非依存ピクセルです。<code>sp</code> も基本単位は同じですが、ユーザーの優先テキスト サイズによってサイズが決まるので(スケール非依存ピクセル)、テキスト サイズを定義する際にはこの単位を使用する必要があります(ただし、レイアウト サイズには絶対に使用しないこと)。</p>
+
+<p>たとえば、2 つのビューの間にスペースを挿入する場合は、<code>px</code> ではなくて <code>dp</code> を使用します:</p>
+
+<pre>
+&lt;Button android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:text="&#64;string/clickme"
+    android:layout_marginTop="20dp" /&gt;
+</pre>
+
+<p>テキスト サイズを指定する場合は、常に <code>sp</code> を使用します:</p>
+
+<pre>
+&lt;TextView android:layout_width="match_parent" 
+    android:layout_height="wrap_content" 
+    android:textSize="20sp" /&gt;
+</pre>
+
+
+<h2 id="TaskProvideAltBmp">代替ビットマップを生成する</h2>
+
+<p>Android は、画面密度がさまざまなデバイスで動作するため、それぞれの汎用密度バケット(低密度、中密度、高密度、超高密度)に合わせてビットマップ リソースを生成する必要があります。そうすることで、すべての画面密度で画質とパフォーマンスが向上します。</p>
+
+<p>これらの画像を生成するには、ベクター形式の未加工リソースから、次のサイズ スケールを使用して密度別に画像を生成する必要があります:</p>
+
+<p><ul>
+  <li><code>xhdpi</code>: 2.0
+  <li><code>hdpi</code>: 1.5
+  <li><code>mdpi</code>: 1.0(基準)
+  <li><code>ldpi</code>: 0.75
+</ul></p>
+
+<p>つまり、200&times;200 画像(<code>xhdpi</code> デバイス用)を生成する場合、同じリソースを 150&times;150 画像(<code>hdpi</code> デバイス用)、100&times;100 画像(<code>mdpi</code> デバイス用)、75&times;75(<code>ldpi</code> デバイス用)でも生成する必要があります。</p>
+
+<p>さらに、生成した画像を <code>res/</code> 下の適切なサブディレクトリに配置することで、アプリが動作するデバイスの画面密度に基づいて、自動的に適切な画像が表示されます:</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+  res/
+    drawable-xhdpi/
+        awesomeimage.png
+    drawable-hdpi/
+        awesomeimage.png
+    drawable-mdpi/
+        awesomeimage.png
+    drawable-ldpi/
+        awesomeimage.png
+</pre>
+
+<p>また、<code>&#64;drawable/awesomeimage</code> を参照する場合は常に画面の dpi に基づいて、適切なビットマップが選択されます。</p>
+
+<p>アプリ用のアイコン アセットを作成するためのヒントとガイドラインについては、<a
+href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">アイコン設計のガイドライン</a>をご覧ください。</p>
+
diff --git a/docs/html-intl/ja/training/multiscreen/screensizes.jd b/docs/html-intl/ja/training/multiscreen/screensizes.jd
new file mode 100644
index 0000000..3655a33
--- /dev/null
+++ b/docs/html-intl/ja/training/multiscreen/screensizes.jd
@@ -0,0 +1,279 @@
+page.title=さまざまな画面サイズのサポート
+parent.title=複数画面のデザイン
+parent.link=index.html
+
+trainingnavtop=true
+next.title=さまざまな画面密度のサポート
+next.link=screendensities.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+
+<h2>このレッスンでの学習内容</h2>
+<ol>
+  <li><a href="#TaskUseWrapMatchPar">「wrap_content」と「match_parent」を使用する</a></li>
+  <li><a href="#TaskUseRelativeLayout">RelativeLayout を使用する</a></li>
+  <li><a href="#TaskUseSizeQuali">サイズ修飾子を使用する</a></li>
+  <li><a href="#TaskUseSWQuali">最小幅修飾子を使用する</a></li>
+  <li><a href="#TaskUseAliasFilters">レイアウト エイリアスを使用する</a></li>
+  <li><a href="#TaskUseOriQuali">画面の向きの修飾子を使用する</a></li>
+  <li><a href="#TaskUse9Patch">ナインパッチ ビットマップを使用する</a></li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">複数画面のサポート</a></li>
+</ul>
+
+<h2>試してみる</h2> 
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリのダウンロード</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+</div> 
+</div> 
+
+<p>このレッスンでは、異なる画面サイズを以下のような方法でサポートする方法について学習します:</p>
+<ul> 
+  <li>画面に収まるようにレイアウト サイズを適切に変更する</li> 
+  <li>画面設定に基づいて適切な UI レイアウトを表示する</li> 
+  <li>適切な画面に適切なレイアウトを適用する</li>
+  <li>適切にサイズ調整したビットマップを表示する</li> 
+</ul> 
+
+
+<h2 id="TaskUseWrapMatchPar">「wrap_content」と「match_parent」を使用する</h2> 
+
+<p>レイアウトをさまざまな画面サイズに柔軟に対応させるには、一部のビュー コンポーネントの幅と高さに <code>"wrap_content"</code> と <code>"match_parent"</code> を使用する必要があります。<code>"wrap_content"</code> を使用すると、ビューの幅や高さがそのビュー内にコンテンツが収まるのに必要な最小サイズに設定されます。一方、<code>"match_parent"</code>(API レベル 8 より前の名称は <code>"fill_parent"</code>)を使用すると、コンポーネントがその親ビューのサイズに一致するまで拡大されます。</p>
+
+<p>ハードコーディングされたサイズの代わりに <code>"wrap_content"</code> と <code>"match_parent"</code> を使用することで、ビューはそれぞれ、そのビューに必要なスペースだけを使用したり、空きスペースを埋めるまで拡大したりします。次に例を示します:</p>
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane_with_bar.xml all}
+
+<p>このサンプルでは、特定のサイズではない <code>"wrap_content"</code> と <code>"match_parent"</code> をコンポーネント サイズにどのように使用しているかに注目してください。こうすることで、異なる画面のサイズと向きにレイアウトを正しく対応させることができます。</p>
+
+<p>たとえば、このレイアウトを縦表示と横表示で表示したときの見え方を以下に示します。コンポーネントのサイズが幅と高さに自動的に適合している点に注目してください:</p>
+
+<img src="{@docRoot}images/training/layout-hvga.png" />
+<p class="img-caption"><strong>図 1.</strong> News Reader サンプル アプリの縦表示(左)と横表示(右)</p>
+
+
+<h2 id="TaskUseRelativeLayout">RelativeLayout を使用する</h2> 
+
+<p>ネストされた <PH>{@link android.widget.LinearLayout} インスタンスや、</PH> <code>"wrap_content"</code> と <code>"match_parent"</code> のサイズの組み合わせを使用すると、かなり複雑なレイアウトを作成できます。しかし、 <PH>{@link android.widget.LinearLayout}</PH> では、子ビューの空間的な位置関係を正確に制御することはできません。 <PH>{@link android.widget.LinearLayout} のビューは、</PH> 単に一列に並ぶだけです。子ビューに対して直線以外のさまざまな配置を実現する必要がある場合は、 <PH>{@link android.widget.RelativeLayout}</PH>を使用することでうまくいくことがよくあります。たとえば、1 つの子ビューを画面の左側に配置し、もう 1 つの子ビューを右側に配置できます。</p>
+
+<p>次に例を示します:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;TextView
+        android:id="&#64;+id/label"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="Type here:"/&gt;
+    &lt;EditText
+        android:id="&#64;+id/entry"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="&#64;id/label"/&gt;
+    &lt;Button
+        android:id="&#64;+id/ok"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="&#64;id/entry"
+        android:layout_alignParentRight="true"
+        android:layout_marginLeft="10dp"
+        android:text="OK" /&gt;
+    &lt;Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toLeftOf="&#64;id/ok"
+        android:layout_alignTop="&#64;id/ok"
+        android:text="Cancel" /&gt;
+&lt;/RelativeLayout&gt;
+</pre>
+
+<p>図 2 は、このレイアウトの QVGA 画面での見え方を示しています。</p>
+
+<img src="{@docRoot}images/training/relativelayout1.png" />
+<p class="img-caption"><strong>図 2.</strong> QVGA 画面(スモール画面)のスクリーンショット</p>
+
+<p>図 3 は、このレイアウトのラージ画面での見え方を示しています。</p>
+
+<img src="{@docRoot}images/training/relativelayout2.png" />
+<p class="img-caption"><strong>図 3.</strong> WSVGA 画面(ラージ画面)のスクリーンショット</p>
+
+<p>コンポーネントのサイズが変更されても、 <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>で指定されたとおりに空間的な位置関係が維持されていることがわかります。</p>
+
+ 
+<h2 id="TaskUseSizeQuali">サイズ修飾子を使用する</h2> 
+
+<p>柔軟なレイアウトや相対的なレイアウトから得られる恩恵は、前のセクションで説明したことくらいです。これらのレイアウトはコンポーネントの内部や周囲のスペースを引き延ばすことでさまざまな画面に対応しますが、それぞれの画面サイズに合った最高のユーザー エクスペリエンスを実現していない可能性があります。したがって、アプリでは、柔軟なレイアウトの実装だけではなく、さまざまな画面設定に合わせた複数の代替レイアウトも必要になります。これは、<a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">設定修飾子</a>を使用することで実現可能です。設定修飾子により、ランタイムが現在のデバイスの設定に基づいて適切なリソース(画面サイズ別のレイアウト デザインなど)を自動的に選択できます。</p>
+
+<p>たとえば、多くのアプリでは、ラージ画面用に「2 ペイン」パターンを実装しています(一方のペインに項目リスト、もう一方のペインにそのコンテンツを表示することが可能です)。タブレットやテレビは両方のペインを同時に表示できるほど十分に大きい画面ですが、携帯端末の画面では 2 つのペインを別々に表示する必要があります。そのようなレイアウトを実装するには、次のようなファイルが必要になります:</p>
+
+<ul>
+  <li><code>res/layout/main.xml</code>、シングルペイン(デフォルト)レイアウト:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+</li>
+  <li><code>res/layout-large/main.xml</code>、2 ペイン レイアウト:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+</li>
+</ul>
+
+<p>2 番目のレイアウトのディレクトリ名の <code>large</code> 修飾子に注目してください。このレイアウトは、ラージ(7 インチ以上のタブレットなど)と分類された画面のデバイスで選択されます。それよりも小さいデバイスでは、その他のレイアウト(修飾子なし)が選択されます。</p>
+
+
+<h2 id="TaskUseSWQuali">最小幅修飾子を使用する</h2>
+
+<p>Android 3.2 未満のデバイスでデベロッパーが抱えていた問題の 1 つに、Dell Streak、初代 Galaxy Tab、7 インチ タブレット全般を含む、「ラージ」画面サイズの分類があります。しかし、多くのアプリでは、すべて「ラージ」画面と見なされたとしても、このカテゴリ内のデバイスのサイズに合わせて異なるレイアウト(5 インチと 7 インチのデバイス用など)を表示したい場合があります。そこで、Android 3.2 では「最小幅」修飾子などが導入されました。</p>
+
+<p>最小幅修飾子を使用すると、dp で指定した特定の最小幅の画面を対象とすることができます。たとえば、一般的な 7 インチ タブレットは最小幅が 600 dp なので、これらの画面の UI で 2 つのペイン(ただし、それよりも小さい画面ではシングル リスト)を表示したい場合は、前のセクションで説明した 2 つのレイアウトをシングルペイン レイアウト用と 2 ペイン レイアウト用としてそのまま利用できます。ただし、<code>large</code> サイズ修飾子の代わりに、<code>sw600dp</code> を使用して、最小幅が 600 dp の画面では 2 ペイン レイアウトになるよう指定します:</p>
+
+<ul>
+  <li><code>res/layout/main.xml</code>、シングルペイン(デフォルト)レイアウト:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+</li>
+  <li><code>res/layout-sw600dp/main.xml</code>、2 ペイン レイアウト:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+</li>
+</ul>
+
+<p>つまり、最小幅が 600dp 以上のデバイスでは <code>layout-sw600dp/main.xml</code>(2 ペイン)レイアウトが選択され、それよりも小さい画面では <code>layout/main.xml</code>(シングルペイン)レイアウトが選択されるということです。</p>
+
+<p>ただし、Android 3.2 未満のデバイスではこの修飾子は機能しません。これは <code>sw600dp</code> をサイズ修飾子として認識できないためです。したがって、引き続き <code>large</code> 修飾子も使用する必要があります。そこで、<code>res/layout-sw600dp/main.xml</code> と同じ内容の <code>res/layout-large/main.xml</code> という名前のファイルも必要になります。次のセクションでは、このようにレイアウト ファイルの重複を避けるためのテクニックについて学習します。</p>
+
+
+<h2 id="TaskUseAliasFilters">レイアウト エイリアスを使用する</h2> 
+
+<p>最小幅修飾子は、Android 3.2 以上でしか利用できません。したがって、旧バージョンとの互換性を維持するために、あいまいなサイズ分類(small、normal、large、xlarge)も併用することが必要です。たとえば、携帯端末ではシングルペイン UI、7 インチ タブレットやテレビなどの大きなデバイスではマルチペイン UI を表示するよう UI を設計する場合、以下のようなファイルが必要になります:</p>
+
+<p><ul>
+<li><code>res/layout/main.xml:</code> シングルペイン レイアウト</li>
+<li><code>res/layout-large:</code> マルチペイン レイアウト</li>
+<li><code>res/layout-sw600dp:</code> マルチペイン レイアウト</li>
+</ul></p>
+
+<p>最後の 2 つのファイルは同じものです。一方は Android 3.2 デバイス用で、もう一方は旧バージョンの Android を搭載したタブレットとテレビ用です。</p>
+
+<p>このようにタブレット/テレビ用として同じファイルを使用することで起こる重複(さらに、その結果メンテナンスが困難になる状況)を避けるために、エイリアス ファイルを使用できます。たとえば、次のようなレイアウトを定義できます:</p>
+
+<ul>
+<li><code>res/layout/main.xml</code>、シングルペイン レイアウト</li>
+<li><code>res/layout/main_twopanes.xml</code>、2 ペイン レイアウト</li>
+</ul>
+
+<p>さらに、次の 2 つのファイルを追加します:</p>
+
+<p><ul>
+<li><code>res/values-large/layout.xml</code>:
+<pre>
+&lt;resources>
+    &lt;item name="main" type="layout">&#64;layout/main_twopanes&lt;/item>
+&lt;/resources>
+</pre>
+</li>
+
+<li><code>res/values-sw600dp/layout.xml</code>:
+<pre>
+&lt;resources>
+    &lt;item name="main" type="layout">&#64;layout/main_twopanes&lt;/item>
+&lt;/resources>
+</pre>
+
+</li>
+</ul></p>
+
+<p>最後の 2 つのファイルの内容は同じですが、実際のレイアウトは定義していません。これらのファイルは、単に <PH>{@code main}</PH> を <PH>{@code main_twopanes}</PH>へのエイリアスになるように設定しただけです。これらのファイルには <code>large</code> と <code>sw600dp</code> セレクタが含まれているので、Android のバージョンに関係なく(
+<PH>Android 3.2 未満のタブレット/テレビは {@code large} に一致し、</PH>Android 3.2 以上のタブレット/テレビは <code>sw600dp</code> に一致します)タブレット/テレビに適用されます。</p>
+
+
+<h2 id="TaskUseOriQuali">画面の向きの修飾子を使用する</h2> 
+
+<p>横表示と縦表示が両方とも正しく表示されるレイアウトもありますが、ほとんどのレイアウトは調整が必要になります。以下に、News Reader サンプル アプリの各画面のサイズと向きでレイアウトがどのように表示されるかを示します:</p>
+
+<p><ul>
+<li><b>スモール画面、縦表示:</b> シングル ペイン、ロゴ付き</li>
+<li><b>スモール画面、横表示:</b> シングル ペイン、ロゴ付き</li>
+<li><b>7 インチ タブレット、縦表示:</b> シングル ペイン、アクション バー付き</li>
+<li><b>7 インチ タブレット、横表示:</b> デュアル ペイン、ワイド、アクション バー付き</li>
+<li><b>10 インチ タブレット、縦表示:</b> デュアル ペイン、ナロー、アクション バー付き</li>
+<li><b>10 インチ タブレット、横表示:</b> デュアル ペイン、ワイド、アクション バー付き</li>
+<li><b>テレビ、横表示:</b> デュアル ペイン、ワイド、アクション バー付き</li>
+</ul></p>
+
+<p>これらの各レイアウトは、<code>res/layout/</code> ディレクトリ内の XML ファイルに定義されています。各レイアウトをさまざまな画面設定に割り当てるには、アプリでレイアウト エイリアスを使用して、各設定に対応付けます:</p>
+
+<p><code>res/layout/onepane.xml:</code></p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+
+<p><code>res/layout/onepane_with_bar.xml:</code></p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane_with_bar.xml all}
+
+<p><code>res/layout/twopanes.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+
+<p><code>res/layout/twopanes_narrow.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes_narrow.xml all}
+
+<p>これで、考えられるすべてのレイアウトが定義されました。あとは、設定修飾子を使用して、適切なレイアウトを各設定にマッピングするだけです。そのためには、以下のようなレイアウト エイリアス テクニックを使用することができます:</p>
+
+<p><code>res/values/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values/layouts.xml all}
+
+<p><code>res/values-sw600dp-land/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-sw600dp-land/layouts.xml
+all}
+
+<p><code>res/values-sw600dp-port/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-sw600dp-port/layouts.xml
+all}
+
+<p><code>res/values-large-land/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-large-land/layouts.xml all}
+
+<p><code>res/values-large-port/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-large-port/layouts.xml all}
+
+
+
+<h2 id="TaskUse9Patch">ナインパッチ ビットマップを使用する</h2>
+
+<p>異なる画面サイズをサポートするには、画像リソースも異なるサイズに対応できないといけません。たとえば、ボタンの背景は、適用されるボタンの形状が異なってもサイズが合わなければいけません。</p>
+
+<p>サイズ変更可能なコンポーネントでシンプルな画像を使用すると、ランタイムによって画像が一様に拡大縮小されるので、いくぶん期待はずれの結果になることがすぐにわかります。これは、ナインパッチ ビットマップを使用することで解決します。ナインパッチ ビットマップとは、拡大可能な領域と拡大不可能な領域が指定された特殊なフォーマットの PNG ファイルです。</p>
+
+<p>そのため、サイズが変化するコンポーネントで使用するビットマップをデザインする場合は、常にナインパッチを使用してください。ビットマップをナインパッチに変換するには、まず、通常の画像を用意します(図 4: わかりやすく 4 倍に拡大しています)。</p>
+
+<img src="{@docRoot}images/training/button.png" />
+<p class="img-caption"><strong>図 4.</strong> <code>button.png</code></p>
+
+<p>次に、 <ode
+href="{@docRoot}tools/help/draw9patch.html">SDK の <code>draw9patch</code></a> ユーティリティ(<code>tools/</code> ディレクトリにあります)からナインパッチを実行して、左境界線と上境界線上にピクセル(ドット)を描くことで拡大する領域にマークを付けます。また、右境界線と下境界線上にピクセルを描くことで、コンテンツを入れる領域をマークできます(図 5)。</p>
+
+<img src="{@docRoot}images/training/button_with_marks.png" />
+<p class="img-caption"><strong>図 5.</strong> <code>button.9.png</code></p>
+
+<p>境界線上に黒いピクセルがあることに注目してください。左境界線と上境界線上のものは画像を拡大できる領域で、右境界線と下境界線上のものはコンテンツを配置する領域を示しています。</p>
+
+<p>さらに、<code>.9.png</code> という拡張子にも注目してください。この拡張子は必ず使用してください。そうすることで、通常の PNG 画像ではなく、ナインパッチ画像であることがフレームワークによって検出されます。</p>
+
+<p>この背景を(<code>android:background="&#64;drawable/button"</code> を設定して)コンポーネントに適用すると、ボタンのサイズに合わせて適切に画像が拡大します(図 6 のさまざまなサイズを参照)。</p>
+
+<img src="{@docRoot}images/training/buttons_stretched.png" />
+<p class="img-caption"><strong>図 6</strong><code>button.9.png</code> ナインパッチを使用したさまざまなサイズのボタン</p>
+
diff --git a/docs/html-intl/ko/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/ko/training/monitoring-device-state/battery-monitoring.jd
new file mode 100644
index 0000000..2eacccf
--- /dev/null
+++ b/docs/html-intl/ko/training/monitoring-device-state/battery-monitoring.jd
@@ -0,0 +1,120 @@
+page.title=배터리 수준 및 충전 상태 모니터링
+parent.title=배터리 수명 최적화
+parent.link=index.html
+
+trainingnavtop=true
+next.title=도킹 상태와 유형 확인 및 모니터링
+next.link=docking-monitoring.html
+
+@jd:body
+ 
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>강의 목표</h2>
+<ol>
+  <li><a href="#DetermineChargeState">현재 충전 상태 확인</a></li>
+  <li><a href="#MonitorChargeState">충전 상태 변경사항 모니터링</a></li>
+  <li><a href="#CurrentLevel">현재 배터리 수준 확인</a></li>
+  <li><a href="#MonitorLevel">배터리 수준 중요 변경사항 모니터링</a></li>
+</ol>
+
+<h2>참고자료</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
+</ul>
+
+</div> 
+</div>
+ 
+<p>백그라운드 업데이트가 배터리 수명에 미치는 영향을 줄이기 위하여 백그라운드 업데이트 빈도수를 변경하는 경우, 현재 배터리 수준과 충전 상태부터 확인하는 것이 좋습니다.</p>
+
+<p>애플리케이션 업데이트 수행이 배터리 수명에 미치는 영향은 배터리 수준 및 기기의 충전 상태에 따라 다릅니다. 기기를 AC 충전기로 충전하는 동안 업데이트 수행이 미치는 영향은 무시해도 좋습니다. 따라서 기기가 범용 충전기에 연결되어 있을 때는 대부분 새로고침 빈도를 최대화할 수 있습니다. 반대로 기기가 충전 중이 아니라면, 업데이트 빈도를 줄이는 것이 배터리 수명 연장에 도움이 됩니다.</p>
+
+<p>마찬가지로 배터리가 거의 방전된 경우, 업데이트 빈도를 줄이거나 중단할 수 있습니다.</p>
+
+
+<h2 id="DetermineChargeState">현재 충전 상태 확인</h2> 
+ 
+<p>먼저 현재 충전 상태를 확인하는 것부터 시작합니다. {@link android.os.BatteryManager}는 배터리 충전 상태 등 충전 정보를 스티키 {@link android.content.Intent}를 통해 브로드캐스트합니다.</p>
+
+<p>스티키 인텐트이므로 {@link android.content.BroadcastReceiver}를 등록할 필요가 없으며 아래 코드 상의 리시버와 같이 간단히 {@code registerReceiver}을(를) 호출하여 {@code null}에 제출하면 현재 배터리 상태가 담긴 인텐트가 반환됩니다. 여기에 실제 {@link android.content.BroadcastReceiver} 개체 사용할 수 있으나, 이후 섹션에서 업데이트를 다루게 되므로 그럴 필요는 없습니다.</p>
+
+<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+Intent batteryStatus = context.registerReceiver(null, ifilter);</pre>
+
+<p>현재 충전 상태와 어떤 충전기(USB 또는 AC 전원)로 충전하는지 추출할 수 있습니다.<p>
+
+<pre>// Are we charging / charged?
+int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
+                     status == BatteryManager.BATTERY_STATUS_FULL;
+
+// How are we charging?
+int chargePlug = battery.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
+boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
+boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
+
+<p>일반적으로 기기가 AC 충전기에 연결된 경우 백그라운드 업데이트 빈도를 최대화합니다. USB를 통해 충전하는 경우 업데이트 빈도를 낮춥니다. 배터리가 방전 중이라면 빈도를 더 많이 낮추도록 합니다.</p>
+
+
+<h2 id="MonitorChargeState">충전 상태 변경사항 모니터링</h2> 
+
+<p>충전 상태는 수시로 변하므로 충전 상태의 변경사항을 확인하고 이에 따라 업데이트 주기를 변경하는 것이 중요합니다.</p>
+
+<p>{@link android.os.BatteryManager}는 기기가 전원에 연결되어 있는지 여부와 관계없이 언제나 액션을 브로드캐스트합니다. 앱이 실행되지 않는 동안에도 이벤트를 수신하는 것이 중요합니다. 특히 백그라운드 업데이트를 실행하기 위해 앱을 시작하는 빈도수에 이벤트가 영향을 주기 때문입니다. 따라서 두 이벤트를 수신하려면 매니페스트에서 {@link android.content.BroadcastReceiver}를 등록하여 인텐트 필터 내에 {@link android.content.Intent#ACTION_POWER_CONNECTED}와 {@link android.content.Intent#ACTION_POWER_DISCONNECTED}를 정의해야 합니다.</p>
+
+<pre>&lt;receiver android:name=".PowerConnectionReceiver">
+  &lt;intent-filter>
+    &lt;action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
+    &lt;action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
+  &lt;/intent-filter>
+&lt;/receiver></pre>
+
+<p>다음의 {@link android.content.BroadcastReceiver} 구현에서 이전 단계에서 설명한 대로 현재 충전 상태와 방법을 알아낼 수 있습니다.</p>
+
+<pre>public class PowerConnectionReceiver extends BroadcastReceiver {
+    &#64;Override
+    public void onReceive(Context context, Intent intent) { 
+        int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+        boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
+                            status == BatteryManager.BATTERY_STATUS_FULL;
+    
+        int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
+        boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
+        boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
+    }
+}</pre>
+
+
+<h2 id="CurrentLevel">현재 배터리 수준 확인</h2> 
+
+<p>현재 배터리 수준을 확인하는 것이 유용한 경우도 있습니다. 배터리 충전이 수준 이하인 경우 백그라운드 업데이트 빈도를 줄일 수 있습니다.</p>
+
+<p>다음은 배터리 상태 정보가 담긴 인텐트에서 현재 배터리 수준 및 충전 상태를 추출하는 방법입니다.</p>
+
+<pre>int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
+int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
+
+float batteryPct = level / (float)scale;</pre>
+
+
+<h2 id="MonitorLevel">배터리 수준 중요 변경사항 모니터링</h2> 
+
+<p>배터리 상태를 지속적으로 확인하는 것은 쉽지 않지만, 꼭 그럴 필요도 없습니다.</p>
+
+<p>배터리 수준을 지속적으로 모니터링하는 것은 앱의 다른 작업보다 배터리에 더 큰 영향을 미칩니다. 따라서 기기가 배터리 전원 부족 상태가 되거나 이를 벗어날 때 등 중요한 변경사항만 확인하는 것이 좋습니다.</p>
+
+<p>다음 코드는 매니페스트의 브로드캐스트 리시버 내의 인텐트 필터를 보여줍니다. 배터리가 얼마 남지 않거나{@link android.content.Intent#ACTION_BATTERY_LOW} 배터리 상태가 회복되었을 때{@link android.content.Intent#ACTION_BATTERY_OKAY} 전달되는 메시지를 수신할 수 있습니다.</p>
+
+<pre>&lt;receiver android:name=".BatteryLevelReceiver">
+&lt;intent-filter>
+  &lt;action android:name="android.intent.action.ACTION_BATTERY_LOW"/>
+  &lt;action android:name="android.intent.action.ACTION_BATTERY_OKAY"/>
+  &lt;/intent-filter>
+&lt;/receiver></pre>
+
+<p>배터리 충전 상태가 매우 낮은 경우 백그라운드 업데이트를 사용하지 않는 것이 좋습니다. 전화기가 꺼져버리면 최신 데이터를 제공하는 것이 의미가 없기 때문입니다.</p>
+
+<p>기기를 충전하는 것은 곧 기기를 도크에 집어넣는 것과 같은 경우가 많습니다. 다음 강의는 현재 도크 상태를 확인하고 기기 도킹의 변경사항을 모니터링하는 방법을 보여줍니다.</p>
+
diff --git a/docs/html-intl/ko/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/ko/training/monitoring-device-state/connectivity-monitoring.jd
new file mode 100644
index 0000000..5666b98
--- /dev/null
+++ b/docs/html-intl/ko/training/monitoring-device-state/connectivity-monitoring.jd
@@ -0,0 +1,70 @@
+page.title=연결 상태 확인 및 모니터링
+parent.title=배터리 수명 최적화
+parent.link=index.html
+
+trainingnavtop=true
+
+previous.title=도킹 상태와 유형 확인 및 모니터링
+previous.link=docking-monitoring.html
+next.title=온디맨드로 브로드캐스트 수신기 조작
+next.link=manifest-receivers.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>강의 목표</h2>
+<ol>
+  <li><a href="#DetermineConnection">인터넷에 연결되어 있는지 확인</a></li>
+  <li><a href="#DetermineType">인터넷 연결 유형 확인</a></li>
+  <li><a href="#MonitorChanges">연결 변경사항 모니터링</a></li>
+</ol>
+
+
+<h2>참고자료</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
+</ul>
+
+</div> 
+</div>
+
+<p>반복 알람과 백그라운드 서비스는 일반적으로 인터넷 리소스 및 캐시 데이터로부터 애플리케이션의 업데이트를 예약하거나 긴 시간이 필요한 다운로드를 실행하는 데 사용됩니다. 하지만 인터넷에 연결되어 있지 않거나 연결이 매우 느려 다운로드를 완료하지 못한다면 업데이트 예약을 해도 소용이 없겠죠?</p>
+
+<p>인터넷에 연결되었는지, 어떤 연결 방식인지를 확인하기 위하여 {@link android.net.ConnectivityManager}를 사용할 수 있습니다.</p>
+
+
+<h2 id="DetermineConnection">인터넷에 연결되어 있는지 확인</h2> 
+ 
+<p>인터넷에 연결되어 있지 않는 경우 인터넷 리소스를 기반으로 한 업데이트 예약을 할 필요가 없습니다. 다음은 활성 네트워크를 쿼리하고 인터넷이 연결되어 있는지 확인하기 위한 {@link android.net.ConnectivityManager} 사용법을 보여줍니다.</p>
+
+<pre>ConnectivityManager cm =
+        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ 
+NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
+boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
+
+
+<h2 id="DetermineType">인터넷 연결 유형 확인</h2> 
+
+<p>현재 사용할 수 있는 인터넷 연결 유형을 확인할 수도 있습니다.</p>
+
+<p>연결은 모바일 데이터, WiMAZ, Wi-Fi 및 이더넷 연결을 통해 제공될 수 있습니다. 아래와 같이 활성 네트워크의 유형을 쿼리하면, 사용 가능한 대역폭에 따라 업데이트 빈도를 변경할 수 있습니다.</p>
+
+<pre>boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;</pre>
+
+<p>모바일 데이터 비용은 Wi-Fi보다 높은 경향이 있으므로, 모바일 연결인 경우 앱의 업데이트 빈도를 줄여야 합니다. 마찬가지로 Wi-Fi로 연결되기까지 큰 용량의 다운로드는 일시 중지해야 합니다.</p>
+
+<p>업데이트를 비활성화한 경우, 인터넷 연결이 재개되면 업데이트를 다시 시작하기 위해 연결 변경사항을 알고 있는 것이 중요합니다.</p>
+
+
+<h2 id="MonitorChanges">연결 변경사항 모니터링</h2> 
+
+<p>연결 정보가 변경될 때마다 {@link android.net.ConnectivityManager}는 {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}({@code "android.net.conn.CONNECTIVITY_CHANGE"}) 액션을 브로드캐스트합니다. 변경사항을 수신하거나 적절히 백그라운드 업데이트를 다시 시작 또는 일시 중지하기 위해 매니페스트에서 브로드캐스트 리시버를 등록할 수 있습니다.</p>
+
+<pre>&lt;action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></pre>
+
+<p>연결 정보는 수시로 변경될 수 있습니다. 모바일과 Wi-Fi 간에 이동할 때마다 브로드캐스트가 실행됩니다. 따라서 업데이트나 다운로드를 일시 중지한 경우에만 브로드캐스트를 확인하는 것이 좋습니다. 업데이트를 시작하기 전이나 이전에 업데이트를 일시 중지했던 경우에만 확인하는 것으로 충분합니다.</p>
+
+<p>이 기술은 다음 강의에서 설명하는 매니페스트에서 선언한 브로드캐스트 리시버의 전환이 필요합니다.</p>
diff --git a/docs/html-intl/ko/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/ko/training/monitoring-device-state/docking-monitoring.jd
new file mode 100644
index 0000000..0cd61a0
--- /dev/null
+++ b/docs/html-intl/ko/training/monitoring-device-state/docking-monitoring.jd
@@ -0,0 +1,74 @@
+page.title=도킹 상태와 유형 확인 및 모니터링
+parent.title=배터리 수명 최적화
+parent.link=index.html
+
+trainingnavtop=true
+previous.title= 배터리 수준 및 충전 상태 모니터링
+previous.link=battery-monitoring.html
+next.title= 연결 상태 확인 및 모니터링
+next.link=connectivity-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>강의 목표</h2>
+<ol>
+  <li><a href="#CurrentDockState">오디오 포커스 요청</a></li>
+  <li><a href="#DockType">현재 도크 유형 확인</a></li>
+  <li><a href="#MonitorDockState">도크 상태 또는 유형 변경사항 모니터링</a></li>
+</ol>
+
+
+<h2>참고자료</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
+</ul>
+
+</div> 
+</div>
+
+<p>Android 기기는 여러 종류의 도크로 도킹될 수 있습니다. 여기에는 카폰 또는 홈 도크와 디지털 및 아날로그 도크가 포함됩니다. 많은 도크가 도킹된 기기에 전기를 공급하므로 일반적으로 충전 상태와 도크 상태는 밀접한 관련이 있습니다.</p>
+
+<p>전화의 도크 상태가 업데이트 빈도에 어떻게 영향을 미치는지는 앱에 따라 다릅니다. 스포츠 센터 앱이라면 데스크톱 도크에서 업데이트 빈도를 높이고 카폰 도크에 연결된 경우 업데이트를 완전히 사용 중지해도 좋습니다. 반대로 교통 상황을 제공하는 앱이라면 카폰 도크에서 업데이트를 최대화해도 좋습니다.</p>
+
+<p>도크 상태는 스티키 {@link android.content.Intent}로 브로드캐스트되어 기기가 도킹되었는지 여부와 도킹되었다면 어떤 종류의 도크인지 알아낼 수 있습니다. </p>
+
+
+<h2 id="CurrentDockState">현재 도킹 상태 확인</h2> 
+ 
+<p>도크 상태의 세부사항은 {@link android.content.Intent#ACTION_DOCK_EVENT} 액션의 스티키 브로드캐스트 내에 추가로 포함됩니다. 스티키 브로드캐스트이므로 {@link android.content.BroadcastReceiver}를 등록할 필요가 없습니다. 다음 스니펫에 표시된 브로드캐스트 수신기와 같이 간단히 {@link android.content.Context#registerReceiver registerReceiver()}를 호출하여 {@code null}에 제출할 수 있습니다. </p>
+
+<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
+Intent dockStatus = context.registerReceiver(null, ifilter);</pre>
+
+<p>{@code EXTRA_DOCK_STATE} 추가로부터 현재 도킹 상태를 추출할 수 있습니다.<p>
+
+<pre>int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
+boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
+
+
+<h2 id="DockType">현재 도크 유형 확인</h2> 
+
+<p>4가지 유형의 도크가 있습니다. 
+<ul><li>카폰</li>
+<li>데스크</li>
+<li>저가형(아날로그) 데스크</li>
+<li>고가형(디지털) 데스크</li></ul></p>
+
+<p>마지막 두 가지 옵션은 API 수준 11의 Android에만 제공되어 있으므로, 디지털 또는 아날로그에 상관하지 않고 관심 있는 세 가지 도크 유형에 대해 확인하는 것이 좋습니다.</p>
+
+<pre>boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
+boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK || 
+                 dockState == EXTRA_DOCK_STATE_LE_DESK ||
+                 dockState == EXTRA_DOCK_STATE_HE_DESK;</pre>
+
+
+<h2 id="MonitorDockState">도크 상태 또는 유형 변경사항 모니터링</h2> 
+
+<p>도킹 상태가 바뀌면 {@link android.content.Intent#ACTION_DOCK_EVENT} 액션이 브로드캐스트됩니다. 기기의 도크 상태 변경사항을 모니터링하려면 아래에 표시된 대로 애플리케이션 매니페스트에서 브로드캐스트 리시버를 등록하세요.</p>
+
+<pre>&lt;action android:name="android.intent.action.ACTION_DOCK_EVENT"/></pre>
+
+<p>이전 단계에서 설명한 기술을 사용하여 리시버 구현에서 도크 유형 및 상태를 추출할 수 있습니다.</p>
diff --git a/docs/html-intl/ko/training/monitoring-device-state/index.jd b/docs/html-intl/ko/training/monitoring-device-state/index.jd
new file mode 100644
index 0000000..f96e2e1
--- /dev/null
+++ b/docs/html-intl/ko/training/monitoring-device-state/index.jd
@@ -0,0 +1,49 @@
+page.title=배터리 수명 최적화
+
+trainingnavtop=true
+startpage=true
+next.title=배터리 수준 및 충전 상태 모니터링
+next.link=battery-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>요구사항과 선행조건</h2> 
+<ul>
+  <li>Android 2.0(API 수준 5) 또는 이상</li>
+  <li> <a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a> 사용 경험</li>
+</ul>
+
+<h2>참고자료</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/services.html">서비스</a>
+</ul>
+
+</div> 
+</div>
+
+<p>좋은 앱은 호스트 기기의 배터리 수명에 미치는 영향이 미미해야 합니다. 강의를 통해 호스트 기기의 상태에 따라 기능과 동작을 수정하는 것을 모니터링하는 앱을 구축할 수 있게 됩니다.</p>
+
+<p>연결이 끊겼을 때 백그라운드 서비스 업데이트를 사용 중지하거나, 배터리 수준이 낮을 때 업데이트 빈도를 줄이는 조치를 취하여, 사용자 환경을 손상시키지 않고 배터리 수명에 미치는 영향을 최소화할 수 있습니다.</p>
+
+<h2>강의</h2> 
+ 
+<!-- Create a list of the lessons in this class along with a short description of each lesson.
+These should be short and to the point. It should be clear from reading the summary whether someone
+will want to jump to a lesson or not.--> 
+ 
+<dl>
+  <dt><b><a href="battery-monitoring.html">배터리 수준 및 충전 상태 모니터링</a></b></dt>
+  <dd>충전 상태에서 현재 배터리 수준 및 변경사항을 확인 및 모니터링하여 앱의 업데이트 빈도를 변경하는 법을 알아보세요.</dd>
+
+  <dt><b><a href="docking-monitoring.html">도킹 상태와 유형 확인 및 모니터링</a></b></dt>
+  <dd>최적의 새로고침 빈도는 호스트 기기의 사용 방법에 따라 달라질 수 있습니다. 앱의 동작에 영향을 미치는 도킹 상태와 도크 유형을 확인 및 모니터링하는 방법을 알아보세요.</dd>
+
+  <dt><b><a href="connectivity-monitoring.html">연결 상태 확인 및 모니터링</a></b></dt>
+  <dd>인터넷 연결 없이 온라인 소스를 통해 앱을 업데이트할 수 없습니다. 연결 상태를 확인하여 백그라운드 업데이트 빈도를 변경하는 방법을 알아보세요. 고대역폭 작업을 시작하기 전에 Wi-Fi 또는 모바일 연결을 확인하는 방법도 알 수 있습니다.</dd>
+
+  <dt><b><a href="manifest-receivers.html">온디맨드로 브로드캐스트 수신기 조작</a></b></dt>
+  <dd>매니페스트 내에 선언했던 브로드캐스트 리시버는 현재 기기 상태에서 필요 없는 것을 사용 중지하도록 런타임 때 전환될 수 있습니다. 기기가 특정 상태에 도달할 때까지 상태 변화 리시버 및 지연 액션을 전환 및 단계적으로 연결하여 효율성을 향상하는 법을 알아보세요.</dd>
+</dl> 
\ No newline at end of file
diff --git a/docs/html-intl/ko/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/ko/training/monitoring-device-state/manifest-receivers.jd
new file mode 100644
index 0000000..c5c311b
--- /dev/null
+++ b/docs/html-intl/ko/training/monitoring-device-state/manifest-receivers.jd
@@ -0,0 +1,50 @@
+page.title=온디맨드로 브로드캐스트 수신기 조작
+parent.title=배터리 수명 최적화
+parent.link=index.html
+
+trainingnavtop=true
+
+previous.title=연결 상태 확인 및 모니터링
+previous.link=connectivity-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>강의 목표</h2>
+<ol>
+  <li><a href="#ToggleReceivers">효율성 향상을 위한 상태 변화 리시버의 전환 및 단계적 연결</a></li>
+</ol>
+
+
+<h2>참고자료</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
+</ul>
+
+</div> 
+</div>
+
+<p>기기 상태 변경을 모니터링하는 가장 간단한 방법은 모니터링하는 각 상태에 대해 {@link android.content.BroadcastReceiver}를 만들어 각각을 애플리케이션 매니페스트에 등록하는 것입니다. 그러면 각 리시버 내에서 현재 기기 상태를 기반으로 반복 알람의 일정을 간단히 변경할 수 있습니다.</p>
+
+<p>이 방법의 부작용은 리시버 중 하나라도 실행되면 매번 앱이 기기의 절전 모드를 해제시킨다는 것입니다.</p>
+
+<p>더 나은 방법은 런타임 때 브로드캐스트 리시버를 사용 중지 또는 사용하도록 설정하는 것입니다. 이렇게 하면 매니페스트에 선언한 리시버를 필요할 때만 시스템 이벤트에 의해 실행되는 수동적인 알람으로 사용할 수 있습니다.</p>
+ 
+
+<h2 id="ToggleReceivers">효율성 향상을 위한 상태 변화 수신기의 전환 및 단계적 연결 </h2> 
+ 
+<p>{@link android.content.pm.PackageManager}를 사용하여 아래에서 표시된 대로 모든 사용 또는 사용 중지하기 원하는 브로드캐스트 리시버를 포함하여 매니페스트 내에 정의된 모든 요소의 사용 가능 상태를 전환할 수 있습니다.</p>
+
+<pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
+
+PackageManager pm = context.getPackageManager();
+
+pm.setComponentEnabledSetting(receiver,
+        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+        PackageManager.DONT_KILL_APP)</pre>
+
+<p>이 방법을 사용하면 연결이 없음을 확인한 경우 연결 변경 리시버를 제외한 모든 리시버를 사용 중지할 수 있습니다. 반대로 한 번 연결되면 연결 변경사항의 수신을 중지할 수 있으며, 업데이트를 수행하고 반복 업데이트 알람의 일정을 변경하기 전에 온라인 상태인지만 간단히 확인할 수 있습니다.</p>
+
+<p>높은 대역폭을 요구하는 다운로드를 중지시키는 데 동일한 기술을 사용할 수 있습니다. 연결 변경을 수신하는 브로드캐스트 리시버를 사용하도록 설정하고 반드시 Wi-Fi에 연결한 후에 다운로드를 시작하도록 합니다.</p>
diff --git a/docs/html-intl/ko/training/multiscreen/adaptui.jd b/docs/html-intl/ko/training/multiscreen/adaptui.jd
new file mode 100644
index 0000000..cb7b66c
--- /dev/null
+++ b/docs/html-intl/ko/training/multiscreen/adaptui.jd
@@ -0,0 +1,212 @@
+page.title=조정형 UI 플로우 구현
+parent.title=다양한 화면 지원
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=다양한 화면 밀도 지원
+previous.link=screendensities.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+ 
+<h2>강의 목표</h2>
+
+<ol>
+  <li><a href="#TaskDetermineCurLayout">현재 레이아웃 확인</a></li>
+  <li><a href="#TaskReactToLayout">현재 레이아웃에 대한 대응</a></li>
+  <li><a href="#TaskReuseFrag">다른 액티비티에 프래그먼트 재사용</a></li>
+  <li><a href="#TaskHandleConfigChanges">화면 구성 변경의 처리</a></li>
+</ol>
+
+<h2>참고자료</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">태블릿 및 휴대전화 지원</a></li>
+</ul>
+ 
+<h2>다운로드 </h2>
+ 
+<div class="download-box">
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+ 
+</div> 
+</div> 
+
+<p>현재 애플리케이션이 표시하는 레이아웃에 따라 UI 플로가 달라질 수 있습니다. 예를 들어 애플리케이션이 이중 창 모드로 되어 있는 경우에는 왼쪽 창에 있는 항목을 클릭하면 오른쪽 창에 콘텐츠가 표시되고, 단일 창 모드로 되어 있는 경우에는 콘텐츠가 해당 창에 표시됩니다(다른 액티비티에서).</p>
+
+
+<h2 id="TaskDetermineCurLayout">현재 레이아웃 확인</h2>
+
+<p>각 레이아웃을 구현하는 방식이 약간씩 다르므로 가장 먼저 해야 할 일은 현재 사용자에게 어떤 레이아웃이 표시되는지 확인하는 것입니다. 예를 들어, 사용자가 '단일 창' 모드에 있는지 혹은 '이중 창' 모드에 있는지 파악할 수 있습니다. 이는 특정 뷰가 존재하고 그 뷰가 표시되는지 조회하면 됩니다.</p>
+
+<pre class="prettyprint">
+public class NewsReaderActivity extends FragmentActivity {
+    boolean mIsDualPane;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main_layout);
+
+        View articleView = findViewById(R.id.article);
+        mIsDualPane = articleView != null &amp;&amp; 
+                        articleView.getVisibility() == View.VISIBLE;
+    }
+}
+</pre>
+
+<p>이 코드는 'article' 창을 사용할 수 있는지 여부를 조회하며 이러한 방식이 특정 레이아웃에 대한 조회를 하드코딩하는 것보다 훨씬 유연한 방식입니다.</p>
+
+<p>다른 구성요소의 존재 여부에 맞게 앱을 조정하는 또 다른 방법은 구성요소에 대한 작업을 수행하기 전에 해당 구성요소를 사용할 수 있는지 확인하는 것입니다. 예를 들어 뉴스 리더 샘플 앱의 경우, 메뉴를 여는 버튼이 있긴 하지만 이 버튼은 Android 3.0 이전 버전에서 실행되는 경우에만 존재합니다(API 수준 11 이상에서  <PH>{@link android.app.ActionBar}</PH> 가 그 기능을 대신하기 때문). 따라서 이 버튼에 대한 이벤트 리스너를 추가하기 위해 다음과 같이 할 수 있습니다.</p>
+
+<pre class="prettyprint">
+Button catButton = (Button) findViewById(R.id.categorybutton);
+OnClickListener listener = /* create your listener here */;
+if (catButton != null) {
+    catButton.setOnClickListener(listener);
+}
+</pre>
+
+
+<h2 id="TaskReactToLayout">현재 레이아웃에 대한 대응</h2>
+
+<p>현재 레이아웃에 따라 일부 액션의 결과가 달라질 수 있습니다. 예를 들어 뉴스 리더 샘플의 헤드라인 목록에서 헤드라인을 클릭하면 UI가 이중 창 모드인 경우에는 기사가 오른쪽 창에서 열리지만, UI가 단일 창 모드인 경우에는 별도의 액티비티가 실행됩니다.</p>
+
+<pre>
+&#64;Override
+public void onHeadlineSelected(int index) {
+    mArtIndex = index;
+    if (mIsDualPane) {
+        /* display article on the right pane */
+        mArticleFragment.displayArticle(mCurrentCat.getArticle(index));
+    } else {
+        /* start a separate activity */
+        Intent intent = new Intent(this, ArticleActivity.class);
+        intent.putExtra("catIndex", mCatIndex);
+        intent.putExtra("artIndex", index);
+        startActivity(intent);
+    }
+}
+</pre>
+
+<p>마찬가지로, 앱이 이중 창 모드인 경우에는 탐색용 탭이 포함된 작업 표시줄이 설정되지만, 앱이 단일 창 모드인 경우에는 스피너 위젯이 포함된 탐색 메뉴가 설정됩니다. 따라서 어떤 경우가 적합한지도 코드에서 확인해야 합니다.</p>
+
+<pre>
+final String CATEGORIES[] = { "Top Stories", "Politics", "Economy", "Technology" };
+
+public void onCreate(Bundle savedInstanceState) {
+    ....
+    if (mIsDualPane) {
+        /* use tabs for navigation */
+        actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_TABS);
+        int i;
+        for (i = 0; i &lt; CATEGORIES.length; i++) {
+            actionBar.addTab(actionBar.newTab().setText(
+                CATEGORIES[i]).setTabListener(handler));
+        }
+        actionBar.setSelectedNavigationItem(selTab);
+    }
+    else {
+        /* use list navigation (spinner) */
+        actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
+        SpinnerAdapter adap = new ArrayAdapter<String>(this, 
+                R.layout.headline_item, CATEGORIES);
+        actionBar.setListNavigationCallbacks(adap, handler);
+    }
+}
+</pre>
+
+
+<h2 id="TaskReuseFrag">다른 액티비티에 프래그먼트 재사용</h2>
+
+<p>다양한 화면의 디자인에 반복되는 패턴에는 일부 화면 구성에서는 창으로 구현되고 다른 화면 구성에서는 별도의 액티비티로 구현되는 인터페이스가 일부 있습니다. 예를 들어 뉴스 리더 샘플에서 뉴스 기사 텍스트가 큰 화면에서는 오른쪽 창에 표시되지만 작은 화면에서는 별도의 액티비티입니다.</p>
+
+<p>이러한 경우 일반적으로 동일한  <PH>{@link android.app.Fragment}</PH> 하위 클래스를 여러 액티비티에 재사용하여 코드 중복을 피할 수 있습니다. 예를 들어 <code>ArticleFragment</code>는 이중 창 레이아웃에서 사용되며 </p>
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+
+<p>작은 화면의 액티비티 레이아웃에 레이아웃 없이 재사용됩니다(<code>ArticleActivity</code>).</p>
+
+<pre>
+ArticleFragment frag = new ArticleFragment();
+getSupportFragmentManager().beginTransaction().add(android.R.id.content, frag).commit();
+</pre>
+
+<p>당연히 이는 XML 레이아웃에서 프래그먼트(fragment)를 명시하는 것과 같은 효과가 있지만 이 경우에는 아티클 프래그먼트가 이 액티비티의 유일한 구성요소이기 때문에 XML 레이아웃은 불필요한 작업이 됩니다.</p>
+
+<p>프래그먼트를 디자인할 때 염두에 두어야 할 매우 중요한 점 한 가지는 특정 액티비티에 대한 강한 커플링을 만들지 말아야 한다는 점입니다. 이렇게 하려면 일반적으로 프래그먼트가 호스트 액티비티와 상호작용해야 하는 모든 방식을 추상화하는 인터페이스를 정의하면 됩니다. 그러면 호스트 액티비티가 해당 인터페이스를 구현합니다.</p>
+
+<p>예를 들어 뉴스 리더 앱의 <code>HeadlinesFragment</code>가 정확하게 그 일을 해 줍니다.</p>
+
+<pre>
+public class HeadlinesFragment extends ListFragment {
+    ...
+    OnHeadlineSelectedListener mHeadlineSelectedListener = null;
+
+    /* Must be implemented by host activity */
+    public interface OnHeadlineSelectedListener {
+        public void onHeadlineSelected(int index);
+    }
+    ...
+
+    public void setOnHeadlineSelectedListener(OnHeadlineSelectedListener listener) {
+        mHeadlineSelectedListener = listener;
+    }
+}
+</pre>
+
+<p>그런 다음 사용자가 헤드라인을 선택하면 프래그먼트가 하드코딩된 특정 액티비티를 알리지 않고 호스트 액티비티가 지정한 리스너를 알립니다.</p>
+
+<pre>
+public class HeadlinesFragment extends ListFragment {
+    ...
+    &#64;Override
+    public void onItemClick(AdapterView&lt;?&gt; parent, 
+                            View view, int position, long id) {
+        if (null != mHeadlineSelectedListener) {
+            mHeadlineSelectedListener.onHeadlineSelected(position);
+        }
+    }
+    ...
+}
+</pre>
+
+<p>이 기술은 <a
+href="{@docRoot}guide/practices/tablets-and-handsets.html">태블릿 및 휴대전화 지원</a> 가이드에서 자세히 설명되어 있습니다.</p>
+
+
+<h2 id="TaskHandleConfigChanges">화면 구성 변경 처리</h2>
+
+<p>인터페이스 중 일부를 구현하는데 별도의 액티비티를 사용 중인 경우 인터페이스의 일관성을 유지하기 위해 특정 구성의 변경(예: 화면 전환)에 대응해야 합니다.</p>
+
+<p>예를 들어 Android 3.0 이상을 실행하는 일반적인 7인치 태블릿에서 뉴스 리더 샘플은 세로 모드에서 실행될 때에는 뉴스 기사를 표시하는 데 별도의 액티비티를 사용하지만 가로모드에서는 이중 창(two-pane) 레이아웃을 사용합니다.</p>
+
+<p>즉 사용자가 세로 모드에 있고 기사를 보기 위한 액티비티가 화면에 있는 경우, 방향이 가로로 바뀌었음을 감지하고, 액티비티를 종료한 다음 주요 액티비티로 돌아감으로써 콘텐츠가 이중 창 레이아웃에서 표시되도록 적절하게 대응해야 합니다.</p>
+
+<pre>
+public class ArticleActivity extends FragmentActivity {
+    int mCatIndex, mArtIndex;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mCatIndex = getIntent().getExtras().getInt("catIndex", 0);
+        mArtIndex = getIntent().getExtras().getInt("artIndex", 0);
+
+        // If should be in two-pane mode, finish to return to main activity
+        if (getResources().getBoolean(R.bool.has_two_panes)) {
+            finish();
+            return;
+        }
+        ...
+}
+</pre>
+
+
diff --git a/docs/html-intl/ko/training/multiscreen/index.jd b/docs/html-intl/ko/training/multiscreen/index.jd
new file mode 100644
index 0000000..d9e09b0
--- /dev/null
+++ b/docs/html-intl/ko/training/multiscreen/index.jd
@@ -0,0 +1,64 @@
+page.title=다양한 화면 지원
+
+trainingnavtop=true
+startpage=true
+next.title=다양한 화면 크기 지원
+next.link=screensizes.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb"> 
+ 
+<h2>요구사항과 선행조건</h2> 
+
+<ul>
+  <li>Android 1.6 이상(샘플 앱의 경우  2.1 이상)</li>
+  <li><a
+href="http://developer.android.com/guide/components/activities.html">액티비티</a> 및 <a href="http://developer.android.com/guide/components/fragments.html">프래그먼트</a>에 대한 기본 지식</li>
+  <li>Android <a
+href="http://developer.android.com/guide/topics/ui/index.html"> 사용자 인터페이스</a> 구축 경험</li>
+  <li><a
+href="{@docRoot}tools/extras/support-library.html">호환성 라이브러리</a>를 사용해야 하는 여러 기능</li>
+</ul>
+
+<h2>참고자료</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">다양한 화면 지원</a></li>
+</ul>
+ 
+<h2>다운로드 </h2> 
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+</div> 
+</div> 
+ 
+<p>Android는 소형 휴대전화에서부터 대형 TV에 이르기까지 다양한 화면 크기의 수많은 기기 유형을 지원합니다. 따라서 애플리케이션이 모든 화면 크기와 호환되어 최대한 많은 사용자가 사용할 수 있도록 디자인하는 것이 중요합니다.</p>
+
+<p>하지만 다양한 기기 유형과 호환되는 것만으로는 충분하지 않습니다. 각 화면 크기에 따라 사용자 상호작용에 유리한 점과 불리한 점이 다릅니다. 따라서 사용자에게 만족을 주고 깊은 인상을 심어주려면 애플리케이션이 단지 여러 화면을 <em>지원</em>하는 데 그치지 않고 화면 구성별로 사용자 환경을 <em>최적화</em>해야 합니다.</p>
+
+<p>이번 강의에서는 여러 화면 구성에 최적화된 사용자 인터페이스를 구현하는 방법을 설명합니다.</p>
+
+<p>각 강의에서 사용되는 코드는 여러 화면에 대한 최적화의 모범 사례를 보여주는 샘플 애플리케이션에서 가져온 것입니다. 샘플(오른쪽)을 다운로드하여 본인의 애플리케이션에 코드로 재사용할 수 있습니다. </p>
+
+<p class="note"><strong>참고:</strong> 이 강의 및 강의와 관련된 샘플은 <a
+href="{@docRoot}tools/extras/support-library.html">호환성 라이브러리</a>를 사용하며 이는 Android 3.0 이하 버전에서 <PH>{@link android.app.Fragment}</PH> API를 사용하기 위해서입니다. 이 강의에서 API를 모두 사용하려면 라이브러리를 다운로드하여 애플리케이션에 추가해야 합니다.</p>
+ 
+
+<h2>강의</h2> 
+ 
+<dl> 
+  <dt><b><a href="screensizes.html">다양한 화면 크기 지원</a></b></dt> 
+    <dd>이 강의에서는 여러 다양한 화면 크기에 조정되는 레이아웃을 디자인하는 방법(유연한 보기 크기, <PH>{@link android.widget.RelativeLayout}</PH>, 화면 크기 및 방향 한정자, 별칭 필터 및 나인-패치 비트맵 사용하기)을 안내합니다.</dd> 
+ 
+  <dt><b><a href="screendensities.html">다양한 화면 밀도 지원</a></b></dt> 
+    <dd>이 강의에서는 다양한 픽셀 밀도를 가진 화면을 지원하는 방법(밀도 독립형 픽셀(density-independent pixel) 사용하기 및 밀도별로 적합한 비트맵 제공하기)을 설명합니다.</dd> 
+ 
+  <dt><b><a href="adaptui.html">조정형 UI 플로우 구현</a></b></dt> 
+    <dd>이 강의에서는 여러 화면 크기/밀도 조합에 조정되도록 UI 플로우를 구현하는 방법(활성 레이아웃의 런타임 감지, 현재 레이아웃에 따른 대응, 화면 구성 변경 처리)을 설명합니다.</dd> 
+</dl> 
diff --git a/docs/html-intl/ko/training/multiscreen/screendensities.jd b/docs/html-intl/ko/training/multiscreen/screendensities.jd
new file mode 100644
index 0000000..5d6e2f3
--- /dev/null
+++ b/docs/html-intl/ko/training/multiscreen/screendensities.jd
@@ -0,0 +1,100 @@
+page.title=다양한 화면 밀도 지원
+parent.title=다양한 화면 지원
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=다양한 화면 크기 지원
+previous.link=screensizes.html
+next.title=조정형 UI 플로우 구현
+next.link=adaptui.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+
+<h2>강의 목표</h2>
+<ol>
+  <li><a href="#TaskUseDP">DIP(Density Independent Pixel) 사용</a></li>
+  <li><a href="#TaskProvideAltBmp">대체 비트맵 제공</a></li>
+</ol>
+
+<h2>참고자료</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">여러 화면 지원</a></li>
+  <li><a href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">아이콘 디자인 가이드라인</a></li>
+</ul>
+
+<h2>다운로드 </h2>
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+ 
+</div> 
+</div> 
+
+<p>이 강의에서는 다양한 리소스를 제공하고 해상도 독립형(resolution-independent) 측정 단위를 사용함으로써 다양한 화면 밀도를 지원하는 방법을 설명합니다.</p>
+
+<h2 id="TaskUseDP">DIP(Density Independent Pixel) 사용</h2>
+
+<p>레이아웃을 디자인할 때 범하기 쉬운 실수 중 하나는 절대 픽셀(absolute pixel)을 사용하여 거리나 크기를 정의하는 것입니다. 각 화면은 픽셀 밀도가 서로 다른데 레이아웃 크기를 픽셀로 정의하면 동일한 픽셀 수치가 다른 기기에서 다른 물리적 크기와 대응할 수 있어 문제가 됩니다. 따라서 크기를 지정할 때에는 항상 <code>dp</code> 또는 <code>sp</code> 단위를 사용하시기 바랍니다. <code>dp</code>는 160dpi에서 픽셀의 물리적 크기에 대응하는 밀도 독립형 픽셀(Density Independent Pixel)입니다. <code>sp</code>는 동일한 기본 단위이지만 사용자의 기본 텍스트 크기에 따라 확대/축소될 수 있으므로(배율 독립형 픽셀(Scale Independent Pixel)임) 텍스트 크기를 정의할 때 이 측정 단위를 사용해야 합니다(레이아웃 크기에 사용해서는 안됨).</p>
+
+<p>예를 들어 두 개의 보기 사이에 여백을 지정할 때 <code>px</code>가 아닌 <code>dp</code>를 사용합니다.</p>
+
+<pre>
+&lt;Button android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:text="&#64;string/clickme"
+    android:layout_marginTop="20dp" /&gt;
+</pre>
+
+<p>텍스트 크기를 지정할 때에는 항상 <code>sp</code>를 사용합니다.</p>
+
+<pre>
+&lt;TextView android:layout_width="match_parent" 
+    android:layout_height="wrap_content" 
+    android:textSize="20sp" /&gt;
+</pre>
+
+
+<h2 id="TaskProvideAltBmp">대체 비트맵 제공</h2>
+
+<p>Android는 화면 밀도가 다양한 기기에서 실행되므로 각각의 일반화된 밀도 종류(저, 중, 고 및 초고 밀도)에 맞춤화된 비트맵 리소스를 제공해야 합니다. 이렇게 하면 모든 화면 밀도에서 좋은 그래픽 품질 및 성능을 얻는데 도움이 됩니다.</p>
+
+<p>이러한 이미지를 생성하려면 벡터 형식의 원본 리소스부터 시작해야 하며 다음 크기 배율을 사용하여 각 밀도에 사용할 이미지를 생성해야 합니다.</p>
+
+<p><ul>
+  <li><code>xhdpi</code>: 2.0
+  <li><code>hdpi</code>: 1.5
+  <li><code>mdpi</code>: 1.0 (기선)
+  <li><code>ldpi</code>: 0.75
+</ul></p>
+
+<p>즉 <code>xhdpi</code> 기기에 대해 200x200 이미지를 생성하는 경우 <code>hdpi</code> 기기에 대해 동일한 리소스를 150x150으로 생성해야 하며 <code>mdpi</code> 기기에 대해서는 100x100, <code>ldpi</code> 기기에 대해서는 75x75으로 동일한 리소스를 생성해야 합니다.</p>
+
+<p>그런 다음 생성된 이미지 파일을 <code>res/</code> 아래의 적절한 하위 디렉토리에 배치하면 시스템에서 애플리케이션이 실행되는 기기의 화면 밀도에 따라 정확한 이미지 파일을 자동으로 선택합니다.</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+  res/
+    drawable-xhdpi/
+        awesomeimage.png
+    drawable-hdpi/
+        awesomeimage.png
+    drawable-mdpi/
+        awesomeimage.png
+    drawable-ldpi/
+        awesomeimage.png
+</pre>
+
+<p>그런 다음 언제든지 <code>&#64;drawable/awesomeimage</code>를 참조하면 시스템이 화면의 dpi에 따라 적합한 비트맵을 선택합니다.</p>
+
+<p>애플리케이션에 사용할 아이콘 저작물 제작에 대한 자세한 도움말 및 가이드라인은 <a
+href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">아이콘 디자인 가이드라인</a>을 참조하세요.</p>
+
diff --git a/docs/html-intl/ko/training/multiscreen/screensizes.jd b/docs/html-intl/ko/training/multiscreen/screensizes.jd
new file mode 100644
index 0000000..f2e77a6
--- /dev/null
+++ b/docs/html-intl/ko/training/multiscreen/screensizes.jd
@@ -0,0 +1,279 @@
+page.title=다양한 화면 크기 지원
+parent.title=다양한 화면 지원
+parent.link=index.html
+
+trainingnavtop=true
+next.title=다양한 화면 밀도 지원
+next.link=screendensities.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+
+<h2>강의 목표</h2>
+<ol>
+  <li><a href="#TaskUseWrapMatchPar">'wrap_content' 및 'match_parent' 사용</a></li>
+  <li><a href="#TaskUseRelativeLayout">RelativeLayout 사용</a></li>
+  <li><a href="#TaskUseSizeQuali">크기 한정자 사용</a></li>
+  <li><a href="#TaskUseSWQuali">최소 너비 한정자 사용</a></li>
+  <li><a href="#TaskUseAliasFilters">레이아웃 별칭 사용</a></li>
+  <li><a href="#TaskUseOriQuali">방향 한정자 사용</a></li>
+  <li><a href="#TaskUse9Patch">나인-패치 비트맵 사용</a></li>
+</ol>
+
+<h2>참고자료</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">다양한 화면 지원</a></li>
+</ul>
+
+<h2>다운로드 </h2> 
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+</div> 
+</div> 
+
+<p>이 강의에서는 다양한 화면 크기를 지원하는 방법을 설명합니다.</p>
+<ul> 
+  <li>화면에 맞게 레이아웃 크기 조정</li> 
+  <li>화면 구성에 따라 적합한 UI 레이아웃 제공</li> 
+  <li>올바른 화면에 올바른 레이아웃 적용</li>
+  <li>정확하게 확대되는 비트맵 제공</li> 
+</ul> 
+
+
+<h2 id="TaskUseWrapMatchPar">'wrap_content' 및 'match_parent' 사용</h2> 
+
+<p>레이아웃이 다양한 화면 크기에 따라 유연하게 조정되도록 하려면 일부 뷰 구성요소의 너비와 높이에 <code>"wrap_content"</code> 및 <code>"match_parent"</code>를 사용해야 합니다. <code>"wrap_content"</code>를 사용하면 뷰의 너비와 높이가 해당 뷰 내에 콘텐츠가 들어가는데 필요한 최소 크기로 설정되는 반면, <code>"match_parent"</code>(API 수준 8 이전에는 <code>"fill_parent"</code>라고도 함)를 사용하면 구성요소가 확장되어 부모뷰의 크기와 일치하게 됩니다.</p>
+
+<p>하드코딩된 크기 대신 <code>"wrap_content"</code> 크기 값을 사용하면 뷰가 해당 뷰에 필요한 여백만을 사용하며 <code>"match_parent"</code> 크기 값을 사용하면 뷰가 확대되어 사용 가능한 여백을 채웁니다. 예를 들면 다음과 같습니다.</p>
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane_with_bar.xml all}
+
+<p>샘플에서 구성요소 크기에 특정 크기가 아닌 <code>"wrap_content"</code> 및 <code>"match_parent"</code>가 사용된 것을 눈여겨 보시기 바랍니다. 이렇게 하면 레이아웃이 다양한 화면 크기 및 방향에 맞게 조정됩니다.</p>
+
+<p>예를 들어 세로 및 가로 모드에서 레이아웃은 다음과 같이 표시됩니다. 구성요소의 크기가 너비와 높이에 맞게 자동으로 조정됩니다.</p>
+
+<img src="{@docRoot}images/training/layout-hvga.png" />
+<p class="img-caption"><strong>그림 1.</strong> 세로 모드(왼쪽) 및 가로 모드(오른쪽)에서의 뉴스 리더 샘플 앱</p>
+
+
+<h2 id="TaskUseRelativeLayout">RelativeLayout 사용</h2> 
+
+<p>비교적 복잡한 레이아웃을 만들려면 <PH>{@link android.widget.LinearLayout}의 중첩 인스턴스와</PH> <code>"wrap_content"</code> 및 <code>"match_parent"</code> 크기의 조합을 사용합니다. 하지만 <PH>{@link android.widget.LinearLayout}</PH> 을 사용하면 자식뷰의 여백 관계를 정확하게 제어할 수 없으며 <PH>{@link android.widget.LinearLayout}</PH> 단순히 나란하게 표시됩니다. 자식뷰를 일직선이 아닌 다양한 방향으로 표시해야 하는 경우 구성요소 사이의 여백 관계를 중심으로 레이아웃을 지정할 수 있는 <PH>{@link android.widget.RelativeLayout}</PH>을 사용하는 것이 더 좋은 방법일 수 있습니다. 예를 들어 화면 왼쪽에 하나의 자식뷰를, 오른쪽에 다른 자식뷰를 정렬할 수 있습니다.</p>
+
+<p>예를 들면 다음과 같습니다.</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;TextView
+        android:id="&#64;+id/label"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="Type here:"/&gt;
+    &lt;EditText
+        android:id="&#64;+id/entry"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="&#64;id/label"/&gt;
+    &lt;Button
+        android:id="&#64;+id/ok"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="&#64;id/entry"
+        android:layout_alignParentRight="true"
+        android:layout_marginLeft="10dp"
+        android:text="OK" /&gt;
+    &lt;Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toLeftOf="&#64;id/ok"
+        android:layout_alignTop="&#64;id/ok"
+        android:text="Cancel" /&gt;
+&lt;/RelativeLayout&gt;
+</pre>
+
+<p>그림 2는 이 레이아웃이 QVGA 화면에 어떻게 표시되는지 보여줍니다.</p>
+
+<img src="{@docRoot}images/training/relativelayout1.png" />
+<p class="img-caption"><strong>그림 2.</strong> QVGA 화면(작은 화면)의 스크린샷</p>
+
+<p>그림 3은 이 레이아웃이 큰 화면에서 어떻게 표시되는지 보여줍니다.</p>
+
+<img src="{@docRoot}images/training/relativelayout2.png" />
+<p class="img-caption"><strong>그림 3.</strong> WSVGA 화면(큰 화면)의 스크린샷</p>
+
+<p>구성요소의 크기가 변하더라도 여백 관계가  <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>.</p>
+
+ 
+<h2 id="TaskUseSizeQuali">크기 한정자 사용</h2> 
+
+<p>이전 섹션에서 다룬 유연한 레이아웃이나 상대적 레이아웃으로는 한계가 있습니다. 이러한 레이아웃이 구성요소 내부 및 주위의 여백을 확장하여 다양한 화면에 맞게 조정되긴 하지만 화면 크기별로 최적의 사용자 환경을 제공하지는 못할 수 있습니다. 따라서 애플리케이션은 유연한 레이아웃을 구현할 뿐 아니라 다양한 화면 구성을 타겟팅할 수 있도록 다양한 대체 레이아웃을 제공해야 합니다. 그 방법은 런타임이 현재 기기의 구성에 따라 적합한 리소스(예: 화면 크기별로 다른 레이아웃 디자인)를 자동으로 선택하도록 해 주는 <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">구성 한정자</a>를 사용하는 것입니다.</p>
+
+<p>예를 들어 많은 애플리케이션이 큰 화면에 '이중 창(two pane)' 패턴을 구현합니다(한 쪽 창에는 아이템의 목록을 표시하고 다른 창에는 콘텐츠를 표시). 태블릿 및 TV는 두 개의 창 모두가 화면에 동시에 들어갈 정도로 크지만 휴대전화 화면은 두 창을 따로 표시해야 합니다. 따라서 이러한 레이아웃을 구현하려면 다음 파일이 있어야 합니다.</p>
+
+<ul>
+  <li><code>res/layout/main.xml</code>, 단일 창(기본값) 레이아웃:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+</li>
+  <li><code>res/layout-large/main.xml</code>, 이중 창 레이아웃:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+</li>
+</ul>
+
+<p>두 번째 레이아웃의 디렉토리 이름에서 <code>large</code> 한정자를 눈여겨 보시기 바랍니다. 이 레이아웃은 대형(예: 7인치 태블릿 이상)으로 분류된 화면을 가진 기기에서 선택됩니다. 한정자가 없는 다른 레이아웃은 소형 기기에서 선택됩니다.</p>
+
+
+<h2 id="TaskUseSWQuali">최소 너비 한정자 사용</h2>
+
+<p>Android 3.2 이전 기기에서 개발자가 어려움을 느꼈던 문제 중의 하나는 Dell Streak, 최초의 Galaxy 탭 및 7인치 태블릿에 두루 사용되는 '큰' 화면 크기 빈이었습니다. 하지만 많은 애플리케이션은 화면이 '큰' 기기라 하더라도 이 카테고리(예: 5인치 및 7인치 기기)에 속하는 다양한 기기에 다양한 레이아웃을 표시하고 싶어 합니다. 이것이 Android에서 Android 3.2에 '최소 너비' 한정자를 도입한 이유입니다.</p>
+
+<p>최소 너비 한정자를 사용하면 dp 단위의 특정 최소 너비를 가진 화면을 타겟팅할 수 있습니다. 예를 들어 일반적인 7인치 태블릿에는 600dp라는 최소 너비가 있으므로 이러한 화면에서 두 개의 창에 UI를 사용(작은 화면에서는 단일 목록 사용) 하고 싶은 경우 단일 및 이중 창 레이아웃에 이전 섹션과 동일한 레이아웃을 사용하면 되지만, 이중 창 레이아웃은 최소 너비가 600dp인 화면에 사용한다는 것을 나타내기 위해서 <code>large</code> 크기 한정자 대신 <code>sw600dp</code>를 사용해야 합니다.</p>
+
+<ul>
+  <li><code>res/layout/main.xml</code>, 단일 창(기본값) 레이아웃:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+</li>
+  <li><code>res/layout-sw600dp/main.xml</code>, 이중 창 레이아웃:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+</li>
+</ul>
+
+<p>이는 최소 너비가 600dp 이상인 기기는 <code>layout-sw600dp/main.xml</code>(이중 창) 레이아웃을 선택하는 반면 소형 화면은 <code>layout/main.xml</code> (단일 창) 레이아웃을 선택한다는 것을 의미합니다.</p>
+
+<p>하지만 Android 3.2 이전 기기는 <code>sw600dp</code>를 크기 한정자로 인식하지 않기 때문에 최소 너비 한정자가 제대로 작동하지 않으며 따라서 <code>large</code> 한정자도 계속 사용해야 합니다. 따라서 <code>res/layout-large/main.xml</code>라는 이름의 파일이 있어야 하며 이 파일은 <code>res/layout-sw600dp/main.xml</code>과 동일한 파일입니다. 다음 섹션에서는 이런 식으로 레이아웃 파일이 중복되지 않게 하는 기술을 살펴보겠습니다.</p>
+
+
+<h2 id="TaskUseAliasFilters">레이아웃 별칭 사용</h2> 
+
+<p>최소 너비 한정자는 Android 3.2 이상 버전에서만 사용할 수 있습니다. 따라서 이전 버전과 호환되도록 하려면 추상화 크기 빈(소형, 보통, 대형 및 초대형)을 계속 사용해야 합니다. 예를 들어 휴대전화에서는 단일 창 UI가 표시되고 7인치 태블릿, TV 및 기타 대형 기기에서는 다중 창 UI가 표시되도록 UI를 디자인하려면 다음 파일을 제공해야 합니다.</p>
+
+<p><ul>
+<li><code>res/layout/main.xml:</code> 단일 창 레이아웃</li>
+<li><code>res/layout-large:</code> 다중 창 레이아웃</li>
+<li><code>res/layout-sw600dp:</code> 다중 창 레이아웃</li>
+</ul></p>
+
+<p>마지막 두 개의 파일은 하나는 Android 3.2 기기와 일치하고 다른 하나는 이전 버전의 Android가 탑재된 태블릿 및 TV를 위한 것으로 서로 동일한 파일입니다.</p>
+
+<p>이 경우 별칭 파일을 사용하면 태블릿 및 TV용으로 동일한 파일이 중복되지 않도록 하고 이를 관리해야 하는 번거로움을 없앨 수 있습니다. 예를 들어 다음 레이아웃을 지정할 수 있습니다.</p>
+
+<ul>
+<li><code>res/layout/main.xml</code>, 단일 창 레이아웃</li>
+<li><code>res/layout/main_twopanes.xml</code>, 이중 창 레이아웃</li>
+</ul>
+
+<p>또한 다음 두 개의 파일을 추가합니다.</p>
+
+<p><ul>
+<li><code>res/values-large/layout.xml</code>:
+<pre>
+&lt;resources>
+    &lt;item name="main" type="layout">&#64;layout/main_twopanes&lt;/item>
+&lt;/resources>
+</pre>
+</li>
+
+<li><code>res/values-sw600dp/layout.xml</code>:
+<pre>
+&lt;resources>
+    &lt;item name="main" type="layout">&#64;layout/main_twopanes&lt;/item>
+&lt;/resources>
+</pre>
+
+</li>
+</ul></p>
+
+<p>뒤에 있는 두 개의 파일은 콘텐츠는 동일하지만 실제로 레이아웃을 지정하지는 않으며 단지 <PH>{@code main}</PH> 이 <PH>{@code main_twopanes}에 대한 별칭이 되도록 설정합니다.</PH> 이 파일에는 <code>large</code> 및 <code>sw600dp</code> 선택기가 있으므로 Android 버전에 관계없이 태블릿 및 TV에 적용됩니다(3.2 버전 이전의 태블릿 및 TV는
+<PH>{@code large}</PH>,3.2 이후 버전은 <code>sw600dp</code>와 일치).</p>
+
+
+<h2 id="TaskUseOriQuali">방향 한정자 사용</h2> 
+
+<p>일부 레이아웃은 가로 및 세로 방향 모두에서 잘 작동하지만 대부분의 레이아웃은 조정을 통해 많은 이점을 누릴 수 있습니다. 다음은 뉴스 리더 샘플 앱에서 화면 크기와 방향별로 레이아웃이 어떻게 작동하는지 보여줍니다.</p>
+
+<p><ul>
+<li><b>소형 화면, 세로:</b> 단일 창, 로고 표시</li>
+<li><b>소형 화면, 가로:</b> 단일 창, 로고 표시</li>
+<li><b>7인치 태블릿, 세로:</b> 단일 창, 작업 표시줄 표시</li>
+<li><b>7인치 태블릿, 가로:</b> 이중 창, 와이드, 작업 표시줄 표시</li>
+<li><b>10인치 태블릿, 세로:</b> 이중 창, 내로우, 작업 표시줄 표시</li>
+<li><b>10인치 태블릿, 가로:</b> 이중 창, 와이드, 작업 표시줄 표시</li>
+<li><b>TV, 가로:</b> 이중 창, 와이드, 작업 표시줄 표시</li>
+</ul></p>
+
+<p>따라서 이러한 각 레이아웃은 <code>res/layout/</code> 디렉토리의 XML 파일에서 지정됩니다. 그러면 앱은 각 레이아웃을 다양한 화면 구성에 지정하기 위해 레이아웃 별칭을 사용해 레이아웃을 각 구성과 일치시킵니다.</p>
+
+<p><code>res/layout/onepane.xml:</code></p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+
+<p><code>res/layout/onepane_with_bar.xml:</code></p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane_with_bar.xml all}
+
+<p><code>res/layout/twopanes.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+
+<p><code>res/layout/twopanes_narrow.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes_narrow.xml all}
+
+<p>가능한 레이아웃을 모두 지정했으므로 구성 한정자를 사용하여 올바른 레이아웃을 각 구성에 매핑하기만 하면 되며 이는 레이아웃 별칭 기술을 사용하면 됩니다.</p>
+
+<p><code>res/values/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values/layouts.xml all}
+
+<p><code>res/values-sw600dp-land/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-sw600dp-land/layouts.xml
+all}
+
+<p><code>res/values-sw600dp-port/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-sw600dp-port/layouts.xml
+all}
+
+<p><code>res/values-large-land/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-large-land/layouts.xml all}
+
+<p><code>res/values-large-port/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-large-port/layouts.xml all}
+
+
+
+<h2 id="TaskUse9Patch">나인-패치 비트맵 사용</h2>
+
+<p>일반적으로 다양한 화면 크기를 지원하려면 이미지 리소스도 다양한 크기에 맞게 조정될 수 있어야 합니다. 예를 들어 버튼 배경은 버튼 배경이 적용되는 모든 버튼 모양과 맞아야 합니다.</p>
+
+<p>구성요소에 크기가 바뀔 수 있는 단순한 이미지를 사용하는 경우 런타임이 이미지를 균등하게 확대하거나 축소하기 때문에 기대에 미치지 못하는 결과가 나옵니다. 이에 대한 해결 방법은 확대될 수 있는 영역과 확대될 수 없는 영역을 나타내는 특별한 형식의 PNG 파일인 나인-패치 비트맵을 사용하는 것입니다.</p>
+
+<p>따라서 다양한 크기를 가진 구성요소에 사용할 비트맵을 디자인할 때에는 항상 나인-패치를 사용하시기 바랍니다. 비트맵을 나인-패치로 변환하려면 일반적인 이미지부터 시작합니다(그림 4, 명확하게 보이도록 4배 줌으로 표시).</p>
+
+<img src="{@docRoot}images/training/button.png" />
+<p class="img-caption"><strong>그림 4.</strong> <code>button.png</code></p>
+
+<p>그 다음 이 이미지에 <ode
+href="{@docRoot}tools/help/draw9patch.html">SDK의 <code>draw9patch</code></a> 유틸리티(<code>tools/</code> 디렉토리에 있음)를 실행합니다. 이 때 왼쪽 및 상단 테두리를 따라 픽셀을 그려 확대되어야 할 영역을 표시할 수 있습니다. 또한 오른쪽 및 하단 테두리를 따라 픽셀을 그려 콘텐츠가 들어가야 할 영역을 표시할 수 있으며 그 결과는 그림 5와 같습니다.</p>
+
+<img src="{@docRoot}images/training/button_with_marks.png" />
+<p class="img-caption"><strong>그림 5.</strong> <code>button.9.png</code></p>
+
+<p>테두리를 따라 있는 검은색 픽셀을 눈여겨 보시기 바랍니다. 상단 및 왼쪽 테두리의 픽셀은 이미지가 확대될 수 있는 영역을 나타내며 오른쪽 및 하단 테두리는 콘텐츠가 위치해야 하는 영역을 나타냅니다.</p>
+
+<p>또한 <code>.9.png</code> 확장자를 확인하시기 바랍니다. 프레임워크는 이 확장자를 통해 이미지가 일반적인 PNG 이미지가 아닌 나인-패치 이미지임을 감지할 수 있으므로 이 확장자를 사용해야 합니다.</p>
+
+<p><code>android:background="&#64;drawable/button"</code>을 설정하여 이 배경을 구성요소에 적용하면 그림 6의 다양한 크기로 표시된 것처럼 프레임워크가 버튼의 크기를 수용할 수 있도록 이미지를 올바르게 확대합니다.</p>
+
+<img src="{@docRoot}images/training/buttons_stretched.png" />
+<p class="img-caption"><strong>그림 6.</strong> 다양한 크기에 <code>button.9.png</code> 나인-패치를 사용하는 버튼</p>
+
diff --git a/docs/html-intl/ru/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/ru/training/monitoring-device-state/battery-monitoring.jd
new file mode 100644
index 0000000..26daf04
--- /dev/null
+++ b/docs/html-intl/ru/training/monitoring-device-state/battery-monitoring.jd
@@ -0,0 +1,120 @@
+page.title=Monitoring the Battery Level and Charging State
+parent.title=Optimizing Battery Life
+parent.link=index.html
+
+trainingnavtop=true
+next.title=Determining and Monitoring the Docking State and Type
+next.link=docking-monitoring.html
+
+@jd:body
+ 
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>Содержание урока</h2>
+<ol>
+  <li><a href="#DetermineChargeState">Определение текущего состояния зарядки</a></li>
+  <li><a href="#MonitorChargeState">Отслеживание изменений состояния зарядки</a></li>
+  <li><a href="#CurrentLevel">Определение текущего уровня заряда батареи</a></li>
+  <li><a href="#MonitorLevel">Отслеживание существенных изменений уровня заряда батареи</a></li>
+</ol>
+
+<h2>Дополнительные материалы</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">Намерения и фильтры намерений</a>
+</ul>
+
+</div> 
+</div>
+ 
+<p>Если вы хотите изменить частоту фоновых обновлений, чтобы продлить время работы устройства от батареи, сначала рекомендуется проверить текущий уровень заряда и состояние зарядки.</p>
+
+<p>Именно от этих двух факторов зависит, как обновления повлияют на время работы устройства от батареи. Когда устройство подключено к сети переменного тока, приложение можно обновлять максимально часто, поскольку процесс обновления не будет сказываться на уровне заряда батареи. Если устройство не подключено к сети, следует воздержаться от обновлений, чтобы продлить время его работы от батареи.</p>
+
+<p>Если заряд батареи практически исчерпан, можно снизить частоту обновлений (вплоть до их полного прекращения).</p>
+
+
+<h2 id="DetermineChargeState">Определение текущего состояния зарядки</h2> 
+ 
+<p>Начните с определения текущего состояния зарядки. {@link android.os.BatteryManager} передает все сведения о батарее и зарядке в закрепленном намерении {@link android.content.Intent}, которое содержит также информацию о состоянии зарядки.</p>
+
+<p>Поскольку это намерение является закрепленным, регистрировать {@link android.content.BroadcastReceiver} не нужно. Чтобы получить текущее состояние батареи в виде намерения, нужно вызвать {@code registerReceiver}, передав {@code null} в качестве приемника, как показано в коде ниже. Можно также передать фактический объект {@link android.content.BroadcastReceiver}, но это необязательно, поскольку обработка обновлений будет выполняться позднее.</p>
+
+<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+Intent batteryStatus = context.registerReceiver(null, ifilter);</pre>
+
+<p>Можно извлечь данные как о текущем состоянии, так и об источнике зарядки (USB или сеть переменного тока), если устройство заряжается:<p>
+
+<pre>// Are we charging / charged?
+int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
+                     status == BatteryManager.BATTERY_STATUS_FULL;
+
+// How are we charging?
+int chargePlug = battery.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
+boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
+boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
+
+<p>Как правило, если устройство подключено к сети переменного тока, фоновые обновления можно выполнять с максимальной частотой. Если устройство заряжается через USB, частоту можно несколько сократить, а если устройство не подключено к сети&nbsp;– сократить еще больше.</p>
+
+
+<h2 id="MonitorChargeState">Отслеживание изменений состояния зарядки</h2> 
+
+<p>Состояние зарядки изменяется всякий раз, когда пользователь подключает устройство к источнику питания. Поскольку это случается довольно часто, важно отслеживать изменения этого состояния и соответствующим образом корректировать частоту обновления приложения.</p>
+
+<p>{@link android.os.BatteryManager} передает действие каждый раз, когда устройство подключается к источнику питания или отключается от него. Важно получать эти события, даже если приложение не работает. Они помогут, в частности, определить, как часто будет запускаться приложение для выполнения фоновых обновлений. Чтобы отслеживать их, зарегистрируйте {@link android.content.BroadcastReceiver} в манифесте, задав {@link android.content.Intent#ACTION_POWER_CONNECTED} и {@link android.content.Intent#ACTION_POWER_DISCONNECTED} в фильтре намерений.</p>
+
+<pre>&lt;receiver android:name=".PowerConnectionReceiver">
+  &lt;intent-filter>
+    &lt;action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
+    &lt;action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
+  &lt;/intent-filter>
+&lt;/receiver></pre>
+
+<p>Соответствующая реализация {@link android.content.BroadcastReceiver} позволяет извлечь данные о текущем состоянии и способе зарядки, как описано в предыдущем шаге.</p>
+
+<pre>public class PowerConnectionReceiver extends BroadcastReceiver {
+    &#64;Override
+    public void onReceive(Context context, Intent intent) { 
+        int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+        boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
+                            status == BatteryManager.BATTERY_STATUS_FULL;
+    
+        int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
+        boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
+        boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
+    }
+}</pre>
+
+
+<h2 id="CurrentLevel">Определение текущего уровня заряда батареи</h2> 
+
+<p>В некоторых случаях целесообразно определять текущий уровень заряда батареи. Если он ниже определенного значения, частоту фоновых обновлений следует уменьшить.</p>
+
+<p>Узнать, каков в настоящий момент заряд батареи, можно путем извлечения данных о текущем и максимальном уровне заряда из намерения состояния батареи, как показано в этом коде:</p>
+
+<pre>int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
+int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
+
+float batteryPct = level / (float)scale;</pre>
+
+
+<h2 id="MonitorLevel">Отслеживание существенных изменений уровня заряда батареи</h2> 
+
+<p>Отслеживать состояние батареи непрерывно не следует,</p>
+
+<p>поскольку при этом нагрузка на батарею будет значительно выше, чем при обычной работе приложения. Рекомендуется отслеживать только существенные изменения уровня заряда, в частности, переход устройства в состояние низкого заряда и обратно.</p>
+
+<p>Фрагмент манифеста, приведенный ниже, относится к фильтру намерений в приемнике широковещательных намерений. Приемник срабатывает, когда батарея устройства переходит в состояние низкого заряда или выходит из него. Для этого прослушиваются события {@link android.content.Intent#ACTION_BATTERY_LOW} и {@link android.content.Intent#ACTION_BATTERY_OKAY}.</p>
+
+<pre>&lt;receiver android:name=".BatteryLevelReceiver">
+&lt;intent-filter>
+  &lt;action android:name="android.intent.action.ACTION_BATTERY_LOW"/>
+  &lt;action android:name="android.intent.action.ACTION_BATTERY_OKAY"/>
+  &lt;/intent-filter>
+&lt;/receiver></pre>
+
+<p>Общепринятой практикой является отключение всех фоновых обновлений, когда заряд батареи достигает критически низкого уровня. Будет уже неважно, насколько актуальны данные в вашем приложении, если телефон самопроизвольно выключится, прежде чем пользователь успеет их просмотреть.</p>
+
+<p>Во многих случаях начало зарядки устройства совпадает с моментом его установки в док-станцию. В следующем уроке описаны способы определения текущего состояния подключения устройства к док-станции и отслеживания изменений этого состояния.</p>
+
diff --git a/docs/html-intl/ru/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/ru/training/monitoring-device-state/connectivity-monitoring.jd
new file mode 100644
index 0000000..ca1a942
--- /dev/null
+++ b/docs/html-intl/ru/training/monitoring-device-state/connectivity-monitoring.jd
@@ -0,0 +1,70 @@
+page.title=Determining and Monitoring the Connectivity Status
+parent.title=Optimizing Battery Life
+parent.link=index.html
+
+trainingnavtop=true
+
+previous.title=Determining and Monitoring the Docking State and Type
+previous.link=docking-monitoring.html
+next.title=Manipulating Broadcast Receivers On Demand
+next.link=manifest-receivers.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>Содержание урока</h2>
+<ol>
+  <li><a href="#DetermineConnection">Определение наличия подключения к Интернету</a></li>
+  <li><a href="#DetermineType">Определение типа подключения к Интернету</a></li>
+  <li><a href="#MonitorChanges">Отслеживание изменения возможностей подключения</a></li>
+</ol>
+
+
+<h2>Дополнительные материалы</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">Намерения и фильтры намерений</a>
+</ul>
+
+</div> 
+</div>
+
+<p>Чаще всего повторяющиеся оповещения и фоновые службы используются для планового обновления приложения из Интернета, кэширования или загрузки больших объемов данных. Однако если подключение к Интернету не установлено или скорость соединения слишком низкая, выполнять загрузку не имеет смысла.</p>
+
+<p>Проверить наличие подключения к Интернету и его тип можно с помощью {@link android.net.ConnectivityManager}.</p>
+
+
+<h2 id="DetermineConnection">Определение наличия подключения к Интернету</h2> 
+ 
+<p>Если подключение отсутствует, нет смысла планировать обновление из Интернета. В приведенном ниже коде показано, как использовать {@link android.net.ConnectivityManager} для отправки запросов об активной сети и определять возможности подключения.</p>
+
+<pre>ConnectivityManager cm =
+        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ 
+NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
+boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
+
+
+<h2 id="DetermineType">Определение типа подключения к Интернету</h2> 
+
+<p>Также можно определить тип доступного в настоящий момент подключения к Интернету.</p>
+
+<p>Устройство может подключаться по сети мобильной связи, WiMAX, Wi-Fi и Ethernet. Получив ответ на запрос о типе активной сети, как показано ниже, можно изменить частоту обновлений на основе ее пропускной способности.</p>
+
+<pre>boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;</pre>
+
+<p>Стоимость передачи данных по мобильной сети, как правило, значительно выше, чем по сети Wi-Fi, поэтому частота обновлений в первом случае должна быть ниже. То же касается загрузки большого количества данных: ее следует отложить, пока не будет установлено подключение к сети Wi-Fi.</p>
+
+<p>Когда обновления отключены, необходимо отслеживать изменения доступных соединений, чтобы возобновить их сразу после подключения устройства к Интернету.</p>
+
+
+<h2 id="MonitorChanges">Отслеживание изменения возможностей подключения</h2> 
+
+<p>{@link android.net.ConnectivityManager} передает действие {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION} ({@code "android.net.conn.CONNECTIVITY_CHANGE"}) при каждом изменении сведений о подключении. Зарегистрируйте в манифесте приемник широковещательных намерений, чтобы отслеживать эти изменения и запускать (или приостанавливать) фоновые обновления соответствующим образом.</p>
+
+<pre>&lt;action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></pre>
+
+<p>Доступные соединения могут меняться очень часто&nbsp;– эта передача инициируется при каждом переключении между сетью мобильной связи и Wi-Fi. Ее рекомендуется отслеживать, только когда необходимо запускать ранее приостановленные обновления или загрузки. Как правило, достаточно проверить наличие подключения к Интернету перед запуском обновления и, если оно отсутствует, приостановить дальнейшие обновления до восстановления соединения.</p>
+
+<p>Для использования этого метода необходимо включать и отключать приемники широковещательных намерений, объявленные в манифесте. В следующем уроке описано, как это делать.</p>
diff --git a/docs/html-intl/ru/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/ru/training/monitoring-device-state/docking-monitoring.jd
new file mode 100644
index 0000000..d94f357
--- /dev/null
+++ b/docs/html-intl/ru/training/monitoring-device-state/docking-monitoring.jd
@@ -0,0 +1,74 @@
+page.title=Determining and Monitoring the Docking State and Type
+parent.title=Optimizing Battery Life
+parent.link=index.html
+
+trainingnavtop=true
+previous.title= Monitoring the Battery Level and Charging State
+previous.link=battery-monitoring.html
+next.title= Determining and Monitoring the Connectivity Status
+next.link=connectivity-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>Содержание урока</h2>
+<ol>
+  <li><a href="#CurrentDockState">Запрос аудиофокуса</a></li>
+  <li><a href="#DockType">Определение типа док-станции</a></li>
+  <li><a href="#MonitorDockState">Отслеживание изменений состояния подключения к док-станции и ее типа</a></li>
+</ol>
+
+
+<h2>Дополнительные материалы</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">Намерения и фильтры намерений</a>
+</ul>
+
+</div> 
+</div>
+
+<p>Устройства под управлением ОС Android можно подключать к нескольким типам док-станций: настольным, которые делятся на цифровые и аналоговые, и автомобильным. В большинстве случаев устройства заряжаются при подключении к док-станции, поэтому состояние подключения к док-станции часто связано с состоянием зарядки.</p>
+
+<p>Насколько состояние подключения к док-станции влияет на частоту обновления, зависит от конкретного приложения. Например, можно увеличить частоту обновлений приложения, показывающего спортивные новости, когда устройство подключено к настольной док-станции, и полностью отключить обновления при подключении к автомобильной. И наоборот, если используется приложение, которое в фоновом режиме загружает данные о дорожной обстановке, то при подключении устройства к автомобильной док-станции следует выполнять обновления максимально часто.</p>
+
+<p>Состояние подключения к док-станции также передается в виде закрепленного намерения {@link android.content.Intent}, что позволяет запрашивать сведения о наличии подключения к док-станции и ее типе.</p>
+
+
+<h2 id="CurrentDockState">Определение текущего состояния подключения к док-станции</h2> 
+ 
+<p>Сведения о состоянии подключения к док-станции передаются в качестве дополнительных данных в закрепленном оповещении действия {@link android.content.Intent#ACTION_DOCK_EVENT}. Поскольку это закрепленное намерение, регистрировать {@link android.content.BroadcastReceiver} не требуется. Достаточно вызвать {@link android.content.Context#registerReceiver registerReceiver()}, передав {@code null} в качестве приемника широковещательных намерений, как показано в коде ниже.</p>
+
+<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
+Intent dockStatus = context.registerReceiver(null, ifilter);</pre>
+
+<p>Сведения о текущем состоянии подключения к док-станции можно извлечь из дополнительных данных {@code EXTRA_DOCK_STATE}:<p>
+
+<pre>int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
+boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
+
+
+<h2 id="DockType">Определение типа док-станции</h2> 
+
+<p>Док-станция, к которой подключено устройство, может быть одного из четырех типов: 
+<ul><li>автомобильная;</li>
+<li>настольная;</li>
+<li>настольная с минимальным набором функций (аналоговая);</li>
+<li>настольная с широким набором функций (цифровая).</li></ul></p>
+
+<p>Обратите внимание, что последние два типа поддерживаются только на уровне API&nbsp;11, поэтому, даже если вас не интересует, является ли док-станция цифровой или аналоговой, а интересует только ее тип, рекомендуется выполнять проверку по всем трем типам:</p>
+
+<pre>boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
+boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK || 
+                 dockState == EXTRA_DOCK_STATE_LE_DESK ||
+                 dockState == EXTRA_DOCK_STATE_HE_DESK;</pre>
+
+
+<h2 id="MonitorDockState">Отслеживание изменений состояния подключения к док-станции и ее типа</h2> 
+
+<p>При каждом подключении устройства к док-станции или отключении от нее передается действие {@link android.content.Intent#ACTION_DOCK_EVENT}. Чтобы отслеживать состояние подключения к док-станции, достаточно зарегистрировать в манифесте приложения приемник широковещательных намерений, как показано ниже.</p>
+
+<pre>&lt;action android:name="android.intent.action.ACTION_DOCK_EVENT"/></pre>
+
+<p>Данные о типе док-станции и о состоянии подключения к ней можно извлечь внутри реализации приемника с помощью методов, описанных в предыдущем шаге.</p>
diff --git a/docs/html-intl/ru/training/monitoring-device-state/index.jd b/docs/html-intl/ru/training/monitoring-device-state/index.jd
new file mode 100644
index 0000000..c87d9af
--- /dev/null
+++ b/docs/html-intl/ru/training/monitoring-device-state/index.jd
@@ -0,0 +1,49 @@
+page.title=Optimizing Battery Life
+
+trainingnavtop=true
+startpage=true
+next.title=Monitoring the Battery Level and Charging State
+next.link=battery-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>Требования</h2> 
+<ul>
+  <li>Android 2.0 (API уровня&nbsp;5) или более поздней версии</li>
+  <li>Опыт работы с <a href="{@docRoot}guide/components/intents-filters.html">намерениями и фильтрами намерений</a></li>
+</ul>
+
+<h2>Дополнительные материалы</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/services.html">Службы</a>
+</ul>
+
+</div> 
+</div>
+
+<p>Качественное приложение должно оказывать минимальное влияние на время работы устройства от батареи. В этом уроке вы научитесь создавать приложения, способные изменять функционал и режим работы в зависимости от состояния устройства.</p>
+
+<p>Отключение обновления данных фоновых служб при потере подключения и снижение частоты обновления при низком заряде батареи позволяет снизить расход энергии и продлить работу устройства без подзарядки.</p>
+
+<h2>Уроки</h2> 
+ 
+<!-- Create a list of the lessons in this class along with a short description of each lesson.
+These should be short and to the point. It should be clear from reading the summary whether someone
+will want to jump to a lesson or not.--> 
+ 
+<dl>
+  <dt><b><a href="battery-monitoring.html">Отслеживание уровня заряда батареи и состояния зарядки</a></b></dt>
+  <dd>Вы узнаете, как изменять частоту обновления приложения, определяя и отслеживая текущий уровень заряда батареи и изменение состояния зарядки.</dd>
+
+  <dt><b><a href="docking-monitoring.html">Отслеживание состояния подключения к док-станции и определение ее типа</a></b></dt>
+  <dd>Оптимальная частота обновления зависит от способа использования устройства. Вы узнаете, как определять и отслеживать состояние подключения к док-станции и ее тип, чтобы соответствующим образом корректировать работу приложения.</dd>
+
+  <dt><b><a href="connectivity-monitoring.html">Определение и отслеживание состояния подключения</a></b></dt>
+  <dd>Приложение невозможно обновить через Интернет, если отсутствует подключение. Вы узнаете, как проверить состояние подключения, чтобы при необходимости изменить частоту фоновых обновлений. Также вы научитесь проверять наличие мобильного подключения или подключения по сети Wi-Fi перед началом операций, требующих передачи больших объемов данных.</dd>
+
+  <dt><b><a href="manifest-receivers.html">Операции с приемниками широковещательных намерений по запросу</a></b></dt>
+  <dd>Приемники широковещательных намерений, объявленные в манифесте, можно включать и отключать во время работы приложения. Это позволяет отключать ненужные приемники в зависимости от состояния устройства. Вы узнаете, как повысить эффективность путем включения, отключения или каскадирования приемников изменения состояния и как отложить действие до момента перехода устройства в заданное состояние.</dd>
+</dl> 
\ No newline at end of file
diff --git a/docs/html-intl/ru/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/ru/training/monitoring-device-state/manifest-receivers.jd
new file mode 100644
index 0000000..724ee93
--- /dev/null
+++ b/docs/html-intl/ru/training/monitoring-device-state/manifest-receivers.jd
@@ -0,0 +1,50 @@
+page.title=Manipulating Broadcast Receivers On Demand
+parent.title=Optimizing Battery Life
+parent.link=index.html
+
+trainingnavtop=true
+
+previous.title=Determining and Monitoring the Connectivity Status
+previous.link=connectivity-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>Содержание урока</h2>
+<ol>
+  <li><a href="#ToggleReceivers">Включение, отключение и каскадирование приемников изменения состояния для повышения эффективности</a></li>
+</ol>
+
+
+<h2>Дополнительные материалы</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">Намерения и фильтры намерений</a>
+</ul>
+
+</div> 
+</div>
+
+<p>Самый простой способ отслеживать изменения состояния устройства&nbsp;– создать приемники {@link android.content.BroadcastReceiver} для каждого отслеживаемого состояния и зарегистрировать их в манифесте приложения. Затем в каждом из этих приемников можно переопределять график повторяющихся оповещений в зависимости от текущего состояния устройства.</p>
+
+<p>Этот способ имеет недостатки: приложение активирует устройство при каждом запуске любого из этих приемников, что далеко не всегда оправданно.</p>
+
+<p>Оптимальный вариант&nbsp;– включать и выключать приемники широковещательных намерений во время работы приложения. Это позволяет использовать приемники, объявленные в манифесте, как пассивные оповещения, которые инициируются системными событиями только в случае необходимости.</p>
+ 
+
+<h2 id="ToggleReceivers">Включение, отключение и каскадирование приемников изменения состояния для повышения эффективности </h2> 
+ 
+<p>{@link android.content.pm.PackageManager} позволяет включать и выключать любые компоненты, определенные в манифесте, в том числе все приемники широковещательных намерений:</p>
+
+<pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
+
+PackageManager pm = context.getPackageManager();
+
+pm.setComponentEnabledSetting(receiver,
+        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+        PackageManager.DONT_KILL_APP)</pre>
+
+<p>При разрыве соединения этот метод позволяет выключить все приемники, кроме приемника изменения состояния подключения. И наоборот, когда подключение уже установлено, отслеживать изменения его состояния не требуется. Достаточно проверить наличие подключения к Интернету непосредственно перед обновлением или изменением графика оповещений о регулярном обновлении.</p>
+
+<p>Точно так же можно отложить загрузку, для выполнения которой требуется более высокая пропускная способность. Просто включите приемник широковещательных намерений, который будет отслеживать изменения возможности подключения и инициировать загрузку только после подключения к сети Wi-Fi.</p>
diff --git a/docs/html-intl/ru/training/multiscreen/adaptui.jd b/docs/html-intl/ru/training/multiscreen/adaptui.jd
new file mode 100644
index 0000000..490a64a
--- /dev/null
+++ b/docs/html-intl/ru/training/multiscreen/adaptui.jd
@@ -0,0 +1,212 @@
+page.title=Implementing Adaptative UI Flows
+parent.title=Designing for Multiple Screens
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=Supporting Different Screen Densities
+previous.link=screendensities.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+ 
+<h2>Содержание урока</h2>
+
+<ol>
+  <li><a href="#TaskDetermineCurLayout">Определение текущего макета</a></li>
+  <li><a href="#TaskReactToLayout">Дальнейшие действия в зависимости от текущего макета</a></li>
+  <li><a href="#TaskReuseFrag">Повторное использование фрагментов в других активностях</a></li>
+  <li><a href="#TaskHandleConfigChanges">Обработка изменений конфигурации экрана</a></li>
+</ol>
+
+<h2>Дополнительные материалы</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Поддержка планшетных ПК и мобильных телефонов</a></li>
+</ul>
+ 
+<h2>Упражнение</h2>
+ 
+<div class="download-box">
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+ 
+</div> 
+</div> 
+
+<p>Алгоритм пользовательского интерфейса зависит от макета, который в данный момент отображается. Например, если приложение работает в двухпанельном режиме, то при нажатии на элемент в левой панели содержание отобразится в правой. В однопанельном режиме содержание откроется отдельно (в другой активности).</p>
+
+
+<h2 id="TaskDetermineCurLayout">Определение текущего макета</h2>
+
+<p>Так как в реализации макетов существуют отличия, первое, что необходимо сделать,&nbsp;– определить, какой макет отображается в данный момент. Например, работает ли приложение в однопанельном или двухпанельном режиме. Для этого создадим запрос о том, существует ли данное представление и отображается ли оно в настоящий момент:</p>
+
+<pre class="prettyprint">
+public class NewsReaderActivity extends FragmentActivity {
+    boolean mIsDualPane;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main_layout);
+
+        View articleView = findViewById(R.id.article);
+        mIsDualPane = articleView != null &amp;&amp; 
+                        articleView.getVisibility() == View.VISIBLE;
+    }
+}
+</pre>
+
+<p>Обратите внимание: представленный выше код содержит запрос о том, доступна ли панель article, поскольку это удобнее, чем писать отдельные запросы для каждого макета.</p>
+
+<p>Кроме того, для работы с учетом существующих компонентов можно также проверять их доступность, прежде чем выполнять с ними какие-либо операции. Например, в учебном приложении News Reader есть кнопка, которая служит для доступа в меню, однако она отображается только в операционных системах Android версии ниже, чем 3.0, потому что в последующих версиях ее функцию выполняет элемент <PH>{@link android.app.ActionBar}</PH> на уровне API 11 и выше. Чтобы проверить наличие этой кнопки, добавим прослушиватель событий с помощью следующего кода:</p>
+
+<pre class="prettyprint">
+Button catButton = (Button) findViewById(R.id.categorybutton);
+OnClickListener listener = /* create your listener here */;
+if (catButton != null) {
+    catButton.setOnClickListener(listener);
+}
+</pre>
+
+
+<h2 id="TaskReactToLayout">Дальнейшие действия в зависимости от текущего макета</h2>
+
+<p>Результаты некоторых операций зависят от текущего макета. Например, если в приложении News Reader в двухпанельном режиме нажать на заголовок в списке, то статья откроется в правой панели. Если же интерфейс работает в однопанельном режиме, будет запущена отдельная активность:</p>
+
+<pre>
+&#64;Override
+public void onHeadlineSelected(int index) {
+    mArtIndex = index;
+    if (mIsDualPane) {
+        /* display article on the right pane */
+        mArticleFragment.displayArticle(mCurrentCat.getArticle(index));
+    } else {
+        /* start a separate activity */
+        Intent intent = new Intent(this, ArticleActivity.class);
+        intent.putExtra("catIndex", mCatIndex);
+        intent.putExtra("artIndex", index);
+        startActivity(intent);
+    }
+}
+</pre>
+
+<p>Аналогично, в двухпанельном режиме должна отображаться панель действий с навигационными вкладками, а в однопанельном навигация должна быть реализована с помощью раскрывающегося списка. Приложение должно проверять, какой из этих вариантов следует использовать:</p>
+
+<pre>
+final String CATEGORIES[] = { "Лучшие статьи", "Политика", "Экономика", "Новости технологий" };
+
+public void onCreate(Bundle savedInstanceState) {
+    ....
+    if (mIsDualPane) {
+        /* use tabs for navigation */
+        actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_TABS);
+        int i;
+        for (i = 0; i &lt; CATEGORIES.length; i++) {
+            actionBar.addTab(actionBar.newTab().setText(
+                CATEGORIES[i]).setTabListener(handler));
+        }
+        actionBar.setSelectedNavigationItem(selTab);
+    }
+    else {
+        /* use list navigation (spinner) */
+        actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
+        SpinnerAdapter adap = new ArrayAdapter<String>(this, 
+                R.layout.headline_item, CATEGORIES);
+        actionBar.setListNavigationCallbacks(adap, handler);
+    }
+}
+</pre>
+
+
+<h2 id="TaskReuseFrag">Повторное использование фрагментов в других активностях</h2>
+
+<p>Одним из примеров повторяющегося фрагмента является реализация части интерфейса как панели в одних конфигурациях и как отдельной активности в других. Например, если приложение News Reader работает на достаточно большом экране, текст новостной статьи отображается в правой панели, а если на маленьком, то он открывается в отдельной активности.</p>
+
+<p>В таких случаях следует повторно использовать подкласс <PH>{@link android.app.Fragment}</PH> в нескольких активностях. Например, в двухпанельном макете используется подкласс <code>ArticleFragment</code>:</p>
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+
+<p>Он же (без макета) используется при работе на маленьком экране (активность <code>ArticleActivity</code>):</p>
+
+<pre>
+ArticleFragment frag = new ArticleFragment();
+getSupportFragmentManager().beginTransaction().add(android.R.id.content, frag).commit();
+</pre>
+
+<p>Результат будет таким же, как если бы мы объявили фрагмент в макете XML, однако в этом случае макет XML не требуется, так как фрагмент article является единственным компонентом этой активности.</p>
+
+<p>При создании фрагментов важно не привязывать их строго к конкретной активности. Для этого можно определить интерфейс с абстрактным описанием всех необходимых способов взаимодействия фрагмента с активностью, в которой он содержится. Затем этот интерфейс нужно реализовать в самой активности.</p>
+
+<p>Например, именно так работает фрагмент <code>HeadlinesFragment</code> в приложении News Reader:</p>
+
+<pre>
+public class HeadlinesFragment extends ListFragment {
+    ...
+    OnHeadlineSelectedListener mHeadlineSelectedListener = null;
+
+    /* Must be implemented by host activity */
+    public interface OnHeadlineSelectedListener {
+        public void onHeadlineSelected(int index);
+    }
+    ...
+
+    public void setOnHeadlineSelectedListener(OnHeadlineSelectedListener listener) {
+        mHeadlineSelectedListener = listener;
+    }
+}
+</pre>
+
+<p>Затем, когда пользователь выбирает заголовок, фрагмент оповещает об этом не указанную в коде активность, а заданный ею прослушиватель:</p>
+
+<pre>
+public class HeadlinesFragment extends ListFragment {
+    ...
+    &#64;Override
+    public void onItemClick(AdapterView&lt;?&gt; parent, 
+                            View view, int position, long id) {
+        if (null != mHeadlineSelectedListener) {
+            mHeadlineSelectedListener.onHeadlineSelected(position);
+        }
+    }
+    ...
+}
+</pre>
+
+<p>Этот метод рассматривается подробнее в разделе <a
+href="{@docRoot}guide/practices/tablets-and-handsets.html">Поддержка планшетных ПК и мобильных телефонов</a>.</p>
+
+
+<h2 id="TaskHandleConfigChanges">Обработка изменений конфигурации экрана</h2>
+
+<p>При реализации отдельных частей интерфейса с помощью разных активностей нужно учитывать, что интерфейс должен уметь реагировать на определенные изменения конфигурации, такие как поворот экрана.</p>
+
+<p>Например, на типичном планшетном ПК с размером экрана 7&nbsp;дюймов под управлением ОС Android 3.0 или более поздней версии при вертикальной ориентации статья в приложении News Reader открывается с помощью отдельной активности, а при горизонтальной используется двухпанельный макет.</p>
+
+<p>Это означает, что если пользователь держит планшетный ПК вертикально и на экране запущена активность для просмотра статьи, приложение должно уметь определить, что ориентация была изменена на горизонтальную. Затем оно должно соответствующим образом отреагировать на изменение, то есть завершить эту активность и вернуться к основной активности, чтобы содержание отобразилось в двухпанельном макете:</p>
+
+<pre>
+public class ArticleActivity extends FragmentActivity {
+    int mCatIndex, mArtIndex;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mCatIndex = getIntent().getExtras().getInt("catIndex", 0);
+        mArtIndex = getIntent().getExtras().getInt("artIndex", 0);
+
+        // If should be in two-pane mode, finish to return to main activity
+        if (getResources().getBoolean(R.bool.has_two_panes)) {
+            finish();
+            return;
+        }
+        ...
+}
+</pre>
+
+
diff --git a/docs/html-intl/ru/training/multiscreen/index.jd b/docs/html-intl/ru/training/multiscreen/index.jd
new file mode 100644
index 0000000..023eaec
--- /dev/null
+++ b/docs/html-intl/ru/training/multiscreen/index.jd
@@ -0,0 +1,64 @@
+page.title=Designing for Multiple Screens
+
+trainingnavtop=true
+startpage=true
+next.title=Supporting Different Screen Sizes
+next.link=screensizes.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb"> 
+ 
+<h2>Требования</h2> 
+
+<ul>
+  <li>Android 1.6 или более поздней версии (для запуска учебного приложения требуется версия 2.1 или более поздняя)</li>
+  <li>Начальные знания о компонентах <a
+href="http://developer.android.com/guide/components/activities.html">Activity</a> (активность) и <a href="http://developer.android.com/guide/components/fragments.html">Fragment</a> (фрагмент)</li>
+  <li>Опыт создания <a
+href="http://developer.android.com/guide/topics/ui/index.html">пользовательских интерфейсов</a> для Android</li>
+  <li>Некоторые функции требуют использования <a
+href="{@docRoot}tools/extras/support-library.html">вспомогательной библиотеки</a></li>
+</ul>
+
+<h2>Дополнительные материалы</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">Поддержка нескольких экранов</a></li>
+</ul>
+ 
+<h2>Упражнение</h2> 
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+</div> 
+</div> 
+ 
+<p>На платформе Android работают устройства с самыми разными размерами экрана: от телефонов до телевизоров. Чтобы с вашим приложением могли работать как можно больше пользователей, оно должно корректно отображаться на всех этих устройствах.</p>
+
+<p>Однако совместимость с разными типами устройств&nbsp;– это еще не все. От размера экрана зависит, какие возможности будет иметь пользователь при работе с приложением. Чтобы пользователи действительно остались довольны вашим приложением, оно должно не просто <em>поддерживать</em> разные экраны, но и быть <em>оптимизировано</em> для каждого из них.</p>
+
+<p>Этот модуль посвящен реализации пользовательского интерфейса, оптимизированного для разных конфигураций экрана.</p>
+
+<p>Код, приведенный в каждом уроке, взят из учебного приложения, в котором демонстрируются способы оптимизации для разных экранов. Вы можете загрузить его (в правой части экрана) и использовать части кода в собственном приложении.</p>
+
+<p class="note"><strong>Примечание</strong>. В этом модуле и в учебном приложении используется <a
+href="{@docRoot}tools/extras/support-library.html">вспомогательная библиотека</a>, позволяющая работать с API  <PH>{@link android.app.Fragment}</PH> в версиях до Android 3.0. Чтобы иметь возможность использовать все необходимые API, загрузите библиотеку и добавьте ее в свое приложение.</p>
+ 
+
+<h2>Уроки</h2> 
+ 
+<dl> 
+  <dt><b><a href="screensizes.html">Поддержка разных размеров экрана</a></b></dt> 
+    <dd>В этом уроке рассказывается, как создать макет, который адаптируется к разным размерам экрана, используя масштабируемые представления, объекты <PH>{@link android.widget.RelativeLayout}</PH>, квалификаторы размера и ориентации, фильтры псевдонимов и растровые изображений формата nine-patch.</dd> 
+ 
+  <dt><b><a href="screendensities.html">Поддержка разных разрешений экрана</a></b></dt> 
+    <dd>В этом уроке рассказывается, как работать с экранами разного разрешения с помощью не зависящих от разрешения пикселей и как подготовить растровые изображения для каждого из них.</dd> 
+ 
+  <dt><b><a href="adaptui.html">Реализация адаптируемых алгоритмов работы пользовательского интерфейса</a></b></dt> 
+    <dd>В этом уроке рассказывается, как реализовать алгоритм работы интерфейса, адаптирующийся к размеру и разрешению экрана, то есть способный определять активный макет во время выполнения приложения, выбирать дальнейшие действия на основе текущего макета и обрабатывать изменения конфигурации экрана.</dd> 
+</dl> 
diff --git a/docs/html-intl/ru/training/multiscreen/screendensities.jd b/docs/html-intl/ru/training/multiscreen/screendensities.jd
new file mode 100644
index 0000000..cfd4724
--- /dev/null
+++ b/docs/html-intl/ru/training/multiscreen/screendensities.jd
@@ -0,0 +1,100 @@
+page.title=Supporting Different Densities
+parent.title=Designing for Multiple Screens
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=Supporting Different Screen Sizes
+previous.link=screensizes.html
+next.title=Implementing Adaptative UI Flows
+next.link=adaptui.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+
+<h2>Содержание урока</h2>
+<ol>
+  <li><a href="#TaskUseDP">Использование пикселей, не зависящих от разрешения</a></li>
+  <li><a href="#TaskProvideAltBmp">Предоставление альтернативных растровых изображений</a></li>
+</ol>
+
+<h2>Дополнительные материалы</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">Поддержка нескольких экранов</a></li>
+  <li><a href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">Рекомендации по созданию значков</a></li>
+</ul>
+
+<h2>Упражнение</h2>
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+ 
+</div> 
+</div> 
+
+<p>В этом уроке рассказывается, как создать интерфейс, поддерживающий разные разрешения экрана, за счет использования разных ресурсов и не зависящих от разрешения единиц измерения.</p>
+
+<h2 id="TaskUseDP">Использование пикселей, не зависящих от разрешения</h2>
+
+<p>Разработчики часто допускают одну и ту же ошибку при создании макетов&nbsp;– указывают размеры и расстояния с помощью абсолютных значений в пикселях. Задавать размеры в пикселях не рекомендуется, поскольку из-за различной плотности пикселей на экранах разных устройств фактический размер макета будет неодинаков. Всегда задавайте размеры в единицах <code>dp</code> или <code>sp</code>. <code>dp</code>&nbsp;– это не зависящий от разрешения пиксель, равный физическому пикселю на экране с плотностью 160&nbsp;точек/дюйм. <code>sp</code> является аналогичной единицей измерения, но масштабируется на основе выбранного пользователем размера текста, поэтому ее следует применять для указания величины шрифта, но не размера макета.</p>
+
+<p>Например, если вы задаете расстояние между двумя представлениями, рекомендуется использовать <code>dp</code>, а не <code>px</code>:</p>
+
+<pre>
+&lt;Button android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:text="&#64;string/clickme"
+    android:layout_marginTop="20dp" /&gt;
+</pre>
+
+<p>Для определения размера шрифта всегда используйте <code>sp</code>:</p>
+
+<pre>
+&lt;TextView android:layout_width="match_parent" 
+    android:layout_height="wrap_content" 
+    android:textSize="20sp" /&gt;
+</pre>
+
+
+<h2 id="TaskProvideAltBmp">Предоставление альтернативных растровых изображений</h2>
+
+<p>Так как платформа Android предназначена для устройств с разными разрешениями экрана, необходимо позаботиться о наличии растровых изображений для каждого из четырех обобщенных типов разрешения: низкого, среднего, высокого и очень высокого. Это обеспечит оптимальное сочетание качества графики и производительности на всех устройствах.</p>
+
+<p>На основе исходного векторного рисунка создайте растровые изображения для каждого из указанных разрешений согласно следующей шкале размеров:</p>
+
+<p><ul>
+  <li><code>xhdpi</code>: 2,0
+  <li><code>hdpi</code>: 1,5
+  <li><code>mdpi</code>: 1,0 (стандартный размер)
+  <li><code>ldpi</code>: 0,75
+</ul></p>
+
+<p>Это означает, что изображение, которое на устройствах с разрешением экрана <code>xhdpi</code> имеет размер 200&nbsp;x&nbsp;200, на устройствах <code>hdpi</code> должно иметь размер 150&nbsp;x&nbsp;150, на устройствах <code>mdpi</code>&nbsp;– 100&nbsp;x&nbsp;100, а на устройствах <code>ldpi</code>&nbsp;– 75&nbsp;x&nbsp;75.</p>
+
+<p>Поместите файлы изображений в соответствующие подкаталоги в папке <code>res/</code>, и система автоматически выберет подходящий в зависимости от разрешения экрана устройства, на котором выполняется приложение:</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+  res/
+    drawable-xhdpi/
+        awesomeimage.png
+    drawable-hdpi/
+        awesomeimage.png
+    drawable-mdpi/
+        awesomeimage.png
+    drawable-ldpi/
+        awesomeimage.png
+</pre>
+
+<p>При каждом обращении к файлу <code>&#64;drawable/awesomeimage</code> система будет выбирать изображение, отвечающее разрешению экрана.</p>
+
+<p>Дополнительную информацию и советы можно найти в разделе <a
+href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">Рекомендации по созданию значков</a>.</p>
+
diff --git a/docs/html-intl/ru/training/multiscreen/screensizes.jd b/docs/html-intl/ru/training/multiscreen/screensizes.jd
new file mode 100644
index 0000000..9684d77
--- /dev/null
+++ b/docs/html-intl/ru/training/multiscreen/screensizes.jd
@@ -0,0 +1,279 @@
+page.title=Supporting Different Screen Sizes
+parent.title=Designing for Multiple Screens
+parent.link=index.html
+
+trainingnavtop=true
+next.title=Supporting Different Screen Densities
+next.link=screendensities.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+
+<h2>Содержание урока</h2>
+<ol>
+  <li><a href="#TaskUseWrapMatchPar">Использование параметров wrap_content и match_parent</a></li>
+  <li><a href="#TaskUseRelativeLayout">Использование объекта RelativeLayout</a></li>
+  <li><a href="#TaskUseSizeQuali">Использование квалификаторов размера</a></li>
+  <li><a href="#TaskUseSWQuali">Использование квалификатора Smallest-width</a></li>
+  <li><a href="#TaskUseAliasFilters">Использование псевдонимов макетов</a></li>
+  <li><a href="#TaskUseOriQuali">Использование квалификаторов ориентации</a></li>
+  <li><a href="#TaskUse9Patch">Использование растровых изображений nine-patch</a></li>
+</ol>
+
+<h2>Дополнительные материалы</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">Поддержка нескольких экранов</a></li>
+</ul>
+
+<h2>Упражнение</h2> 
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+</div> 
+</div> 
+
+<p>В этом уроке описаны следующие аспекты обеспечения совместимости интерфейса с разными экранами:</p>
+<ul> 
+  <li>обеспечение способности макета адаптироваться к размеру экрана;</li> 
+  <li>выбор макета интерфейса, отвечающего конфигурации экрана;</li> 
+  <li>контроль правильности применяемого макета;</li>
+  <li>использование масштабируемых растровых изображений.</li> 
+</ul> 
+
+
+<h2 id="TaskUseWrapMatchPar">Использование параметров wrap_content и match_parent</h2> 
+
+<p>Чтобы создать масштабируемый макет, способный адаптироваться к разным экранам, используйте в качестве значений ширины и высоты отдельных компонентов представления параметры <code>"wrap_content"</code> и <code>"match_parent"</code>. Если используется <code>"wrap_content"</code>, для ширины или высоты представления устанавливается минимальное значение, позволяющее уместить содержание на экран, а параметр <code>"match_parent"</code> (известный как <code>"fill_parent"</code> в API до 8&nbsp;уровня) служит для растягивания компонента по размеру родительского представления.</p>
+
+<p>Если указать параметры <code>"wrap_content"</code> и <code>"match_parent"</code> вместо строго заданных размеров, в представлениях будет использоваться минимально необходимое место или они будут растягиваться на всю доступную длину и ширину соответственно. Например:</p>
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane_with_bar.xml all}
+
+<p>Обратите внимание на то, что в коде учебного приложения размеры компонентов заданы с помощью параметров <code>"wrap_content"</code> и <code>"match_parent"</code>. В результате макет правильно отображается на экранах разных размеров при разных ориентациях.</p>
+
+<p>Например, вот так он выглядит в вертикальной и горизонтальной ориентациях. Обратите внимание на то, как размеры компонентов автоматически адаптируются к длине и ширине:</p>
+
+<img src="{@docRoot}images/training/layout-hvga.png" />
+<p class="img-caption"><strong>Рисунок 1</strong>. Приложение News Reader при вертикальной (слева) и горизонтальной (справа) ориентации.</p>
+
+
+<h2 id="TaskUseRelativeLayout">Использование объекта RelativeLayout</h2> 
+
+<p>С помощью вложенных экземпляров объекта <PH>{@link android.widget.LinearLayout}</PH> и параметров <code>"wrap_content"</code> и <code>"match_parent"</code> можно создавать достаточно сложные макеты. Однако <PH>{@link android.widget.LinearLayout}</PH> не дает возможности точно управлять взаимным расположением дочерних представлений: в <PH>{@link android.widget.LinearLayout}</PH> они просто помещаются в ряд друг за другом. Если необходимо расположить дочерние представления иным образом, используйте объект <PH>{@link android.widget.RelativeLayout}</PH>, позволяющий задать относительные позиции компонентов. Например, одно дочернее представление можно выровнять по левому краю экрана, а другое&nbsp;– по правому.</p>
+
+<p>Например:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;TextView
+        android:id="&#64;+id/label"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="Type here:"/&gt;
+    &lt;EditText
+        android:id="&#64;+id/entry"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="&#64;id/label"/&gt;
+    &lt;Button
+        android:id="&#64;+id/ok"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="&#64;id/entry"
+        android:layout_alignParentRight="true"
+        android:layout_marginLeft="10dp"
+        android:text="OK" /&gt;
+    &lt;Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toLeftOf="&#64;id/ok"
+        android:layout_alignTop="&#64;id/ok"
+        android:text="Cancel" /&gt;
+&lt;/RelativeLayout&gt;
+</pre>
+
+<p>На рис.&nbsp;2 показано, как этот макет выглядит на экране QVGA.</p>
+
+<img src="{@docRoot}images/training/relativelayout1.png" />
+<p class="img-caption"><strong>Рисунок&nbsp;2</strong>. Скриншот экрана QVGA (маленького размера).</p>
+
+<p>На рис.&nbsp;3 показано, как он выглядит на экране с большей диагональю.</p>
+
+<img src="{@docRoot}images/training/relativelayout2.png" />
+<p class="img-caption"><strong>Рисунок&nbsp;3</strong>. Скриншот экрана WSVGA (большего размера).</p>
+
+<p>Обратите внимание: несмотря на изменение размера компонентов их взаимное расположение остается прежним, так как оно задано объектом <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>.</p>
+
+ 
+<h2 id="TaskUseSizeQuali">Использование квалификаторов размера</h2> 
+
+<p>Масштабируемые или относительные макеты, один из которых продемонстрирован выше, имеют свои ограничения. Хотя они позволяют создать интерфейс, способный адаптироваться к разным экранам за счет растягивания пространства внутри и вокруг компонентов, пользователю может оказаться не слишком удобно работать с таким интерфейсом. Поэтому в приложении должен использоваться не один масштабируемый макет, а несколько альтернативных вариантов для разных конфигураций экрана. Их можно создать с помощью <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">квалификаторов конфигураций</a>, которые позволяют оперативно выбирать ресурсы, отвечающие текущим параметрам экрана (например, разные варианты макетов для экранов разных размеров).</p>
+
+<p>Многие приложения отображаются на больших экранах в двухпанельном режиме, при котором список элементов расположен в одной панели, а их содержание открывается в другой. Такой режим просмотра удобен на достаточно больших экранах планшетных ПК и телевизоров, однако на экране телефона эти панели следует отображать по отдельности. Для каждого режима просмотра нужно создать отдельный файл.</p>
+
+<ul>
+  <li><code>res/layout/main.xml</code>, однопанельный макет (по умолчанию):
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+</li>
+  <li><code>res/layout-large/main.xml</code>, двухпанельный макет:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+</li>
+</ul>
+
+<p>Обратите внимание, что во втором случае в названии каталога использован квалификатор <code>large</code>. Этот макет будет выбран на устройствах, экраны которых считаются большими (например, 7&nbsp;дюймов и более). Первый макет (без квалификаторов) будет выбран для устройств с маленьким экраном.</p>
+
+
+<h2 id="TaskUseSWQuali">Использование квалификатора Smallest-width</h2>
+
+<p>Одной из проблем, с которой сталкивались разработчики приложений для устройств Android версий до 3.2, было слишком общее определение "большого" экрана. Это касалось устройств Dell Streak, первой модели Galaxy Tab и планшетных ПК с экраном размером 7&nbsp;дюймов. Многие приложения требовалось по-разному отображать на разных устройствах (например, с 5- и 7-дюймовыми экранами), хотя они и относились к одной категории "больших" экранов. В Android версии 3.2 и более поздних доступен квалификатор Smallest-width.</p>
+
+<p>Он позволяет определять экраны с заданной минимальной шириной в dp. Например, типичный планшетный ПК с экраном 7&nbsp;дюймов имеет минимальную ширину 600&nbsp;dp, и если вы хотите, чтобы приложение работало на нем в двухпанельном режиме (а на меньших экранах в однопанельном), используйте два макета из предыдущего раздела, но вместо квалификатора размера <code>large</code> укажите <code>sw600dp</code>. В таком случае на экранах, минимальная ширина которых составляет 600&nbsp;dp, будет использоваться двухпанельный макет.</p>
+
+<ul>
+  <li><code>res/layout/main.xml</code>, однопанельный макет (по умолчанию):
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+</li>
+  <li><code>res/layout-sw600dp/main.xml</code>, двухпанельный макет:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+</li>
+</ul>
+
+<p>Это означает, что на устройствах, минимальная ширина экрана которых не меньше 600&nbsp;dp, будет выбран <code>layout-sw600dp/main.xml</code> (двухпанельный макет), а на экранах меньшего размера&nbsp;– <code>layout/main.xml</code> (однопанельный макет).</p>
+
+<p>Следует учесть, что на Android-устройствах до версии 3.2 квалификатор <code>sw600dp</code> не будет работать, поэтому для них по-прежнему нужно использовать <code>large</code>. Таким образом, вам потребуется еще один файл с названием <code>res/layout-large/main.xml</code>, идентичный файлу <code>res/layout-sw600dp/main.xml</code>. В следующем разделе вы познакомитесь с методом, который позволяет избежать дублирования таких файлов макета.</p>
+
+
+<h2 id="TaskUseAliasFilters">Использование псевдонимов макетов</h2> 
+
+<p>Квалификатор Smallest-width работает только на устройствах Android 3.2 или более поздних версий. Для совместимости с более ранними устройствами по-прежнему следует использовать абстрактные размеры (small, normal, large и xlarge). Например, чтобы интерфейс открывался в однопанельном режиме на телефонах и в многопанельном на планшетных ПК с 7-дюймовым экраном, телевизорах и других крупных устройствах, подготовьте следующие файлы:</p>
+
+<p><ul>
+<li><code>res/layout/main.xml:</code> однопанельный макет;</li>
+<li><code>res/layout-large:</code> многопанельный макет;</li>
+<li><code>res/layout-sw600dp:</code> многопанельный макет.</li>
+</ul></p>
+
+<p>Последние два файла идентичны: один из них предназначен для устройств Android 3.2 и новее, а второй для более старых планшетных ПК и телевизоров на платформе Android.</p>
+
+<p>Чтобы не создавать дубликаты файлов и упростить процесс поддержки приложения, используйте псевдонимы. Например, можно определить следующие макеты:</p>
+
+<ul>
+<li><code>res/layout/main.xml</code> (однопанельный макет);</li>
+<li><code>res/layout/main_twopanes.xml</code> (двухпанельный макет).</li>
+</ul>
+
+<p>Затем добавьте следующие два файла:</p>
+
+<p><ul>
+<li><code>res/values-large/layout.xml</code>:
+<pre>
+&lt;resources>
+    &lt;item name="main" type="layout">&#64;layout/main_twopanes&lt;/item>
+&lt;/resources>
+</pre>
+</li>
+
+<li><code>res/values-sw600dp/layout.xml</code>:
+<pre>
+&lt;resources>
+    &lt;item name="main" type="layout">&#64;layout/main_twopanes&lt;/item>
+&lt;/resources>
+</pre>
+
+</li>
+</ul></p>
+
+<p>Содержание последних двух файлов одинаково, но сами по себе они не определяют макет. Они служат для того, чтобы назначить файл <PH>{@code main}</PH> в качестве псевдонима <PH>{@code main_twopanes}</PH>. Так как в них используются селекторы <code>large</code> и <code>sw600dp</code>, они применяются к планшетным ПК и телевизорам на платформе Android независимо от версии (для версий до 3.2 используется
+<PH>{@code large}</PH>, а для более новых&nbsp;– <code>sw600dp</code>).</p>
+
+
+<h2 id="TaskUseOriQuali">Использование квалификаторов ориентации</h2> 
+
+<p>Хотя некоторые макеты одинаково хорошо смотрятся в вертикальной и горизонтальной ориентациях, в большинстве случаев интерфейс все же приходится адаптировать. Ниже показано, как изменяется макет в приложении News Reader в зависимости от размера и ориентации экрана.</p>
+
+<p><ul>
+<li><b>Маленький экран, вертикальная ориентация</b>: однопанельный вид с логотипом.</li>
+<li><b>Маленький экран, горизонтальная ориентация</b>: однопанельный вид с логотипом.</li>
+<li><b>Планшетный ПК с 7-дюймовым экраном, вертикальная ориентация</b>: однопанельный вид с панелью действий.</li>
+<li><b>Планшетный ПК с 7-дюймовым экраном, горизонтальная ориентация</b>: двухпанельный вид с панелью действий.</li>
+<li><b>Планшетный ПК с 10-дюймовым экраном, вертикальная ориентация</b>: двухпанельный вид (узкий вариант) с панелью действий.</li>
+<li><b>Планшетный ПК с 10-дюймовым экраном, горизонтальная ориентация</b>: двухпанельный вид (широкий вариант) с панелью действий.</li>
+<li><b>Телевизор, горизонтальная ориентация</b>: двухпанельный вид с панелью действий.</li>
+</ul></p>
+
+<p>Каждый из этих макетов определен в XML-файле в каталоге <code>res/layout/</code>. Чтобы сопоставить их с определенными конфигурациями экрана, в приложении используются псевдонимы:</p>
+
+<p><code>res/layout/onepane.xml:</code></p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+
+<p><code>res/layout/onepane_with_bar.xml:</code></p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane_with_bar.xml all}
+
+<p><code>res/layout/twopanes.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+
+<p><code>res/layout/twopanes_narrow.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes_narrow.xml all}
+
+<p>После того как все возможные макеты определены, остается сопоставить каждый из них с подходящей конфигурацией, используя квалификаторы конфигураций. Воспользуемся псевдонимами макетов:</p>
+
+<p><code>res/values/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values/layouts.xml all}
+
+<p><code>res/values-sw600dp-land/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-sw600dp-land/layouts.xml
+all}
+
+<p><code>res/values-sw600dp-port/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-sw600dp-port/layouts.xml
+all}
+
+<p><code>res/values-large-land/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-large-land/layouts.xml all}
+
+<p><code>res/values-large-port/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-large-port/layouts.xml all}
+
+
+
+<h2 id="TaskUse9Patch">Использование растровых изображений nine-patch</h2>
+
+<p>Чтобы интерфейс был совместим с экранами разных размеров, используемые в нем графические элементы также должны быть адаптированы соответствующим образом. Например, фон кнопки должен одинаково хорошо выглядеть независимо от ее формы.</p>
+
+<p>Если использовать для компонентов, размеры которых меняются, обычные изображения, то они будут равномерно сжиматься и растягиваться, и результат будет далек от идеального. Решением являются растровые изображения формата nine-patch&nbsp;– специальные PNG-файлы, содержащие информацию о том, какие области можно растягивать, а какие нет.</p>
+
+<p>Создавая растровые изображения для масштабируемых компонентов, обязательно используйте формат nine-patch. На рис.&nbsp;4 показано обычное растровое изображение (увеличенное в 4&nbsp;раза для наглядности), которое мы переведем в формат nine-patch.</p>
+
+<img src="{@docRoot}images/training/button.png" />
+<p class="img-caption"><strong>Рисунок&nbsp;4</strong>. <code>button.png</code></p>
+
+<p>Откройте его с помощью утилиты <ode
+href="{@docRoot}tools/help/draw9patch.html"><code>draw9patch</code></a>, входящей в комплект разработчика (в каталоге <code>tools/</code>). Установите метки на левом и верхнем краях, чтобы ограничить области, которые можно растягивать. Можно также провести линию вдоль правого и нижнего краев, как показано на рис.&nbsp;5, чтобы отметить области, в которых содержание должно быть зафиксировано.</p>
+
+<img src="{@docRoot}images/training/button_with_marks.png" />
+<p class="img-caption"><strong>Рисунок&nbsp;5</strong>. <code>button.9.png</code></p>
+
+<p>Обратите внимание на черные пиксели по краям. Метки у верхней и левой границ обозначают те области, которые можно растягивать, а метки у правой и нижней границ&nbsp;– те, куда должно быть помещено содержание.</p>
+
+<p>Также обратите внимание на расширение <code>.9.png</code>. Оно должно быть задано именно в таком виде, чтобы система могла определить, что это формат nine-patch, а не обычный PNG-файл.</p>
+
+<p>При применении этого фона к компоненту (с помощью <code>android:background="&#64;drawable/button"</code>) изображение будет растянуто по размеру кнопки, как показано на рис.&nbsp;6.</p>
+
+<img src="{@docRoot}images/training/buttons_stretched.png" />
+<p class="img-caption"><strong>Рисунок&nbsp;6</strong>. Кнопки разных размеров с файлом фона <code>button.9.png</code> в формате nine-patch.</p>
+
diff --git a/docs/html-intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd
new file mode 100644
index 0000000..0e1ccb7
--- /dev/null
+++ b/docs/html-intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd
@@ -0,0 +1,120 @@
+page.title=监控电池电量和充电状态
+parent.title=优化电池使用时间
+parent.link=index.html
+
+trainingnavtop=true
+next.title=确定和监控基座对接状态和类型
+next.link=docking-monitoring.html
+
+@jd:body
+ 
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>本教程将指导您</h2>
+<ol>
+  <li><a href="#DetermineChargeState">确定当前的充电状态</a></li>
+  <li><a href="#MonitorChargeState">监控充电状态的变化</a></li>
+  <li><a href="#CurrentLevel">确定当前的电池电量</a></li>
+  <li><a href="#MonitorLevel">监控电池电量的显著变化</a></li>
+</ol>
+
+<h2>您还应参阅</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
+</ul>
+
+</div> 
+</div>
+ 
+<p>如果您要更改后台更新频率,从而减少更新对电池使用时间的影响,最好先查看当前的电池电量和充电状态。</p>
+
+<p>对应用进行更新会影响电池使用时间,具体取决于设备的电池电量和充电状态。如果用户正在通过交流电源为设备充电,更新应用的影响就可以忽略不计。因此,在大多数情况下,只要设备连接了充电器,您就可以最大程度地提高刷新频率。相反,如果设备在消耗电池电量,那么降低更新频率就可以延长电池使用时间。</p>
+
+<p>同样,您也可以查看电池电量,如果电量即将耗尽,您就可以降低更新频率,甚至停止更新。</p>
+
+
+<h2 id="DetermineChargeState">确定当前的充电状态</h2> 
+ 
+<p>请先确定当前的充电状态。{@link android.os.BatteryManager} 会通过一个包含充电状态的持续 {@link android.content.Intent} 广播所有的电池详情和充电详情。</p>
+
+<p>由于这是个持续 intent,因此您无需通过将传入 {@code null} 的 {@code registerReceiver} 作为接收器直接调用(如下一代码段所示)来注册 {@link android.content.BroadcastReceiver},系统会返回当前电池状态 intent。您可以在此处传入实际的 {@link android.content.BroadcastReceiver} 对象,不过我们会在下文中介绍如何处理更新,因此您不一定要执行此操作。</p>
+
+<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+Intent batteryStatus = context.registerReceiver(null, ifilter);</pre>
+
+<p>如果设备正在充电,则您可以提取当前的充电状态和充电方式(无论是通过 USB 还是交流充电器),如下所示:<p>
+
+<pre>// Are we charging / charged?
+int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
+                     status == BatteryManager.BATTERY_STATUS_FULL;
+
+// How are we charging?
+int chargePlug = battery.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
+boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
+boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
+
+<p>通常,如果设备连接了交流充电器,您就应最大程度地提高后台更新频率;如果设备通过 USB 充电,请降低更新频率;如果电池在耗电,请进一步降低更新频率。</p>
+
+
+<h2 id="MonitorChargeState">监控充电状态的变化</h2> 
+
+<p>充电状态的改变就像设备连接电源那样容易,因此监控充电状态的变化并相应地调整刷新频率就很重要了。</p>
+
+<p>只要设备连接或断开电源,{@link android.os.BatteryManager} 就会广播相应的操作。即使您的应用没有运行,也请务必接收这些事件,尤其是当这些事件会影响您启动应用以执行后台更新的频率时。因此,您应该通过在 intent 过滤器中定义 {@link android.content.Intent#ACTION_POWER_CONNECTED} 和 {@link android.content.Intent#ACTION_POWER_DISCONNECTED},在清单中注册 {@link android.content.BroadcastReceiver} 来侦听这两个事件。</p>
+
+<pre>&lt;receiver android:name=".PowerConnectionReceiver">
+  &lt;intent-filter>
+    &lt;action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
+    &lt;action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
+  &lt;/intent-filter>
+&lt;/receiver></pre>
+
+<p>在实施相关的 {@link android.content.BroadcastReceiver} 时,您可以按上一步骤所述提取当前的充电状态和充电方式。</p>
+
+<pre>public class PowerConnectionReceiver extends BroadcastReceiver {
+    &#64;Override
+    public void onReceive(Context context, Intent intent) { 
+        int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+        boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
+                            status == BatteryManager.BATTERY_STATUS_FULL;
+    
+        int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
+        boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
+        boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
+    }
+}</pre>
+
+
+<h2 id="CurrentLevel">确定当前的电池电量</h2> 
+
+<p>在某些情况下,确定当前的电池电量会对您有所帮助。如果电池电量低于一定水平,您可以降低后台更新频率。</p>
+
+<p>您可以从电池状态 intent 中提取要了解的当前电池电量以及电池容量,具体如下所示:</p>
+
+<pre>int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
+int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
+
+float batteryPct = level / (float)scale;</pre>
+
+
+<h2 id="MonitorLevel">监控电池电量的显著变化</h2> 
+
+<p>您无法轻松地对电池状态进行持续监控,不过也无需这么做。</p>
+
+<p>一般来说,与应用的正常行为相比,持续监控电池电量会消耗更多电量。因此,比较合适的做法是只监控电池电量的显著变化(尤其是在设备进入或结束低电量状态的情况下)。</p>
+
+<p>以下清单代码段提取自广播接收器中的 intent 过滤器元素。通过侦听 {@link android.content.Intent#ACTION_BATTERY_LOW} 和 {@link android.content.Intent#ACTION_BATTERY_OKAY},只要设备的电池进入或结束低电量状态,系统就会触发接收器。</p>
+
+<pre>&lt;receiver android:name=".BatteryLevelReceiver">
+&lt;intent-filter>
+  &lt;action android:name="android.intent.action.ACTION_BATTERY_LOW"/>
+  &lt;action android:name="android.intent.action.ACTION_BATTERY_OKAY"/>
+  &lt;/intent-filter>
+&lt;/receiver></pre>
+
+<p>如果电池电量极低,通常比较合适的做法是停用所有后台更新。如果您还没用上更新的数据,手机就自动关机了,那这些数据再新也没有意义。</p>
+
+<p>在很多情况下,将设备插入基座就可以为其充电。下一教程将向您介绍如何确定当前基座状态及如何监控设备对接的变化。</p>
+
diff --git a/docs/html-intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd
new file mode 100644
index 0000000..8313e08
--- /dev/null
+++ b/docs/html-intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd
@@ -0,0 +1,70 @@
+page.title=确定和监控网络连接状态
+parent.title=优化电池使用时间
+parent.link=index.html
+
+trainingnavtop=true
+
+previous.title=确定和监控基座对接状态和类型
+previous.link=docking-monitoring.html
+next.title=根据需要操作广播接收器
+next.link=manifest-receivers.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>本教程将指导您</h2>
+<ol>
+  <li><a href="#DetermineConnection">确定是否已连接互联网</a></li>
+  <li><a href="#DetermineType">确定互联网连接的类型</a></li>
+  <li><a href="#MonitorChanges">监控连接情况的变化</a></li>
+</ol>
+
+
+<h2>您还应参阅</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
+</ul>
+
+</div> 
+</div>
+
+<p>重复提醒和后台服务最常见的用途之一,就是为来自互联网资源的应用数据、缓存数据安排定期更新或执行长时间运行的下载任务。但是,如果您没有连接互联网,或因连接过慢而无法完成下载,那就根本没必要唤醒设备并安排更新了。</p>
+
+<p>您可以使用 {@link android.net.ConnectivityManager} 查看是否确实已连接互联网,如果已连接,您还可以了解当前的连接类型。</p>
+
+
+<h2 id="DetermineConnection">确定是否已连接互联网</h2> 
+ 
+<p>如果设备未连接互联网,就没有必要根据互联网资源安排更新了。以下代码段说明如何使用 {@link android.net.ConnectivityManager} 查询有效网络并确定该网络是否已连接互联网。</p>
+
+<pre>ConnectivityManager cm =
+        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ 
+NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
+boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
+
+
+<h2 id="DetermineType">确定互联网连接的类型</h2> 
+
+<p>您也可以确定当前可用的互联网连接的类型。</p>
+
+<p>通过移动数据、WiMAX、Wi-Fi 和以太网连接可提供设备连接。您可以查询有效网络的类型(具体如下所示),以便根据可用带宽调整刷新频率。</p>
+
+<pre>boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;</pre>
+
+<p>移动数据的费用往往比 Wi-Fi 高很多,因此在大多数情况下,如果您使用的是移动连接,就应降低应用更新频率。同样,在没有 Wi-Fi 连接的情况下,您就应暂停较大的下载任务。</p>
+
+<p>停用更新后,请务必侦听连接情况的变化,以便在建立互联网连接后恢复更新。</p>
+
+
+<h2 id="MonitorChanges">监控连接情况的变化</h2> 
+
+<p>只要连接的具体情况发生变化,{@link android.net.ConnectivityManager} 就会广播 {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION} ({@code "android.net.conn.CONNECTIVITY_CHANGE"}) 操作。您可以在清单中注册广播接收器,以便侦听这些变化并相应地恢复(或暂停)后台更新。</p>
+
+<pre>&lt;action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></pre>
+
+<p>设备连接情况的变化可能会非常频繁,只要您在移动数据和 Wi-Fi 之间相互切换,系统就会触发此广播。因此比较合适的做法是,仅当之前暂停了更新或下载时才监控此广播,以便恢复更新或下载。通常,您只需在开始更新前检查互联网连接情况即可,如果未连接互联网,请暂停后续更新,直到连接恢复。</p>
+
+<p>此技巧需要切换您在清单中声明的广播接收器,具体说明请见下一教程。</p>
diff --git a/docs/html-intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd
new file mode 100644
index 0000000..53b951d
--- /dev/null
+++ b/docs/html-intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd
@@ -0,0 +1,74 @@
+page.title=确定和监控基座对接状态和类型
+parent.title=优化电池使用时间
+parent.link=index.html
+
+trainingnavtop=true
+previous.title= 监控电池电量和充电状态
+previous.link=battery-monitoring.html
+next.title= 确定和监控网络连接状态
+next.link=connectivity-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>本教程将指导您</h2>
+<ol>
+  <li><a href="#CurrentDockState">确定当前的基座状态</a></li>
+  <li><a href="#DockType">确定当前的基座类型</a></li>
+  <li><a href="#MonitorDockState">监控基座状态或类型的变化</a></li>
+</ol>
+
+
+<h2>您还应参阅</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
+</ul>
+
+</div> 
+</div>
+
+<p>Android 设备支持几种不同类型的基座。这些类型包括车载或家用基座以及数字和模拟基座。许多基座可用于为插入的设备充电,因此基座状态通常与充电状态紧密相关。</p>
+
+<p>您可以根据手机的基座状态调整更新频率,具体取决于相关应用。如果设备插入的是桌面基座,您就可以提高体育中心类应用的更新频率;如果设备插入的是车载基座,您就可以完全停用此类更新。相反,如果设备插入的是车载基座且后台服务正在更新路况,您就可以最大程度地提高更新频率。</p>
+
+<p>系统是以持续 {@link android.content.Intent} 的形式广播基座状态的,这样您就可以查询设备是否插入了基座,如果已插入,您还可以查询基座类型。</p>
+
+
+<h2 id="CurrentDockState">确定当前的基座状态</h2> 
+ 
+<p>基座状态详情是以附加信息的形式包含在 {@link android.content.Intent#ACTION_DOCK_EVENT} 操作的持续广播中的。由于这属于持续广播,因此您无需注册 {@link android.content.BroadcastReceiver}。您可以将传入 {@code null} 的 {@link android.content.Context#registerReceiver registerReceiver()} 作为广播接收器直接调用,具体如下一代码段所示。</p>
+
+<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
+Intent dockStatus = context.registerReceiver(null, ifilter);</pre>
+
+<p>您可以从 {@code EXTRA_DOCK_STATE} 附加信息中提取当前的基座对接状态:<p>
+
+<pre>int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
+boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
+
+
+<h2 id="DockType">确定当前的基座类型</h2> 
+
+<p>用户可以将设备插入以下四种类型的基座: 
+<ul><li>车载基座</li>
+<li>桌面基座</li>
+<li>低端(模拟)桌面基座</li>
+<li>高端(数字)桌面基座</li></ul></p>
+
+<p>请注意,后两种类型仅适用于 API 级别为 11 及以上的 Android,因此如果您只关注基座类型,而不在意基座究竟是数字的还是模拟的,那么比较合适的做法就是查看全部三种类型:</p>
+
+<pre>boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
+boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK || 
+                 dockState == EXTRA_DOCK_STATE_LE_DESK ||
+                 dockState == EXTRA_DOCK_STATE_HE_DESK;</pre>
+
+
+<h2 id="MonitorDockState">监控基座状态或类型的变化</h2> 
+
+<p>无论设备是否插入了基座,系统都会广播 {@link android.content.Intent#ACTION_DOCK_EVENT} 操作。要监控设备基座状态的变化,您只需在应用清单中注册广播接收器即可,具体如以下代码段所示:</p>
+
+<pre>&lt;action android:name="android.intent.action.ACTION_DOCK_EVENT"/></pre>
+
+<p>您可以使用上一步骤中所述的技术在接收器实施过程中提取基座的类型和状态。</p>
diff --git a/docs/html-intl/zh-cn/training/monitoring-device-state/index.jd b/docs/html-intl/zh-cn/training/monitoring-device-state/index.jd
new file mode 100644
index 0000000..aa10753
--- /dev/null
+++ b/docs/html-intl/zh-cn/training/monitoring-device-state/index.jd
@@ -0,0 +1,49 @@
+page.title=优化电池使用时间
+
+trainingnavtop=true
+startpage=true
+next.title=监控电池电量和充电状态
+next.link=battery-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>依存关系和前提条件</h2> 
+<ul>
+  <li>Android 2.0(API 级别 5)或更高版本</li>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>的使用经验</li>
+</ul>
+
+<h2>您还应参阅</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/services.html">服务</a>
+</ul>
+
+</div> 
+</div>
+
+<p>为了打造一个优秀的应用,您应设法降低应用对电池使用时间的影响。阅读完本教程后,您就可以让自己构建的应用根据其所在设备的状态来监控和调整自身的功能和行为。</p>
+
+<p>要确保在不影响用户体验的情况下最大程度地降低应用对电池使用时间的影响,您可以采取一些措施,例如在网络连接断开时停用后台服务更新,或在电池电量较低时降低此类更新的频率。</p>
+
+<h2>教程</h2> 
+ 
+<!-- Create a list of the lessons in this class along with a short description of each lesson.
+These should be short and to the point. It should be clear from reading the summary whether someone
+will want to jump to a lesson or not.--> 
+ 
+<dl>
+  <dt><b><a href="battery-monitoring.html">监控电池电量和充电状态</a></b></dt>
+  <dd>了解如何通过确定和监控当前的电池电量和充电状态的变化来相应地调整应用的更新频率。</dd>
+
+  <dt><b><a href="docking-monitoring.html">确定和监控基座对接状态和类型</a></b></dt>
+  <dd>最佳刷新频率可能各有不同,具体取决于安装了相关应用的设备的使用方式。了解如何确定和监控所用基座的对接状态和类型,以便相应地调整应用的行为。</dd>
+
+  <dt><b><a href="connectivity-monitoring.html">确定和监控网络连接状态</a></b></dt>
+  <dd>如果没有互联网连接,您就无法通过在线来源更新应用。了解如何查看连接状态,以便相应地调整后台更新频率。您还可以了解如何在执行高带宽操作前查看 Wi-Fi 或移动连接的状态。</dd>
+
+  <dt><b><a href="manifest-receivers.html">根据需要操作广播接收器</a></b></dt>
+  <dd>您可以在运行时切换自己在清单中声明的广播接收器,以便根据当前设备状态停用不需要的接收器。了解如何在设备未处于特定状态的情况下切换和层叠状态变化接收器和延迟操作,以便提高效率。</dd>
+</dl> 
\ No newline at end of file
diff --git a/docs/html-intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd
new file mode 100644
index 0000000..07c014f
--- /dev/null
+++ b/docs/html-intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd
@@ -0,0 +1,50 @@
+page.title=根据需要操作广播接收器
+parent.title=优化电池使用时间
+parent.link=index.html
+
+trainingnavtop=true
+
+previous.title=确定和监控网络连接状态
+previous.link=connectivity-monitoring.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb">
+
+<h2>本教程将指导您</h2>
+<ol>
+  <li><a href="#ToggleReceivers">切换和层叠状态变化接收器以提高效率</a></li>
+</ol>
+
+
+<h2>您还应参阅</h2>
+<ul>
+  <li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
+</ul>
+
+</div> 
+</div>
+
+<p>监控设备状态变化的最简单方法就是,为您监控的每种状态创建 {@link android.content.BroadcastReceiver} 并在应用清单中逐一进行注册。然后,您只需根据当前设备状态在每个接收器中重新安排重复提醒即可。</p>
+
+<p>此方法的负面影响在于,只要系统触发了这些接收器中的任何一个,相关应用就会唤醒设备,其频率可能会远远超过所需的水平。</p>
+
+<p>更好的方法是在运行时停用或启用广播接收器。这样的话,您就可以将自己在清单中声明的接收器用作被动提醒,只有在需要时才会由系统事件触发。</p>
+ 
+
+<h2 id="ToggleReceivers">切换和层叠状态变化接收器以提高效率 </h2> 
+ 
+<p>您可以使用 {@link android.content.pm.PackageManager} 切换清单中定义的任意组件的启用状态(包括您要启用或停用的任意广播接收器),具体如以下片段所示:</p>
+
+<pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
+
+PackageManager pm = context.getPackageManager();
+
+pm.setComponentEnabledSetting(receiver,
+        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+        PackageManager.DONT_KILL_APP)</pre>
+
+<p>在使用此技巧时,如果您确定连接已断开,就可以停用除连接变化接收器外的所有接收器。相反,成功连接后,您就可以停止侦听连接变化,同时只需在执行更新和重新安排重复更新提醒前查看是否在线即可。</p>
+
+<p>您可以使用同样的方法来延迟需要较高带宽的下载任务。只有在连接 Wi-Fi 后,您才能直接启用用于侦听连接变化和启动下载任务的广播接收器。</p>
diff --git a/docs/html-intl/zh-cn/training/multiscreen/adaptui.jd b/docs/html-intl/zh-cn/training/multiscreen/adaptui.jd
new file mode 100644
index 0000000..89908fe
--- /dev/null
+++ b/docs/html-intl/zh-cn/training/multiscreen/adaptui.jd
@@ -0,0 +1,212 @@
+page.title=实施自适应用户界面流程
+parent.title=针对多种屏幕进行设计
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=支持各种屏幕密度
+previous.link=screendensities.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+ 
+<h2>本教程将指导您</h2>
+
+<ol>
+  <li><a href="#TaskDetermineCurLayout">确定当前布局</a></li>
+  <li><a href="#TaskReactToLayout">根据当前布局做出响应</a></li>
+  <li><a href="#TaskReuseFrag">重复使用其他活动中的片段</a></li>
+  <li><a href="#TaskHandleConfigChanges">处理屏幕配置变化</a></li>
+</ol>
+
+<h2>您还应参阅</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">支持平板电脑和手持设备</a></li>
+</ul>
+ 
+<h2>试试看</h2>
+ 
+<div class="download-box">
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+ 
+</div> 
+</div> 
+
+<p>根据您的应用当前显示的布局,用户界面流程可能会有所不同。例如,如果您的应用处于双面板模式下,点击左侧面板上的项即可直接在右侧面板上显示相关内容;如果该应用处于单面板模式下,相关内容就应以其他活动的形式在同一面板上显示。</p>
+
+
+<h2 id="TaskDetermineCurLayout">确定当前布局</h2>
+
+<p>由于每种布局的实施都会稍有不同,因此您可能需要先确定当前向用户显示的布局。例如,您可以了解用户所处的是“单面板”模式还是“双面板”模式。要做到这一点,您可以查询指定视图是否存在以及是否已显示出来。</p>
+
+<pre class="prettyprint">
+public class NewsReaderActivity extends FragmentActivity {
+    boolean mIsDualPane;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main_layout);
+
+        View articleView = findViewById(R.id.article);
+        mIsDualPane = articleView != null &amp;&amp; 
+                        articleView.getVisibility() == View.VISIBLE;
+    }
+}
+</pre>
+
+<p>请注意,这段代码用于查询“报道”面板是否可用,与针对具体布局的硬编码查询相比,这段代码的灵活性要大得多。</p>
+
+<p>再举一个适应各种组件的存在情况的方法示例:在对这些组件执行操作前先查看它们是否可用。例如,新闻阅读器示例应用中有一个用于打开菜单的按钮,但只有在版本低于 3.0 的 Android 上运行该应用时,这个按钮才会存在,因为 API 级别 11 或更高级别中的  <PH>{@link android.app.ActionBar}</PH>  已取代了该按钮的功能。因此,您可以使用以下代码为此按钮添加事件侦听器:</p>
+
+<pre class="prettyprint">
+Button catButton = (Button) findViewById(R.id.categorybutton);
+OnClickListener listener = /* create your listener here */;
+if (catButton != null) {
+    catButton.setOnClickListener(listener);
+}
+</pre>
+
+
+<h2 id="TaskReactToLayout">根据当前布局做出响应</h2>
+
+<p>有些操作可能会因当前的具体布局而产生不同的结果。例如,在新闻阅读器示例中,如果用户界面处于双面板模式下,那么点击标题列表中的标题就会在右侧面板中打开相应报道;但如果用户界面处于单面板模式下,那么上述操作就会启动一个独立活动:</p>
+
+<pre>
+&#64;Override
+public void onHeadlineSelected(int index) {
+    mArtIndex = index;
+    if (mIsDualPane) {
+        /* display article on the right pane */
+        mArticleFragment.displayArticle(mCurrentCat.getArticle(index));
+    } else {
+        /* start a separate activity */
+        Intent intent = new Intent(this, ArticleActivity.class);
+        intent.putExtra("catIndex", mCatIndex);
+        intent.putExtra("artIndex", index);
+        startActivity(intent);
+    }
+}
+</pre>
+
+<p>同样,如果该应用处于双面板模式下,就应设置带导航标签的操作栏;但如果该应用处于单面板模式下,就应使用旋转窗口小部件设置导航栏。因此您的代码还应确定哪种情况比较合适:</p>
+
+<pre>
+final String CATEGORIES[] = { "热门报道", "政治", "经济", "Technology" };
+
+public void onCreate(Bundle savedInstanceState) {
+    ....
+    if (mIsDualPane) {
+        /* use tabs for navigation */
+        actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_TABS);
+        int i;
+        for (i = 0; i &lt; CATEGORIES.length; i++) {
+            actionBar.addTab(actionBar.newTab().setText(
+                CATEGORIES[i]).setTabListener(handler));
+        }
+        actionBar.setSelectedNavigationItem(selTab);
+    }
+    else {
+        /* use list navigation (spinner) */
+        actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
+        SpinnerAdapter adap = new ArrayAdapter<String>(this, 
+                R.layout.headline_item, CATEGORIES);
+        actionBar.setListNavigationCallbacks(adap, handler);
+    }
+}
+</pre>
+
+
+<h2 id="TaskReuseFrag">重复使用其他活动中的片段</h2>
+
+<p>多屏幕设计中的重复模式是指,对于某些屏幕配置,已实施界面的一部分会用作面板;但对于其他配置,这部分就会以独立活动的形式存在。例如,在新闻阅读器示例中,对于较大的屏幕,新闻报道文本会显示在右侧面板中;但对于较小的屏幕,这些文本就会以独立活动的形式存在。</p>
+
+<p>在类似情况下,您通常可以在多个活动中重复使用相同的  <PH>{@link android.app.Fragment}</PH>  子类以避免代码重复。例如,您在双面板布局中使用了 <code>ArticleFragment</code>:</p>
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+
+<p>然后又在小屏幕的活动布局中重复使用(无布局)了它 (<code>ArticleActivity</code>):</p>
+
+<pre>
+ArticleFragment frag = new ArticleFragment();
+getSupportFragmentManager().beginTransaction().add(android.R.id.content, frag).commit();
+</pre>
+
+<p>当然,这与在 XML 布局中声明片段的效果是一样的,但在这种情况下却没必要使用 XML 布局,因为报道片段是此活动中的唯一组件。</p>
+
+<p>请务必在设计片段时注意,不要针对具体活动创建强耦合。要做到这一点,您通常可以定义一个界面,该界面概括了相关片段与其主活动交互所需的全部方式,然后让主活动实施该界面:</p>
+
+<p>例如,新闻阅读器应用的 <code>HeadlinesFragment</code> 会精确执行以下代码:</p>
+
+<pre>
+public class HeadlinesFragment extends ListFragment {
+    ...
+    OnHeadlineSelectedListener mHeadlineSelectedListener = null;
+
+    /* Must be implemented by host activity */
+    public interface OnHeadlineSelectedListener {
+        public void onHeadlineSelected(int index);
+    }
+    ...
+
+    public void setOnHeadlineSelectedListener(OnHeadlineSelectedListener listener) {
+        mHeadlineSelectedListener = listener;
+    }
+}
+</pre>
+
+<p>然后,如果用户选择某个标题,相关片段就会通知由主活动指定的侦听器(而不是通知某个硬编码的具体活动):</p>
+
+<pre>
+public class HeadlinesFragment extends ListFragment {
+    ...
+    &#64;Override
+    public void onItemClick(AdapterView&lt;?&gt; parent, 
+                            View view, int position, long id) {
+        if (null != mHeadlineSelectedListener) {
+            mHeadlineSelectedListener.onHeadlineSelected(position);
+        }
+    }
+    ...
+}
+</pre>
+
+<p><a
+href="{@docRoot}guide/practices/tablets-and-handsets.html">支持平板电脑和手持设备</a>的指南中进一步介绍了此技术。</p>
+
+
+<h2 id="TaskHandleConfigChanges">处理屏幕配置变化</h2>
+
+<p>如果您使用独立活动实施界面的独立部分,那么请注意,您可能需要对特定配置变化(例如屏幕方向的变化)做出响应,以便保持界面的一致性。</p>
+
+<p>例如,在运行 Android 3.0 或更高版本的标准 7 英寸平板电脑上,如果新闻阅读器示例应用运行在纵向模式下,就会在使用独立活动显示新闻报道;但如果该应用运行在横向模式下,就会使用双面板布局。</p>
+
+<p>也就是说,如果用户处于纵向模式下且屏幕上显示的是用于阅读报道的活动,那么您就需要在检测到屏幕方向变化(变成横向模式)后执行相应操作,即停止上述活动并返回主活动,以便在双面板布局中显示相关内容:</p>
+
+<pre>
+public class ArticleActivity extends FragmentActivity {
+    int mCatIndex, mArtIndex;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mCatIndex = getIntent().getExtras().getInt("catIndex", 0);
+        mArtIndex = getIntent().getExtras().getInt("artIndex", 0);
+
+        // If should be in two-pane mode, finish to return to main activity
+        if (getResources().getBoolean(R.bool.has_two_panes)) {
+            finish();
+            return;
+        }
+        ...
+}
+</pre>
+
+
diff --git a/docs/html-intl/zh-cn/training/multiscreen/index.jd b/docs/html-intl/zh-cn/training/multiscreen/index.jd
new file mode 100644
index 0000000..35c48e0
--- /dev/null
+++ b/docs/html-intl/zh-cn/training/multiscreen/index.jd
@@ -0,0 +1,64 @@
+page.title=针对多种屏幕进行设计
+
+trainingnavtop=true
+startpage=true
+next.title=支持各种屏幕尺寸
+next.link=screensizes.html
+
+@jd:body
+
+<div id="tb-wrapper"> 
+<div id="tb"> 
+ 
+<h2>依存关系和前提条件</h2> 
+
+<ul>
+  <li>Android 1.6 或更高版本(示例应用则需要 2.1 或更高版本)</li>
+  <li><a
+href="http://developer.android.com/guide/components/activities.html">活动</a>和<a href="http://developer.android.com/guide/components/fragments.html">片段</a>的基本知识</li>
+  <li>构建 Android <a
+href="http://developer.android.com/guide/topics/ui/index.html">用户界面</a>的经验</li>
+  <li>多个功能需要用到<a
+href="{@docRoot}tools/extras/support-library.html">支持库</a></li>
+</ul>
+
+<h2>您还应参阅</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">支持多种屏幕</a></li>
+</ul>
+ 
+<h2>试试看</h2> 
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+</div> 
+</div> 
+ 
+<p>Android 支持数百种屏幕尺寸不同的设备,包括小型手机和大型电视机。因此,请务必将您的应用设计为与所有的屏幕尺寸兼容,以便让尽可能多的用户使用该应用。</p>
+
+<p>不过,与各种类型的设备兼容还远远不够。由于各种屏幕尺寸对用户互动产生的利弊有所不同,因此要真正满足用户需求并广获好评,您的应用不仅需要支持多种屏幕,还应针对各类屏幕配置的用户体验进行优化。<em></em><em></em></p>
+
+<p>本教程将向您介绍如何针对多种屏幕配置优化和实施相应的用户界面。</p>
+
+<p>各教程中都提及了一种来自一个示例应用的代码,该应用展示了关于针对多种分辨率进行优化的最佳实践。您可以在右侧下载该示例,并在自己的应用内重复使用其中的代码。</p>
+
+<p class="note"><strong>请注意</strong>:本教程和相关的示例使用了<a
+href="{@docRoot}tools/extras/support-library.html">支持库</a>,以便在 3.0 版以下的 Android 上使用  <PH>{@link android.app.Fragment}</PH>  API。因此,您需要下载该库并将其添加到您的应用,才能使用本教程中涉及的所有 API。</p>
+ 
+
+<h2>教程</h2> 
+ 
+<dl> 
+  <dt><b><a href="screensizes.html">支持各种屏幕尺寸</a></b></dt> 
+    <dd>本教程将向您介绍如何设计可适应多种屏幕尺寸的布局(使用灵活的视图尺寸、 <PH>{@link android.widget.RelativeLayout}</PH>、屏幕尺寸和屏幕方向限定符、别名过滤器以及自动拉伸位图)。</dd> 
+ 
+  <dt><b><a href="screendensities.html">支持各种屏幕密度</a></b></dt> 
+    <dd>本教程将向您介绍如何支持具有不同像素密度的屏幕(使用非密度制约像素并提供各种密度的相应位图)。</dd> 
+ 
+  <dt><b><a href="adaptui.html">实施自适应用户界面流程</a></b></dt> 
+    <dd>本教程将向您介绍如何以可适应多种屏幕尺寸/屏幕密度组合的方式实施用户界面流程(运行时对当前布局的检测,根据当前布局做出响应,处理屏幕配置变化)。</dd> 
+</dl> 
diff --git a/docs/html-intl/zh-cn/training/multiscreen/screendensities.jd b/docs/html-intl/zh-cn/training/multiscreen/screendensities.jd
new file mode 100644
index 0000000..cdb9b7f
--- /dev/null
+++ b/docs/html-intl/zh-cn/training/multiscreen/screendensities.jd
@@ -0,0 +1,100 @@
+page.title=支持各种屏幕密度
+parent.title=针对多种屏幕进行设计
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=支持各种屏幕尺寸
+previous.link=screensizes.html
+next.title=实施自适应用户界面流程
+next.link=adaptui.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+
+<h2>本教程将指导您</h2>
+<ol>
+  <li><a href="#TaskUseDP">使用非密度制约像素</a></li>
+  <li><a href="#TaskProvideAltBmp">提供备用位图</a></li>
+</ol>
+
+<h2>您还应参阅</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">支持多种屏幕</a></li>
+  <li><a href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">图标设计指南</a></li>
+</ul>
+
+<h2>试试看</h2>
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+ 
+</div> 
+</div> 
+
+<p>本教程将向您介绍如何通过提供不同资源和使用独立于分辨率的测量单位来支持不同屏幕密度。</p>
+
+<h2 id="TaskUseDP">使用非密度制约像素</h2>
+
+<p>在设计布局时,大家经常会误使用绝对像素来定义距离或尺寸,您一定要避免犯这种错误。由于各种屏幕的像素密度都有所不同,因此相同数量的像素在不同设备上的实际大小也有所差异,这样使用像素定义布局尺寸就会产生问题。因此,请务必使用 <code>dp</code> 或 <code>sp</code> 单位指定尺寸。<code>dp</code> 是一种非密度制约像素,其尺寸与 160 dpi 像素的实际尺寸相同。<code>sp</code> 也是一种基本单位,但它可根据用户的偏好文字大小进行调整(即尺度独立性像素),因此您应将该测量单位用于定义文字大小(请勿用其定义布局尺寸)。</p>
+
+<p>例如,请使用 <code>dp</code>(而非 <code>px</code>)指定两个视图间的间距:</p>
+
+<pre>
+&lt;Button android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:text="&#64;string/clickme"
+    android:layout_marginTop="20dp" /&gt;
+</pre>
+
+<p>请务必使用 <code>sp</code> 指定文字大小:</p>
+
+<pre>
+&lt;TextView android:layout_width="match_parent" 
+    android:layout_height="wrap_content" 
+    android:textSize="20sp" /&gt;
+</pre>
+
+
+<h2 id="TaskProvideAltBmp">提供备用位图</h2>
+
+<p>由于 Android 可在具有各种屏幕密度的设备上运行,因此您提供的位图资源应始终可以满足各类普遍密度范围的要求:低密度、中等密度、高密度以及超高密度。这将有助于您的图形在所有屏幕密度上都能得到出色的质量和效果。</p>
+
+<p>要生成这些图片,您应先提取矢量格式的原始资源,然后根据以下尺寸范围针对各密度生成相应的图片。</p>
+
+<p><ul>
+  <li><code>xhdpi</code>:2.0
+  <li><code>hdpi</code>:1.5
+  <li><code>mdpi</code>:1.0(最低要求)
+  <li><code>ldpi</code>:0.75
+</ul></p>
+
+<p>也就是说,如果您为 <code>xhdpi</code> 设备生成了 200x200 尺寸的图片,就应该使用同一资源为 <code>hdpi</code>、<code>mdpi</code> 和 <code>ldpi</code> 设备分别生成 150x150、100x100 和 75x75 尺寸的图片。</p>
+
+<p>然后,将生成的图片文件放在 <code>res/</code> 下的相应子目录中(如下所示),系统就会根据运行您应用的设备的屏幕密度自动选择合适的图片:</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+  res/
+    drawable-xhdpi/
+        awesomeimage.png
+    drawable-hdpi/
+        awesomeimage.png
+    drawable-mdpi/
+        awesomeimage.png
+    drawable-ldpi/
+        awesomeimage.png
+</pre>
+
+<p>这样一来,无论您何时引用 <code>&#64;drawable/awesomeimage</code>,系统都能根据相应屏幕的 dpi 选取合适的位图。</p>
+
+<p>有关为您的应用创建图标资产的更多提示和指南,请参阅<a
+href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">图标设计指南</a>。</p>
+
diff --git a/docs/html-intl/zh-cn/training/multiscreen/screensizes.jd b/docs/html-intl/zh-cn/training/multiscreen/screensizes.jd
new file mode 100644
index 0000000..904d097
--- /dev/null
+++ b/docs/html-intl/zh-cn/training/multiscreen/screensizes.jd
@@ -0,0 +1,279 @@
+page.title=支持各种屏幕尺寸
+parent.title=针对多种屏幕进行设计
+parent.link=index.html
+
+trainingnavtop=true
+next.title=支持各种屏幕密度
+next.link=screendensities.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper"> 
+<div id="tb"> 
+
+<h2>本教程将指导您</h2>
+<ol>
+  <li><a href="#TaskUseWrapMatchPar">使用“wrap_content”和“match_parent”</a></li>
+  <li><a href="#TaskUseRelativeLayout">使用相对布局</a></li>
+  <li><a href="#TaskUseSizeQuali">使用尺寸限定符</a></li>
+  <li><a href="#TaskUseSWQuali">使用最小宽度限定符</a></li>
+  <li><a href="#TaskUseAliasFilters">使用布局别名</a></li>
+  <li><a href="#TaskUseOriQuali">使用屏幕方向限定符</a></li>
+  <li><a href="#TaskUse9Patch">使用自动拉伸位图</a></li>
+</ol>
+
+<h2>您还应参阅</h2>
+
+<ul>
+  <li><a href="{@docRoot}guide/practices/screens_support.html">支持多种屏幕</a></li>
+</ul>
+
+<h2>试试看</h2> 
+ 
+<div class="download-box"> 
+<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
+<p class="filename">NewsReader.zip</p> 
+</div> 
+ 
+</div> 
+</div> 
+
+<p>此教程将向您介绍如何通过以下方法支持各种尺寸的屏幕:</p>
+<ul> 
+  <li>确保系统可以适当地调整您布局的尺寸以便适应屏幕</li> 
+  <li>根据屏幕配置提供合适的用户界面布局</li> 
+  <li>确保正确的布局应用到了正确的屏幕上</li>
+  <li>提供可正确缩放的位图</li> 
+</ul> 
+
+
+<h2 id="TaskUseWrapMatchPar">使用“wrap_content”和“match_parent”</h2> 
+
+<p>要确保布局的灵活性并适应各种尺寸的屏幕,您应使用 <code>"wrap_content"</code> 和 <code>"match_parent"</code> 控制某些视图组件的宽度和高度。如果您使用 <code>"wrap_content"</code>,系统就会将视图的宽度或高度设置成所需的最小尺寸以适应视图中的内容,而 <code>"match_parent"</code>(在低于 API 级别 8 的级别中称为 <code>"fill_parent"</code>)则会展开组件以匹配其父视图的尺寸。</p>
+
+<p>如果使用 <code>"wrap_content"</code> 和 <code>"match_parent"</code> 尺寸值而不是硬编码的尺寸,您的视图就会相应地仅使用自身所需的空间或展开以填满可用空间。例如:</p>
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane_with_bar.xml all}
+
+<p>请注意示例中使用 <code>"wrap_content"</code> 和 <code>"match_parent"</code> 控制组件尺寸的方法,而不是关注具体的尺寸。此方法可让布局正确适应各种屏幕尺寸和屏幕方向。</p>
+
+<p>此视图在纵向模式和横向模式下的显示效果如下所示。请注意,组件的尺寸会自动适应屏幕的高度和宽度:</p>
+
+<img src="{@docRoot}images/training/layout-hvga.png" />
+<p class="img-caption"><strong>图 1</strong>。纵向模式(左)和横向模式(右)下的新闻阅读器示例应用。</p>
+
+
+<h2 id="TaskUseRelativeLayout">使用相对布局</h2> 
+
+<p>您可以使用  <PH>{@link android.widget.LinearLayout}</PH>  的嵌套实例并结合 <code>"wrap_content"</code> 和 <code>"match_parent"</code> 尺寸,以便构建相当复杂的布局。不过,您无法通过  <PH>{@link android.widget.LinearLayout}</PH>  精确控制子视图的特殊关系;系统会将  <PH>{@link android.widget.LinearLayout}</PH>  中的视图直接并排列出。如果您需要将子视图排列出各种效果而不是一条直线,通常更合适的解决方法是使用  <PH>{@link android.widget.RelativeLayout}</PH>,这样您就可以根据各组件之间的特殊关系指定布局了。例如,您可以将某个子视图对齐到屏幕左侧,同时将另一个视图对齐到屏幕右侧。</p>
+
+<p>例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;TextView
+        android:id="&#64;+id/label"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="Type here:"/&gt;
+    &lt;EditText
+        android:id="&#64;+id/entry"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="&#64;id/label"/&gt;
+    &lt;Button
+        android:id="&#64;+id/ok"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="&#64;id/entry"
+        android:layout_alignParentRight="true"
+        android:layout_marginLeft="10dp"
+        android:text="OK" /&gt;
+    &lt;Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toLeftOf="&#64;id/ok"
+        android:layout_alignTop="&#64;id/ok"
+        android:text="Cancel" /&gt;
+&lt;/RelativeLayout&gt;
+</pre>
+
+<p>图 2 展示的是此布局在 QVGA 屏幕上的显示效果。</p>
+
+<img src="{@docRoot}images/training/relativelayout1.png" />
+<p class="img-caption"><strong>图 2</strong>。QVGA 屏幕(小屏幕)上的截图。</p>
+
+<p>图 3 展示的是此布局在较大屏幕上的显示效果。</p>
+
+<img src="{@docRoot}images/training/relativelayout2.png" />
+<p class="img-caption"><strong>图 3</strong>。WSVGA 屏幕(大屏幕)上的截图。</p>
+
+<p>请注意,虽然组件的尺寸有所变化,但它们的空间关系仍会保留,具体由  <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH> 指定。</p>
+
+ 
+<h2 id="TaskUseSizeQuali">使用尺寸限定符</h2> 
+
+<p>上文所述的灵活布局或相对布局可以为您带来的优势就只有这么多了。虽然这些布局可以拉伸组件内外的空间以适应各种屏幕,但它们不一定能为每种屏幕都提供最佳的用户体验。因此,您的应用不仅应实施灵活布局,还应针对各种屏幕配置提供一些备用布局。要做到这一点,您可以使用<a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">配置限定符</a>,这样就可以在运行时根据当前的设备配置自动选择合适的资源了(例如根据各种屏幕尺寸选择不同的布局)。</p>
+
+<p>例如,很多应用会在较大的屏幕上实施“双面板”模式(相关应用可能会在一个面板上显示项目列表,并在另一面板上显示对应内容)。平板电脑和电视的屏幕已经大到可以同时容纳这两个面板了,但手机屏幕就需要分别显示。因此,您可以使用以下文件以便实施这些布局:</p>
+
+<ul>
+  <li><code>res/layout/main.xml</code>,单面板(默认)布局:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+</li>
+  <li><code>res/layout-large/main.xml</code>,双面板布局:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+</li>
+</ul>
+
+<p>请注意第二种布局名称目录中的 <code>large</code> 限定符。系统会在属于较大屏幕(例如 7 英寸或更大的平板电脑)的设备上选择此布局。系统会在较小的屏幕上选择其他布局(无限定符)。</p>
+
+
+<h2 id="TaskUseSWQuali">使用最小宽度限定符</h2>
+
+<p>在版本低于 3.2 的 Android 设备上,开发人员遇到的问题之一是“较大”屏幕的尺寸范围,该问题会影响戴尔 Streak、早期的 Galaxy Tab 以及大部分 7 英寸平板电脑。即使这些设备的屏幕属于“较大”的尺寸,但很多应用可能会针对此类别中的各种设备(例如 5 英寸和 7 英寸的设备)显示不同的布局。这就是 Android 3.2 版在引入其他限定符的同时引入“最小宽度”限定符的原因。</p>
+
+<p>最小宽度限定符可让您通过指定某个最小宽度(以 dp 为单位)来定位屏幕。例如,标准 7 英寸平板电脑的最小宽度为 600 dp,因此如果您要在此类屏幕上的用户界面中使用双面板(但在较小的屏幕上只显示列表),您可以使用上文中所述的单面板和双面板这两种布局,但您应使用 <code>sw600dp</code> 指明双面板布局仅适用于最小宽度为 600 dp 的屏幕,而不是使用 <code>large</code> 尺寸限定符:</p>
+
+<ul>
+  <li><code>res/layout/main.xml</code>,单面板(默认)布局:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+</li>
+  <li><code>res/layout-sw600dp/main.xml</code>,双面板布局:
+
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+</li>
+</ul>
+
+<p>也就是说,对于最小宽度大于等于 600 dp 的设备,系统会选择 <code>layout-sw600dp/main.xml</code>(双面板)布局,否则系统就会选择 <code>layout/main.xml</code>(单面板)布局。</p>
+
+<p>但 Android 版本低于 3.2 的设备不支持此技术,原因是这些设备无法将 <code>sw600dp</code> 识别为尺寸限定符,因此您仍需使用 <code>large</code> 限定符。这样一来,就会有一个名称为 <code>res/layout-large/main.xml</code> 的文件(与 <code>res/layout-sw600dp/main.xml</code> 一样)。您将在下一教程中了解到避免此类布局文件出现重复的技术。</p>
+
+
+<h2 id="TaskUseAliasFilters">使用布局别名</h2> 
+
+<p>最小宽度限定符仅适用于 Android 3.2 及更高版本。因此,您仍需使用与较低版本兼容的概括尺寸范围(小、正常、大和特大)。例如,如果您要将用户界面设计成在手机上显示单面板,但在 7 英寸平板电脑、电视和其他较大的设备上显示多面板,请提供以下文件:</p>
+
+<p><ul>
+<li><code>res/layout/main.xml:</code> 单面板布局</li>
+<li><code>res/layout-large:</code> 多面板布局</li>
+<li><code>res/layout-sw600dp:</code> 多面板布局</li>
+</ul></p>
+
+<p>后两个文件是相同的,因为其中一个用于和 Android 3.2 设备匹配,而另一个则是为使用较低版本 Android 的平板电脑和电视准备的。</p>
+
+<p>要避免平板电脑和电视的文件出现重复(以及由此带来的维护问题),您可以使用别名文件。例如,您可以定义以下布局:</p>
+
+<ul>
+<li><code>res/layout/main.xml</code>,单面板布局</li>
+<li><code>res/layout/main_twopanes.xml</code>,双面板布局</li>
+</ul>
+
+<p>然后添加这两个文件:</p>
+
+<p><ul>
+<li><code>res/values-large/layout.xml</code>:
+<pre>
+&lt;resources>
+    &lt;item name="main" type="layout">&#64;layout/main_twopanes&lt;/item>
+&lt;/resources>
+</pre>
+</li>
+
+<li><code>res/values-sw600dp/layout.xml</code>:
+<pre>
+&lt;resources>
+    &lt;item name="main" type="layout">&#64;layout/main_twopanes&lt;/item>
+&lt;/resources>
+</pre>
+
+</li>
+</ul></p>
+
+<p>后两个文件的内容相同,但它们并未实际定义布局。它们只是将  <PH>{@code main}</PH> 设置成了  <PH>{@code main_twopanes}</PH> 的别名。由于这些文件包含 <code>large</code> 和 <code>sw600dp</code> 选择器,因此无论 Android 版本如何,系统都会将这些文件应用到平板电脑和电视上(版本低于 3.2 的平板电脑和电视会匹配 
+<PH>{@code large}</PH>,版本低于 3.2 的平板电脑和电视则会匹配 <code>sw600dp</code>)。</p>
+
+
+<h2 id="TaskUseOriQuali">使用屏幕方向限定符</h2> 
+
+<p>某些布局会同时支持横向模式和纵向模式,但您可以通过调整优化其中大部分布局的效果。在新闻阅读器示例应用中,每种屏幕尺寸和屏幕方向下的布局行为方式如下所示:</p>
+
+<p><ul>
+<li><b>小屏幕,纵向</b>:单面板,带徽标</li>
+<li><b>小屏幕,横向</b>:单面板,带徽标</li>
+<li><b>7 英寸平板电脑,纵向</b>:单面板,带操作栏</li>
+<li><b>7 英寸平板电脑,横向</b>:双面板,宽,带操作栏</li>
+<li><b>10 英寸平板电脑,纵向</b>:双面板,窄,带操作栏</li>
+<li><b>10 英寸平板电脑,横向</b>:双面板,宽,带操作栏</li>
+<li><b>电视,横向</b>:双面板,宽,带操作栏</li>
+</ul></p>
+
+<p>因此,这些布局中的每一种都定义在了 <code>res/layout/</code> 目录下的某个 XML 文件中。为了继续将每个布局分配给各种屏幕配置,该应用会使用布局别名将两者相匹配:</p>
+
+<p><code>res/layout/onepane.xml:</code></p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane.xml all}
+
+<p><code>res/layout/onepane_with_bar.xml:</code></p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/onepane_with_bar.xml all}
+
+<p><code>res/layout/twopanes.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
+
+<p><code>res/layout/twopanes_narrow.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes_narrow.xml all}
+
+<p>既然您已定义了所有可能的布局,那就只需使用配置限定符将正确的布局映射到各种配置即可。您现在只需使用布局别名技术即可做到这一点:</p>
+
+<p><code>res/values/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values/layouts.xml all}
+
+<p><code>res/values-sw600dp-land/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-sw600dp-land/layouts.xml
+all}
+
+<p><code>res/values-sw600dp-port/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-sw600dp-port/layouts.xml
+all}
+
+<p><code>res/values-large-land/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-large-land/layouts.xml all}
+
+<p><code>res/values-large-port/layouts.xml</code>:</p>
+{@sample development/samples/training/multiscreen/newsreader/res/values-large-port/layouts.xml all}
+
+
+
+<h2 id="TaskUse9Patch">使用自动拉伸位图</h2>
+
+<p>支持各种屏幕尺寸通常意味着您的图片资源还必须能适应各种尺寸。例如,无论要应用到什么形状的按钮上,按钮背景都必须能适应。</p>
+
+<p>如果在可以更改尺寸的组件上使用了简单的图片,您很快就会发现显示效果多少有些不太理想,因为系统会在运行时平均地拉伸或收缩您的图片。解决方法为使用自动拉伸位图,这是一种格式特殊的 PNG 文件,其中会指明可以拉伸以及不可以拉伸的区域。</p>
+
+<p>因此,如果设计的是用于尺寸可变的组件上的位图,请务必使用自动拉伸技术。要将某个位图转换成自动拉伸位图,您可以先准备好普通图片(图 4,放大了 4 倍以便清楚显示)。</p>
+
+<img src="{@docRoot}images/training/button.png" />
+<p class="img-caption"><strong>图 4</strong>。<code>button.png</code></p>
+
+<p>然后通过 SDK 的  <ode
+href="{@docRoot}tools/help/draw9patch.html"><code>draw9patch</code></a> 实用工具(位于 <code>tools/</code> 目录中)运行该图片,您可以在该工具中绘制像素以标出要拉伸的区域以及左侧和顶部的边界。您还可以沿右侧和底部边界绘制像素以标出用于放置内容的区域,具体如图 5 所示。</p>
+
+<img src="{@docRoot}images/training/button_with_marks.png" />
+<p class="img-caption"><strong>图 5</strong>。<code>button.9.png</code></p>
+
+<p>请注意沿边界显示的黑色像素。顶部和左侧边界上的像素用于指定可以拉伸的图片区域,右侧和底部边界上的像素则用于指定放置内容的区域。</p>
+
+<p>另请注意 <code>.9.png</code> 的扩展名。您必须使用此扩展名,因为系统框架需要通过此扩展名确定相关图片是自动拉伸位图,而不是普通 PNG 图片。</p>
+
+<p>如果您将此背景应用到某个组件(通过设置 <code>android:background="&#64;drawable/button"</code>),系统框架就会正确拉伸图片以适应按钮的尺寸,具体如图 6 中的各种尺寸所示。</p>
+
+<img src="{@docRoot}images/training/buttons_stretched.png" />
+<p class="img-caption"><strong>图 6</strong>。在各种尺寸下使用 <code>button.9.png</code> 自动拉伸位图的按钮。</p>
+
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
new file mode 100644
index 0000000..2ca77dd
--- /dev/null
+++ b/docs/html/_redirects.yaml
@@ -0,0 +1,328 @@
+# Redirects file.
+# This file contains the list of rewrite rules that are applied when serving
+# pages. Add "pattern: True" to use python regex in to or from.
+#
+#   WATCH OUT -- FROM LINE HAS TO START WITH A HYPHEN
+
+redirects:
+- from: ^/sdk/android-(.*$)
+  to: /about/versions/android-\1
+  pattern: True
+
+- from: /sdk/adding-components.html
+  to: /sdk/exploring.html
+
+- from: /sdk/compatibility-library.html
+  to: /tools/extras/support-library.html
+
+- from: /sdk/eclipse-adt.html
+  to: /tools/sdk/eclipse-adt.html
+
+- from: /sdk/installing.html
+  to: /sdk/installing/index.html
+
+- from: /sdk/installing/next.html
+  to: /training/basics/firstapp/index.html
+
+- from: /sdk/ndk/...
+  to: /tools/sdk/ndk/...
+
+- from: /sdk/oem-usb.html
+  to: /tools/extras/oem-usb.html
+
+- from: /sdk/tools-notes.html
+  to: /tools/sdk/tools-notes.html
+
+- from: /sdk/requirements.html
+  to: /sdk/index.html
+
+# ------------------- GUIDE -------------------
+
+- from: /guide/market/...
+  to: /google/play/...
+
+- from: /guide/google/gcm/client-javadoc/...
+  to: /reference/com/google/android/gcm/package-summary.html
+
+- from: /guide/google/gcm/server-javadoc/...
+  to: /reference/com/google/android/gcm/server/package-summary.html
+
+- from: /guide/google/play/services.html
+  to: /google/play-services/index.html
+
+- from: /guide/google/...
+  to: /google/...
+
+- from: /guide/publishing/licensing.html
+  to: /google/play/licensing/index.html
+
+- from: /google/play/billing/billing_about.html
+  to: /google/play/billing/index.html
+
+- from: /guide/developing/tools/...
+  to: /tools/help/...
+
+- from: /guide/developing/...
+  to: /tools/...
+
+- from: /tools/aidl.html
+  to: /guide/components/aidl.html
+
+- from: /guide/publishing/publishing.html
+  to: /distribute/googleplay/publish/preparing.html
+
+- from: /guide/publishing/...
+  to: /tools/publishing/...
+
+- from: /guide/topics/fundamentals.html
+  to: /guide/components/fundamentals.html
+
+- from: /guide/topics/intents/intents-filters.html
+  to: /guide/components/intents-filters.html
+
+- from: /guide/topics/fundamentals/...
+  to: /guide/components/...
+
+- from: /guide/topics/clipboard/copy-paste.html
+  to: /guide/topics/text/copy-paste.html
+
+- from: /guide/topics/ui/notifiers/index.html
+  to: /guide/topics/ui/notifiers/notifications.html
+
+- from: /guide/topics/wireless/...
+  to: /guide/topics/connectivity/...
+
+- from: /guide/topics/drawing/...
+  to: /guide/topics/graphics/opengl.html
+
+- from: /guide/topics/connectivity/usb/adk.html
+  to: /tools/adk/index.html
+
+- from: /tools/adk/aoa.html
+  to: http://source.android.com/tech/accessories/aoap/aoa.html
+
+- from: /tools/adk/aoa2.html
+  to: http://source.android.com/tech/accessories/aoap/aoa2.html
+
+- from: /guide/topics/usb/...
+  to: /guide/topics/connectivity/usb/...
+
+- from: /guide/appendix/api-levels.html
+  to: /guide/topics/manifest/uses-sdk-element.html#ApiLevels
+
+- from: /guide/appendix/install-location.html
+  to: /guide/topics/data/install-location.html
+
+- from: /guide/basics/what-is-android.html
+  to: /about/index.html
+
+- from: /guide/topics/security/security.html
+  to: /training/articles/security-tips.html
+#  type: permanent
+#  comment: Move content and then adjust this
+
+- from: /guide/appendix/market-filters.html
+  to: /google/play/filters.html
+
+- from: /guide/topics/testing/...
+  to: /tools/testing/...
+
+- from: /guide/topics/graphics/animation.html
+  to: /guide/topics/graphics/overview.html
+
+- from: /guide/topics/graphics/renderscript.html
+  to: /guide/topics/renderscript/index.html
+
+- from: /guide/topics/graphics/renderscript/
+  to: /guide/topics/renderscript/index.html
+
+- from: /guide/topics/location/obtaining-user-location.html
+  to: /guide/topics/location/strategies.html
+
+- from: /guide/topics/nfc/...
+  to: /guide/topics/connectivity/nfc/...
+
+- from: /guide/topics/wireless/...
+  to: /guide/topics/connectivity/...
+
+- from: /guide/topics/network/...
+  to: /guide/topics/connectivity/...
+
+- from: /resources/articles/creating-input-method.html
+  to: /guide/topics/text/creating-input-method.html
+
+- from: /resources/articles/spell-checker-framework.html
+  to: /guide/topics/text/spell-checker-framework.html
+
+- from: /resources/tutorials/notepad/...
+  to: /training/notepad/...
+
+- from: /resources/faq/...
+  to: /guide/faq/...
+
+- from: /resources/tutorials/hello-world.html
+  to: /training/basics/firstapp/index.html
+
+# add the rest of the tutorials here
+
+- from: /guide/practices/design/...
+  to: /guide/practices/...
+
+- from: /guide/practices/accessibility.html
+  to: /guide/topics/ui/accessibility/index.html
+
+# move best practices to training
+
+- from: /guide/practices/app-design/performance.html
+  to: /training/articles/perf-tips.html
+
+- from: /guide/practices/performance.html
+  to: /training/articles/perf-tips.html
+
+- from: /guide/practices/app-design/responsiveness.html
+  to: /training/articles/perf-anr.html
+
+- from: /guide/practices/responsiveness.html
+  to: /training/articles/perf-anr.html
+
+- from: /guide/practices/security.html
+  to: /training/articles/security-tips.html
+
+- from: /guide/practices/jni.html
+  to: /training/articles/perf-jni.html
+
+- from: /guide/tutorials/...
+  to: /resources/tutorials/...
+
+# ------------------- RESOURCES -------------------
+
+- from: /resources/dashboard/...
+  to: /about/dashboards/index.html
+
+- from: /resources/community-groups.html
+  to: /support.html
+
+- from: /resources/tutorials/views/hello-linearlayout.html
+  to: /guide/topics/ui/layout/linear.html
+
+- from: /resources/tutorials/views/hello-relativelayout.html
+  to: /guide/topics/ui/layout/relative.html
+
+- from: /resources/tutorials/views/hello-listview.html
+  to: /guide/topics/ui/layout/listview.html
+
+- from: /resources/tutorials/views/hello-gridview.html
+  to: /guide/topics/ui/layout/gridview.html
+
+- from: /resources/tutorials/views/hello-webview.html
+  to: /guide/webapps/webview.html
+
+- from: /resources/tutorials/views/hello-formstuff.html
+  to: /guide/topics/ui/controls.html
+
+- from: /resources/tutorials/views/hello-datepicker.html
+  to: /guide/topics/ui/controls/pickers.html
+
+- from: /resources/tutorials/views/hello-timepicker.html
+  to: /guide/topics/ui/controls/pickers.html
+
+- from: /resources/tutorials/views/hello-autocomplete.html
+  to: /guide/topics/ui/controls/text.html
+
+- from: /resources/tutorials/views/hello-spinner.html
+  to: /guide/topics/ui/controls/spinner.html
+
+- from: /resources/tutorials/opengl/opengl-es10.html
+  to: /training/graphics/opengl/index.html
+
+- from: /resources/tutorials/opengl/opengl-es20.html
+  to: /training/graphics/opengl/index.html
+
+- from: /resources/tutorials/views/hello-mapview.html
+  to: https://developers.google.com/maps/documentation/android/hello-mapview
+
+- from: /resources/tutorials/views/...
+  to: /guide/topics/ui/declaring-layout.html#CommonLayouts
+
+- from: /guide/topics/ui/layout-objects.html
+  to: /guide/topics/ui/declaring-layout.html#CommonLayouts
+
+- from: /resources/tutorials/localization/...
+  to: /training/basics/supporting-devices/languages.html
+
+- from: /resources/samples/...
+  to: /tools/samples/index.html
+
+- from: /guide/
+  to: /guide/components/index.html
+  # comment: this redirects guide/ and guide/index.html only
+
+# ------------------- TRAINING -------------------
+
+- from: /training/cloudsync/aesync.html
+  to: /google/gcm/index.html
+
+# -------------------- MISC ----------------------
+
+- from: /shareables/...
+  to: http://commondatastorage.googleapis.com/androiddevelopers/shareables/...
+
+- from: /downloads/...
+  to: http://commondatastorage.googleapis.com/androiddevelopers/...
+
+- from: /search.html
+  to: /index.html
+
+- from: /videos/index.html
+  to: /develop/index.html
+
+- from: /live/index.html
+  to: https://developers.google.com/live/
+
+# ---------- PLATFORM VERSIONS ----------------
+
+- from: /4.2
+  to: /about/versions/android-4.2.html
+
+- from: /4.1
+  to: /about/versions/android-4.1.html
+
+- from: /4.0
+  to: /about/versions/android-4.0.html
+
+- from: /(j|jb|jellybean)/?$
+  to: /about/versions/jelly-bean.html
+  pattern: True
+
+- from: /(i|ics|icecreamsandwich)/?$
+  to: /about/versions/android-4.0-highlights.html
+  pattern: True
+
+- from: /(h|hc|honeycomb)/?$
+  to: /about/versions/android-3.0-highlights.html
+  pattern: True
+
+- from: /(g|gb|gingerbread)/?$
+  to: /about/versions/android-2.3-highlights.html
+  pattern: True
+
+# ---------- MISC -----------------
+
+- from: /\+/?$
+  to: https://plus.google.com/108967384991768947849/posts
+  pattern: True
+
+- from: /blog
+  to: http://android-developers.blogspot.com
+
+- from: /stats
+  to: /about/dashboards/index.html
+
+- from: /youtube
+  to: http://www.youtube.com/user/androiddevelopers
+
+- from: /playbadge
+  to: http://developer.android.com/distribute/googleplay/promote/badges.html
+
+- from: /deviceart
+  to: http://developer.android.com/distribute/promote/device-art.html
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd
index aa0e010..14f3dd1 100644
--- a/docs/html/about/dashboards/index.jd
+++ b/docs/html/about/dashboards/index.jd
@@ -31,32 +31,32 @@
   <th>Distribution</th>
 </tr>
 <tr><td><a href="/about/versions/android-1.6.html">1.6</a></td><td>Donut</td>    <td>4</td><td>0.2%</td></tr>
-<tr><td><a href="/about/versions/android-2.1.html">2.1</a></td><td>Eclair</td>   <td>7</td><td>2.4%</td></tr>
-<tr><td><a href="/about/versions/android-2.2.html">2.2</a></td><td>Froyo</td>    <td>8</td><td>9.0%</td></tr>
+<tr><td><a href="/about/versions/android-2.1.html">2.1</a></td><td>Eclair</td>   <td>7</td><td>2.2%</td></tr>
+<tr><td><a href="/about/versions/android-2.2.html">2.2</a></td><td>Froyo</td>    <td>8</td><td>8.1%</td></tr>
 <tr><td><a href="/about/versions/android-2.3.html">2.3 - 2.3.2</a>
                                    </td><td rowspan="2">Gingerbread</td>    <td>9</td><td>0.2%</td></tr>
 <tr><td><a href="/about/versions/android-2.3.3.html">2.3.3 - 2.3.7
-        </a></td><!-- Gingerbread -->                                       <td>10</td><td>47.4%</td></tr>
+        </a></td><!-- Gingerbread -->                                       <td>10</td><td>45.4%</td></tr>
 <tr><td><a href="/about/versions/android-3.1.html">3.1</a></td>
-                                                   <td rowspan="2">Honeycomb</td>      <td>12</td><td>0.4%</td></tr>
-<tr><td><a href="/about/versions/android-3.2.html">3.2</a></td>      <!-- Honeycomb --><td>13</td><td>1.1%</td></tr>
+                                                   <td rowspan="2">Honeycomb</td>      <td>12</td><td>0.3%</td></tr>
+<tr><td><a href="/about/versions/android-3.2.html">3.2</a></td>      <!-- Honeycomb --><td>13</td><td>1.0%</td></tr>
 <tr><td><a href="/about/versions/android-4.0.3.html">4.0.3 - 4.0.4</a></td>
-                                                            <td>Ice Cream Sandwich</td><td>15</td><td>29.1%</td></tr> 
+                                                            <td>Ice Cream Sandwich</td><td>15</td><td>29.0%</td></tr> 
 <tr><td><a href="/about/versions/android-4.1.html">4.1</a></td>
-                                                   <td rowspan="2">Jelly Bean</td><td>16</td><td>9.0%</td></tr>
-<tr><td><a href="/about/versions/android-4.2.html">4.2</a></td><!--Jelly Bean-->  <td>17</td><td>1.2%</td></tr>  
+                                                   <td rowspan="2">Jelly Bean</td><td>16</td><td>12.2%</td></tr>
+<tr><td><a href="/about/versions/android-4.2.html">4.2</a></td><!--Jelly Bean-->  <td>17</td><td>1.4%</td></tr>  
 </table>
 
 </div>
 
 <div class="col-8" style="margin-right:0">
-<img alt=""
-src="http://chart.apis.google.com/chart?&cht=p&chs=460x245&chf=bg,s,00000000&chd=t:2.6,9.0,47.6,1.5,29.1,10.2&chl=Eclair%20%26%20older|Froyo|Gingerbread|Honeycomb|Ice%20Cream%20Sandwich|Jelly%20Bean&chco=c4df9b,6fad0c"
+<img style="margin-left:30px" alt=""
+src="//chart.apis.google.com/chart?&cht=p&chs=460x245&chf=bg,s,00000000&chd=t:2.4,8.1,45.4,0.3,29,13.6&chl=Eclair%20%26%20older|Froyo|Gingerbread|Honeycomb|Ice%20Cream%20Sandwich|Jelly%20Bean&chco=c4df9b,6fad0c"
 />
 
 </div><!-- end dashboard-panel -->
 
-<p style="clear:both"><em>Data collected during a 14-day period ending on January 3, 2013</em></p>
+<p style="clear:both"><em>Data collected during a 14-day period ending on February 4, 2013</em></p>
 <!--
 <p style="font-size:.9em">* <em>Other: 0.1% of devices running obsolete versions</em></p>
 -->
@@ -81,9 +81,9 @@
 Google Play within a 14-day period ending on the date indicated on the x-axis.</p>
 
 <img alt="" height="250" width="660"
-src="http://chart.apis.google.com/chart?&cht=lc&chs=660x250&chxt=x,x,y,r&chf=bg,s,00000000&chxr=0,0,12|1,0,12|2,0,100|3,0,100&chxl=0%3A%7C07/01%7C07/15%7C08/01%7C08/15%7C09/01%7C09/15%7C10/01%7C10/15%7C11/01%7C11/15%7C12/01%7C12/15%7C01/01%7C1%3A%7C2012%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C2013%7C2%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25%7C3%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25&chxp=0,0,1,2,3,4,5,6,7,8,9,10,11,12&chxtc=0,5&chd=t:99.2,99.2,99.2,99.2,99.3,99.4,99.5,99.5,99.5,99.6,100.0,100.0,100.0|94.5,94.7,95.0,95.2,95.6,95.8,96.1,96.3,96.4,96.7,96.9,97.2,97.4|77.1,78.3,79.5,80.4,81.4,82.3,83.2,83.8,84.7,85.6,86.4,87.0,88.2|13.0,15.7,18.9,21.2,23.7,25.5,27.4,28.7,31.1,33.0,35.4,36.8,40.3|10.6,13.3,16.6,19.0,21.5,23.5,25.5,26.8,29.4,31.4,33.8,35.2,38.8|0.0,0.0,0.8,0.9,1.1,1.4,1.8,2.1,3.2,4.8,6.5,7.5,9.9&chm=b,c3df9b,0,1,0|tFroyo,689326,1,0,15,,t::-5|b,b4db77,1,2,0|tGingerbread,547a19,2,0,15,,t::-5|b,a5db51,2,3,0|b,96dd28,3,4,0|tIce%20Cream%20Sandwich,293f07,4,0,15,,t::-5|b,83c916,4,5,0|B,6fad0c,5,6,0&chg=7,25&chdl=Eclair|Froyo|Gingerbread|Honeycomb|Ice%20Cream%20Sandwich|Jelly%20Bean&chco=add274,9dd14f,8ece2a,7ab61c,659b11,507d08"
+src="//chart.apis.google.com/chart?&cht=lc&chs=660x250&chxt=x,x,y,r&chf=bg,s,00000000&chxr=0,0,12|1,0,12|2,0,100|3,0,100&chxl=0%3A%7C08/01%7C08/15%7C09/01%7C09/15%7C10/01%7C10/15%7C11/01%7C11/15%7C12/01%7C12/15%7C01/01%7C01/15%7C02/01%7C1%3A%7C2012%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C2013%7C%7C2013%7C2%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25%7C3%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25&chxp=0,0,1,2,3,4,5,6,7,8,9,10,11,12&chxtc=0,5&chd=t:99.2,99.2,99.3,99.4,99.5,99.5,99.5,99.6,100.0,100.0,100.0,100.0,100.0|95.0,95.2,95.6,95.8,96.1,96.3,96.4,96.7,96.9,97.2,97.4,97.4,97.6|79.5,80.4,81.4,82.3,83.2,83.8,84.7,85.6,86.4,87.0,88.2,88.8,89.4|18.9,21.2,23.7,25.5,27.4,28.7,31.1,33.0,35.4,36.8,40.3,42.0,43.6|16.6,19.0,21.5,23.5,25.5,26.8,29.4,31.4,33.8,35.2,38.8,40.7,42.3|0.8,0.9,1.1,1.4,1.8,2.1,3.2,4.8,6.5,7.5,9.9,11.7,13.3&chm=b,c3df9b,0,1,0|tFroyo,689326,1,0,15,,t::-5|b,b4db77,1,2,0|tGingerbread,547a19,2,0,15,,t::-5|b,a5db51,2,3,0|b,96dd28,3,4,0|tIce%20Cream%20Sandwich,293f07,4,0,15,,t::-5|b,83c916,4,5,0|tJelly%20Bean,131d02,5,11,15,,t::-5|B,6fad0c,5,6,0&chg=7,25&chdl=Eclair|Froyo|Gingerbread|Honeycomb|Ice%20Cream%20Sandwich|Jelly%20Bean&chco=add274,9dd14f,8ece2a,7ab61c,659b11,507d08"
 />
-<p><em>Last historical dataset collected during a 14-day period ending on January 1, 2013</em></p>
+<p><em>Last historical dataset collected during a 14-day period ending on February 1, 2013</em></p>
 
 
 
@@ -112,11 +112,11 @@
 
 
 <img alt="" style="float:right;"
-src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chf=bg,s,00000000&chco=c4df9b,6fad0c&chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.6,6.1,86.6,2.7" />
+src="//chart.googleapis.com/chart?cht=p&chs=400x250&chf=bg,s,00000000&chco=c4df9b,6fad0c&chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.6,6.1,86.6,2.7" />
 
 
 <img alt="" style="float:right;clear:right"
-src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chf=bg,s,00000000&chco=c4df9b,6fad0c&chl=ldpi%7Cmdpi%7Chdpi%7Cxhdpi&chd=t%3A2.2,18,51.1,28.7" />
+src="//chart.googleapis.com/chart?cht=p&chs=400x250&chf=bg,s,00000000&chco=c4df9b,6fad0c&chl=ldpi%7Cmdpi%7Chdpi%7Cxhdpi&chd=t%3A2.2,18,51.1,28.7" />
 
 
 <p>This section provides data about the relative number of active devices that have a particular
@@ -194,7 +194,7 @@
 
 
 <img alt="" style="float:right"
-src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=GL%201.1%20only|GL%202.0%20%26%201.1&chd=t%3A9.2,90.8&chf=bg,s,00000000" />
+src="//chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=GL%201.1%20only|GL%202.0%20%26%201.1&chd=t%3A9.2,90.8&chf=bg,s,00000000" />
 
 <p>To declare which version of OpenGL ES your application requires, you should use the {@code
 android:glEsVersion} attribute of the <a
diff --git a/docs/html/about/index.jd b/docs/html/about/index.jd
index cf90d04..0b72701 100644
--- a/docs/html/about/index.jd
+++ b/docs/html/about/index.jd
@@ -36,7 +36,7 @@
 driving strong growth in app consumption. Android users download more than 
 1.5 billion apps and games from Google Play each month. </p>
 
-<p>With it's partners, Android is continuously pushing the boundaries of hardware and software
+<p>With its partners, Android is continuously pushing the boundaries of hardware and software
 forward to bring new capabilities to users and developers. For developers, 
 Android innovation lets you build powerful, differentiated applications
 that use the latest mobile technologies.</p>
@@ -65,7 +65,7 @@
 
 <p>Android also gives you tools for creating apps that look great and take
 advantage of the hardware capabilities available on each device. It
-automatically adapts your UI to look it's best on each device, while giving you
+automatically adapts your UI to look its best on each device, while giving you
 as much control as you want over your UI on different device
 types. </p> 
 
diff --git a/docs/html/about/versions/android-1.6-highlights.jd b/docs/html/about/versions/android-1.6-highlights.jd
index edfd7ff..0c56e8e 100644
--- a/docs/html/about/versions/android-1.6-highlights.jd
+++ b/docs/html/about/versions/android-1.6-highlights.jd
@@ -27,7 +27,7 @@
 <object width="278" height="180">
 <param name="movie" value="http://www.youtube.com/v/MBRFkLKRwFw&hl=en&fs=1&"></param>
 <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
-<embed src="http://www.youtube.com/v/MBRFkLKRwFw&hl=en&fs=1&" type="application/x-shockwave-flash" 
+<embed src="//www.youtube.com/v/MBRFkLKRwFw&hl=en&fs=1&" type="application/x-shockwave-flash" 
 allowscriptaccess="always" allowfullscreen="true" width="278" height="180"></embed>
 </object>
 </div>
diff --git a/docs/html/about/versions/android-2.0-highlights.jd b/docs/html/about/versions/android-2.0-highlights.jd
index 58b5fda..bec49a3 100644
--- a/docs/html/about/versions/android-2.0-highlights.jd
+++ b/docs/html/about/versions/android-2.0-highlights.jd
@@ -32,7 +32,7 @@
 <object width="278 height="180">
 <param name="movie" value="http://www.youtube.com/v/opZ69P-0Jbc&hl=en&fs=1&"></param>
 <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
-<embed src="http://www.youtube.com/v/opZ69P-0Jbc&hl=en&fs=1&" type="application/x-shockwave-flash" 
+<embed src="//www.youtube.com/v/opZ69P-0Jbc&hl=en&fs=1&" type="application/x-shockwave-flash" 
 allowscriptaccess="always" allowfullscreen="true" width="278" height="180"></embed>
 </object>
 </div>
diff --git a/docs/html/about/versions/android-2.2-highlights.jd b/docs/html/about/versions/android-2.2-highlights.jd
index 190e301..334d036 100644
--- a/docs/html/about/versions/android-2.2-highlights.jd
+++ b/docs/html/about/versions/android-2.2-highlights.jd
@@ -44,7 +44,7 @@
 <param name="movie" value="http://www.youtube.com/v/yAZYSVr2Bhc&hl=en&fs=1&"></param>
 <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess"
 value="always"></param>
-<embed src="http://www.youtube.com/v/yAZYSVr2Bhc&hl=en&fs=1&" type="application/x-shockwave-flash"
+<embed src="//www.youtube.com/v/yAZYSVr2Bhc&hl=en&fs=1&" type="application/x-shockwave-flash"
 allowscriptaccess="always" allowfullscreen="true" width="278" height="180"></embed>
 </object>
 </div>
diff --git a/docs/html/about/versions/android-3.0.jd b/docs/html/about/versions/android-3.0.jd
index 68ac03a..d0b41d3 100644
--- a/docs/html/about/versions/android-3.0.jd
+++ b/docs/html/about/versions/android-3.0.jd
@@ -571,7 +571,7 @@
 can accelerate graphics operations and data processing. Renderscript is an ideal way to create
 high-performance 3D effects for applications, wallpapers, carousels, and more.</p>
 <p>For more information, see the <a
-href="{@docRoot}guide/topics/graphics/renderscript.html">3D Rendering and Computation with
+href="{@docRoot}guide/topics/renderscript/index.html">3D Rendering and Computation with
 Renderscript</a> documentation.</p></li>
 </ul>
 
diff --git a/docs/html/design/videos/index.jd b/docs/html/design/videos/index.jd
index 272183f..8ddd4aa 100644
--- a/docs/html/design/videos/index.jd
+++ b/docs/html/design/videos/index.jd
@@ -12,7 +12,7 @@
     <p>You have a great idea for an Android app. You want it to stand out among hundreds of thousands. You want your users to love it and tell everyone they know. The Android User Experience team is here to help. We talk about the Android Design guide and other tricks of the trade for creating apps that delight users and help them accomplish their goals. No design background is required.</p>
   </div>
   <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="http://www.youtube.com/embed/2NL_83EG0no" frameborder="0" allowfullscreen=""></iframe>
+    <iframe width="355" height="200" src="//www.youtube.com/embed/2NL_83EG0no" frameborder="0" allowfullscreen=""></iframe>
   </div>
 </div>
 
@@ -24,7 +24,7 @@
     <p>Design isn't black magic, it's a field that people can learn. In this talk two elite designers from Google give you an advanced crash course in interactive and visual design. Topics include mental models, natural mappings, metaphors, mode errors, visual hierarchies, typography and gestalt principles. Correctly applied, this knowledge can drastically improve the quality of your work.</p>
   </div>
   <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="http://www.youtube.com/embed/iJDoxOTyMdk" frameborder="0" allowfullscreen=""></iframe>
+    <iframe width="355" height="200" src="//www.youtube.com/embed/iJDoxOTyMdk" frameborder="0" allowfullscreen=""></iframe>
   </div>
 </div>
 
@@ -36,7 +36,7 @@
     <p>An app is useless if people can't find their way around it. Android introduced big navigation-support changes in 3.0 and 4.0. The Action Bar offers a convenient control for Up navigation, the Back key's behavior became more consistent within tasks, and the Recent Tasks UI got an overhaul. In this talk, we discuss how and why we got where we are today, how to think about navigation when designing your app's user experience, and how to write apps that offer effortless navigation in multiple Android versions.</p>
   </div>
   <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="http://www.youtube.com/embed/XwGHJJYBs0Q" frameborder="0" allowfullscreen=""></iframe>
+    <iframe width="355" height="200" src="//www.youtube.com/embed/XwGHJJYBs0Q" frameborder="0" allowfullscreen=""></iframe>
   </div>
 </div>
 
@@ -48,7 +48,7 @@
     <p>The Android Design Guide describes how to design beautiful Android apps, but not how to build them. In this talk we give practical tips for how to apply fit &amp; finish as you implement your design, we show you how to avoid some common pitfalls, we describe some useful patterns, and show how tools can help.</p>
   </div>
   <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="http://www.youtube.com/embed/2jCVmfCse1E" frameborder="0" allowfullscreen=""></iframe>
+    <iframe width="355" height="200" src="//www.youtube.com/embed/2jCVmfCse1E" frameborder="0" allowfullscreen=""></iframe>
   </div>
 </div>
 
@@ -60,7 +60,7 @@
     <p>Best-in-class application designers and developers talk about their experience in developing for Android, showing screenshots from their app, exploring the challenges they faced, and offering creative solutions congruent with the Android Design guide. Guests are invited to show examples of visual and interaction patterns in their application that manage to keep it simultaneously consistent and personal.</p>
   </div>
   <div class="layout-content-col span-6">
-    <iframe width="355" height="200" src="http://www.youtube.com/embed/8iUbr8RZKtg" frameborder="0" allowfullscreen=""></iframe>
+    <iframe width="355" height="200" src="//www.youtube.com/embed/8iUbr8RZKtg" frameborder="0" allowfullscreen=""></iframe>
   </div>
 </div>
 
diff --git a/docs/html/develop/index.jd b/docs/html/develop/index.jd
index 57fa498..beb5ac5 100644
--- a/docs/html/develop/index.jd
+++ b/docs/html/develop/index.jd
@@ -70,7 +70,7 @@
                    <h2>In-app Subscriptions with Trials</h2>
                    <p>You can now set up a <strong>free trial period</strong> for any Google Play in-app subscription, making it easy for users try your subscriber content before automatically converting to a full subscription. Free trials give you a new way to bring users into your products and engage them effectively. </p>
                    <p><a class="button"
-href="{@docRoot}google/play/billing/billing_subscriptions.html#trials">Read
+href="{@docRoot}google/play/billing/v2/billing_subscriptions.html#trials">Read
 more</a></p>
                    </div>                
                 </li>
diff --git a/docs/html/distribute/googleplay/about/distribution.jd b/docs/html/distribute/googleplay/about/distribution.jd
index 982bb1f..e09e300 100644
--- a/docs/html/distribute/googleplay/about/distribution.jd
+++ b/docs/html/distribute/googleplay/about/distribution.jd
@@ -8,13 +8,13 @@
 <h2 id="instant">Instant publishing, instant updates</h2>
 
 <p>On Google Play, you can publish your products to customers instantly. Just
-upload and configure your product in the <span style="font-weight:500;">Google Play Android Developer Console</span>
+upload and configure your product in the <span style="font-weight:500;">Google Play Developer Console</span>
 and press the Publish button&mdash;your app appears in the store listings within
 hours, not weeks.</p>
 
 <p>Once your app is published, you can update it as often as you want. You can
 change prices, configuration, and distribution options at any time through the
-Google Play Android Developer Console, without needing to update your app
+Google Play Developer Console, without needing to update your app
 binary.</p>
 
 <p>Later, as you add features or address code issues, you can publish an updated
@@ -37,7 +37,7 @@
 
 <h3 id="geotargeting">Geographic targeting</h3>
 
-<p>You can use controls in the Google Play Android Developer Console to easily
+<p>You can use controls in the Google Play Developer Console to easily
 manage the geographic distribution of your apps, without any changes in your
 application binary. You can specify which countries and territories you want to
 distribute to, and even which carriers (for some countries). </p>
@@ -45,7 +45,7 @@
 <p>When users visit the store, Google Play makes sure that they are in one of
 your targeted countries before downloading your app. You can change your country
 and carrier targeting at any time just by saving changes in the Google Play
-Android Developer Console.</p>
+Developer Console.</p>
 
 <p>To help you market to users around the world, you
 can <a href="{@docRoot}distribute/googleplay/publish/preparing.html#localize">localize
@@ -72,13 +72,13 @@
 
 <p>For pinpoint control over distribution, Google Play lets you see all of the
 devices your app is available to based on its dependencies (if any). From the
-Google Play Android Developer Console, you can list the supported devices and
+Google Play Developer Console, you can list the supported devices and
 even exclude specific devices if needed.</p>
 
 <h2 id="stats">Statistics for analyzing installs</h2>
 
 <p>Once you’ve published your app, Google Play makes it easy to see how it’s
-doing. The Google Play Android Developer Console gives you access to a variety
+doing. The Google Play Developer Console gives you access to a variety
 of anonymized metrics that show your app’s installation performance measured by
 unique users and unique devices, across a variety of different dimensions such
 as country, Android version, device, country, carrier, and app version.</p>
diff --git a/docs/html/distribute/googleplay/about/monetizing.jd b/docs/html/distribute/googleplay/about/monetizing.jd
index cabd56b..8bafd53 100644
--- a/docs/html/distribute/googleplay/about/monetizing.jd
+++ b/docs/html/distribute/googleplay/about/monetizing.jd
@@ -133,7 +133,7 @@
 manage shifts in exchange rates.</p>
 
 <p>You can set and manage prices for your apps and in-app products from the
-Google Play Android Developer Console.</p>
+Google Play Developer Console.</p>
 
 <h2 id="payouts">Monthly payouts in your local currency</h2>
 
diff --git a/docs/html/distribute/googleplay/promote/badges.jd b/docs/html/distribute/googleplay/promote/badges.jd
index 081c8f7..23a116d 100644
--- a/docs/html/distribute/googleplay/promote/badges.jd
+++ b/docs/html/distribute/googleplay/promote/badges.jd
@@ -1,8 +1,8 @@
 page.title=Google Play Badges
 @jd:body
 
-<p>Google Play badges allow you to promote your app with official branding in your
-online ads, promotional materials, or anywhere else you want a link to your app.</p>
+<p itemprop="description">Google Play badges allow you to promote your app with official branding
+in your online ads, promotional materials, or anywhere else you want a link to your app.</p>
 
 <p>In the form below,
 input your app's package name or publisher name, choose the badge style,
diff --git a/docs/html/distribute/googleplay/promote/linking.jd b/docs/html/distribute/googleplay/promote/linking.jd
index 46607f5..4fdc5db 100644
--- a/docs/html/distribute/googleplay/promote/linking.jd
+++ b/docs/html/distribute/googleplay/promote/linking.jd
@@ -51,7 +51,7 @@
 
 <p>Here's an example:</p>
 
-<p style="margin-left:1em;"><code><a href="http://play.google.com/store/apps/details?id=com.google.android.apps">http://play.google.com/store/apps/details?id=com.google.android.apps</a></code></p>
+<p style="margin-left:1em;"><code><a href="http://play.google.com/store/apps/details?id=com.google.android.apps.maps">http://play.google.com/store/apps/details?id=com.google.android.apps.maps</a></code></p>
 
 <p>For details on how to send the link in an Android app, see <a href="#android-app">Linking from an Android App</a>.</p>
 
diff --git a/docs/html/distribute/googleplay/publish/preparing.jd b/docs/html/distribute/googleplay/publish/preparing.jd
index 097f163..e93b211 100644
--- a/docs/html/distribute/googleplay/publish/preparing.jd
+++ b/docs/html/distribute/googleplay/publish/preparing.jd
@@ -439,7 +439,7 @@
 <ul style="margin-top:-.5em;">
 <li><strong><a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1078870">Graphic Assets for your Application
 </a></strong> &mdash; Details about the graphic assets you need to upload before publishing.</li>
-<li><strong><a href="http://android-developers.blogspot.com/b/post-preview?token=hbE_njsBAAA.dLFzPbe-VFYCS6R3xP16HQ.Z4XO2iUmCqyYpoFPQ4OhiQ&postId=687446965502713273&type=POST">Google Play Featured Image Guidelines
+<li><strong><a href="http://android-developers.blogspot.com/2011/10/android-market-featured-image.html">Google Play Featured Image Guidelines
 </a></strong> &mdash; Blog post that highlights key design considerations for your app's featured image.</li>
 </ul>
 </td>
diff --git a/docs/html/distribute/googleplay/publish/register.jd b/docs/html/distribute/googleplay/publish/register.jd
index 7ca6696..335d335 100644
--- a/docs/html/distribute/googleplay/publish/register.jd
+++ b/docs/html/distribute/googleplay/publish/register.jd
@@ -13,7 +13,7 @@
 
 <h2>Get Started</h2>
 <ol>
-  <li><a href="https://play.google.com/apps/publish/">Google Play Android Developer Console</a></li>
+  <li><a href="https://play.google.com/apps/publish/">Google Play Developer Console</a></li>
 </ol>
 
 </div>
@@ -24,13 +24,13 @@
 <ul>
 <li>Register for a Google Play publisher account</li>
 <li>If you will sell apps, set up a Google Checkout Merchant Account</li>
-<li>Explore the Google Play Android Developer Console and learn about the tools for publishing</li>
+<li>Explore the Google Play Developer Console and learn about the tools for publishing</li>
 </ul>
 
 
 <h3>Register for a publisher account</h3>
 
-<p>The first step is to visit the Google Play Android Developer Console and register for a publisher account.</p>
+<p>The first step is to visit the Google Play Developer Console and register for a publisher account.</p>
 
 <p>Here's what you will do during registration: </p>
 
@@ -46,7 +46,7 @@
 
 
 <ol>
-<li>Visit the Google Play Android Developer Console at <a href="https://play.google.com/apps/publish/">https://play.google.com/apps/publish/</a>.
+<li>Visit the Google Play Developer Console at <a href="https://play.google.com/apps/publish/">https://play.google.com/apps/publish/</a>.
 <li>Enter basic information about your <strong>developer identity</strong> &mdash; developer name, email address, and so on. You can modify this information later.</li>
 <li>Read and accept the <strong>Developer Distribution Agreement</strong> that applies to your country or region. Note that apps and store listings that you publish on Google Play must comply with the Developer Program Policies and US export law,</li>
 <li>Pay a <strong>$25 USD registration fee</strong> using Google Checkout. If you don't have a Google Checkout account, you can quickly set one up during the process.</li>
@@ -61,7 +61,7 @@
 <p>To set up a Merchant account from the Developer Console:</p>
 
 <ol>
-<li><strong>Sign in</strong> to your Google Play Android Developer Console at <a href="https://play.google.com/apps/publish/">https://play.google.com/apps/publish/</a>
+<li><strong>Sign in</strong> to your Google Play Developer Console at <a href="https://play.google.com/apps/publish/">https://play.google.com/apps/publish/</a>
 <li>Click on the "<strong>Edit profile</strong>" link.
 <li>Select "<strong>Setup a Merchant Account at Google Checkout</strong>".</li>
 </ol>
@@ -69,4 +69,4 @@
 <p>This will take you to the Google Checkout site to sign up as a Merchant; you'll need to have information about your business handy to complete this step.</p>
 
 <h3>Explore the Developer Console</h3>
-<p>When your registration is verified, you can sign in to your Android Developer Console, which will be the home for your app publishing operations and tools on Google Play. </p>
+<p>When your registration is verified, you can sign in to your Developer Console, which will be the home for your app publishing operations and tools on Google Play. </p>
diff --git a/docs/html/distribute/googleplay/quality/tablet.jd b/docs/html/distribute/googleplay/quality/tablet.jd
index cc7ba3f..24a30f1 100644
--- a/docs/html/distribute/googleplay/quality/tablet.jd
+++ b/docs/html/distribute/googleplay/quality/tablet.jd
@@ -507,7 +507,7 @@
 <td><p>Related resources:</p>
 <ul style="margin-top:-.5em;">
 <li><strong><a href="https://play.google.com/apps/publish/">Publishing Checklist</a></strong> &mdash; Recommendations on how to prepare your app for publishing, test it, and launch successfully on Google Play.</li>
-<li><strong><a href="https://play.google.com/apps/publish/">Google Play Android Developer Console</a></strong> &mdash; The tools console for publishing your app to Android users.</li>
+<li><strong><a href="https://play.google.com/apps/publish/">Google Play Developer Console</a></strong> &mdash; The tools console for publishing your app to Android users.</li>
 </ul>
 </td>
 </tr>
diff --git a/docs/html/distribute/googleplay/spotlight/tablets.jd b/docs/html/distribute/googleplay/spotlight/tablets.jd
index ee256bc..7e1ca43 100644
--- a/docs/html/distribute/googleplay/spotlight/tablets.jd
+++ b/docs/html/distribute/googleplay/spotlight/tablets.jd
@@ -55,7 +55,7 @@
     <div style="padding:.5em 0 0 1em;">
 <a href="http://play.google.com/store/apps/details?id=com.mint">
   <img alt="Android app on Google Play"
-       src="http://developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
+       src="//developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
 </a>
       
     </div>
@@ -145,7 +145,7 @@
     <div style="padding:.5em 0 0 1em;">
 <a href="http://play.google.com/store/apps/details?id=com.tinyco.village">
   <img alt="Android app on Google Play"
-       src="http://developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
+       src="//developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
 </a>
       
     </div>
@@ -235,7 +235,7 @@
     <div style="padding:.5em 0 0 1em;">
 <a href="http://play.google.com/store/apps/details?id=com.instapaper.android">
   <img alt="Android app on Google Play"
-       src="http://developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
+       src="//developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
 </a>
       
     </div>
diff --git a/docs/html/google/gcm/c2dm.jd b/docs/html/google/gcm/c2dm.jd
index e8a7edb..5c4a86e 100644
--- a/docs/html/google/gcm/c2dm.jd
+++ b/docs/html/google/gcm/c2dm.jd
@@ -43,7 +43,7 @@
 <ul>
   <li> Ease of use. No sign-up forms.</li>
   <li>No quotas.</li>
-  <li>GCM and C2DM stats are available through the <a href="http://play.google.com/apps/publish">Android Developer Console</a>.</li>
+  <li>GCM and C2DM stats are available through the <a href="http://play.google.com/apps/publish">Developer Console</a>.</li>
   <li>Battery efficiency.</li>
   <li>Rich set of new APIs.</li>
 </ul>
diff --git a/docs/html/google/gcm/gcm.jd b/docs/html/google/gcm/gcm.jd
index 6e15ef7..09ce95e 100644
--- a/docs/html/google/gcm/gcm.jd
+++ b/docs/html/google/gcm/gcm.jd
@@ -1026,7 +1026,7 @@
 
 <p>To view  statistics and any error messages for your GCM applications:</p>
 <ol>
-  <li> Go to the <code><a href="http://play.google.com/apps/publish">Android Developer Console</a></code>.</li>
+  <li> Go to the <code><a href="http://play.google.com/apps/publish">Developer Console</a></code>.</li>
   <li>Login with your developer account. 
   <p>You will see a page that has a list of all of your apps.</p></li>
   <li> Click on the &quot;statistics&quot; link next to the app for which you want to view GCM stats. 
@@ -1034,7 +1034,7 @@
   <li>Go to the drop-down menu and select the GCM metric you want to view. 
   </li>
 </ol>
-<p class="note"><strong>Note:</strong> Stats on the Google API Console are not enabled for GCM. You must use the <a href="http://play.google.com/apps/publish">Android Developer Console</a>.</p>
+<p class="note"><strong>Note:</strong> Stats on the Google API Console are not enabled for GCM. You must use the <a href="http://play.google.com/apps/publish">Developer Console</a>.</p>
 
 <h2 id="example">Examples</h2>
 <p>See the <a href="demo.html">GCM Demo Application</a> document.</p>
diff --git a/docs/html/google/play-services/auth.jd b/docs/html/google/play-services/auth.jd
index 3f46c3f..8e11131 100644
--- a/docs/html/google/play-services/auth.jd
+++ b/docs/html/google/play-services/auth.jd
@@ -57,7 +57,12 @@
 </pre>
 <h2 id="obtain">Obtaining an Access Token</h2>
 <p>
-  With an email address, you can now obtain an access token. There are two general
+  With an email address and the service scope you can now obtain an access token.
+</p>
+<p class="note"><strong>Note:</strong> Specify <code>"oauth2:<em>scope</em>"</code> for a single scope or
+  <code>"oauth2:<em>scope1</em> <em>scope2</em> <em>scope3</em>"</code> for multiple scopes.</p>
+
+There are two general
   ways to get a token:</p>
 
     <ul>
@@ -73,6 +78,7 @@
 
     <h3>Using getToken()</h3>
     The following code snippet obtains an access token with an email address, the scope that you want to use for the service, and a {@link android.content.Context}:
+
 <pre>
 HelloActivity mActivity;
 String mEmail;
diff --git a/docs/html/google/play-services/reference/packages.jd b/docs/html/google/play-services/reference/packages.jd
deleted file mode 100644
index 4f1ce79..0000000
--- a/docs/html/google/play-services/reference/packages.jd
+++ /dev/null
@@ -1,6 +0,0 @@
-page.title=Reference
-@jd:body
-
-<p>
-    See offline docs
-</p>
\ No newline at end of file
diff --git a/docs/html/google/play/expansion-files.jd b/docs/html/google/play/expansion-files.jd
index d2ab509..a21fbc5 100644
--- a/docs/html/google/play/expansion-files.jd
+++ b/docs/html/google/play/expansion-files.jd
@@ -82,7 +82,7 @@
 
 <h2 id="Overview">Overview</h2>
 
-<p>Each time you upload an APK using the Google Play Android Developer Console, you have the option to
+<p>Each time you upload an APK using the Google Play Developer Console, you have the option to
 add one or two expansion files to the APK. Each file can be up to 2GB and it can be any format you
 choose, but we recommend you use a compressed file to conserve bandwidth during the download.
 Conceptually, each expansion file plays a different role:</p>
diff --git a/docs/html/guide/index.jd b/docs/html/guide/index.jd
deleted file mode 100644
index fea7027..0000000
--- a/docs/html/guide/index.jd
+++ /dev/null
@@ -1,56 +0,0 @@
-page.title=App Components
-page.landing=true
-page.landing.intro=Android's application framework lets you create extremely rich and innovative apps using a set of reusable components. This section explains how Android apps work and how you use components to build them. 
-page.landing.image=images/ui/ui_index.png
-
-@jd:body
-
-<div class="landing-docs">
-
-  <div class="col-6">
-    <h3>Blog Articles</h3>
-    
-    <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
-      <h4>Using DialogFragments</h4>
-      <p>In this post, I’ll show how to use DialogFragments with the v4 support library (for backward compatibility on pre-Honeycomb devices) to show a simple edit dialog and return a result to the calling Activity using an interface.</p>
-    </a>
-
-    <a href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">
-      <h4>Fragments For All</h4>
-      <p>Today we’ve released a static library that exposes the same Fragments API (as well as the new LoaderManager and a few other classes) so that applications compatible with Android 1.6 or later can use fragments to create tablet-compatible user interfaces. </p>
-    </a>
-    
-    <a
-href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
-      <h4>Multithreading for Performance</h4>
-      <p>A good practice in creating responsive applications is to make sure your main UI thread
-does the minimum amount of work. Any potentially long task that may hang your application should be
-handled in a different thread.</p>
-    </a>
-  </div>
-
-  <div class="col-6">
-    <h3>Training</h3>
-    
-    <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
-      <h4>Managing the Activity Lifecycle</h4>
-      <p>This class explains important lifecycle callback methods that each Activity
-      instance receives and how you can use them so your activity does what the user expects and does not consume system
-      resources when your activity doesn't need them.</p>
-    </a>
-
-    <a href="http://developer.android.com/training/basics/fragments/index.html">
-      <h4>Building a Dynamic UI with Fragments</h4>
-      <p>This class shows you how to create a dynamic user experience with fragments and optimize
-your app's user experience for devices with different screen sizes, all while continuing to support
-devices running versions as old as Android 1.6.</p>
-    </a>
-
-    <a href="http://developer.android.com/training/sharing/index.html">
-      <h4>Sharing Content</h4>
-      <p>This class covers some common ways you can send and receive content between
-      applications using Intent APIs and the ActionProvider object.</p>
-    </a>
-  </div>
-
-</div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/graphics/renderscript.html b/docs/html/guide/topics/graphics/renderscript.html
deleted file mode 100644
index 454d392..0000000
--- a/docs/html/guide/topics/graphics/renderscript.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/guide/topics/renderscript/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/guide/topics/renderscript/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/topics/ui/accessibility/index.jd b/docs/html/guide/topics/ui/accessibility/index.jd
index 6cdbde4..56efc4c 100644
--- a/docs/html/guide/topics/ui/accessibility/index.jd
+++ b/docs/html/guide/topics/ui/accessibility/index.jd
@@ -28,7 +28,7 @@
     <li>
       <iframe title="Google I/O 2012 - Making Android Apps Accessible"
           width="210" height="160"
-          src="http://www.youtube.com/embed/q3HliaMjL38?rel=0&amp;hd=1"
+          src="//www.youtube.com/embed/q3HliaMjL38?rel=0&amp;hd=1"
           frameborder="0" allowfullscreen>
       </iframe>
     <li>
diff --git a/docs/html/guide/topics/ui/notifiers/notifications.jd b/docs/html/guide/topics/ui/notifiers/notifications.jd
index e70987b..4a4b1d5 100644
--- a/docs/html/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html/guide/topics/ui/notifiers/notifications.jd
@@ -569,7 +569,7 @@
                     For this element, set
 <code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a>="android.support.PARENT_ACTIVITY"</code>.
                     Set
-<code><a href="{@docRoot}/guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code>
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code>
                     where <code>&lt;parent_activity_name&gt;</code> is the value of
 <code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a></code>
                     for the parent
diff --git a/docs/html/images/e-mini-hvga-l.png b/docs/html/images/e-mini-hvga-l.png
deleted file mode 100644
index f68853f..0000000
--- a/docs/html/images/e-mini-hvga-l.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/e-mini-hvga-p.png b/docs/html/images/e-mini-hvga-p.png
deleted file mode 100644
index 3cf0db9..0000000
--- a/docs/html/images/e-mini-hvga-p.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/e-mini-qvga-l.png b/docs/html/images/e-mini-qvga-l.png
deleted file mode 100644
index 3138b9f..0000000
--- a/docs/html/images/e-mini-qvga-l.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/e-mini-qvga-p.png b/docs/html/images/e-mini-qvga-p.png
deleted file mode 100644
index 54f2cc1..0000000
--- a/docs/html/images/e-mini-qvga-p.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/emulator-hvga-p.png b/docs/html/images/emulator-hvga-p.png
deleted file mode 100644
index f3b8900..0000000
--- a/docs/html/images/emulator-hvga-p.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/emulator.png b/docs/html/images/emulator.png
deleted file mode 100644
index 9c6860a..0000000
--- a/docs/html/images/emulator.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/copy_res_files.png b/docs/html/images/hello_l10n/copy_res_files.png
deleted file mode 100644
index 9e704b2..0000000
--- a/docs/html/images/hello_l10n/copy_res_files.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/custom_locale_app.png b/docs/html/images/hello_l10n/custom_locale_app.png
deleted file mode 100644
index f89648e..0000000
--- a/docs/html/images/hello_l10n/custom_locale_app.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/drawable-de-rDE/flag.png b/docs/html/images/hello_l10n/drawable-de-rDE/flag.png
deleted file mode 100644
index 2cc58c7..0000000
--- a/docs/html/images/hello_l10n/drawable-de-rDE/flag.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/drawable-en-rCA/flag.png b/docs/html/images/hello_l10n/drawable-en-rCA/flag.png
deleted file mode 100644
index b441d2e..0000000
--- a/docs/html/images/hello_l10n/drawable-en-rCA/flag.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/drawable-en-rUS/flag.png b/docs/html/images/hello_l10n/drawable-en-rUS/flag.png
deleted file mode 100644
index 47a1179..0000000
--- a/docs/html/images/hello_l10n/drawable-en-rUS/flag.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/drawable-fr-rCA/flag.png b/docs/html/images/hello_l10n/drawable-fr-rCA/flag.png
deleted file mode 100644
index b441d2e..0000000
--- a/docs/html/images/hello_l10n/drawable-fr-rCA/flag.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/drawable-fr-rFR/flag.png b/docs/html/images/hello_l10n/drawable-fr-rFR/flag.png
deleted file mode 100644
index cdbe85f..0000000
--- a/docs/html/images/hello_l10n/drawable-fr-rFR/flag.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/drawable-ja-rJP/flag.png b/docs/html/images/hello_l10n/drawable-ja-rJP/flag.png
deleted file mode 100644
index 7b93ee9..0000000
--- a/docs/html/images/hello_l10n/drawable-ja-rJP/flag.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/flag.png b/docs/html/images/hello_l10n/flag.png
deleted file mode 100644
index c232132..0000000
--- a/docs/html/images/hello_l10n/flag.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/frenchCA_screenshot.png b/docs/html/images/hello_l10n/frenchCA_screenshot.png
deleted file mode 100644
index f8e6517..0000000
--- a/docs/html/images/hello_l10n/frenchCA_screenshot.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/germanCH_screenshot.png b/docs/html/images/hello_l10n/germanCH_screenshot.png
deleted file mode 100644
index 240104a..0000000
--- a/docs/html/images/hello_l10n/germanCH_screenshot.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/german_screenshot.png b/docs/html/images/hello_l10n/german_screenshot.png
deleted file mode 100644
index 3d1b197..0000000
--- a/docs/html/images/hello_l10n/german_screenshot.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/japanese_screenshot.png b/docs/html/images/hello_l10n/japanese_screenshot.png
deleted file mode 100644
index e1ffbf9..0000000
--- a/docs/html/images/hello_l10n/japanese_screenshot.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/nonlocalized_project.png b/docs/html/images/hello_l10n/nonlocalized_project.png
deleted file mode 100644
index 8df9a06..0000000
--- a/docs/html/images/hello_l10n/nonlocalized_project.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/nonlocalized_screenshot1.png b/docs/html/images/hello_l10n/nonlocalized_screenshot1.png
deleted file mode 100644
index 02ace4b..0000000
--- a/docs/html/images/hello_l10n/nonlocalized_screenshot1.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/nonlocalized_screenshot2.png b/docs/html/images/hello_l10n/nonlocalized_screenshot2.png
deleted file mode 100644
index e5a771b..0000000
--- a/docs/html/images/hello_l10n/nonlocalized_screenshot2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/plain_project.png b/docs/html/images/hello_l10n/plain_project.png
deleted file mode 100644
index f3c2b57..0000000
--- a/docs/html/images/hello_l10n/plain_project.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/romanshCH_screenshot.png b/docs/html/images/hello_l10n/romanshCH_screenshot.png
deleted file mode 100644
index a3fd194..0000000
--- a/docs/html/images/hello_l10n/romanshCH_screenshot.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/using_custom_locale.png b/docs/html/images/hello_l10n/using_custom_locale.png
deleted file mode 100644
index 61b4c05..0000000
--- a/docs/html/images/hello_l10n/using_custom_locale.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/xml_file_wizard_shortcut.png b/docs/html/images/hello_l10n/xml_file_wizard_shortcut.png
deleted file mode 100644
index f72554d..0000000
--- a/docs/html/images/hello_l10n/xml_file_wizard_shortcut.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/xml_wizard1.png b/docs/html/images/hello_l10n/xml_wizard1.png
deleted file mode 100644
index 35dc09f..0000000
--- a/docs/html/images/hello_l10n/xml_wizard1.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_l10n/xml_wizard2.png b/docs/html/images/hello_l10n/xml_wizard2.png
deleted file mode 100644
index 6bcd28b..0000000
--- a/docs/html/images/hello_l10n/xml_wizard2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_world_0.png b/docs/html/images/hello_world_0.png
deleted file mode 100644
index c174fba..0000000
--- a/docs/html/images/hello_world_0.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_world_1.png b/docs/html/images/hello_world_1.png
deleted file mode 100644
index f08438a..0000000
--- a/docs/html/images/hello_world_1.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_world_2.png b/docs/html/images/hello_world_2.png
deleted file mode 100644
index 58f5703..0000000
--- a/docs/html/images/hello_world_2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_world_3.png b/docs/html/images/hello_world_3.png
deleted file mode 100644
index d2d2ff6..0000000
--- a/docs/html/images/hello_world_3.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_world_4.png b/docs/html/images/hello_world_4.png
deleted file mode 100644
index 5c41e80..0000000
--- a/docs/html/images/hello_world_4.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_world_5.png b/docs/html/images/hello_world_5.png
deleted file mode 100644
index 96b830a..0000000
--- a/docs/html/images/hello_world_5.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_world_8.png b/docs/html/images/hello_world_8.png
deleted file mode 100644
index 07db360..0000000
--- a/docs/html/images/hello_world_8.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/hello_world_9.png b/docs/html/images/hello_world_9.png
deleted file mode 100644
index 3cb4436..0000000
--- a/docs/html/images/hello_world_9.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/icon_barriers.png b/docs/html/images/icon_barriers.png
deleted file mode 100644
index 73345ef..0000000
--- a/docs/html/images/icon_barriers.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/icon_dashboard.png b/docs/html/images/icon_dashboard.png
deleted file mode 100644
index 04793e0..0000000
--- a/docs/html/images/icon_dashboard.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/icon_equal.png b/docs/html/images/icon_equal.png
deleted file mode 100644
index 5548de1..0000000
--- a/docs/html/images/icon_equal.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/icon_fast.png b/docs/html/images/icon_fast.png
deleted file mode 100644
index 4962db9..0000000
--- a/docs/html/images/icon_fast.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/icon_open.png b/docs/html/images/icon_open.png
deleted file mode 100644
index 0db4e8e..0000000
--- a/docs/html/images/icon_open.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/like_thumb1.png b/docs/html/images/like_thumb1.png
deleted file mode 100644
index 098cfaf..0000000
--- a/docs/html/images/like_thumb1.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/like_thumb2.png b/docs/html/images/like_thumb2.png
deleted file mode 100644
index ef9d2d2..0000000
--- a/docs/html/images/like_thumb2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/like_thumb3.png b/docs/html/images/like_thumb3.png
deleted file mode 100644
index 543f2de..0000000
--- a/docs/html/images/like_thumb3.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/like_thumb4.png b/docs/html/images/like_thumb4.png
deleted file mode 100644
index 1f5e7e4..0000000
--- a/docs/html/images/like_thumb4.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/notepad.png b/docs/html/images/notepad.png
deleted file mode 100644
index 01b0f6d..0000000
--- a/docs/html/images/notepad.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/robot-sdk.png b/docs/html/images/robot-sdk.png
deleted file mode 100644
index 962d4d5..0000000
--- a/docs/html/images/robot-sdk.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/screens_support/afdvfckr9j_14fj6dhsc3_b.png b/docs/html/images/screens_support/afdvfckr9j_14fj6dhsc3_b.png
deleted file mode 100644
index ff4fbbf..0000000
--- a/docs/html/images/screens_support/afdvfckr9j_14fj6dhsc3_b.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/screens_support/afdvfckr9j_15dcsvrscg_b.png b/docs/html/images/screens_support/afdvfckr9j_15dcsvrscg_b.png
deleted file mode 100644
index 7a987dd..0000000
--- a/docs/html/images/screens_support/afdvfckr9j_15dcsvrscg_b.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/screens_support/afdvfckr9j_16g95wjqg3_b.png b/docs/html/images/screens_support/afdvfckr9j_16g95wjqg3_b.png
deleted file mode 100644
index 20835b6..0000000
--- a/docs/html/images/screens_support/afdvfckr9j_16g95wjqg3_b.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/screens_support/afdvfckr9j_17p2w4txgc_b.png b/docs/html/images/screens_support/afdvfckr9j_17p2w4txgc_b.png
deleted file mode 100644
index 8895d49..0000000
--- a/docs/html/images/screens_support/afdvfckr9j_17p2w4txgc_b.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/screens_support/afdvfckr9j_18c6mhm3cm_b.png b/docs/html/images/screens_support/afdvfckr9j_18c6mhm3cm_b.png
deleted file mode 100644
index ef6ec66..0000000
--- a/docs/html/images/screens_support/afdvfckr9j_18c6mhm3cm_b.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/screens_support/afdvfckr9j_19c743p6cr_b.png b/docs/html/images/screens_support/afdvfckr9j_19c743p6cr_b.png
deleted file mode 100644
index 34be212..0000000
--- a/docs/html/images/screens_support/afdvfckr9j_19c743p6cr_b.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/screens_support/afdvfckr9j_20fvptbbdd_b.png b/docs/html/images/screens_support/afdvfckr9j_20fvptbbdd_b.png
deleted file mode 100644
index 2415b52..0000000
--- a/docs/html/images/screens_support/afdvfckr9j_20fvptbbdd_b.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_autocomplete.png b/docs/html/images/views_autocomplete.png
deleted file mode 100644
index 9e9b69c..0000000
--- a/docs/html/images/views_autocomplete.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_controls_example2.png b/docs/html/images/views_controls_example2.png
deleted file mode 100644
index 198d848..0000000
--- a/docs/html/images/views_controls_example2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_datewidgets_example1_pickdate.png b/docs/html/images/views_datewidgets_example1_pickdate.png
deleted file mode 100644
index 581a80f..0000000
--- a/docs/html/images/views_datewidgets_example1_pickdate.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_datewidgets_example1_picktime.png b/docs/html/images/views_datewidgets_example1_picktime.png
deleted file mode 100644
index 7d91665..0000000
--- a/docs/html/images/views_datewidgets_example1_picktime.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_gallery_example1.png b/docs/html/images/views_gallery_example1.png
deleted file mode 100644
index 103fad8..0000000
--- a/docs/html/images/views_gallery_example1.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_grid_example2.png b/docs/html/images/views_grid_example2.png
deleted file mode 100644
index 16590b7..0000000
--- a/docs/html/images/views_grid_example2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_image_switcher.png b/docs/html/images/views_image_switcher.png
deleted file mode 100644
index 601e123..0000000
--- a/docs/html/images/views_image_switcher.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_imagebutton_example1.png b/docs/html/images/views_imagebutton_example1.png
deleted file mode 100644
index a6bb81b..0000000
--- a/docs/html/images/views_imagebutton_example1.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_layouts_linearlayout_example1.png b/docs/html/images/views_layouts_linearlayout_example1.png
deleted file mode 100644
index 2c201f6..0000000
--- a/docs/html/images/views_layouts_linearlayout_example1.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_layouts_linearlayout_example7.png b/docs/html/images/views_layouts_linearlayout_example7.png
deleted file mode 100644
index f8e4770..0000000
--- a/docs/html/images/views_layouts_linearlayout_example7.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_layouts_relativelayout_example2.png b/docs/html/images/views_layouts_relativelayout_example2.png
deleted file mode 100644
index 395ecb9..0000000
--- a/docs/html/images/views_layouts_relativelayout_example2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_layouts_tablelayout_example10.png b/docs/html/images/views_layouts_tablelayout_example10.png
deleted file mode 100644
index 2f96fa2..0000000
--- a/docs/html/images/views_layouts_tablelayout_example10.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_layouts_tablelayout_spanning.png b/docs/html/images/views_layouts_tablelayout_spanning.png
deleted file mode 100644
index 143ce34..0000000
--- a/docs/html/images/views_layouts_tablelayout_spanning.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_lists_example1.png b/docs/html/images/views_lists_example1.png
deleted file mode 100644
index 067d247..0000000
--- a/docs/html/images/views_lists_example1.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/views_spinner.png b/docs/html/images/views_spinner.png
deleted file mode 100644
index 99513a3..0000000
--- a/docs/html/images/views_spinner.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/license.jd b/docs/html/license.jd
index a9af038..20e68fa 100644
--- a/docs/html/license.jd
+++ b/docs/html/license.jd
@@ -67,7 +67,7 @@
 style="margin:0;padding:0 2px;vertical-align:baseline" /> stylized typeface logo) are not included
 in the license.
 Please see <a
-href="http://www.android.com/developers/branding.html">Android Branding Guidelines</a> for
+href="{@docRoot}distribute/googleplay/promote/brand.html">Brand Guidelines</a> for
 information about this usage. </li>
 
 <li>In some cases, a page may include content, such as an image, that is not 
diff --git a/docs/html/live/index.jd b/docs/html/live/index.jd
deleted file mode 100644
index 9729727..0000000
--- a/docs/html/live/index.jd
+++ /dev/null
@@ -1,65 +0,0 @@
-page.title=Live
-fullpage=1
-@jd:body
-
-<div class="wrap" style="width:940px;">
-  
-<h1>Android Developers Live</h1>
-  
-<p>Meet the developers behind successful apps and games on Android. Check back for upcoming
-livecasts on YouTube and videos of past sessions or follow us on 
-<a href="https://plus.google.com/108967384991768947849/posts">+Android Developers</a> for updates.</p>
-  
-  <div id="interviewBlock" id="pocketgems" style="border-top:1px solid #ddd;margin-top:2em;padding-top:1em;clear:both;">
-
-    <div id="mainBodyLeft" class="videoPlayer">
-
-          <h3>Developer Interview: Pocket Gems</h3>
-          
-          <p>19 April 2012<br />2PM PST</p>       
-          <p><span itemprop="description">Pocket Gems, a top game developer on Android, joins
-          <a href="https://plus.google.com/108967384991768947849/posts">+Android Developers</a>
-          to give a short talk on "Defragging Your Android Development." The talk highlights some
-          of the techniques they've used to ensure quality while distributing their apps to hundreds
-          of devices worldwide. </p>
-
-          <p>After the talk, they'll take a few questions from developers in the hangout or from
-          developers joining on air via the moderator queue. </p>
-          
-          <div id="objectWrapper">
-            <iframe width="560" height="315" src="http://www.youtube.com/embed/-wkXan-xNqA" frameborder="0" allowfullscreen></iframe>
-          </div>
-
-    </div><!-- end mainBodyLeft -->
-
-    <div id="mainBodyRight" class="videoPlayer">
-
-      <div style="padding-left:1.5em;font-size:12px;">
-        <div style="padding-bottom:1em;"><img itemprop="image" src="http://pocketgems.com/images/pocket-gems-logo-blue.png"></div>
-
-        <h3 style="color:#000;font-size:12px;">About Pocket Gems</h3>
-          <p>
-            Web: <a style="text-decoration:none" href="http://www.pocketgems.com">www.pocketgems.com</a><br />
-            Google+: <a style="text-decoration:none" href="https://plus.google.com/b/102436156807338888308/">+Pocket Gems</a><br />
-            Twitter: <a style="text-decoration:none" href="https://twitter.com/#!/PocketGems">@PocketGems</a><br />
-          </p>
-     
-        <h3 style="color:#000;font-size:12px;">Published on Google Play</h3>
-          <p style="line-height:1.5em;">
-            <a style="text-decoration:none" href="https://play.google.com/store/apps/developer?id=Pocket+Gems">Apps by Pocket Gems</a>
-          </p>
-
-        <h3 style="color:#000;font-size:12px;">Join</h3>
-          <p style="line-height:1.5em;">
-            <a style="text-decoration:none" href="http://youtu.be/-wkXan-xNqA">Watch on YouTube</a><br />
-            <a style="text-decoration:none" href="http://www.google.com/moderator/#15/e=1fd27e&t=1fd27e.40">Submit a question</a><br />
-            <a style="text-decoration:none" href="https://www.google.com/calendar/ical/g2ilcr0iki4olp10aluid7gl70%40group.calendar.google.com/public/basic.ics">Add to calendar</a> (iCal)
-          </p>
-
-      </li></ul>
-      
-</div>
-    </div><!-- end mainBodyRight -->
-</div><!-- interviewBlock -->
-
-</div><!-- end mainBodyFixed -->
diff --git a/docs/html/reference/com/google/android/gcm/GCMBaseIntentService.html b/docs/html/reference/com/google/android/gcm/GCMBaseIntentService.html
index 6478451..b2f475a 100644
--- a/docs/html/reference/com/google/android/gcm/GCMBaseIntentService.html
+++ b/docs/html/reference/com/google/android/gcm/GCMBaseIntentService.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -5560,6 +5605,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -5570,7 +5616,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -5583,6 +5634,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -5592,41 +5644,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/GCMBroadcastReceiver.html b/docs/html/reference/com/google/android/gcm/GCMBroadcastReceiver.html
index 880f628..2f6c71f 100644
--- a/docs/html/reference/com/google/android/gcm/GCMBroadcastReceiver.html
+++ b/docs/html/reference/com/google/android/gcm/GCMBroadcastReceiver.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1494,6 +1539,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1504,7 +1550,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1517,6 +1568,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1526,41 +1578,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/GCMConstants.html b/docs/html/reference/com/google/android/gcm/GCMConstants.html
index 8cee735..ac47746 100644
--- a/docs/html/reference/com/google/android/gcm/GCMConstants.html
+++ b/docs/html/reference/com/google/android/gcm/GCMConstants.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2019,6 +2064,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2029,7 +2075,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -2042,6 +2093,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2051,41 +2103,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/GCMRegistrar.html b/docs/html/reference/com/google/android/gcm/GCMRegistrar.html
index a0a5930..1e3fafe 100644
--- a/docs/html/reference/com/google/android/gcm/GCMRegistrar.html
+++ b/docs/html/reference/com/google/android/gcm/GCMRegistrar.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1698,6 +1743,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1708,7 +1754,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1721,6 +1772,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1730,41 +1782,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/package-summary.html b/docs/html/reference/com/google/android/gcm/package-summary.html
index 45c8c2e..b882654 100644
--- a/docs/html/reference/com/google/android/gcm/package-summary.html
+++ b/docs/html/reference/com/google/android/gcm/package-summary.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,22 +111,37 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 
 <body class="gc-documentation google
@@ -105,6 +149,7 @@
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -165,27 +210,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -342,7 +391,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -531,6 +580,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -540,11 +590,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -613,6 +658,7 @@
   
 
 
+
 <div id="footer" class="wrap" >
         
 
@@ -623,7 +669,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -636,6 +687,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div><!-- end jd-content -->
 </div><!-- doc-content -->
 
@@ -644,41 +696,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/server/Constants.html b/docs/html/reference/com/google/android/gcm/server/Constants.html
index b8bdcf4..ad1f7f6 100644
--- a/docs/html/reference/com/google/android/gcm/server/Constants.html
+++ b/docs/html/reference/com/google/android/gcm/server/Constants.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2304,6 +2349,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2314,7 +2360,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -2327,6 +2378,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2336,41 +2388,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/server/InvalidRequestException.html b/docs/html/reference/com/google/android/gcm/server/InvalidRequestException.html
index f6621b5..77d4a1c 100644
--- a/docs/html/reference/com/google/android/gcm/server/InvalidRequestException.html
+++ b/docs/html/reference/com/google/android/gcm/server/InvalidRequestException.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1464,6 +1509,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1474,7 +1520,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1487,6 +1538,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1496,41 +1548,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/server/Message.Builder.html b/docs/html/reference/com/google/android/gcm/server/Message.Builder.html
index f7e68b2..f6c93ca 100644
--- a/docs/html/reference/com/google/android/gcm/server/Message.Builder.html
+++ b/docs/html/reference/com/google/android/gcm/server/Message.Builder.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1276,6 +1321,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1286,7 +1332,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1299,6 +1350,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1308,41 +1360,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/server/Message.html b/docs/html/reference/com/google/android/gcm/server/Message.html
index c7a2d4a..6a86dbc 100644
--- a/docs/html/reference/com/google/android/gcm/server/Message.html
+++ b/docs/html/reference/com/google/android/gcm/server/Message.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1280,6 +1325,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1290,7 +1336,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1303,6 +1354,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1312,41 +1364,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/server/MulticastResult.html b/docs/html/reference/com/google/android/gcm/server/MulticastResult.html
index 3174036..d4466fc 100644
--- a/docs/html/reference/com/google/android/gcm/server/MulticastResult.html
+++ b/docs/html/reference/com/google/android/gcm/server/MulticastResult.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1374,6 +1419,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1384,7 +1430,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1397,6 +1448,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1406,41 +1458,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/server/Result.html b/docs/html/reference/com/google/android/gcm/server/Result.html
index 626bcb4..0927a0b 100644
--- a/docs/html/reference/com/google/android/gcm/server/Result.html
+++ b/docs/html/reference/com/google/android/gcm/server/Result.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1203,6 +1248,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1213,7 +1259,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1226,6 +1277,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1235,41 +1287,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/server/Sender.html b/docs/html/reference/com/google/android/gcm/server/Sender.html
index e49637e..834c6e8 100644
--- a/docs/html/reference/com/google/android/gcm/server/Sender.html
+++ b/docs/html/reference/com/google/android/gcm/server/Sender.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2090,6 +2135,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2100,7 +2146,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -2113,6 +2164,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2122,41 +2174,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gcm/server/package-summary.html b/docs/html/reference/com/google/android/gcm/server/package-summary.html
index c463e35..18b8cfc 100644
--- a/docs/html/reference/com/google/android/gcm/server/package-summary.html
+++ b/docs/html/reference/com/google/android/gcm/server/package-summary.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,22 +111,37 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 
 <body class="gc-documentation google
@@ -105,6 +149,7 @@
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -165,27 +210,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -342,7 +391,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -531,6 +580,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -540,11 +590,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -630,6 +675,7 @@
   
 
 
+
 <div id="footer" class="wrap" >
         
 
@@ -640,7 +686,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -653,6 +704,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div><!-- end jd-content -->
 </div><!-- doc-content -->
 
@@ -661,41 +713,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/R.attr.html b/docs/html/reference/com/google/android/gms/R.attr.html
index 9c16b34..4c3b67c 100644
--- a/docs/html/reference/com/google/android/gms/R.attr.html
+++ b/docs/html/reference/com/google/android/gms/R.attr.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1676,6 +1721,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1686,7 +1732,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1699,6 +1750,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1708,41 +1760,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/R.html b/docs/html/reference/com/google/android/gms/R.html
index 93fc057..72a2e4b 100644
--- a/docs/html/reference/com/google/android/gms/R.html
+++ b/docs/html/reference/com/google/android/gms/R.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1081,6 +1126,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1091,7 +1137,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1104,6 +1155,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1113,41 +1165,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/R.id.html b/docs/html/reference/com/google/android/gms/R.id.html
index 49d4488..fbf85e0 100644
--- a/docs/html/reference/com/google/android/gms/R.id.html
+++ b/docs/html/reference/com/google/android/gms/R.id.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1197,6 +1242,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1207,7 +1253,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1220,6 +1271,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1229,41 +1281,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/R.string.html b/docs/html/reference/com/google/android/gms/R.string.html
index cfc7039..ad1ac20 100644
--- a/docs/html/reference/com/google/android/gms/R.string.html
+++ b/docs/html/reference/com/google/android/gms/R.string.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1509,6 +1554,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1519,7 +1565,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1532,6 +1583,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1541,41 +1593,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/R.styleable.html b/docs/html/reference/com/google/android/gms/R.styleable.html
index 8e9d328..d8bca3e 100644
--- a/docs/html/reference/com/google/android/gms/R.styleable.html
+++ b/docs/html/reference/com/google/android/gms/R.styleable.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1899,6 +1944,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1909,7 +1955,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1922,6 +1973,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1931,41 +1983,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html b/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html
index eab5502..d0c6d8d 100644
--- a/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html
+++ b/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1354,6 +1399,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1364,7 +1410,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1377,6 +1428,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1386,41 +1438,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html b/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html
index c7bd650..5216486 100644
--- a/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html
+++ b/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1963,6 +2008,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1973,7 +2019,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1986,6 +2037,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1995,41 +2047,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html b/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html
index 34a0cc5..cf3c490 100644
--- a/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html
+++ b/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1379,6 +1424,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1389,7 +1435,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1402,6 +1453,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1411,41 +1463,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html b/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html
index c7fa1fa..4c4b55c 100644
--- a/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html
+++ b/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1407,6 +1452,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1417,7 +1463,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1430,6 +1481,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1439,41 +1491,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html b/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html
index 7d31a14..c95531e 100644
--- a/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html
+++ b/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1306,6 +1351,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1316,7 +1362,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1329,6 +1380,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1338,41 +1390,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/auth/package-summary.html b/docs/html/reference/com/google/android/gms/auth/package-summary.html
index d012bf3..a9df148 100644
--- a/docs/html/reference/com/google/android/gms/auth/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/auth/package-summary.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,22 +111,37 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 
 <body class="gc-documentation google
@@ -105,6 +149,7 @@
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -165,27 +210,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -342,7 +391,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -531,6 +580,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -540,11 +590,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -633,6 +678,7 @@
   
 
 
+
 <div id="footer" class="wrap" >
         
 
@@ -643,7 +689,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -656,6 +707,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div><!-- end jd-content -->
 </div><!-- doc-content -->
 
@@ -664,41 +716,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/common/AccountPicker.html b/docs/html/reference/com/google/android/gms/common/AccountPicker.html
index 0d275a3..95a8c3b 100644
--- a/docs/html/reference/com/google/android/gms/common/AccountPicker.html
+++ b/docs/html/reference/com/google/android/gms/common/AccountPicker.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1104,6 +1149,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1114,7 +1160,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1127,6 +1178,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1136,41 +1188,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/common/ConnectionResult.html b/docs/html/reference/com/google/android/gms/common/ConnectionResult.html
index cba7af1..01fe3ec 100644
--- a/docs/html/reference/com/google/android/gms/common/ConnectionResult.html
+++ b/docs/html/reference/com/google/android/gms/common/ConnectionResult.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1895,6 +1940,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1905,7 +1951,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1918,6 +1969,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1927,41 +1979,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html
index cc502c1..528833e 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -839,6 +884,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -849,7 +895,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -862,6 +913,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -871,41 +923,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.OnConnectionFailedListener.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.OnConnectionFailedListener.html
index b4add9a..583219a 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.OnConnectionFailedListener.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.OnConnectionFailedListener.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -793,6 +838,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -803,7 +849,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -816,6 +867,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -825,41 +877,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.html
index fef18ea..8ff9fec 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -642,7 +687,9 @@
             
               <a href="/reference/com/google/android/gms/panorama/PanoramaClient.html">PanoramaClient</a>,
             
-              <a href="/reference/com/google/android/gms/plus/PlusClient.html">PlusClient</a>
+              <a href="/reference/com/google/android/gms/plus/PlusClient.html">PlusClient</a>,
+            
+              <a href="/reference/com/google/android/gms/wallet/WalletClient.html">WalletClient</a>
             
           
       </div>
@@ -658,6 +705,10 @@
               <td class="jd-linkcol"><a href="/reference/com/google/android/gms/plus/PlusClient.html">PlusClient</a></td>
               <td class="jd-descrcol" width="100%">The main entry point for Google+ integration.&nbsp;</td>
           </tr>
+        <tr class="alt-color api apilevel-" >
+              <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wallet/WalletClient.html">WalletClient</a></td>
+              <td class="jd-descrcol" width="100%">The main entry point for Google Wallet integration.&nbsp;</td>
+          </tr>
   </table>
       </div>
   </div>
@@ -1378,6 +1429,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1388,7 +1440,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1401,6 +1458,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1410,41 +1468,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html
index d20d3f7b..75b81bf 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1340,6 +1385,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1350,7 +1396,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1363,6 +1414,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1372,41 +1424,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html
index 81c57c8..474924c 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1631,6 +1676,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1641,7 +1687,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1654,6 +1705,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1663,41 +1715,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/common/Scopes.html b/docs/html/reference/com/google/android/gms/common/Scopes.html
index cb0b15b..3ec61fc 100644
--- a/docs/html/reference/com/google/android/gms/common/Scopes.html
+++ b/docs/html/reference/com/google/android/gms/common/Scopes.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1026,6 +1071,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1036,7 +1082,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1049,6 +1100,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1058,41 +1110,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/common/package-summary.html b/docs/html/reference/com/google/android/gms/common/package-summary.html
index 2056542..9ad89dc 100644
--- a/docs/html/reference/com/google/android/gms/common/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/common/package-summary.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,22 +111,37 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 
 <body class="gc-documentation google
@@ -105,6 +149,7 @@
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -165,27 +210,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -342,7 +391,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -531,6 +580,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -540,11 +590,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -651,6 +696,7 @@
   
 
 
+
 <div id="footer" class="wrap" >
         
 
@@ -661,7 +707,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -674,6 +725,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div><!-- end jd-content -->
 </div><!-- doc-content -->
 
@@ -682,41 +734,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html b/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html
index 13a71e5..a0094a7 100644
--- a/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html
+++ b/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -971,6 +1016,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -981,7 +1027,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -994,6 +1045,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1003,41 +1055,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html b/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html
index 512151f..de425cf 100644
--- a/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html
+++ b/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1741,6 +1786,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1751,7 +1797,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1764,6 +1815,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1773,41 +1825,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html
index f1c12bf..ade1386 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -823,6 +868,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -833,7 +879,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -846,6 +897,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -855,41 +907,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html
index de772f1..c328947 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -872,6 +917,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -882,7 +928,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -895,6 +946,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -904,41 +956,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html
index 0cc7fd3..940f2fe 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -788,6 +833,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -798,7 +844,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -811,6 +862,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -820,41 +872,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html
index d2b61b4..cb6ee77 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -784,6 +829,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -794,7 +840,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -807,6 +858,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -816,41 +868,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html
index cd52fee..bcc2d9c 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -789,6 +834,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -799,7 +845,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -812,6 +863,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -821,41 +873,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html
index 12bb496..11de80c 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -789,6 +834,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -799,7 +845,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -812,6 +863,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -821,41 +873,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html
index 560b799..74e863f 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -791,6 +836,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -801,7 +847,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -814,6 +865,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -823,41 +875,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html
index 8e97fc9..de9ad70 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -902,6 +947,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -912,7 +958,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -925,6 +976,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -934,41 +986,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.html
index 1e07fe0..0055844 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -3282,6 +3327,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -3292,7 +3338,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -3305,6 +3356,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -3314,41 +3366,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html b/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html
index a936568..5e393e1 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2427,6 +2472,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2437,7 +2483,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -2450,6 +2501,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2459,41 +2511,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html b/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html
index 6251f9b..3989347 100644
--- a/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -784,6 +829,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -794,7 +840,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -807,6 +858,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -816,41 +868,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/LocationSource.html b/docs/html/reference/com/google/android/gms/maps/LocationSource.html
index 566ae3e..dc44817 100644
--- a/docs/html/reference/com/google/android/gms/maps/LocationSource.html
+++ b/docs/html/reference/com/google/android/gms/maps/LocationSource.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -889,6 +934,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -899,7 +945,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -912,6 +963,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -921,41 +973,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/MapFragment.html b/docs/html/reference/com/google/android/gms/maps/MapFragment.html
index 4e37711..204e8bd 100644
--- a/docs/html/reference/com/google/android/gms/maps/MapFragment.html
+++ b/docs/html/reference/com/google/android/gms/maps/MapFragment.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -3132,6 +3177,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -3142,7 +3188,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -3155,6 +3206,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -3164,41 +3216,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/MapView.html b/docs/html/reference/com/google/android/gms/maps/MapView.html
index 051b75c..7ea2e7e 100644
--- a/docs/html/reference/com/google/android/gms/maps/MapView.html
+++ b/docs/html/reference/com/google/android/gms/maps/MapView.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -12493,6 +12538,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -12503,7 +12549,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -12516,6 +12567,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -12525,41 +12577,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html b/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html
index d046585..3757a3c 100644
--- a/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html
+++ b/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1054,6 +1099,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1064,7 +1110,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1077,6 +1128,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1086,41 +1138,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/Projection.html b/docs/html/reference/com/google/android/gms/maps/Projection.html
index 98239e8..2d937be 100644
--- a/docs/html/reference/com/google/android/gms/maps/Projection.html
+++ b/docs/html/reference/com/google/android/gms/maps/Projection.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1163,6 +1208,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1173,7 +1219,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1186,6 +1237,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1195,41 +1247,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html b/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html
index 7d91d15..1eff225 100644
--- a/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html
+++ b/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2989,6 +3034,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2999,7 +3045,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -3012,6 +3063,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -3021,41 +3073,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/UiSettings.html b/docs/html/reference/com/google/android/gms/maps/UiSettings.html
index 9cafb04..06fc7f7 100644
--- a/docs/html/reference/com/google/android/gms/maps/UiSettings.html
+++ b/docs/html/reference/com/google/android/gms/maps/UiSettings.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1851,6 +1896,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1861,7 +1907,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1874,6 +1925,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1883,41 +1935,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html
index f1da03c..54f6eea 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -974,6 +1019,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -984,7 +1030,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -997,6 +1048,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1006,41 +1058,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html
index 5012b90..1d75e2a 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1789,6 +1834,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1799,7 +1845,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1812,6 +1863,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1821,41 +1873,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html
index f01ff0c..70591e5 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1350,6 +1395,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1360,7 +1406,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1373,6 +1424,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1382,41 +1434,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html
index 3f592b2..076097a 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1950,6 +1995,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1960,7 +2006,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1973,6 +2024,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1982,41 +2034,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html
index 2987830..e95dc28 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2122,6 +2167,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2132,7 +2178,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -2145,6 +2196,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2154,41 +2206,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html
index 6e5f214..cf6ec72 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2647,6 +2692,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2657,7 +2703,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -2670,6 +2721,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2679,41 +2731,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/LatLng.html b/docs/html/reference/com/google/android/gms/maps/model/LatLng.html
index a48ca54..6c5c930 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/LatLng.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/LatLng.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1615,6 +1660,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1625,7 +1671,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1638,6 +1689,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1647,41 +1699,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html
index 37d8146..a427b28 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1167,6 +1212,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1177,7 +1223,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1190,6 +1241,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1199,41 +1251,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html
index 563cc47..116dfbf 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1825,6 +1870,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1835,7 +1881,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1848,6 +1899,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1857,41 +1909,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Marker.html b/docs/html/reference/com/google/android/gms/maps/model/Marker.html
index 5893473..4077c67 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Marker.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Marker.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1863,6 +1908,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1873,7 +1919,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1886,6 +1937,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1895,41 +1947,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html b/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html
index 08ef863..7193c78 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2209,6 +2254,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2219,7 +2265,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -2232,6 +2283,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2241,41 +2293,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Polygon.html b/docs/html/reference/com/google/android/gms/maps/model/Polygon.html
index 046d280..0efe3e1 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Polygon.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Polygon.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2088,6 +2133,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2098,7 +2144,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -2111,6 +2162,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2120,41 +2172,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html b/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html
index c688e4e..2137626 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2324,6 +2369,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2334,7 +2380,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -2347,6 +2398,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2356,41 +2408,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Polyline.html b/docs/html/reference/com/google/android/gms/maps/model/Polyline.html
index 4ffd067..4316dd9 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Polyline.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Polyline.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1936,6 +1981,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1946,7 +1992,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1959,6 +2010,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1968,41 +2020,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html b/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html
index 3288493..56088e13 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2108,6 +2153,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2118,7 +2164,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -2131,6 +2182,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2140,41 +2192,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html b/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html
index 8d5c4a2..f2a0310 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1305,6 +1350,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1315,7 +1361,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1328,6 +1379,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1337,41 +1389,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Tile.html b/docs/html/reference/com/google/android/gms/maps/model/Tile.html
index fd59da5..e0df3c4 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Tile.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Tile.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1516,6 +1561,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1526,7 +1572,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1539,6 +1590,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1548,41 +1600,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html b/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html
index c216bf8..0382b4d 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1495,6 +1540,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1505,7 +1551,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1518,6 +1569,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1527,41 +1579,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html b/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html
index 80deef6f..2c5ba59 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1703,6 +1748,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1713,7 +1759,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1726,6 +1777,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1735,41 +1787,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html b/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html
index a33a967..eb1c39d 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -916,6 +961,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -926,7 +972,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -939,6 +990,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -948,41 +1000,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html b/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html
index 4b82dfa..de7c761 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1321,6 +1366,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1331,7 +1377,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1344,6 +1395,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1353,41 +1405,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html b/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html
index 8e5f192..b7473a6 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1770,6 +1815,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1780,7 +1826,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1793,6 +1844,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1802,41 +1854,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/package-summary.html b/docs/html/reference/com/google/android/gms/maps/model/package-summary.html
index cdee9af..056cbff 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/package-summary.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,22 +111,37 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 
 <body class="gc-documentation google
@@ -105,6 +149,7 @@
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -165,27 +210,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -342,7 +391,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -531,6 +580,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -540,11 +590,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -703,6 +748,7 @@
   
 
 
+
 <div id="footer" class="wrap" >
         
 
@@ -713,7 +759,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -726,6 +777,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div><!-- end jd-content -->
 </div><!-- doc-content -->
 
@@ -734,41 +786,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/maps/package-summary.html b/docs/html/reference/com/google/android/gms/maps/package-summary.html
index 903b8fa..e3844eb 100644
--- a/docs/html/reference/com/google/android/gms/maps/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/maps/package-summary.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,22 +111,37 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 
 <body class="gc-documentation google
@@ -105,6 +149,7 @@
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -165,27 +210,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -342,7 +391,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -531,6 +580,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -540,11 +590,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -690,6 +735,7 @@
   
 
 
+
 <div id="footer" class="wrap" >
         
 
@@ -700,7 +746,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -713,6 +764,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div><!-- end jd-content -->
 </div><!-- doc-content -->
 
@@ -721,41 +773,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/package-summary.html b/docs/html/reference/com/google/android/gms/package-summary.html
index ec06c8b..884cbf0 100644
--- a/docs/html/reference/com/google/android/gms/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/package-summary.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,22 +111,37 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 
 <body class="gc-documentation google
@@ -105,6 +149,7 @@
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -165,27 +210,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -342,7 +391,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -531,6 +580,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -540,11 +590,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -615,6 +660,7 @@
   
 
 
+
 <div id="footer" class="wrap" >
         
 
@@ -625,7 +671,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -638,6 +689,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div><!-- end jd-content -->
 </div><!-- doc-content -->
 
@@ -646,41 +698,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.OnPanoramaInfoLoadedListener.html b/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.OnPanoramaInfoLoadedListener.html
index edd0a19..d5bcd10 100644
--- a/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.OnPanoramaInfoLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.OnPanoramaInfoLoadedListener.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -790,6 +835,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -800,7 +846,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -813,6 +864,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -822,41 +874,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.html b/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.html
index b4b14f7..2ae5ab8 100644
--- a/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.html
+++ b/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1975,6 +2020,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1985,7 +2031,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1998,6 +2049,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2007,41 +2059,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/panorama/package-summary.html b/docs/html/reference/com/google/android/gms/panorama/package-summary.html
index aa40441..b962238 100644
--- a/docs/html/reference/com/google/android/gms/panorama/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/panorama/package-summary.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,22 +111,37 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 
 <body class="gc-documentation google
@@ -105,6 +149,7 @@
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -165,27 +210,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -342,7 +391,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -531,6 +580,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -540,11 +590,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -610,6 +655,7 @@
   
 
 
+
 <div id="footer" class="wrap" >
         
 
@@ -620,7 +666,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -633,6 +684,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div><!-- end jd-content -->
 </div><!-- doc-content -->
 
@@ -641,41 +693,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/plus/GooglePlusUtil.html b/docs/html/reference/com/google/android/gms/plus/GooglePlusUtil.html
index 635b3fa..fb394af 100644
--- a/docs/html/reference/com/google/android/gms/plus/GooglePlusUtil.html
+++ b/docs/html/reference/com/google/android/gms/plus/GooglePlusUtil.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1361,6 +1406,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1371,7 +1417,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1384,6 +1435,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1393,41 +1445,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusClient.html b/docs/html/reference/com/google/android/gms/plus/PlusClient.html
index 867ca65..df521ab 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusClient.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusClient.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -2156,6 +2201,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -2166,7 +2212,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -2179,6 +2230,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -2188,41 +2240,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html
index e45596e..e180d00 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -787,6 +832,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -797,7 +843,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -810,6 +861,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -819,41 +871,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html
index b0a9474..ba5d97b 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -12369,6 +12414,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -12379,7 +12425,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -12392,6 +12443,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -12401,41 +12453,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html b/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html
index 21c5804..34f8524 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1565,6 +1610,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1575,7 +1621,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1588,6 +1639,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1597,41 +1649,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusShare.html b/docs/html/reference/com/google/android/gms/plus/PlusShare.html
index a220418..f8f8375 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusShare.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusShare.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -1362,6 +1407,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -1372,7 +1418,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -1385,6 +1436,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -1394,41 +1446,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusSignInButton.html b/docs/html/reference/com/google/android/gms/plus/PlusSignInButton.html
index 60f60a2..1204cbc 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusSignInButton.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusSignInButton.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,28 +111,44 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -164,27 +209,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -341,7 +390,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -530,6 +579,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -539,11 +589,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -9818,6 +9863,7 @@
 <!-- ========= END OF CLASS DATA ========= -->
 <A NAME="navbar_top"></A>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -9828,7 +9874,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -9841,6 +9892,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div> <!-- jd-content -->
 
 </div><!-- end doc-content -->
@@ -9850,41 +9902,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/com/google/android/gms/plus/package-summary.html b/docs/html/reference/com/google/android/gms/plus/package-summary.html
index 8deab06..c41a548 100644
--- a/docs/html/reference/com/google/android/gms/plus/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/plus/package-summary.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,22 +111,37 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 
 <body class="gc-documentation google
@@ -105,6 +149,7 @@
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -165,27 +210,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -342,7 +391,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -531,6 +580,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -540,11 +590,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -637,6 +682,7 @@
   
 
 
+
 <div id="footer" class="wrap" >
         
 
@@ -647,7 +693,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -660,6 +711,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div><!-- end jd-content -->
 </div><!-- doc-content -->
 
@@ -668,41 +720,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/gcm-lists.js b/docs/html/reference/gcm-lists.js
new file mode 100644
index 0000000..44c6023
--- /dev/null
+++ b/docs/html/reference/gcm-lists.js
@@ -0,0 +1,16 @@
+var GCM_DATA = [
+      { id:0, label:"com.google.android.gcm", link:"reference/com/google/android/gcm/package-summary.html", type:"package" },
+      { id:1, label:"com.google.android.gcm.GCMBaseIntentService", link:"reference/com/google/android/gcm/GCMBaseIntentService.html", type:"class" },
+      { id:2, label:"com.google.android.gcm.GCMBroadcastReceiver", link:"reference/com/google/android/gcm/GCMBroadcastReceiver.html", type:"class" },
+      { id:3, label:"com.google.android.gcm.GCMConstants", link:"reference/com/google/android/gcm/GCMConstants.html", type:"class" },
+      { id:4, label:"com.google.android.gcm.GCMRegistrar", link:"reference/com/google/android/gcm/GCMRegistrar.html", type:"class" },
+      { id:5, label:"com.google.android.gcm.server", link:"reference/com/google/android/gcm/server/package-summary.html", type:"package" },
+      { id:6, label:"com.google.android.gcm.server.Constants", link:"reference/com/google/android/gcm/server/Constants.html", type:"class" },
+      { id:7, label:"com.google.android.gcm.server.InvalidRequestException", link:"reference/com/google/android/gcm/server/InvalidRequestException.html", type:"class" },
+      { id:8, label:"com.google.android.gcm.server.Message", link:"reference/com/google/android/gcm/server/Message.html", type:"class" },
+      { id:9, label:"com.google.android.gcm.server.Message.Builder", link:"reference/com/google/android/gcm/server/Message.Builder.html", type:"class" },
+      { id:10, label:"com.google.android.gcm.server.MulticastResult", link:"reference/com/google/android/gcm/server/MulticastResult.html", type:"class" },
+      { id:11, label:"com.google.android.gcm.server.Result", link:"reference/com/google/android/gcm/server/Result.html", type:"class" },
+      { id:12, label:"com.google.android.gcm.server.Sender", link:"reference/com/google/android/gcm/server/Sender.html", type:"class" }
+
+    ];
diff --git a/docs/html/reference/gcm-packages.html b/docs/html/reference/gcm-packages.html
index 28fd130..7497e1f 100644
--- a/docs/html/reference/gcm-packages.html
+++ b/docs/html/reference/gcm-packages.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,27 +111,43 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop">
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -163,27 +208,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -340,7 +389,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -529,6 +578,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -538,11 +588,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -577,6 +622,7 @@
 
 </table>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -587,7 +633,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -600,6 +651,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div><!-- end jd-content -->
 </div> <!-- end doc-content -->
 
@@ -608,41 +660,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/reference/gms-lists.js b/docs/html/reference/gms-lists.js
new file mode 100644
index 0000000..a5999f7
--- /dev/null
+++ b/docs/html/reference/gms-lists.js
@@ -0,0 +1,93 @@
+var GMS_DATA = [
+      { id:0, label:"com.google.android.gms", link:"reference/com/google/android/gms/package-summary.html", type:"package" },
+      { id:1, label:"com.google.android.gms.R", link:"reference/com/google/android/gms/R.html", type:"class" },
+      { id:2, label:"com.google.android.gms.R.attr", link:"reference/com/google/android/gms/R.attr.html", type:"class" },
+      { id:3, label:"com.google.android.gms.R.id", link:"reference/com/google/android/gms/R.id.html", type:"class" },
+      { id:4, label:"com.google.android.gms.R.string", link:"reference/com/google/android/gms/R.string.html", type:"class" },
+      { id:5, label:"com.google.android.gms.R.styleable", link:"reference/com/google/android/gms/R.styleable.html", type:"class" },
+      { id:6, label:"com.google.android.gms.analytics", link:"reference/com/google/android/gms/analytics/package-summary.html", type:"package" },
+      { id:7, label:"com.google.android.gms.analytics.CampaignTrackingReceiver", link:"reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html", type:"class" },
+      { id:8, label:"com.google.android.gms.analytics.CampaignTrackingService", link:"reference/com/google/android/gms/analytics/CampaignTrackingService.html", type:"class" },
+      { id:9, label:"com.google.android.gms.analytics.EasyTracker", link:"reference/com/google/android/gms/analytics/EasyTracker.html", type:"class" },
+      { id:10, label:"com.google.android.gms.analytics.ExceptionParser", link:"reference/com/google/android/gms/analytics/ExceptionParser.html", type:"class" },
+      { id:11, label:"com.google.android.gms.analytics.GoogleAnalytics", link:"reference/com/google/android/gms/analytics/GoogleAnalytics.html", type:"class" },
+      { id:12, label:"com.google.android.gms.analytics.GoogleAnalytics.AppOptOutCallback", link:"reference/com/google/android/gms/analytics/GoogleAnalytics.AppOptOutCallback.html", type:"class" },
+      { id:13, label:"com.google.android.gms.analytics.ModelFields", link:"reference/com/google/android/gms/analytics/ModelFields.html", type:"class" },
+      { id:14, label:"com.google.android.gms.analytics.StandardExceptionParser", link:"reference/com/google/android/gms/analytics/StandardExceptionParser.html", type:"class" },
+      { id:15, label:"com.google.android.gms.analytics.Tracker", link:"reference/com/google/android/gms/analytics/Tracker.html", type:"class" },
+      { id:16, label:"com.google.android.gms.analytics.Transaction", link:"reference/com/google/android/gms/analytics/Transaction.html", type:"class" },
+      { id:17, label:"com.google.android.gms.analytics.Transaction.Builder", link:"reference/com/google/android/gms/analytics/Transaction.Builder.html", type:"class" },
+      { id:18, label:"com.google.android.gms.analytics.Transaction.Item", link:"reference/com/google/android/gms/analytics/Transaction.Item.html", type:"class" },
+      { id:19, label:"com.google.android.gms.analytics.Transaction.Item.Builder", link:"reference/com/google/android/gms/analytics/Transaction.Item.Builder.html", type:"class" },
+      { id:20, label:"com.google.android.gms.auth", link:"reference/com/google/android/gms/auth/package-summary.html", type:"package" },
+      { id:21, label:"com.google.android.gms.auth.GoogleAuthException", link:"reference/com/google/android/gms/auth/GoogleAuthException.html", type:"class" },
+      { id:22, label:"com.google.android.gms.auth.GoogleAuthUtil", link:"reference/com/google/android/gms/auth/GoogleAuthUtil.html", type:"class" },
+      { id:23, label:"com.google.android.gms.auth.GooglePlayServicesAvailabilityException", link:"reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html", type:"class" },
+      { id:24, label:"com.google.android.gms.auth.UserRecoverableAuthException", link:"reference/com/google/android/gms/auth/UserRecoverableAuthException.html", type:"class" },
+      { id:25, label:"com.google.android.gms.auth.UserRecoverableNotifiedException", link:"reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html", type:"class" },
+      { id:26, label:"com.google.android.gms.common", link:"reference/com/google/android/gms/common/package-summary.html", type:"package" },
+      { id:27, label:"com.google.android.gms.common.AccountPicker", link:"reference/com/google/android/gms/common/AccountPicker.html", type:"class" },
+      { id:28, label:"com.google.android.gms.common.ConnectionResult", link:"reference/com/google/android/gms/common/ConnectionResult.html", type:"class" },
+      { id:29, label:"com.google.android.gms.common.GooglePlayServicesClient", link:"reference/com/google/android/gms/common/GooglePlayServicesClient.html", type:"class" },
+      { id:30, label:"com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks", link:"reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html", type:"class" },
+      { id:31, label:"com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener", link:"reference/com/google/android/gms/common/GooglePlayServicesClient.OnConnectionFailedListener.html", type:"class" },
+      { id:32, label:"com.google.android.gms.common.GooglePlayServicesNotAvailableException", link:"reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html", type:"class" },
+      { id:33, label:"com.google.android.gms.common.GooglePlayServicesUtil", link:"reference/com/google/android/gms/common/GooglePlayServicesUtil.html", type:"class" },
+      { id:34, label:"com.google.android.gms.common.Scopes", link:"reference/com/google/android/gms/common/Scopes.html", type:"class" },
+      { id:35, label:"com.google.android.gms.maps", link:"reference/com/google/android/gms/maps/package-summary.html", type:"package" },
+      { id:36, label:"com.google.android.gms.maps.CameraUpdate", link:"reference/com/google/android/gms/maps/CameraUpdate.html", type:"class" },
+      { id:37, label:"com.google.android.gms.maps.CameraUpdateFactory", link:"reference/com/google/android/gms/maps/CameraUpdateFactory.html", type:"class" },
+      { id:38, label:"com.google.android.gms.maps.GoogleMap", link:"reference/com/google/android/gms/maps/GoogleMap.html", type:"class" },
+      { id:39, label:"com.google.android.gms.maps.GoogleMap.CancelableCallback", link:"reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html", type:"class" },
+      { id:40, label:"com.google.android.gms.maps.GoogleMap.InfoWindowAdapter", link:"reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html", type:"class" },
+      { id:41, label:"com.google.android.gms.maps.GoogleMap.OnCameraChangeListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html", type:"class" },
+      { id:42, label:"com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html", type:"class" },
+      { id:43, label:"com.google.android.gms.maps.GoogleMap.OnMapClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html", type:"class" },
+      { id:44, label:"com.google.android.gms.maps.GoogleMap.OnMapLongClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html", type:"class" },
+      { id:45, label:"com.google.android.gms.maps.GoogleMap.OnMarkerClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html", type:"class" },
+      { id:46, label:"com.google.android.gms.maps.GoogleMap.OnMarkerDragListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html", type:"class" },
+      { id:47, label:"com.google.android.gms.maps.GoogleMapOptions", link:"reference/com/google/android/gms/maps/GoogleMapOptions.html", type:"class" },
+      { id:48, label:"com.google.android.gms.maps.LocationSource", link:"reference/com/google/android/gms/maps/LocationSource.html", type:"class" },
+      { id:49, label:"com.google.android.gms.maps.LocationSource.OnLocationChangedListener", link:"reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html", type:"class" },
+      { id:50, label:"com.google.android.gms.maps.MapFragment", link:"reference/com/google/android/gms/maps/MapFragment.html", type:"class" },
+      { id:51, label:"com.google.android.gms.maps.MapView", link:"reference/com/google/android/gms/maps/MapView.html", type:"class" },
+      { id:52, label:"com.google.android.gms.maps.MapsInitializer", link:"reference/com/google/android/gms/maps/MapsInitializer.html", type:"class" },
+      { id:53, label:"com.google.android.gms.maps.Projection", link:"reference/com/google/android/gms/maps/Projection.html", type:"class" },
+      { id:54, label:"com.google.android.gms.maps.SupportMapFragment", link:"reference/com/google/android/gms/maps/SupportMapFragment.html", type:"class" },
+      { id:55, label:"com.google.android.gms.maps.UiSettings", link:"reference/com/google/android/gms/maps/UiSettings.html", type:"class" },
+      { id:56, label:"com.google.android.gms.maps.model", link:"reference/com/google/android/gms/maps/model/package-summary.html", type:"package" },
+      { id:57, label:"com.google.android.gms.maps.model.BitmapDescriptor", link:"reference/com/google/android/gms/maps/model/BitmapDescriptor.html", type:"class" },
+      { id:58, label:"com.google.android.gms.maps.model.BitmapDescriptorFactory", link:"reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html", type:"class" },
+      { id:59, label:"com.google.android.gms.maps.model.CameraPosition", link:"reference/com/google/android/gms/maps/model/CameraPosition.html", type:"class" },
+      { id:60, label:"com.google.android.gms.maps.model.CameraPosition.Builder", link:"reference/com/google/android/gms/maps/model/CameraPosition.Builder.html", type:"class" },
+      { id:61, label:"com.google.android.gms.maps.model.GroundOverlay", link:"reference/com/google/android/gms/maps/model/GroundOverlay.html", type:"class" },
+      { id:62, label:"com.google.android.gms.maps.model.GroundOverlayOptions", link:"reference/com/google/android/gms/maps/model/GroundOverlayOptions.html", type:"class" },
+      { id:63, label:"com.google.android.gms.maps.model.LatLng", link:"reference/com/google/android/gms/maps/model/LatLng.html", type:"class" },
+      { id:64, label:"com.google.android.gms.maps.model.LatLngBounds", link:"reference/com/google/android/gms/maps/model/LatLngBounds.html", type:"class" },
+      { id:65, label:"com.google.android.gms.maps.model.LatLngBounds.Builder", link:"reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html", type:"class" },
+      { id:66, label:"com.google.android.gms.maps.model.Marker", link:"reference/com/google/android/gms/maps/model/Marker.html", type:"class" },
+      { id:67, label:"com.google.android.gms.maps.model.MarkerOptions", link:"reference/com/google/android/gms/maps/model/MarkerOptions.html", type:"class" },
+      { id:68, label:"com.google.android.gms.maps.model.Polygon", link:"reference/com/google/android/gms/maps/model/Polygon.html", type:"class" },
+      { id:69, label:"com.google.android.gms.maps.model.PolygonOptions", link:"reference/com/google/android/gms/maps/model/PolygonOptions.html", type:"class" },
+      { id:70, label:"com.google.android.gms.maps.model.Polyline", link:"reference/com/google/android/gms/maps/model/Polyline.html", type:"class" },
+      { id:71, label:"com.google.android.gms.maps.model.PolylineOptions", link:"reference/com/google/android/gms/maps/model/PolylineOptions.html", type:"class" },
+      { id:72, label:"com.google.android.gms.maps.model.RuntimeRemoteException", link:"reference/com/google/android/gms/maps/model/RuntimeRemoteException.html", type:"class" },
+      { id:73, label:"com.google.android.gms.maps.model.Tile", link:"reference/com/google/android/gms/maps/model/Tile.html", type:"class" },
+      { id:74, label:"com.google.android.gms.maps.model.TileOverlay", link:"reference/com/google/android/gms/maps/model/TileOverlay.html", type:"class" },
+      { id:75, label:"com.google.android.gms.maps.model.TileOverlayOptions", link:"reference/com/google/android/gms/maps/model/TileOverlayOptions.html", type:"class" },
+      { id:76, label:"com.google.android.gms.maps.model.TileProvider", link:"reference/com/google/android/gms/maps/model/TileProvider.html", type:"class" },
+      { id:77, label:"com.google.android.gms.maps.model.UrlTileProvider", link:"reference/com/google/android/gms/maps/model/UrlTileProvider.html", type:"class" },
+      { id:78, label:"com.google.android.gms.maps.model.VisibleRegion", link:"reference/com/google/android/gms/maps/model/VisibleRegion.html", type:"class" },
+      { id:79, label:"com.google.android.gms.panorama", link:"reference/com/google/android/gms/panorama/package-summary.html", type:"package" },
+      { id:80, label:"com.google.android.gms.panorama.PanoramaClient", link:"reference/com/google/android/gms/panorama/PanoramaClient.html", type:"class" },
+      { id:81, label:"com.google.android.gms.panorama.PanoramaClient.OnPanoramaInfoLoadedListener", link:"reference/com/google/android/gms/panorama/PanoramaClient.OnPanoramaInfoLoadedListener.html", type:"class" },
+      { id:82, label:"com.google.android.gms.plus", link:"reference/com/google/android/gms/plus/package-summary.html", type:"package" },
+      { id:83, label:"com.google.android.gms.plus.GooglePlusUtil", link:"reference/com/google/android/gms/plus/GooglePlusUtil.html", type:"class" },
+      { id:84, label:"com.google.android.gms.plus.PlusClient", link:"reference/com/google/android/gms/plus/PlusClient.html", type:"class" },
+      { id:85, label:"com.google.android.gms.plus.PlusOneButton", link:"reference/com/google/android/gms/plus/PlusOneButton.html", type:"class" },
+      { id:86, label:"com.google.android.gms.plus.PlusOneButton.OnPlusOneClickListener", link:"reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html", type:"class" },
+      { id:87, label:"com.google.android.gms.plus.PlusShare", link:"reference/com/google/android/gms/plus/PlusShare.html", type:"class" },
+      { id:88, label:"com.google.android.gms.plus.PlusShare.Builder", link:"reference/com/google/android/gms/plus/PlusShare.Builder.html", type:"class" },
+      { id:89, label:"com.google.android.gms.plus.PlusSignInButton", link:"reference/com/google/android/gms/plus/PlusSignInButton.html", type:"class" }
+
+    ];
diff --git a/docs/html/reference/gms-packages.html b/docs/html/reference/gms-packages.html
index be865d2..bdb57d2 100644
--- a/docs/html/reference/gms-packages.html
+++ b/docs/html/reference/gms-packages.html
@@ -73,6 +73,35 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -82,27 +111,43 @@
 
 <!-- STYLESHEETS -->
 <link rel="stylesheet"
-href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
+href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
 <link href="/assets/css/default.css" rel="stylesheet" type="text/css">
 
 
 
 <!-- JAVASCRIPT -->
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/js/global-libraries-combined.js" type="text/javascript"></script>
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
 <script type="text/javascript">
   var toRoot = "/";
+  
+  var devsite = false;
+  
 </script>
 <script src="/assets/js/docs.js" type="text/javascript"></script>
 
 <script src="/gms_navtree_data.js" type="text/javascript"></script>
 <script src="/gcm_navtree_data.js" type="text/javascript"></script>
 
+
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-5831155-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
 </head>
 <body class="gc-documentation google
   develop">
   <a name="top"></a>
 
+  
     <!-- Header -->
     <div id="header">
         <div class="wrap" id="header-wrap">
@@ -163,27 +208,31 @@
         <li class="active"><a>Android Developers</a></li>
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
-      <!-- <div class="header">Support</div>
-      <ul>
-        <li><a href="/support.html">Developer Support</a></li>
-      </ul> -->
-      <div class="header">Languages</div>
-        <div id="language" class="locales">
-          <select name="language" onChange="changeLangPref(this.value, true)">
-              <option value="en">English</option>
-              <option value="es">Español</option>
-              <option value="ja">日本語</option>
-              <option value="ko">한국어</option>
-              <option value="ru">Русский</option>
-              <option value="zh-CN">中文 (中国)</option>
-              <option value="zh-TW">中文 (台灣)</option>
-          </select>
-        </div>
-      <script type="text/javascript">
-        <!--  
-        loadLangPref();  
-          //-->
-      </script>
+      
+
+      
+      
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-CN">中文 (中国)</option>
+                <option value="zh-TW">中文 (台灣)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+      
+      
+
+
       <br class="clearfix" />
     </div>
     <div class="bottom"></div>
@@ -340,7 +389,7 @@
     <!-- /Sendondary x-nav -->
 
   
-
+  
 
   
   <div class="wrap clearfix" id="body-content">
@@ -529,6 +578,7 @@
        showGoogleRefTree();
     
       </script>
+
     </div> <!-- end side-nav -->
     <script>
       $(document).ready(function() {
@@ -538,11 +588,6 @@
 
 
      
-    <script>
-      $(document).ready(function() {
-        changeDocLang(getLangPref());
-        });
-    </script>
 
 
 
@@ -614,6 +659,7 @@
 
 </table>
 
+
 <div id="footer" class="wrap" >
         
 
@@ -624,7 +670,12 @@
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
-  
+  <div id="build_info">
+    
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
 
 
   <div id="footerlinks">
@@ -637,6 +688,7 @@
   </div>
 
 </div> <!-- end footer -->
+
 </div><!-- end jd-content -->
 </div> <!-- end doc-content -->
 
@@ -645,41 +697,6 @@
 
 
 
-<!-- Grid - for dev 
-<script type="text/javascript">
-
-window.gOverride = {
-		gColor: '#FF0000',
-		pColor: '#EEEEEE',
-		gOpacity: 0.10,
-		pOpacity: 0.40,
-		pHeight: 16,
-		pOffset: 2,
-		gColumns:16,
-		gEnabled:false,
-		pEnabled:false
-	}
-</script>
-	
-<link href="/assets/js/grid/960.gridder.css" rel="stylesheet" type="text/css">
-<script src="/assets/js/grid/960.gridder.js" type="text/javascript"></script>
--->
-
-
-
-
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script>
-
 
 
 </body>
diff --git a/docs/html/resources/tutorials/images/hello_world_0.png b/docs/html/resources/tutorials/images/hello_world_0.png
deleted file mode 100644
index 2674045..0000000
--- a/docs/html/resources/tutorials/images/hello_world_0.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/resources/tutorials/images/hello_world_1.png b/docs/html/resources/tutorials/images/hello_world_1.png
deleted file mode 100644
index dc4b4ad..0000000
--- a/docs/html/resources/tutorials/images/hello_world_1.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/resources/tutorials/images/hello_world_2.png b/docs/html/resources/tutorials/images/hello_world_2.png
deleted file mode 100644
index 3e9c58b..0000000
--- a/docs/html/resources/tutorials/images/hello_world_2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/resources/tutorials/images/hello_world_3.png b/docs/html/resources/tutorials/images/hello_world_3.png
deleted file mode 100644
index 22901a9..0000000
--- a/docs/html/resources/tutorials/images/hello_world_3.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/resources/tutorials/images/hello_world_4.png b/docs/html/resources/tutorials/images/hello_world_4.png
deleted file mode 100644
index 5c41e80..0000000
--- a/docs/html/resources/tutorials/images/hello_world_4.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/resources/tutorials/images/hello_world_5.png b/docs/html/resources/tutorials/images/hello_world_5.png
deleted file mode 100644
index 96b830a..0000000
--- a/docs/html/resources/tutorials/images/hello_world_5.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/resources/tutorials/images/hello_world_8.png b/docs/html/resources/tutorials/images/hello_world_8.png
deleted file mode 100644
index 07db360..0000000
--- a/docs/html/resources/tutorials/images/hello_world_8.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/resources/tutorials/images/hello_world_9.png b/docs/html/resources/tutorials/images/hello_world_9.png
deleted file mode 100644
index a66526a..0000000
--- a/docs/html/resources/tutorials/images/hello_world_9.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/sdk/api_diff/10/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/10/changes/alldiffs_index_additions.html
index 372109a..39431c1 100644
--- a/docs/html/sdk/api_diff/10/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/10/changes/alldiffs_index_additions.html
@@ -301,7 +301,7 @@
 <A HREF="pkg_android.nfc.html#Tag" class="hiddenlink" target="rightframe"><b>Tag</b></A><br>
 <!-- Class TagLostException -->
 <A HREF="pkg_android.nfc.html#TagLostException" class="hiddenlink" target="rightframe"><b>TagLostException</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/10/changes/alldiffs_index_all.html
index 8b4644e..b451aca 100644
--- a/docs/html/sdk/api_diff/10/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/10/changes/alldiffs_index_all.html
@@ -370,7 +370,7 @@
 <A HREF="pkg_android.nfc.html#Tag" class="hiddenlink" target="rightframe"><b>Tag</b></A><br>
 <!-- Class TagLostException -->
 <A HREF="pkg_android.nfc.html#TagLostException" class="hiddenlink" target="rightframe"><b>TagLostException</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/10/changes/alldiffs_index_changes.html
index 950b66d..febe5ee 100644
--- a/docs/html/sdk/api_diff/10/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/10/changes/alldiffs_index_changes.html
@@ -114,7 +114,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.nfc.NfcAdapter.html" class="hiddenlink" target="rightframe">NfcAdapter</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/10/changes/alldiffs_index_removals.html
index 3b36617..11e38c7 100644
--- a/docs/html/sdk/api_diff/10/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/10/changes/alldiffs_index_removals.html
@@ -63,7 +63,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.test.mock.MockPackageManager.html#android.test.mock.MockPackageManager.setPackageObbPath_removed(java.lang.String, java.lang.String)" class="hiddenlink" target="rightframe"><strike>setPackageObbPath</strike>
 (<code>String, String</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/android.bluetooth.BluetoothAdapter.html b/docs/html/sdk/api_diff/10/changes/android.bluetooth.BluetoothAdapter.html
index a57461f..f20ca6e 100644
--- a/docs/html/sdk/api_diff/10/changes/android.bluetooth.BluetoothAdapter.html
+++ b/docs/html/sdk/api_diff/10/changes/android.bluetooth.BluetoothAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/android.bluetooth.BluetoothDevice.html b/docs/html/sdk/api_diff/10/changes/android.bluetooth.BluetoothDevice.html
index bc226a0..9df8bf5 100644
--- a/docs/html/sdk/api_diff/10/changes/android.bluetooth.BluetoothDevice.html
+++ b/docs/html/sdk/api_diff/10/changes/android.bluetooth.BluetoothDevice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/android.content.Context.html b/docs/html/sdk/api_diff/10/changes/android.content.Context.html
index 21e13dc..fe1732d 100644
--- a/docs/html/sdk/api_diff/10/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/10/changes/android.content.Context.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/android.graphics.BitmapFactory.Options.html b/docs/html/sdk/api_diff/10/changes/android.graphics.BitmapFactory.Options.html
index 71e087d..001e8bf 100644
--- a/docs/html/sdk/api_diff/10/changes/android.graphics.BitmapFactory.Options.html
+++ b/docs/html/sdk/api_diff/10/changes/android.graphics.BitmapFactory.Options.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/android.media.MediaRecorder.AudioEncoder.html b/docs/html/sdk/api_diff/10/changes/android.media.MediaRecorder.AudioEncoder.html
index 50637f4..958e1ec 100644
--- a/docs/html/sdk/api_diff/10/changes/android.media.MediaRecorder.AudioEncoder.html
+++ b/docs/html/sdk/api_diff/10/changes/android.media.MediaRecorder.AudioEncoder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/android.media.MediaRecorder.OutputFormat.html b/docs/html/sdk/api_diff/10/changes/android.media.MediaRecorder.OutputFormat.html
index d761f78..925630b 100644
--- a/docs/html/sdk/api_diff/10/changes/android.media.MediaRecorder.OutputFormat.html
+++ b/docs/html/sdk/api_diff/10/changes/android.media.MediaRecorder.OutputFormat.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/android.nfc.NfcAdapter.html b/docs/html/sdk/api_diff/10/changes/android.nfc.NfcAdapter.html
index 518877a..61072ca 100644
--- a/docs/html/sdk/api_diff/10/changes/android.nfc.NfcAdapter.html
+++ b/docs/html/sdk/api_diff/10/changes/android.nfc.NfcAdapter.html
@@ -187,7 +187,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/10/changes/android.os.Build.VERSION_CODES.html
index 13a2bfc..c27cbf4 100644
--- a/docs/html/sdk/api_diff/10/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/10/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/10/changes/android.test.mock.MockPackageManager.html
index fc46828..7291ab3 100644
--- a/docs/html/sdk/api_diff/10/changes/android.test.mock.MockPackageManager.html
+++ b/docs/html/sdk/api_diff/10/changes/android.test.mock.MockPackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/changes-summary.html b/docs/html/sdk/api_diff/10/changes/changes-summary.html
index ff0e479..39de62d 100644
--- a/docs/html/sdk/api_diff/10/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/10/changes/changes-summary.html
@@ -185,7 +185,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/classes_index_additions.html b/docs/html/sdk/api_diff/10/changes/classes_index_additions.html
index 0425483..ba75880 100644
--- a/docs/html/sdk/api_diff/10/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/10/changes/classes_index_additions.html
@@ -93,7 +93,7 @@
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.nfc.html#Tag" class="hiddenlink" target="rightframe"><b>Tag</b></A><br>
 <A HREF="pkg_android.nfc.html#TagLostException" class="hiddenlink" target="rightframe"><b>TagLostException</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/classes_index_all.html b/docs/html/sdk/api_diff/10/changes/classes_index_all.html
index 0aa1a08..6751124 100644
--- a/docs/html/sdk/api_diff/10/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/10/changes/classes_index_all.html
@@ -116,7 +116,7 @@
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.nfc.html#Tag" class="hiddenlink" target="rightframe"><b>Tag</b></A><br>
 <A HREF="pkg_android.nfc.html#TagLostException" class="hiddenlink" target="rightframe"><b>TagLostException</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/classes_index_changes.html b/docs/html/sdk/api_diff/10/changes/classes_index_changes.html
index 58a5025..b2506d0 100644
--- a/docs/html/sdk/api_diff/10/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/10/changes/classes_index_changes.html
@@ -84,7 +84,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.nfc.NfcAdapter.html" class="hiddenlink" target="rightframe">NfcAdapter</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/classes_index_removals.html b/docs/html/sdk/api_diff/10/changes/classes_index_removals.html
index e6da73f..af7f1d0 100644
--- a/docs/html/sdk/api_diff/10/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/10/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/10/changes/constructors_index_additions.html
index 3237ba3..a106dcb 100644
--- a/docs/html/sdk/api_diff/10/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/10/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/constructors_index_all.html b/docs/html/sdk/api_diff/10/changes/constructors_index_all.html
index 637582e..3e67e48 100644
--- a/docs/html/sdk/api_diff/10/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/10/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/10/changes/constructors_index_changes.html
index 728fa2d..1f3c803 100644
--- a/docs/html/sdk/api_diff/10/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/10/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/10/changes/constructors_index_removals.html
index 1b95544..a260baa 100644
--- a/docs/html/sdk/api_diff/10/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/10/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/fields_index_additions.html b/docs/html/sdk/api_diff/10/changes/fields_index_additions.html
index 9b2ce1e..eafea9c 100644
--- a/docs/html/sdk/api_diff/10/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/10/changes/fields_index_additions.html
@@ -110,7 +110,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.content.Context.html#android.content.Context.NFC_SERVICE" class="hiddenlink" target="rightframe">NFC_SERVICE</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/fields_index_all.html b/docs/html/sdk/api_diff/10/changes/fields_index_all.html
index 699188c..1e14b2e 100644
--- a/docs/html/sdk/api_diff/10/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/10/changes/fields_index_all.html
@@ -110,7 +110,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.content.Context.html#android.content.Context.NFC_SERVICE" class="hiddenlink" target="rightframe">NFC_SERVICE</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/fields_index_changes.html b/docs/html/sdk/api_diff/10/changes/fields_index_changes.html
index 4ebfa31..3fb80c2 100644
--- a/docs/html/sdk/api_diff/10/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/10/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/fields_index_removals.html b/docs/html/sdk/api_diff/10/changes/fields_index_removals.html
index 09b0726..654f5f2 100644
--- a/docs/html/sdk/api_diff/10/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/10/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/jdiff_help.html b/docs/html/sdk/api_diff/10/changes/jdiff_help.html
index ed5b90c..727f83d 100644
--- a/docs/html/sdk/api_diff/10/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/10/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/10/changes/jdiff_statistics.html
index dad958e..0f3d3dc 100644
--- a/docs/html/sdk/api_diff/10/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/10/changes/jdiff_statistics.html
@@ -257,7 +257,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/10/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/10/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/10/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/methods_index_additions.html b/docs/html/sdk/api_diff/10/changes/methods_index_additions.html
index 4d188bd..b6ea66d 100644
--- a/docs/html/sdk/api_diff/10/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/10/changes/methods_index_additions.html
@@ -106,7 +106,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.bluetooth.BluetoothAdapter.html#android.bluetooth.BluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord_added(java.lang.String, java.util.UUID)" class="hiddenlink" target="rightframe"><b>listenUsingInsecureRfcommWithServiceRecord</b>
 (<code>String, UUID</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/methods_index_all.html b/docs/html/sdk/api_diff/10/changes/methods_index_all.html
index 430198b..e1b2231 100644
--- a/docs/html/sdk/api_diff/10/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/10/changes/methods_index_all.html
@@ -125,7 +125,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.test.mock.MockPackageManager.html#android.test.mock.MockPackageManager.setPackageObbPath_removed(java.lang.String, java.lang.String)" class="hiddenlink" target="rightframe"><strike>setPackageObbPath</strike>
 (<code>String, String</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/methods_index_changes.html b/docs/html/sdk/api_diff/10/changes/methods_index_changes.html
index 9a040bc..f623f80 100644
--- a/docs/html/sdk/api_diff/10/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/10/changes/methods_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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/methods_index_removals.html b/docs/html/sdk/api_diff/10/changes/methods_index_removals.html
index 34afdb9..9fc9094 100644
--- a/docs/html/sdk/api_diff/10/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/10/changes/methods_index_removals.html
@@ -61,7 +61,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.test.mock.MockPackageManager.html#android.test.mock.MockPackageManager.setPackageObbPath_removed(java.lang.String, java.lang.String)" class="hiddenlink" target="rightframe"><strike>setPackageObbPath</strike>
 (<code>String, String</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/packages_index_additions.html b/docs/html/sdk/api_diff/10/changes/packages_index_additions.html
index 903b674..a7030ed 100644
--- a/docs/html/sdk/api_diff/10/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/10/changes/packages_index_additions.html
@@ -51,7 +51,7 @@
 <div id="indexTableEntries">
 <A NAME="A"></A>
 <A HREF="changes-summary.html#android.nfc.tech" class="hiddenlink" target="rightframe"><b>android.nfc.tech</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/packages_index_all.html b/docs/html/sdk/api_diff/10/changes/packages_index_all.html
index a66de72..64b3f2b 100644
--- a/docs/html/sdk/api_diff/10/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/10/changes/packages_index_all.html
@@ -59,7 +59,7 @@
 <A HREF="pkg_android.os.html" class="hiddenlink" target="rightframe">android.os</A><br>
 <A HREF="pkg_android.speech.html" class="hiddenlink" target="rightframe">android.speech</A><br>
 <A HREF="pkg_android.test.mock.html" class="hiddenlink" target="rightframe">android.test.mock</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/packages_index_changes.html b/docs/html/sdk/api_diff/10/changes/packages_index_changes.html
index 4ff0c75..e69bd90 100644
--- a/docs/html/sdk/api_diff/10/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/10/changes/packages_index_changes.html
@@ -58,7 +58,7 @@
 <A HREF="pkg_android.os.html" class="hiddenlink" target="rightframe">android.os</A><br>
 <A HREF="pkg_android.speech.html" class="hiddenlink" target="rightframe">android.speech</A><br>
 <A HREF="pkg_android.test.mock.html" class="hiddenlink" target="rightframe">android.test.mock</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/packages_index_removals.html b/docs/html/sdk/api_diff/10/changes/packages_index_removals.html
index d0ffabc..5f37b27 100644
--- a/docs/html/sdk/api_diff/10/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/10/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/pkg_android.bluetooth.html b/docs/html/sdk/api_diff/10/changes/pkg_android.bluetooth.html
index d1792cb..1fd8349 100644
--- a/docs/html/sdk/api_diff/10/changes/pkg_android.bluetooth.html
+++ b/docs/html/sdk/api_diff/10/changes/pkg_android.bluetooth.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/pkg_android.content.html b/docs/html/sdk/api_diff/10/changes/pkg_android.content.html
index 7eb32d5..d57ac1e 100644
--- a/docs/html/sdk/api_diff/10/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/10/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/10/changes/pkg_android.graphics.html
index 859bca5..6d0351d 100644
--- a/docs/html/sdk/api_diff/10/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/10/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/pkg_android.media.html b/docs/html/sdk/api_diff/10/changes/pkg_android.media.html
index 537d8e4..cada63d 100644
--- a/docs/html/sdk/api_diff/10/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/10/changes/pkg_android.media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/pkg_android.nfc.html b/docs/html/sdk/api_diff/10/changes/pkg_android.nfc.html
index 2f618ea..d80c6c5 100644
--- a/docs/html/sdk/api_diff/10/changes/pkg_android.nfc.html
+++ b/docs/html/sdk/api_diff/10/changes/pkg_android.nfc.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/pkg_android.os.html b/docs/html/sdk/api_diff/10/changes/pkg_android.os.html
index e8baafa..d344c55 100644
--- a/docs/html/sdk/api_diff/10/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/10/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/pkg_android.speech.html b/docs/html/sdk/api_diff/10/changes/pkg_android.speech.html
index fe52c7d..bca87eb 100644
--- a/docs/html/sdk/api_diff/10/changes/pkg_android.speech.html
+++ b/docs/html/sdk/api_diff/10/changes/pkg_android.speech.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/10/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/10/changes/pkg_android.test.mock.html
index d5313fa..4f4a5c8 100644
--- a/docs/html/sdk/api_diff/10/changes/pkg_android.test.mock.html
+++ b/docs/html/sdk/api_diff/10/changes/pkg_android.test.mock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/11/changes/alldiffs_index_additions.html
index 454d0d8..74278c71 100644
--- a/docs/html/sdk/api_diff/11/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/11/changes/alldiffs_index_additions.html
@@ -4248,7 +4248,7 @@
 <!-- Method writeToParcel -->
 <nobr><A HREF="android.content.SyncInfo.html#android.content.SyncInfo.writeToParcel_added(android.os.Parcel, int)" class="hiddenlink" target="rightframe"><b>writeToParcel</b>
 (<code>Parcel, int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/11/changes/alldiffs_index_all.html
index c36382a..8d68d60 100644
--- a/docs/html/sdk/api_diff/11/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/11/changes/alldiffs_index_all.html
@@ -5287,7 +5287,7 @@
 <!-- Method writeToParcel -->
 <nobr><A HREF="android.content.SyncInfo.html#android.content.SyncInfo.writeToParcel_added(android.os.Parcel, int)" class="hiddenlink" target="rightframe"><b>writeToParcel</b>
 (<code>Parcel, int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/11/changes/alldiffs_index_changes.html
index 5c91713..ca1564f 100644
--- a/docs/html/sdk/api_diff/11/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/11/changes/alldiffs_index_changes.html
@@ -1544,7 +1544,7 @@
 <A HREF="android.view.Window.Callback.html" class="hiddenlink" target="rightframe"><i>Window.Callback</i></A><br>
 <!-- Class WindowManager.LayoutParams -->
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/11/changes/alldiffs_index_removals.html
index 941fbff..b85cc14 100644
--- a/docs/html/sdk/api_diff/11/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/11/changes/alldiffs_index_removals.html
@@ -242,7 +242,7 @@
 <!-- Method updateToNull -->
 <nobr><A HREF="android.test.mock.MockCursor.html#android.test.mock.MockCursor.updateToNull_removed(int)" class="hiddenlink" target="rightframe"><strike>updateToNull</strike>
 (<code>int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/11/changes/android.Manifest.permission.html
index 79aaf10..49a1108 100644
--- a/docs/html/sdk/api_diff/11/changes/android.Manifest.permission.html
+++ b/docs/html/sdk/api_diff/11/changes/android.Manifest.permission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.R.attr.html b/docs/html/sdk/api_diff/11/changes/android.R.attr.html
index b6cac99..1411647 100644
--- a/docs/html/sdk/api_diff/11/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/11/changes/android.R.attr.html
@@ -1158,7 +1158,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.R.dimen.html b/docs/html/sdk/api_diff/11/changes/android.R.dimen.html
index 205f3fc..d06b5b9 100644
--- a/docs/html/sdk/api_diff/11/changes/android.R.dimen.html
+++ b/docs/html/sdk/api_diff/11/changes/android.R.dimen.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.R.drawable.html b/docs/html/sdk/api_diff/11/changes/android.R.drawable.html
index 8172aed..2f33643 100644
--- a/docs/html/sdk/api_diff/11/changes/android.R.drawable.html
+++ b/docs/html/sdk/api_diff/11/changes/android.R.drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.R.id.html b/docs/html/sdk/api_diff/11/changes/android.R.id.html
index 163425d..0a4a827 100644
--- a/docs/html/sdk/api_diff/11/changes/android.R.id.html
+++ b/docs/html/sdk/api_diff/11/changes/android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.R.layout.html b/docs/html/sdk/api_diff/11/changes/android.R.layout.html
index a596cfd..97da70d 100644
--- a/docs/html/sdk/api_diff/11/changes/android.R.layout.html
+++ b/docs/html/sdk/api_diff/11/changes/android.R.layout.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.R.string.html b/docs/html/sdk/api_diff/11/changes/android.R.string.html
index 0e0f105..f17f20a 100644
--- a/docs/html/sdk/api_diff/11/changes/android.R.string.html
+++ b/docs/html/sdk/api_diff/11/changes/android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.R.style.html b/docs/html/sdk/api_diff/11/changes/android.R.style.html
index 74ff759..8162b0d 100644
--- a/docs/html/sdk/api_diff/11/changes/android.R.style.html
+++ b/docs/html/sdk/api_diff/11/changes/android.R.style.html
@@ -1046,7 +1046,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.accounts.AccountManager.html b/docs/html/sdk/api_diff/11/changes/android.accounts.AccountManager.html
index f3c6626..21e998a 100644
--- a/docs/html/sdk/api_diff/11/changes/android.accounts.AccountManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.accounts.AccountManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.accounts.AuthenticatorDescription.html b/docs/html/sdk/api_diff/11/changes/android.accounts.AuthenticatorDescription.html
index 58c532a..5d4f437 100644
--- a/docs/html/sdk/api_diff/11/changes/android.accounts.AuthenticatorDescription.html
+++ b/docs/html/sdk/api_diff/11/changes/android.accounts.AuthenticatorDescription.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.Activity.html b/docs/html/sdk/api_diff/11/changes/android.app.Activity.html
index 96d728a..58a9a49 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.Activity.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.Activity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.ActivityManager.RecentTaskInfo.html b/docs/html/sdk/api_diff/11/changes/android.app.ActivityManager.RecentTaskInfo.html
index 2823629..08ea164 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.ActivityManager.RecentTaskInfo.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.ActivityManager.RecentTaskInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.ActivityManager.html b/docs/html/sdk/api_diff/11/changes/android.app.ActivityManager.html
index 6c46ba7..f50a889 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.ActivityManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.ActivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.AlertDialog.Builder.html b/docs/html/sdk/api_diff/11/changes/android.app.AlertDialog.Builder.html
index 532eb6b..8e53bba 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.AlertDialog.Builder.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.AlertDialog.Builder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.AlertDialog.html b/docs/html/sdk/api_diff/11/changes/android.app.AlertDialog.html
index cb5c2f2..17b4de9 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.AlertDialog.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.AlertDialog.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.DatePickerDialog.html b/docs/html/sdk/api_diff/11/changes/android.app.DatePickerDialog.html
index d6b69c0..2c23187 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.DatePickerDialog.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.DatePickerDialog.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.Dialog.html b/docs/html/sdk/api_diff/11/changes/android.app.Dialog.html
index fe83a77..8fca6c2 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.Dialog.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.Dialog.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.DownloadManager.Request.html b/docs/html/sdk/api_diff/11/changes/android.app.DownloadManager.Request.html
index f85ec18..5ab0e4b 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.DownloadManager.Request.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.DownloadManager.Request.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.DownloadManager.html b/docs/html/sdk/api_diff/11/changes/android.app.DownloadManager.html
index 3c138ad..b4b28ec 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.DownloadManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.DownloadManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.Notification.html b/docs/html/sdk/api_diff/11/changes/android.app.Notification.html
index 19086f5..5d773d1 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.Notification.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.Notification.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.PendingIntent.html b/docs/html/sdk/api_diff/11/changes/android.app.PendingIntent.html
index fed6b615..2578b36 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.PendingIntent.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.PendingIntent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.ProgressDialog.html b/docs/html/sdk/api_diff/11/changes/android.app.ProgressDialog.html
index 7437921..503b28d 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.ProgressDialog.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.ProgressDialog.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.SearchManager.html b/docs/html/sdk/api_diff/11/changes/android.app.SearchManager.html
index 4621bf0..6451368 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.SearchManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.SearchManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.Service.html b/docs/html/sdk/api_diff/11/changes/android.app.Service.html
index 0bf322d..b071b942 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.Service.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.Service.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.WallpaperManager.html b/docs/html/sdk/api_diff/11/changes/android.app.WallpaperManager.html
index 42c6f8b..7ffa8a8 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.WallpaperManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.WallpaperManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.admin.DeviceAdminInfo.html b/docs/html/sdk/api_diff/11/changes/android.app.admin.DeviceAdminInfo.html
index 1bb82b3..96d3135d 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.admin.DeviceAdminInfo.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.admin.DeviceAdminInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.admin.DeviceAdminReceiver.html b/docs/html/sdk/api_diff/11/changes/android.app.admin.DeviceAdminReceiver.html
index 28691bc..200dc74 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.admin.DeviceAdminReceiver.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.admin.DeviceAdminReceiver.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.app.admin.DevicePolicyManager.html b/docs/html/sdk/api_diff/11/changes/android.app.admin.DevicePolicyManager.html
index 9527bda..f4f80ed 100644
--- a/docs/html/sdk/api_diff/11/changes/android.app.admin.DevicePolicyManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.app.admin.DevicePolicyManager.html
@@ -298,7 +298,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetHost.html b/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetHost.html
index ec97611..9f8919d 100644
--- a/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetHost.html
+++ b/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetHost.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetManager.html b/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetManager.html
index 81585ba..d99c96e 100644
--- a/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetProviderInfo.html b/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetProviderInfo.html
index dbcbce2..ac21b49 100644
--- a/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetProviderInfo.html
+++ b/docs/html/sdk/api_diff/11/changes/android.appwidget.AppWidgetProviderInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.bluetooth.BluetoothAdapter.html b/docs/html/sdk/api_diff/11/changes/android.bluetooth.BluetoothAdapter.html
index e71af0f..c583f86 100644
--- a/docs/html/sdk/api_diff/11/changes/android.bluetooth.BluetoothAdapter.html
+++ b/docs/html/sdk/api_diff/11/changes/android.bluetooth.BluetoothAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.AbstractThreadedSyncAdapter.html b/docs/html/sdk/api_diff/11/changes/android.content.AbstractThreadedSyncAdapter.html
index 0c3d615..1a54e80 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.AbstractThreadedSyncAdapter.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.AbstractThreadedSyncAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.BroadcastReceiver.html b/docs/html/sdk/api_diff/11/changes/android.content.BroadcastReceiver.html
index 526c923..e94663a 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.BroadcastReceiver.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.BroadcastReceiver.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.ContentProvider.html b/docs/html/sdk/api_diff/11/changes/android.content.ContentProvider.html
index a1c2be1..ba92c9f 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.ContentProvider.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.ContentProvider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.ContentProviderClient.html b/docs/html/sdk/api_diff/11/changes/android.content.ContentProviderClient.html
index 569e158..094c695 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.ContentProviderClient.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.ContentProviderClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.ContentResolver.html b/docs/html/sdk/api_diff/11/changes/android.content.ContentResolver.html
index 33c85fc..f098782 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.ContentResolver.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.ContentResolver.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.ContentValues.html b/docs/html/sdk/api_diff/11/changes/android.content.ContentValues.html
index c5348d3..a1ca16f 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.ContentValues.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.ContentValues.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.Context.html b/docs/html/sdk/api_diff/11/changes/android.content.Context.html
index ae902c0..d08762c 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.Context.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.ContextWrapper.html b/docs/html/sdk/api_diff/11/changes/android.content.ContextWrapper.html
index e7c38ce..2044b32 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.ContextWrapper.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.ContextWrapper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.Intent.html b/docs/html/sdk/api_diff/11/changes/android.content.Intent.html
index 20f5cf9..0d11723 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.Intent.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.Intent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.SharedPreferences.Editor.html b/docs/html/sdk/api_diff/11/changes/android.content.SharedPreferences.Editor.html
index b36c517..5449a7c 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.SharedPreferences.Editor.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.SharedPreferences.Editor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.SharedPreferences.html b/docs/html/sdk/api_diff/11/changes/android.content.SharedPreferences.html
index 7d77e1b..2796602 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.SharedPreferences.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.SharedPreferences.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.SyncAdapterType.html b/docs/html/sdk/api_diff/11/changes/android.content.SyncAdapterType.html
index 4b810a5..9a3825b 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.SyncAdapterType.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.SyncAdapterType.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.SyncInfo.html b/docs/html/sdk/api_diff/11/changes/android.content.SyncInfo.html
index d8b75aa..95fabe0 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.SyncInfo.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.SyncInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/11/changes/android.content.pm.ActivityInfo.html
index 32c8de7..4a32f6b 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.pm.ActivityInfo.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.pm.ActivityInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.pm.ApplicationInfo.html b/docs/html/sdk/api_diff/11/changes/android.content.pm.ApplicationInfo.html
index cb1994e..ca3436f 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.pm.ApplicationInfo.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.pm.ApplicationInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.pm.ComponentInfo.html b/docs/html/sdk/api_diff/11/changes/android.content.pm.ComponentInfo.html
index f1a5385..ae10995 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.pm.ComponentInfo.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.pm.ComponentInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/11/changes/android.content.pm.PackageManager.html
index 42e668a..500a13a 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.pm.PackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.pm.PackageStats.html b/docs/html/sdk/api_diff/11/changes/android.content.pm.PackageStats.html
index 11536cb8..c1e4c89 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.pm.PackageStats.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.pm.PackageStats.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/11/changes/android.content.res.Configuration.html
index a2c3198..3d9e529 100644
--- a/docs/html/sdk/api_diff/11/changes/android.content.res.Configuration.html
+++ b/docs/html/sdk/api_diff/11/changes/android.content.res.Configuration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.AbstractCursor.html b/docs/html/sdk/api_diff/11/changes/android.database.AbstractCursor.html
index 12811ed..290998e 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.AbstractCursor.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.AbstractCursor.html
@@ -160,7 +160,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.AbstractWindowedCursor.html b/docs/html/sdk/api_diff/11/changes/android.database.AbstractWindowedCursor.html
index 2425924..8164ade 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.AbstractWindowedCursor.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.AbstractWindowedCursor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.Cursor.html b/docs/html/sdk/api_diff/11/changes/android.database.Cursor.html
index 5df7634..252803f 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.Cursor.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.Cursor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.CursorWindow.html b/docs/html/sdk/api_diff/11/changes/android.database.CursorWindow.html
index 50284fb..52726f7 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.CursorWindow.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.CursorWindow.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.CursorWrapper.html b/docs/html/sdk/api_diff/11/changes/android.database.CursorWrapper.html
index d5152d1..e69df08 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.CursorWrapper.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.CursorWrapper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.DatabaseUtils.html b/docs/html/sdk/api_diff/11/changes/android.database.DatabaseUtils.html
index 97436a2..a628061 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.DatabaseUtils.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.DatabaseUtils.html
@@ -228,7 +228,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteCursor.html b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteCursor.html
index 324912c..5d54d67 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteCursor.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteCursor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteDatabase.html b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteDatabase.html
index 779678d..6a91c89 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteDatabase.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteDatabase.html
@@ -210,7 +210,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteOpenHelper.html b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteOpenHelper.html
index b782814..7596f20 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteOpenHelper.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteOpenHelper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteProgram.html b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteProgram.html
index 20aab20..0d9e142 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteProgram.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteProgram.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteQueryBuilder.html b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteQueryBuilder.html
index aa6bc15..ceb50db 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteQueryBuilder.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteQueryBuilder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteStatement.html b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteStatement.html
index ee6c8fb..9a47ab5 100644
--- a/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteStatement.html
+++ b/docs/html/sdk/api_diff/11/changes/android.database.sqlite.SQLiteStatement.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.graphics.BitmapFactory.Options.html b/docs/html/sdk/api_diff/11/changes/android.graphics.BitmapFactory.Options.html
index 68aa872..92161fb 100644
--- a/docs/html/sdk/api_diff/11/changes/android.graphics.BitmapFactory.Options.html
+++ b/docs/html/sdk/api_diff/11/changes/android.graphics.BitmapFactory.Options.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.graphics.Canvas.html b/docs/html/sdk/api_diff/11/changes/android.graphics.Canvas.html
index a4cf3e6..364cac9 100644
--- a/docs/html/sdk/api_diff/11/changes/android.graphics.Canvas.html
+++ b/docs/html/sdk/api_diff/11/changes/android.graphics.Canvas.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.ColorDrawable.html b/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.ColorDrawable.html
index b2dd308..5eab240 100644
--- a/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.ColorDrawable.html
+++ b/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.ColorDrawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.Drawable.html b/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.Drawable.html
index 0b28b32..88db891 100644
--- a/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.Drawable.html
+++ b/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.Drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.DrawableContainerState.html b/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.DrawableContainerState.html
index 603d4e7..0919d89 100644
--- a/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.DrawableContainerState.html
+++ b/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.DrawableContainerState.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.html b/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.html
index 7c69ecd..d56c509 100644
--- a/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.html
+++ b/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.LayerDrawable.html b/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.LayerDrawable.html
index d933421..6572843 100644
--- a/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.LayerDrawable.html
+++ b/docs/html/sdk/api_diff/11/changes/android.graphics.drawable.LayerDrawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.hardware.Camera.Parameters.html b/docs/html/sdk/api_diff/11/changes/android.hardware.Camera.Parameters.html
index f2edcf9..71c2a10 100644
--- a/docs/html/sdk/api_diff/11/changes/android.hardware.Camera.Parameters.html
+++ b/docs/html/sdk/api_diff/11/changes/android.hardware.Camera.Parameters.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/11/changes/android.hardware.Camera.html
index 32dfdde..7042935 100644
--- a/docs/html/sdk/api_diff/11/changes/android.hardware.Camera.html
+++ b/docs/html/sdk/api_diff/11/changes/android.hardware.Camera.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.hardware.SensorManager.html b/docs/html/sdk/api_diff/11/changes/android.hardware.SensorManager.html
index 14d24ad..20591d3 100644
--- a/docs/html/sdk/api_diff/11/changes/android.hardware.SensorManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.hardware.SensorManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.InputMethodImpl.html b/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.InputMethodImpl.html
index 9769634..e846d6d 100644
--- a/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.InputMethodImpl.html
+++ b/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.InputMethodImpl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.Insets.html b/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.Insets.html
index 83d5e9e..5851c14 100644
--- a/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.Insets.html
+++ b/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.Insets.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.html b/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.html
index c6e749a..2d0c718 100644
--- a/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.html
+++ b/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.Keyboard.html b/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.Keyboard.html
index 58490d8..73409ec 100644
--- a/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.Keyboard.html
+++ b/docs/html/sdk/api_diff/11/changes/android.inputmethodservice.Keyboard.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/11/changes/android.media.AudioManager.html
index d946c68..40ff572 100644
--- a/docs/html/sdk/api_diff/11/changes/android.media.AudioManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.media.AudioManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.media.CamcorderProfile.html b/docs/html/sdk/api_diff/11/changes/android.media.CamcorderProfile.html
index 94a0784..8c9b63b 100644
--- a/docs/html/sdk/api_diff/11/changes/android.media.CamcorderProfile.html
+++ b/docs/html/sdk/api_diff/11/changes/android.media.CamcorderProfile.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.media.ExifInterface.html b/docs/html/sdk/api_diff/11/changes/android.media.ExifInterface.html
index e99c6de..640dfee 100644
--- a/docs/html/sdk/api_diff/11/changes/android.media.ExifInterface.html
+++ b/docs/html/sdk/api_diff/11/changes/android.media.ExifInterface.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.media.MediaRecorder.AudioSource.html b/docs/html/sdk/api_diff/11/changes/android.media.MediaRecorder.AudioSource.html
index 1035e58..de6175b 100644
--- a/docs/html/sdk/api_diff/11/changes/android.media.MediaRecorder.AudioSource.html
+++ b/docs/html/sdk/api_diff/11/changes/android.media.MediaRecorder.AudioSource.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/11/changes/android.media.MediaRecorder.html
index 57241e2..c35b0d4 100644
--- a/docs/html/sdk/api_diff/11/changes/android.media.MediaRecorder.html
+++ b/docs/html/sdk/api_diff/11/changes/android.media.MediaRecorder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.net.Proxy.html b/docs/html/sdk/api_diff/11/changes/android.net.Proxy.html
index 90d43f2..a1b6f57 100644
--- a/docs/html/sdk/api_diff/11/changes/android.net.Proxy.html
+++ b/docs/html/sdk/api_diff/11/changes/android.net.Proxy.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.net.Uri.Builder.html b/docs/html/sdk/api_diff/11/changes/android.net.Uri.Builder.html
index 3261b03..2f87724 100644
--- a/docs/html/sdk/api_diff/11/changes/android.net.Uri.Builder.html
+++ b/docs/html/sdk/api_diff/11/changes/android.net.Uri.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.net.Uri.html b/docs/html/sdk/api_diff/11/changes/android.net.Uri.html
index c0afdd2..0e3c454 100644
--- a/docs/html/sdk/api_diff/11/changes/android.net.Uri.html
+++ b/docs/html/sdk/api_diff/11/changes/android.net.Uri.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.opengl.GLSurfaceView.html b/docs/html/sdk/api_diff/11/changes/android.opengl.GLSurfaceView.html
index d49cd65..361d6f5 100644
--- a/docs/html/sdk/api_diff/11/changes/android.opengl.GLSurfaceView.html
+++ b/docs/html/sdk/api_diff/11/changes/android.opengl.GLSurfaceView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.os.AsyncTask.html b/docs/html/sdk/api_diff/11/changes/android.os.AsyncTask.html
index 6655d8ad..20cbcbe 100644
--- a/docs/html/sdk/api_diff/11/changes/android.os.AsyncTask.html
+++ b/docs/html/sdk/api_diff/11/changes/android.os.AsyncTask.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.os.BatteryManager.html b/docs/html/sdk/api_diff/11/changes/android.os.BatteryManager.html
index 832a5f0..e96449a 100644
--- a/docs/html/sdk/api_diff/11/changes/android.os.BatteryManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.os.BatteryManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/11/changes/android.os.Build.VERSION_CODES.html
index 14357aa..61f5d2b 100644
--- a/docs/html/sdk/api_diff/11/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/11/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.os.Bundle.html b/docs/html/sdk/api_diff/11/changes/android.os.Bundle.html
index 14964de..9b02b29 100644
--- a/docs/html/sdk/api_diff/11/changes/android.os.Bundle.html
+++ b/docs/html/sdk/api_diff/11/changes/android.os.Bundle.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.os.Debug.html b/docs/html/sdk/api_diff/11/changes/android.os.Debug.html
index 7688959..059dd49 100644
--- a/docs/html/sdk/api_diff/11/changes/android.os.Debug.html
+++ b/docs/html/sdk/api_diff/11/changes/android.os.Debug.html
@@ -241,7 +241,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.os.DropBoxManager.html b/docs/html/sdk/api_diff/11/changes/android.os.DropBoxManager.html
index 0615328..1531b51 100644
--- a/docs/html/sdk/api_diff/11/changes/android.os.DropBoxManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.os.DropBoxManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.os.Environment.html b/docs/html/sdk/api_diff/11/changes/android.os.Environment.html
index 4c9554a..4310139 100644
--- a/docs/html/sdk/api_diff/11/changes/android.os.Environment.html
+++ b/docs/html/sdk/api_diff/11/changes/android.os.Environment.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.ThreadPolicy.Builder.html b/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.ThreadPolicy.Builder.html
index 3413c07..eddd85e 100644
--- a/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.ThreadPolicy.Builder.html
+++ b/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.ThreadPolicy.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.VmPolicy.Builder.html b/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.VmPolicy.Builder.html
index 89cc546..485354e 100644
--- a/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.VmPolicy.Builder.html
+++ b/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.VmPolicy.Builder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.html b/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.html
index 91cacad..ad68f77 100644
--- a/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.html
+++ b/docs/html/sdk/api_diff/11/changes/android.os.StrictMode.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.os.Vibrator.html b/docs/html/sdk/api_diff/11/changes/android.os.Vibrator.html
index eb400c0..bc0e2c8 100644
--- a/docs/html/sdk/api_diff/11/changes/android.os.Vibrator.html
+++ b/docs/html/sdk/api_diff/11/changes/android.os.Vibrator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.preference.Preference.html b/docs/html/sdk/api_diff/11/changes/android.preference.Preference.html
index 68b1829..aadb257 100644
--- a/docs/html/sdk/api_diff/11/changes/android.preference.Preference.html
+++ b/docs/html/sdk/api_diff/11/changes/android.preference.Preference.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.preference.PreferenceActivity.html b/docs/html/sdk/api_diff/11/changes/android.preference.PreferenceActivity.html
index f4c2b97..6e50453 100644
--- a/docs/html/sdk/api_diff/11/changes/android.preference.PreferenceActivity.html
+++ b/docs/html/sdk/api_diff/11/changes/android.preference.PreferenceActivity.html
@@ -356,7 +356,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.AlarmClock.html b/docs/html/sdk/api_diff/11/changes/android.provider.AlarmClock.html
index 56e510f..bd6d9fa 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.AlarmClock.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.AlarmClock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.Browser.SearchColumns.html b/docs/html/sdk/api_diff/11/changes/android.provider.Browser.SearchColumns.html
index 2297049..bb8fb3a 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.Browser.SearchColumns.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.Browser.SearchColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Email.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Email.html
index ee96c98..29b5219 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Email.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Email.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Relation.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Relation.html
index 584d98b..c93c606 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Relation.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Relation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactStatusColumns.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactStatusColumns.html
index 023a1dc..3e6271e 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactStatusColumns.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactStatusColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.AggregationSuggestions.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.AggregationSuggestions.html
index 4fe9e12..15ed23b 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.AggregationSuggestions.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.AggregationSuggestions.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.Photo.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.Photo.html
index f4bf4d8..3e6d826 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.Photo.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.Photo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.html
index 7071f67..6690990 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactsColumns.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactsColumns.html
index 5817b98..bb85f98 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactsColumns.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumns.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumns.html
index 5c83818..e95ad28 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumns.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumnsWithJoins.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumnsWithJoins.html
index 2988b8b..964ddc4 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumnsWithJoins.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumnsWithJoins.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.GroupsColumns.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.GroupsColumns.html
index 986064e..9083c04 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.GroupsColumns.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.GroupsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Intents.Insert.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Intents.Insert.html
index 7f2786a..2aecc75 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Intents.Insert.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.Intents.Insert.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContacts.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContacts.html
index e3b6975..14b51c0 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContacts.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContacts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContactsColumns.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContactsColumns.html
index 795461f..9565050 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContactsColumns.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContactsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.StatusColumns.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.StatusColumns.html
index fb3a818..9fac058 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.StatusColumns.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.StatusColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.html b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.html
index 91f1cc9..f8fdbec 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.ContactsContract.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.MediaStore.Audio.Genres.html b/docs/html/sdk/api_diff/11/changes/android.provider.MediaStore.Audio.Genres.html
index f0b2458..b48b652 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.MediaStore.Audio.Genres.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.MediaStore.Audio.Genres.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.Settings.Secure.html b/docs/html/sdk/api_diff/11/changes/android.provider.Settings.Secure.html
index 017b8b7..29db0ee 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.Settings.Secure.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.Settings.Secure.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/11/changes/android.provider.Settings.System.html
index 546a8a1..f5fbef6 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.Settings.System.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.Settings.System.html
@@ -132,7 +132,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.provider.Settings.html b/docs/html/sdk/api_diff/11/changes/android.provider.Settings.html
index d01ded8..2c51f99 100644
--- a/docs/html/sdk/api_diff/11/changes/android.provider.Settings.html
+++ b/docs/html/sdk/api_diff/11/changes/android.provider.Settings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.speech.RecognizerIntent.html b/docs/html/sdk/api_diff/11/changes/android.speech.RecognizerIntent.html
index 528ba3e..f245d4a 100644
--- a/docs/html/sdk/api_diff/11/changes/android.speech.RecognizerIntent.html
+++ b/docs/html/sdk/api_diff/11/changes/android.speech.RecognizerIntent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.speech.tts.TextToSpeech.Engine.html b/docs/html/sdk/api_diff/11/changes/android.speech.tts.TextToSpeech.Engine.html
index ecd4ae2..2b6a4e2 100644
--- a/docs/html/sdk/api_diff/11/changes/android.speech.tts.TextToSpeech.Engine.html
+++ b/docs/html/sdk/api_diff/11/changes/android.speech.tts.TextToSpeech.Engine.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/11/changes/android.telephony.TelephonyManager.html
index 13258f9..4c24582 100644
--- a/docs/html/sdk/api_diff/11/changes/android.telephony.TelephonyManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.telephony.TelephonyManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.test.mock.MockContext.html b/docs/html/sdk/api_diff/11/changes/android.test.mock.MockContext.html
index 80b7071..23e1db9 100644
--- a/docs/html/sdk/api_diff/11/changes/android.test.mock.MockContext.html
+++ b/docs/html/sdk/api_diff/11/changes/android.test.mock.MockContext.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.test.mock.MockCursor.html b/docs/html/sdk/api_diff/11/changes/android.test.mock.MockCursor.html
index 44479f2..e4822bd 100644
--- a/docs/html/sdk/api_diff/11/changes/android.test.mock.MockCursor.html
+++ b/docs/html/sdk/api_diff/11/changes/android.test.mock.MockCursor.html
@@ -214,7 +214,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/11/changes/android.test.mock.MockPackageManager.html
index ba731ba..3062d30 100644
--- a/docs/html/sdk/api_diff/11/changes/android.test.mock.MockPackageManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.test.mock.MockPackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.text.ClipboardManager.html b/docs/html/sdk/api_diff/11/changes/android.text.ClipboardManager.html
index 58d4081..747e923 100644
--- a/docs/html/sdk/api_diff/11/changes/android.text.ClipboardManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.text.ClipboardManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.text.InputType.html b/docs/html/sdk/api_diff/11/changes/android.text.InputType.html
index 0bc0783..31b923f 100644
--- a/docs/html/sdk/api_diff/11/changes/android.text.InputType.html
+++ b/docs/html/sdk/api_diff/11/changes/android.text.InputType.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.text.SpannableStringBuilder.html b/docs/html/sdk/api_diff/11/changes/android.text.SpannableStringBuilder.html
index 2b30205..292e209 100644
--- a/docs/html/sdk/api_diff/11/changes/android.text.SpannableStringBuilder.html
+++ b/docs/html/sdk/api_diff/11/changes/android.text.SpannableStringBuilder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.text.format.Time.html b/docs/html/sdk/api_diff/11/changes/android.text.format.Time.html
index 733ae32..d3741a5 100644
--- a/docs/html/sdk/api_diff/11/changes/android.text.format.Time.html
+++ b/docs/html/sdk/api_diff/11/changes/android.text.format.Time.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.text.method.ArrowKeyMovementMethod.html b/docs/html/sdk/api_diff/11/changes/android.text.method.ArrowKeyMovementMethod.html
index e8018ff..f90f4f1 100644
--- a/docs/html/sdk/api_diff/11/changes/android.text.method.ArrowKeyMovementMethod.html
+++ b/docs/html/sdk/api_diff/11/changes/android.text.method.ArrowKeyMovementMethod.html
@@ -182,7 +182,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.text.method.BaseKeyListener.html b/docs/html/sdk/api_diff/11/changes/android.text.method.BaseKeyListener.html
index f8476bc..1486a96 100644
--- a/docs/html/sdk/api_diff/11/changes/android.text.method.BaseKeyListener.html
+++ b/docs/html/sdk/api_diff/11/changes/android.text.method.BaseKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.text.method.QwertyKeyListener.html b/docs/html/sdk/api_diff/11/changes/android.text.method.QwertyKeyListener.html
index 326579d..2392719 100644
--- a/docs/html/sdk/api_diff/11/changes/android.text.method.QwertyKeyListener.html
+++ b/docs/html/sdk/api_diff/11/changes/android.text.method.QwertyKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.text.method.ScrollingMovementMethod.html b/docs/html/sdk/api_diff/11/changes/android.text.method.ScrollingMovementMethod.html
index 4c2a5af..9cbf47f 100644
--- a/docs/html/sdk/api_diff/11/changes/android.text.method.ScrollingMovementMethod.html
+++ b/docs/html/sdk/api_diff/11/changes/android.text.method.ScrollingMovementMethod.html
@@ -222,7 +222,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.util.AndroidException.html b/docs/html/sdk/api_diff/11/changes/android.util.AndroidException.html
index 4e5829a..69c6e05 100644
--- a/docs/html/sdk/api_diff/11/changes/android.util.AndroidException.html
+++ b/docs/html/sdk/api_diff/11/changes/android.util.AndroidException.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.util.AndroidRuntimeException.html b/docs/html/sdk/api_diff/11/changes/android.util.AndroidRuntimeException.html
index e4d3735..bd88793 100644
--- a/docs/html/sdk/api_diff/11/changes/android.util.AndroidRuntimeException.html
+++ b/docs/html/sdk/api_diff/11/changes/android.util.AndroidRuntimeException.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.util.Patterns.html b/docs/html/sdk/api_diff/11/changes/android.util.Patterns.html
index 8985ccb..402b3da 100644
--- a/docs/html/sdk/api_diff/11/changes/android.util.Patterns.html
+++ b/docs/html/sdk/api_diff/11/changes/android.util.Patterns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.util.SparseArray.html b/docs/html/sdk/api_diff/11/changes/android.util.SparseArray.html
index 3dd7be2..6c30242 100644
--- a/docs/html/sdk/api_diff/11/changes/android.util.SparseArray.html
+++ b/docs/html/sdk/api_diff/11/changes/android.util.SparseArray.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.util.StateSet.html b/docs/html/sdk/api_diff/11/changes/android.util.StateSet.html
index c40f954..7137317 100644
--- a/docs/html/sdk/api_diff/11/changes/android.util.StateSet.html
+++ b/docs/html/sdk/api_diff/11/changes/android.util.StateSet.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.KeyCharacterMap.KeyData.html b/docs/html/sdk/api_diff/11/changes/android.view.KeyCharacterMap.KeyData.html
index 945bee7..644be0d 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.KeyCharacterMap.KeyData.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.KeyCharacterMap.KeyData.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.KeyCharacterMap.html b/docs/html/sdk/api_diff/11/changes/android.view.KeyCharacterMap.html
index 07150bc..faccd474 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.KeyCharacterMap.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.KeyCharacterMap.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/11/changes/android.view.KeyEvent.html
index 7eab63e..2e79628 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.KeyEvent.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.KeyEvent.html
@@ -862,7 +862,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.LayoutInflater.html b/docs/html/sdk/api_diff/11/changes/android.view.LayoutInflater.html
index 384f01e..207fe7c 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.LayoutInflater.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.LayoutInflater.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.MenuItem.html b/docs/html/sdk/api_diff/11/changes/android.view.MenuItem.html
index ae27c1d..f9ca4d1 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.MenuItem.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.MenuItem.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.MotionEvent.html b/docs/html/sdk/api_diff/11/changes/android.view.MotionEvent.html
index d5cb341..e9873d5 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.MotionEvent.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.MotionEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.ScaleGestureDetector.html b/docs/html/sdk/api_diff/11/changes/android.view.ScaleGestureDetector.html
index bc9da111..732f1e9 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.ScaleGestureDetector.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.ScaleGestureDetector.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.Surface.html b/docs/html/sdk/api_diff/11/changes/android.view.Surface.html
index dfbfde3..e7837e0 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.Surface.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.Surface.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.SurfaceHolder.html b/docs/html/sdk/api_diff/11/changes/android.view.SurfaceHolder.html
index 409e310..580835d 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.SurfaceHolder.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.SurfaceHolder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.View.html b/docs/html/sdk/api_diff/11/changes/android.view.View.html
index 6de1ad7..f53c45a 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.View.html
@@ -624,7 +624,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.ViewGroup.html b/docs/html/sdk/api_diff/11/changes/android.view.ViewGroup.html
index c14d36f..f26c3fe 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.ViewGroup.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.ViewGroup.html
@@ -175,7 +175,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.ViewParent.html b/docs/html/sdk/api_diff/11/changes/android.view.ViewParent.html
index 9caa391..d528d40 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.ViewParent.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.ViewParent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.Window.Callback.html b/docs/html/sdk/api_diff/11/changes/android.view.Window.Callback.html
index 73aa436..76cdbaf 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.Window.Callback.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.Window.Callback.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.Window.html b/docs/html/sdk/api_diff/11/changes/android.view.Window.html
index c55a207..d999c12 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.Window.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.Window.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.WindowManager.LayoutParams.html b/docs/html/sdk/api_diff/11/changes/android.view.WindowManager.LayoutParams.html
index c68dce7..676a046 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.WindowManager.LayoutParams.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.WindowManager.LayoutParams.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.animation.Animation.html b/docs/html/sdk/api_diff/11/changes/android.view.animation.Animation.html
index 8bf383b..c2e07c3 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.animation.Animation.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.animation.Animation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.animation.Interpolator.html b/docs/html/sdk/api_diff/11/changes/android.view.animation.Interpolator.html
index c292c24..d3c057d 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.animation.Interpolator.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.animation.Interpolator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.BaseInputConnection.html b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.BaseInputConnection.html
index 6104007..f623d4d 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.BaseInputConnection.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.BaseInputConnection.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.EditorInfo.html b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.EditorInfo.html
index bd0e913..8a50a4c 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.EditorInfo.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.EditorInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputConnection.html b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputConnection.html
index 3a21f56..2941e4f 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputConnection.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputConnection.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputConnectionWrapper.html b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputConnectionWrapper.html
index 1f8cd1e..b18857a 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputConnectionWrapper.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputConnectionWrapper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethod.html b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethod.html
index faa103b..93d9e1b 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethod.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodInfo.html b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodInfo.html
index 5e8ef7f..5cc8291 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodInfo.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodManager.html b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodManager.html
index 68a58d3..1b76813 100644
--- a/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.webkit.CacheManager.CacheResult.html b/docs/html/sdk/api_diff/11/changes/android.webkit.CacheManager.CacheResult.html
index 9ba6fb2..0c324e4 100644
--- a/docs/html/sdk/api_diff/11/changes/android.webkit.CacheManager.CacheResult.html
+++ b/docs/html/sdk/api_diff/11/changes/android.webkit.CacheManager.CacheResult.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.webkit.CacheManager.html b/docs/html/sdk/api_diff/11/changes/android.webkit.CacheManager.html
index 0330d94..bb3c1ba 100644
--- a/docs/html/sdk/api_diff/11/changes/android.webkit.CacheManager.html
+++ b/docs/html/sdk/api_diff/11/changes/android.webkit.CacheManager.html
@@ -142,7 +142,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/11/changes/android.webkit.WebSettings.html
index d5dd2ca..6a9e989 100644
--- a/docs/html/sdk/api_diff/11/changes/android.webkit.WebSettings.html
+++ b/docs/html/sdk/api_diff/11/changes/android.webkit.WebSettings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/11/changes/android.webkit.WebView.html
index dbd3c12..86af1c4 100644
--- a/docs/html/sdk/api_diff/11/changes/android.webkit.WebView.html
+++ b/docs/html/sdk/api_diff/11/changes/android.webkit.WebView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.webkit.WebViewClient.html b/docs/html/sdk/api_diff/11/changes/android.webkit.WebViewClient.html
index 65172a0..05e309c 100644
--- a/docs/html/sdk/api_diff/11/changes/android.webkit.WebViewClient.html
+++ b/docs/html/sdk/api_diff/11/changes/android.webkit.WebViewClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.AbsListView.html b/docs/html/sdk/api_diff/11/changes/android.widget.AbsListView.html
index 03dc6a1..176af42 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.AbsListView.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.AbsListView.html
@@ -277,7 +277,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.ArrayAdapter.html b/docs/html/sdk/api_diff/11/changes/android.widget.ArrayAdapter.html
index 4dbdc6e..2a7525d9 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.ArrayAdapter.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.ArrayAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.CursorAdapter.html b/docs/html/sdk/api_diff/11/changes/android.widget.CursorAdapter.html
index 537dd79..5a55eac 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.CursorAdapter.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.CursorAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.DatePicker.html b/docs/html/sdk/api_diff/11/changes/android.widget.DatePicker.html
index 2309fed..8f96766 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.DatePicker.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.DatePicker.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.GridView.html b/docs/html/sdk/api_diff/11/changes/android.widget.GridView.html
index 73b9dbc..c53f1ff 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.GridView.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.GridView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.ImageView.html b/docs/html/sdk/api_diff/11/changes/android.widget.ImageView.html
index 2658d25..3e7dc54 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.ImageView.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.ImageView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.LinearLayout.html b/docs/html/sdk/api_diff/11/changes/android.widget.LinearLayout.html
index acdd2b7..4814785 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.LinearLayout.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.LinearLayout.html
@@ -187,7 +187,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.ListView.html b/docs/html/sdk/api_diff/11/changes/android.widget.ListView.html
index 922cbd7..ee05027 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.ListView.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.ListView.html
@@ -246,7 +246,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.OverScroller.html b/docs/html/sdk/api_diff/11/changes/android.widget.OverScroller.html
index 9cc2fa8..ba6dcf8 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.OverScroller.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.OverScroller.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.PopupWindow.html b/docs/html/sdk/api_diff/11/changes/android.widget.PopupWindow.html
index f3aebe0..a53c55d 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.PopupWindow.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.PopupWindow.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.QuickContactBadge.html b/docs/html/sdk/api_diff/11/changes/android.widget.QuickContactBadge.html
index de5f6eb..12399d7 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.QuickContactBadge.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.QuickContactBadge.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/11/changes/android.widget.RemoteViews.html
index 53eef91..ff61b37 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.RemoteViews.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.RemoteViews.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.ResourceCursorAdapter.html b/docs/html/sdk/api_diff/11/changes/android.widget.ResourceCursorAdapter.html
index a41e9df..d1022f1 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.ResourceCursorAdapter.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.ResourceCursorAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.Scroller.html b/docs/html/sdk/api_diff/11/changes/android.widget.Scroller.html
index b6e77be..edd6f97 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.Scroller.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.Scroller.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.SimpleCursorAdapter.html b/docs/html/sdk/api_diff/11/changes/android.widget.SimpleCursorAdapter.html
index 602482b..1d9fd5e 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.SimpleCursorAdapter.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.SimpleCursorAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.Spinner.html b/docs/html/sdk/api_diff/11/changes/android.widget.Spinner.html
index e2ee047..d9308fa 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.Spinner.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.Spinner.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.TabWidget.html b/docs/html/sdk/api_diff/11/changes/android.widget.TabWidget.html
index 45488a7..a6a7e38 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.TabWidget.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.TabWidget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/android.widget.TextView.html b/docs/html/sdk/api_diff/11/changes/android.widget.TextView.html
index 780259e..e6c98e7 100644
--- a/docs/html/sdk/api_diff/11/changes/android.widget.TextView.html
+++ b/docs/html/sdk/api_diff/11/changes/android.widget.TextView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/changes-summary.html b/docs/html/sdk/api_diff/11/changes/changes-summary.html
index 18e9f5d..b3708c3 100644
--- a/docs/html/sdk/api_diff/11/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/11/changes/changes-summary.html
@@ -409,7 +409,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/classes_index_additions.html b/docs/html/sdk/api_diff/11/changes/classes_index_additions.html
index f159c57..4018439 100644
--- a/docs/html/sdk/api_diff/11/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/11/changes/classes_index_additions.html
@@ -496,7 +496,7 @@
 <A HREF="pkg_android.webkit.html#WebResourceResponse" class="hiddenlink" target="rightframe"><b>WebResourceResponse</b></A><br>
 <A HREF="pkg_android.webkit.html#WebStorage.Origin" class="hiddenlink" target="rightframe"><b>WebStorage.Origin</b></A><br>
 <A HREF="pkg_android.webkit.html#WebViewFragment" class="hiddenlink" target="rightframe"><b>WebViewFragment</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/classes_index_all.html b/docs/html/sdk/api_diff/11/changes/classes_index_all.html
index c824942..a01fbe7 100644
--- a/docs/html/sdk/api_diff/11/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/11/changes/classes_index_all.html
@@ -903,7 +903,7 @@
 <A HREF="android.view.Window.html" class="hiddenlink" target="rightframe">Window</A><br>
 <A HREF="android.view.Window.Callback.html" class="hiddenlink" target="rightframe"><i>Window.Callback</i></A><br>
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/classes_index_changes.html b/docs/html/sdk/api_diff/11/changes/classes_index_changes.html
index ce368d2..0e12986b 100644
--- a/docs/html/sdk/api_diff/11/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/11/changes/classes_index_changes.html
@@ -703,7 +703,7 @@
 <A HREF="android.view.Window.html" class="hiddenlink" target="rightframe">Window</A><br>
 <A HREF="android.view.Window.Callback.html" class="hiddenlink" target="rightframe"><i>Window.Callback</i></A><br>
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/classes_index_removals.html b/docs/html/sdk/api_diff/11/changes/classes_index_removals.html
index e6da73f..af7f1d0 100644
--- a/docs/html/sdk/api_diff/11/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/11/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/11/changes/constructors_index_additions.html
index 22543d1..fc7bb39 100644
--- a/docs/html/sdk/api_diff/11/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/11/changes/constructors_index_additions.html
@@ -196,7 +196,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.webkit.WebView.html#android.webkit.WebView.ctor_added(android.content.Context, android.util.AttributeSet, int, boolean)" class="hiddenlink" target="rightframe"><b>WebView</b>
 (<code>Context, AttributeSet, int, boolean</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/constructors_index_all.html b/docs/html/sdk/api_diff/11/changes/constructors_index_all.html
index 4b00f99..7966682 100644
--- a/docs/html/sdk/api_diff/11/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/11/changes/constructors_index_all.html
@@ -234,7 +234,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.webkit.WebView.html#android.webkit.WebView.ctor_added(android.content.Context, android.util.AttributeSet, int, boolean)" class="hiddenlink" target="rightframe"><b>WebView</b>
 (<code>Context, AttributeSet, int, boolean</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/11/changes/constructors_index_changes.html
index 3b5ad04..76ef774 100644
--- a/docs/html/sdk/api_diff/11/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/11/changes/constructors_index_changes.html
@@ -85,7 +85,7 @@
 (<code>Context, int, Cursor, String[], int[]</code>)</A></nobr>&nbsp;constructor<br>
 <nobr><A HREF="android.database.sqlite.SQLiteCursor.html#android.database.sqlite.SQLiteCursor.ctor_changed(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, java.lang.String, android.database.sqlite.SQLiteQuery)" class="hiddenlink" target="rightframe">SQLiteCursor
 (<code>SQLiteDatabase, SQLiteCursorDriver, String, SQLiteQuery</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/11/changes/constructors_index_removals.html
index 1ed8931..a416213 100644
--- a/docs/html/sdk/api_diff/11/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/11/changes/constructors_index_removals.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.graphics.Canvas.html#android.graphics.Canvas.ctor_removed(javax.microedition.khronos.opengles.GL)" class="hiddenlink" target="rightframe"><strike>Canvas</strike>
 (<code>GL</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/dalvik.bytecode.Opcodes.html b/docs/html/sdk/api_diff/11/changes/dalvik.bytecode.Opcodes.html
index 5bbc2a8..8e0c7db 100644
--- a/docs/html/sdk/api_diff/11/changes/dalvik.bytecode.Opcodes.html
+++ b/docs/html/sdk/api_diff/11/changes/dalvik.bytecode.Opcodes.html
@@ -553,7 +553,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/fields_index_additions.html b/docs/html/sdk/api_diff/11/changes/fields_index_additions.html
index 12ecd4f..dee5f19 100644
--- a/docs/html/sdk/api_diff/11/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/11/changes/fields_index_additions.html
@@ -1850,7 +1850,7 @@
 </nobr><br>
 <nobr><A HREF="android.R.attr.html#android.R.attr.windowMinWidthMinor" class="hiddenlink" target="rightframe">windowMinWidthMinor</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/fields_index_all.html b/docs/html/sdk/api_diff/11/changes/fields_index_all.html
index 52705a5..2dbe8fa 100644
--- a/docs/html/sdk/api_diff/11/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/11/changes/fields_index_all.html
@@ -1931,7 +1931,7 @@
 </nobr><br>
 <nobr><A HREF="android.R.attr.html#android.R.attr.windowMinWidthMinor" class="hiddenlink" target="rightframe">windowMinWidthMinor</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/fields_index_changes.html b/docs/html/sdk/api_diff/11/changes/fields_index_changes.html
index 983731c..8b9029e 100644
--- a/docs/html/sdk/api_diff/11/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/11/changes/fields_index_changes.html
@@ -249,7 +249,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.provider.Browser.SearchColumns.html#android.provider.Browser.SearchColumns.URL" class="hiddenlink" target="rightframe">URL</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/fields_index_removals.html b/docs/html/sdk/api_diff/11/changes/fields_index_removals.html
index 9f62d88..9ad97a7 100644
--- a/docs/html/sdk/api_diff/11/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/11/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/java.lang.Character.UnicodeBlock.html b/docs/html/sdk/api_diff/11/changes/java.lang.Character.UnicodeBlock.html
index 4ba7af5..f3cdca3 100644
--- a/docs/html/sdk/api_diff/11/changes/java.lang.Character.UnicodeBlock.html
+++ b/docs/html/sdk/api_diff/11/changes/java.lang.Character.UnicodeBlock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/java.lang.Object.html b/docs/html/sdk/api_diff/11/changes/java.lang.Object.html
index c894b07..811f41c 100644
--- a/docs/html/sdk/api_diff/11/changes/java.lang.Object.html
+++ b/docs/html/sdk/api_diff/11/changes/java.lang.Object.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/java.util.Deque.html b/docs/html/sdk/api_diff/11/changes/java.util.Deque.html
index 1039093..4d4f058 100644
--- a/docs/html/sdk/api_diff/11/changes/java.util.Deque.html
+++ b/docs/html/sdk/api_diff/11/changes/java.util.Deque.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/java.util.Locale.html b/docs/html/sdk/api_diff/11/changes/java.util.Locale.html
index c27208e..c9b44d8 100644
--- a/docs/html/sdk/api_diff/11/changes/java.util.Locale.html
+++ b/docs/html/sdk/api_diff/11/changes/java.util.Locale.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/java.util.NavigableMap.html b/docs/html/sdk/api_diff/11/changes/java.util.NavigableMap.html
index e611d87..09a645d 100644
--- a/docs/html/sdk/api_diff/11/changes/java.util.NavigableMap.html
+++ b/docs/html/sdk/api_diff/11/changes/java.util.NavigableMap.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/java.util.NavigableSet.html b/docs/html/sdk/api_diff/11/changes/java.util.NavigableSet.html
index 7fbc133..1fee9c9 100644
--- a/docs/html/sdk/api_diff/11/changes/java.util.NavigableSet.html
+++ b/docs/html/sdk/api_diff/11/changes/java.util.NavigableSet.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/java.util.Queue.html b/docs/html/sdk/api_diff/11/changes/java.util.Queue.html
index 0595cfa..66c7473 100644
--- a/docs/html/sdk/api_diff/11/changes/java.util.Queue.html
+++ b/docs/html/sdk/api_diff/11/changes/java.util.Queue.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/java.util.ResourceBundle.Control.html b/docs/html/sdk/api_diff/11/changes/java.util.ResourceBundle.Control.html
index a0f3777..f716143 100644
--- a/docs/html/sdk/api_diff/11/changes/java.util.ResourceBundle.Control.html
+++ b/docs/html/sdk/api_diff/11/changes/java.util.ResourceBundle.Control.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/java.util.ResourceBundle.html b/docs/html/sdk/api_diff/11/changes/java.util.ResourceBundle.html
index 3cf915b..4c737ec 100644
--- a/docs/html/sdk/api_diff/11/changes/java.util.ResourceBundle.html
+++ b/docs/html/sdk/api_diff/11/changes/java.util.ResourceBundle.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/jdiff_help.html b/docs/html/sdk/api_diff/11/changes/jdiff_help.html
index 7658ddf..ab1161e 100644
--- a/docs/html/sdk/api_diff/11/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/11/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/11/changes/jdiff_statistics.html
index 044e5ca..6845789 100644
--- a/docs/html/sdk/api_diff/11/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/11/changes/jdiff_statistics.html
@@ -1312,7 +1312,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/11/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/11/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/11/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/methods_index_additions.html b/docs/html/sdk/api_diff/11/changes/methods_index_additions.html
index b3a67ab..afd0f20 100644
--- a/docs/html/sdk/api_diff/11/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/11/changes/methods_index_additions.html
@@ -1559,7 +1559,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.content.SyncInfo.html#android.content.SyncInfo.writeToParcel_added(android.os.Parcel, int)" class="hiddenlink" target="rightframe"><b>writeToParcel</b>
 (<code>Parcel, int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/methods_index_all.html b/docs/html/sdk/api_diff/11/changes/methods_index_all.html
index 2f1d865..f5c9553 100644
--- a/docs/html/sdk/api_diff/11/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/11/changes/methods_index_all.html
@@ -1946,7 +1946,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.content.SyncInfo.html#android.content.SyncInfo.writeToParcel_added(android.os.Parcel, int)" class="hiddenlink" target="rightframe"><b>writeToParcel</b>
 (<code>Parcel, int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/methods_index_changes.html b/docs/html/sdk/api_diff/11/changes/methods_index_changes.html
index cce3466..26110f1 100644
--- a/docs/html/sdk/api_diff/11/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/11/changes/methods_index_changes.html
@@ -508,7 +508,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.text.method.ScrollingMovementMethod.html#android.text.method.ScrollingMovementMethod.up_changed(android.widget.TextView, android.text.Spannable)" class="hiddenlink" target="rightframe">up
 (<code>TextView, Spannable</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/methods_index_removals.html b/docs/html/sdk/api_diff/11/changes/methods_index_removals.html
index 3c49e9d..cd01ea2 100644
--- a/docs/html/sdk/api_diff/11/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/11/changes/methods_index_removals.html
@@ -213,7 +213,7 @@
 (<code>int, String</code>)</A></nobr><br>
 <nobr><A HREF="android.test.mock.MockCursor.html#android.test.mock.MockCursor.updateToNull_removed(int)" class="hiddenlink" target="rightframe"><strike>updateToNull</strike>
 (<code>int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/packages_index_additions.html b/docs/html/sdk/api_diff/11/changes/packages_index_additions.html
index c2895f4..b53ae2f 100644
--- a/docs/html/sdk/api_diff/11/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/11/changes/packages_index_additions.html
@@ -53,7 +53,7 @@
 <A HREF="changes-summary.html#android.animation" class="hiddenlink" target="rightframe"><b>android.animation</b></A><br>
 <A HREF="changes-summary.html#android.drm" class="hiddenlink" target="rightframe"><b>android.drm</b></A><br>
 <A HREF="changes-summary.html#android.renderscript" class="hiddenlink" target="rightframe"><b>android.renderscript</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/packages_index_all.html b/docs/html/sdk/api_diff/11/changes/packages_index_all.html
index 40a500f..aefabf5 100644
--- a/docs/html/sdk/api_diff/11/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/11/changes/packages_index_all.html
@@ -93,7 +93,7 @@
 <A NAME="J"></A>
 <A HREF="pkg_java.lang.html" class="hiddenlink" target="rightframe">java.lang</A><br>
 <A HREF="pkg_java.util.html" class="hiddenlink" target="rightframe">java.util</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/packages_index_changes.html b/docs/html/sdk/api_diff/11/changes/packages_index_changes.html
index 7f25b34..1886700 100644
--- a/docs/html/sdk/api_diff/11/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/11/changes/packages_index_changes.html
@@ -90,7 +90,7 @@
 <A NAME="J"></A>
 <A HREF="pkg_java.lang.html" class="hiddenlink" target="rightframe">java.lang</A><br>
 <A HREF="pkg_java.util.html" class="hiddenlink" target="rightframe">java.util</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/packages_index_removals.html b/docs/html/sdk/api_diff/11/changes/packages_index_removals.html
index d0ffabc..5f37b27 100644
--- a/docs/html/sdk/api_diff/11/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/11/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.accounts.html b/docs/html/sdk/api_diff/11/changes/pkg_android.accounts.html
index b2a2812..db5d73e 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.accounts.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.accounts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.app.admin.html b/docs/html/sdk/api_diff/11/changes/pkg_android.app.admin.html
index 54220b1..2c3a53a 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.app.admin.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.app.admin.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.app.html b/docs/html/sdk/api_diff/11/changes/pkg_android.app.html
index da5df6f..6e6baa4 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.app.html
@@ -337,7 +337,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.appwidget.html b/docs/html/sdk/api_diff/11/changes/pkg_android.appwidget.html
index d3df6f3..4126547 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.appwidget.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.appwidget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.bluetooth.html b/docs/html/sdk/api_diff/11/changes/pkg_android.bluetooth.html
index 286de69..f6bd745 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.bluetooth.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.bluetooth.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.content.html b/docs/html/sdk/api_diff/11/changes/pkg_android.content.html
index 814b57c..ec81a7e 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.content.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/11/changes/pkg_android.content.pm.html
index e791cbc..97b7ee3 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.content.pm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/11/changes/pkg_android.content.res.html
index 1966151..b2ec437 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.content.res.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.database.html b/docs/html/sdk/api_diff/11/changes/pkg_android.database.html
index 94564d3..322ecd5 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.database.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.database.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.database.sqlite.html b/docs/html/sdk/api_diff/11/changes/pkg_android.database.sqlite.html
index 7200032..8e5ac7d 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.database.sqlite.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.database.sqlite.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.graphics.drawable.html b/docs/html/sdk/api_diff/11/changes/pkg_android.graphics.drawable.html
index 18d15cc..cdccd5c 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.graphics.drawable.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.graphics.drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/11/changes/pkg_android.graphics.html
index 4f1c440..f658272 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.graphics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/11/changes/pkg_android.hardware.html
index ea84a38..2181e51 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.hardware.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.hardware.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.html b/docs/html/sdk/api_diff/11/changes/pkg_android.html
index 29df82c..b2bad37 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.html
@@ -197,7 +197,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.inputmethodservice.html b/docs/html/sdk/api_diff/11/changes/pkg_android.inputmethodservice.html
index d2c4e27..86f1f62 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.inputmethodservice.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.inputmethodservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.media.html b/docs/html/sdk/api_diff/11/changes/pkg_android.media.html
index 2cd99a5..be868da 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.net.html b/docs/html/sdk/api_diff/11/changes/pkg_android.net.html
index e1e2bf5..5a59bf8 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.net.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.net.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/11/changes/pkg_android.opengl.html
index f871db5..a13424a 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.opengl.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.opengl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.os.html b/docs/html/sdk/api_diff/11/changes/pkg_android.os.html
index eedacd3..938c9d6 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.os.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.preference.html b/docs/html/sdk/api_diff/11/changes/pkg_android.preference.html
index 35ef0bc..486645e 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.preference.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.preference.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/11/changes/pkg_android.provider.html
index 842355e..ffc1316 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.provider.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.provider.html
@@ -309,7 +309,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.speech.html b/docs/html/sdk/api_diff/11/changes/pkg_android.speech.html
index e981387..35674b6 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.speech.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.speech.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.speech.tts.html b/docs/html/sdk/api_diff/11/changes/pkg_android.speech.tts.html
index f0bde9f..dd53b0d 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.speech.tts.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.speech.tts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/11/changes/pkg_android.telephony.html
index 8a2d08b..f518730 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.telephony.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.telephony.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.test.html b/docs/html/sdk/api_diff/11/changes/pkg_android.test.html
index 39db204..981c3d4 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.test.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.test.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/11/changes/pkg_android.test.mock.html
index 45914ea..ff8d72f 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.test.mock.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.test.mock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.text.format.html b/docs/html/sdk/api_diff/11/changes/pkg_android.text.format.html
index cc395ca..ce33162 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.text.format.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.text.format.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.text.html b/docs/html/sdk/api_diff/11/changes/pkg_android.text.html
index 0d47282..d9d677f 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.text.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.text.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.text.method.html b/docs/html/sdk/api_diff/11/changes/pkg_android.text.method.html
index eefed4b..d9b2fb1 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.text.method.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.text.method.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.util.html b/docs/html/sdk/api_diff/11/changes/pkg_android.util.html
index b6444ba..8528587 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.util.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.util.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.view.animation.html b/docs/html/sdk/api_diff/11/changes/pkg_android.view.animation.html
index 3fd23d1..23347ae 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.view.animation.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.view.animation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.view.html b/docs/html/sdk/api_diff/11/changes/pkg_android.view.html
index 2ec022d..50fec3a 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.view.html
@@ -274,7 +274,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.view.inputmethod.html b/docs/html/sdk/api_diff/11/changes/pkg_android.view.inputmethod.html
index d7f85e0..32f4b4a 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.view.inputmethod.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.view.inputmethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/11/changes/pkg_android.webkit.html
index 0fd65d3..ecbeb91 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.webkit.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.webkit.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/11/changes/pkg_android.widget.html
index 64f2bc2..4a33383 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_android.widget.html
@@ -372,7 +372,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_dalvik.bytecode.html b/docs/html/sdk/api_diff/11/changes/pkg_dalvik.bytecode.html
index 6479d33..5b19312 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_dalvik.bytecode.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_dalvik.bytecode.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_java.lang.html b/docs/html/sdk/api_diff/11/changes/pkg_java.lang.html
index 9415d76..01c0b6f 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_java.lang.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_java.lang.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/11/changes/pkg_java.util.html b/docs/html/sdk/api_diff/11/changes/pkg_java.util.html
index 461d0ac..2fa3490 100644
--- a/docs/html/sdk/api_diff/11/changes/pkg_java.util.html
+++ b/docs/html/sdk/api_diff/11/changes/pkg_java.util.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/12/changes/alldiffs_index_additions.html
index 8a42a73..2275b3a 100644
--- a/docs/html/sdk/api_diff/12/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/12/changes/alldiffs_index_additions.html
@@ -1045,7 +1045,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.net.wifi.WifiManager.html#android.net.wifi.WifiManager.WIFI_MODE_FULL_HIGH_PERF" class="hiddenlink" target="rightframe">WIFI_MODE_FULL_HIGH_PERF</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/12/changes/alldiffs_index_all.html
index 44f1fea..76280b8 100644
--- a/docs/html/sdk/api_diff/12/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/12/changes/alldiffs_index_all.html
@@ -1438,7 +1438,7 @@
 <!-- Constructor Xml -->
 &nbsp;&nbsp;<nobr><A HREF="android.util.Xml.html#android.util.Xml.ctor_removed()" class="hiddenlink" target="rightframe"><strike>Xml</strike>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/12/changes/alldiffs_index_changes.html
index 2b2071c..b3e5bb6 100644
--- a/docs/html/sdk/api_diff/12/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/12/changes/alldiffs_index_changes.html
@@ -724,7 +724,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.util.Xml.html" class="hiddenlink" target="rightframe">Xml</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/12/changes/alldiffs_index_removals.html
index 523c2d7..f329cb3 100644
--- a/docs/html/sdk/api_diff/12/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/12/changes/alldiffs_index_removals.html
@@ -213,7 +213,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.util.Xml.html#android.util.Xml.ctor_removed()" class="hiddenlink" target="rightframe"><strike>Xml</strike>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.R.attr.html b/docs/html/sdk/api_diff/12/changes/android.R.attr.html
index 39a97e7..80ee6da 100644
--- a/docs/html/sdk/api_diff/12/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/12/changes/android.R.attr.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.animation.ValueAnimator.html b/docs/html/sdk/api_diff/12/changes/android.animation.ValueAnimator.html
index 08de135..64e6398 100644
--- a/docs/html/sdk/api_diff/12/changes/android.animation.ValueAnimator.html
+++ b/docs/html/sdk/api_diff/12/changes/android.animation.ValueAnimator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.app.Activity.html b/docs/html/sdk/api_diff/12/changes/android.app.Activity.html
index e54e4fa..041ec9b 100644
--- a/docs/html/sdk/api_diff/12/changes/android.app.Activity.html
+++ b/docs/html/sdk/api_diff/12/changes/android.app.Activity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.app.ActivityManager.RecentTaskInfo.html b/docs/html/sdk/api_diff/12/changes/android.app.ActivityManager.RecentTaskInfo.html
index 3147260..f6f5ffc 100644
--- a/docs/html/sdk/api_diff/12/changes/android.app.ActivityManager.RecentTaskInfo.html
+++ b/docs/html/sdk/api_diff/12/changes/android.app.ActivityManager.RecentTaskInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.app.ActivityManager.html b/docs/html/sdk/api_diff/12/changes/android.app.ActivityManager.html
index 8a2524e..716c293 100644
--- a/docs/html/sdk/api_diff/12/changes/android.app.ActivityManager.html
+++ b/docs/html/sdk/api_diff/12/changes/android.app.ActivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.app.Dialog.html b/docs/html/sdk/api_diff/12/changes/android.app.Dialog.html
index 4e7b5ac..7ce77b4 100644
--- a/docs/html/sdk/api_diff/12/changes/android.app.Dialog.html
+++ b/docs/html/sdk/api_diff/12/changes/android.app.Dialog.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.app.DialogFragment.html b/docs/html/sdk/api_diff/12/changes/android.app.DialogFragment.html
index b4ef57b..9667166 100644
--- a/docs/html/sdk/api_diff/12/changes/android.app.DialogFragment.html
+++ b/docs/html/sdk/api_diff/12/changes/android.app.DialogFragment.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.app.DownloadManager.Request.html b/docs/html/sdk/api_diff/12/changes/android.app.DownloadManager.Request.html
index f6d69ea..8f6b32c 100644
--- a/docs/html/sdk/api_diff/12/changes/android.app.DownloadManager.Request.html
+++ b/docs/html/sdk/api_diff/12/changes/android.app.DownloadManager.Request.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.app.DownloadManager.html b/docs/html/sdk/api_diff/12/changes/android.app.DownloadManager.html
index b1c9b89..b8de143 100644
--- a/docs/html/sdk/api_diff/12/changes/android.app.DownloadManager.html
+++ b/docs/html/sdk/api_diff/12/changes/android.app.DownloadManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.app.Fragment.html b/docs/html/sdk/api_diff/12/changes/android.app.Fragment.html
index e755e9d..536b31e 100644
--- a/docs/html/sdk/api_diff/12/changes/android.app.Fragment.html
+++ b/docs/html/sdk/api_diff/12/changes/android.app.Fragment.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.app.FragmentBreadCrumbs.html b/docs/html/sdk/api_diff/12/changes/android.app.FragmentBreadCrumbs.html
index 0dae434..7d02b68 100644
--- a/docs/html/sdk/api_diff/12/changes/android.app.FragmentBreadCrumbs.html
+++ b/docs/html/sdk/api_diff/12/changes/android.app.FragmentBreadCrumbs.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.app.SearchManager.html b/docs/html/sdk/api_diff/12/changes/android.app.SearchManager.html
index 6d32fcb..a5d4c5c 100644
--- a/docs/html/sdk/api_diff/12/changes/android.app.SearchManager.html
+++ b/docs/html/sdk/api_diff/12/changes/android.app.SearchManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.appwidget.AppWidgetProviderInfo.html b/docs/html/sdk/api_diff/12/changes/android.appwidget.AppWidgetProviderInfo.html
index eb07789..67e0a51 100644
--- a/docs/html/sdk/api_diff/12/changes/android.appwidget.AppWidgetProviderInfo.html
+++ b/docs/html/sdk/api_diff/12/changes/android.appwidget.AppWidgetProviderInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.content.Context.html b/docs/html/sdk/api_diff/12/changes/android.content.Context.html
index db7200e..8889c38 100644
--- a/docs/html/sdk/api_diff/12/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/12/changes/android.content.Context.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.content.Intent.html b/docs/html/sdk/api_diff/12/changes/android.content.Intent.html
index 8ddacd0..447a00e 100644
--- a/docs/html/sdk/api_diff/12/changes/android.content.Intent.html
+++ b/docs/html/sdk/api_diff/12/changes/android.content.Intent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.content.pm.ApplicationInfo.html b/docs/html/sdk/api_diff/12/changes/android.content.pm.ApplicationInfo.html
index b13a772..abba279 100644
--- a/docs/html/sdk/api_diff/12/changes/android.content.pm.ApplicationInfo.html
+++ b/docs/html/sdk/api_diff/12/changes/android.content.pm.ApplicationInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/12/changes/android.content.pm.PackageManager.html
index 266bbe9..4bdd236 100644
--- a/docs/html/sdk/api_diff/12/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/12/changes/android.content.pm.PackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.drm.DrmErrorEvent.html b/docs/html/sdk/api_diff/12/changes/android.drm.DrmErrorEvent.html
index 0d1c8c2..4b5f447 100644
--- a/docs/html/sdk/api_diff/12/changes/android.drm.DrmErrorEvent.html
+++ b/docs/html/sdk/api_diff/12/changes/android.drm.DrmErrorEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.drm.DrmEvent.html b/docs/html/sdk/api_diff/12/changes/android.drm.DrmEvent.html
index b4853a9..28ebcb3 100644
--- a/docs/html/sdk/api_diff/12/changes/android.drm.DrmEvent.html
+++ b/docs/html/sdk/api_diff/12/changes/android.drm.DrmEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.drm.DrmInfoEvent.html b/docs/html/sdk/api_diff/12/changes/android.drm.DrmInfoEvent.html
index 7c66004..3ca0682 100644
--- a/docs/html/sdk/api_diff/12/changes/android.drm.DrmInfoEvent.html
+++ b/docs/html/sdk/api_diff/12/changes/android.drm.DrmInfoEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.drm.DrmManagerClient.OnEventListener.html b/docs/html/sdk/api_diff/12/changes/android.drm.DrmManagerClient.OnEventListener.html
index da96fa8..7052ba8 100644
--- a/docs/html/sdk/api_diff/12/changes/android.drm.DrmManagerClient.OnEventListener.html
+++ b/docs/html/sdk/api_diff/12/changes/android.drm.DrmManagerClient.OnEventListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.graphics.Bitmap.html b/docs/html/sdk/api_diff/12/changes/android.graphics.Bitmap.html
index 859f2ca..424fa0b 100644
--- a/docs/html/sdk/api_diff/12/changes/android.graphics.Bitmap.html
+++ b/docs/html/sdk/api_diff/12/changes/android.graphics.Bitmap.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.graphics.Camera.html b/docs/html/sdk/api_diff/12/changes/android.graphics.Camera.html
index 6da960b..909a2d3 100644
--- a/docs/html/sdk/api_diff/12/changes/android.graphics.Camera.html
+++ b/docs/html/sdk/api_diff/12/changes/android.graphics.Camera.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/12/changes/android.hardware.Camera.html
index 5ef43aa..085f709 100644
--- a/docs/html/sdk/api_diff/12/changes/android.hardware.Camera.html
+++ b/docs/html/sdk/api_diff/12/changes/android.hardware.Camera.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.net.TrafficStats.html b/docs/html/sdk/api_diff/12/changes/android.net.TrafficStats.html
index 9657080..11b3300 100644
--- a/docs/html/sdk/api_diff/12/changes/android.net.TrafficStats.html
+++ b/docs/html/sdk/api_diff/12/changes/android.net.TrafficStats.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.net.http.SslCertificate.html b/docs/html/sdk/api_diff/12/changes/android.net.http.SslCertificate.html
index e23ac71..64cd7d9 100644
--- a/docs/html/sdk/api_diff/12/changes/android.net.http.SslCertificate.html
+++ b/docs/html/sdk/api_diff/12/changes/android.net.http.SslCertificate.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.net.sip.SipProfile.Builder.html b/docs/html/sdk/api_diff/12/changes/android.net.sip.SipProfile.Builder.html
index 92dfe6a..27fd1c6 100644
--- a/docs/html/sdk/api_diff/12/changes/android.net.sip.SipProfile.Builder.html
+++ b/docs/html/sdk/api_diff/12/changes/android.net.sip.SipProfile.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.net.sip.SipProfile.html b/docs/html/sdk/api_diff/12/changes/android.net.sip.SipProfile.html
index 0c925bc..0cfb94d 100644
--- a/docs/html/sdk/api_diff/12/changes/android.net.sip.SipProfile.html
+++ b/docs/html/sdk/api_diff/12/changes/android.net.sip.SipProfile.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.net.wifi.WifiManager.html b/docs/html/sdk/api_diff/12/changes/android.net.wifi.WifiManager.html
index a4b77ab..2b2bf48 100644
--- a/docs/html/sdk/api_diff/12/changes/android.net.wifi.WifiManager.html
+++ b/docs/html/sdk/api_diff/12/changes/android.net.wifi.WifiManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/12/changes/android.os.Build.VERSION_CODES.html
index a7bc50d..db11af1 100644
--- a/docs/html/sdk/api_diff/12/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/12/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.os.Bundle.html b/docs/html/sdk/api_diff/12/changes/android.os.Bundle.html
index 735e9c9..05f1c4c 100644
--- a/docs/html/sdk/api_diff/12/changes/android.os.Bundle.html
+++ b/docs/html/sdk/api_diff/12/changes/android.os.Bundle.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.os.ParcelFileDescriptor.html b/docs/html/sdk/api_diff/12/changes/android.os.ParcelFileDescriptor.html
index f586277..aad517f 100644
--- a/docs/html/sdk/api_diff/12/changes/android.os.ParcelFileDescriptor.html
+++ b/docs/html/sdk/api_diff/12/changes/android.os.ParcelFileDescriptor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.provider.Browser.html b/docs/html/sdk/api_diff/12/changes/android.provider.Browser.html
index 126d022..3a66c2b 100644
--- a/docs/html/sdk/api_diff/12/changes/android.provider.Browser.html
+++ b/docs/html/sdk/api_diff/12/changes/android.provider.Browser.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.provider.MediaStore.html b/docs/html/sdk/api_diff/12/changes/android.provider.MediaStore.html
index 3e57afc..95ae962 100644
--- a/docs/html/sdk/api_diff/12/changes/android.provider.MediaStore.html
+++ b/docs/html/sdk/api_diff/12/changes/android.provider.MediaStore.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.text.SpannableStringBuilder.html b/docs/html/sdk/api_diff/12/changes/android.text.SpannableStringBuilder.html
index a27a56c..2c03c3d 100644
--- a/docs/html/sdk/api_diff/12/changes/android.text.SpannableStringBuilder.html
+++ b/docs/html/sdk/api_diff/12/changes/android.text.SpannableStringBuilder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.text.format.Formatter.html b/docs/html/sdk/api_diff/12/changes/android.text.format.Formatter.html
index 6b10501..07591d3 100644
--- a/docs/html/sdk/api_diff/12/changes/android.text.format.Formatter.html
+++ b/docs/html/sdk/api_diff/12/changes/android.text.format.Formatter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.text.method.BaseMovementMethod.html b/docs/html/sdk/api_diff/12/changes/android.text.method.BaseMovementMethod.html
index a81b1f2..79fcf04 100644
--- a/docs/html/sdk/api_diff/12/changes/android.text.method.BaseMovementMethod.html
+++ b/docs/html/sdk/api_diff/12/changes/android.text.method.BaseMovementMethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.text.method.MovementMethod.html b/docs/html/sdk/api_diff/12/changes/android.text.method.MovementMethod.html
index 79d5f25..caf8603 100644
--- a/docs/html/sdk/api_diff/12/changes/android.text.method.MovementMethod.html
+++ b/docs/html/sdk/api_diff/12/changes/android.text.method.MovementMethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.util.Config.html b/docs/html/sdk/api_diff/12/changes/android.util.Config.html
index a53384b..f351b9c 100644
--- a/docs/html/sdk/api_diff/12/changes/android.util.Config.html
+++ b/docs/html/sdk/api_diff/12/changes/android.util.Config.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.util.DebugUtils.html b/docs/html/sdk/api_diff/12/changes/android.util.DebugUtils.html
index dcd55fb..0643056 100644
--- a/docs/html/sdk/api_diff/12/changes/android.util.DebugUtils.html
+++ b/docs/html/sdk/api_diff/12/changes/android.util.DebugUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.util.EventLog.html b/docs/html/sdk/api_diff/12/changes/android.util.EventLog.html
index 19f8788..d4dd9bd 100644
--- a/docs/html/sdk/api_diff/12/changes/android.util.EventLog.html
+++ b/docs/html/sdk/api_diff/12/changes/android.util.EventLog.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.util.StateSet.html b/docs/html/sdk/api_diff/12/changes/android.util.StateSet.html
index e300775..5498221 100644
--- a/docs/html/sdk/api_diff/12/changes/android.util.StateSet.html
+++ b/docs/html/sdk/api_diff/12/changes/android.util.StateSet.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.util.TimeUtils.html b/docs/html/sdk/api_diff/12/changes/android.util.TimeUtils.html
index 0aaf9de..d9ac77b 100644
--- a/docs/html/sdk/api_diff/12/changes/android.util.TimeUtils.html
+++ b/docs/html/sdk/api_diff/12/changes/android.util.TimeUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.util.Xml.html b/docs/html/sdk/api_diff/12/changes/android.util.Xml.html
index f75d80c..ee485f7 100644
--- a/docs/html/sdk/api_diff/12/changes/android.util.Xml.html
+++ b/docs/html/sdk/api_diff/12/changes/android.util.Xml.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.InputDevice.MotionRange.html b/docs/html/sdk/api_diff/12/changes/android.view.InputDevice.MotionRange.html
index 74e9175..e0f8fad 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.InputDevice.MotionRange.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.InputDevice.MotionRange.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.InputDevice.html b/docs/html/sdk/api_diff/12/changes/android.view.InputDevice.html
index 8eb21b5..5c0e0df 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.InputDevice.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.InputDevice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.InputEvent.html b/docs/html/sdk/api_diff/12/changes/android.view.InputEvent.html
index 2d8acfa..ef069ae 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.InputEvent.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.InputEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/12/changes/android.view.KeyEvent.html
index 08af8ee..28a0f06 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.KeyEvent.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.KeyEvent.html
@@ -277,7 +277,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.MotionEvent.PointerCoords.html b/docs/html/sdk/api_diff/12/changes/android.view.MotionEvent.PointerCoords.html
index 57c7f08..5a361eb 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.MotionEvent.PointerCoords.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.MotionEvent.PointerCoords.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.MotionEvent.html b/docs/html/sdk/api_diff/12/changes/android.view.MotionEvent.html
index bc2361d..80a1140 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.MotionEvent.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.MotionEvent.html
@@ -480,7 +480,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.View.html b/docs/html/sdk/api_diff/12/changes/android.view.View.html
index ec431b3..5f788c7 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.View.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/12/changes/android.view.ViewConfiguration.html
index 563b50c..d1bfa7d 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.ViewConfiguration.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.ViewConfiguration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.Window.Callback.html b/docs/html/sdk/api_diff/12/changes/android.view.Window.Callback.html
index 1eed99b..ee7914f 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.Window.Callback.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.Window.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.Window.html b/docs/html/sdk/api_diff/12/changes/android.view.Window.html
index 83c3c63..06d8681 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.Window.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.Window.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.animation.Animation.html b/docs/html/sdk/api_diff/12/changes/android.view.animation.Animation.html
index 22d22ec..f619f58 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.animation.Animation.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.animation.Animation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.view.inputmethod.InputMethodSubtype.html b/docs/html/sdk/api_diff/12/changes/android.view.inputmethod.InputMethodSubtype.html
index 83aaf96..d660fc0 100644
--- a/docs/html/sdk/api_diff/12/changes/android.view.inputmethod.InputMethodSubtype.html
+++ b/docs/html/sdk/api_diff/12/changes/android.view.inputmethod.InputMethodSubtype.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.webkit.CookieManager.html b/docs/html/sdk/api_diff/12/changes/android.webkit.CookieManager.html
index 8bb1295..2c43c48 100644
--- a/docs/html/sdk/api_diff/12/changes/android.webkit.CookieManager.html
+++ b/docs/html/sdk/api_diff/12/changes/android.webkit.CookieManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.webkit.WebHistoryItem.html b/docs/html/sdk/api_diff/12/changes/android.webkit.WebHistoryItem.html
index 0922f6c..dd98d1d 100644
--- a/docs/html/sdk/api_diff/12/changes/android.webkit.WebHistoryItem.html
+++ b/docs/html/sdk/api_diff/12/changes/android.webkit.WebHistoryItem.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.webkit.WebSettings.LayoutAlgorithm.html b/docs/html/sdk/api_diff/12/changes/android.webkit.WebSettings.LayoutAlgorithm.html
index 2455db2..c9277ff3 100644
--- a/docs/html/sdk/api_diff/12/changes/android.webkit.WebSettings.LayoutAlgorithm.html
+++ b/docs/html/sdk/api_diff/12/changes/android.webkit.WebSettings.LayoutAlgorithm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/12/changes/android.webkit.WebSettings.html
index ffba4ed..6fe2056 100644
--- a/docs/html/sdk/api_diff/12/changes/android.webkit.WebSettings.html
+++ b/docs/html/sdk/api_diff/12/changes/android.webkit.WebSettings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.webkit.WebView.PictureListener.html b/docs/html/sdk/api_diff/12/changes/android.webkit.WebView.PictureListener.html
index c2e18d6..ed53021 100644
--- a/docs/html/sdk/api_diff/12/changes/android.webkit.WebView.PictureListener.html
+++ b/docs/html/sdk/api_diff/12/changes/android.webkit.WebView.PictureListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/12/changes/android.webkit.WebView.html
index 57d88a46..d47df22 100644
--- a/docs/html/sdk/api_diff/12/changes/android.webkit.WebView.html
+++ b/docs/html/sdk/api_diff/12/changes/android.webkit.WebView.html
@@ -203,7 +203,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.webkit.WebViewClient.html b/docs/html/sdk/api_diff/12/changes/android.webkit.WebViewClient.html
index adf065c..774d19d 100644
--- a/docs/html/sdk/api_diff/12/changes/android.webkit.WebViewClient.html
+++ b/docs/html/sdk/api_diff/12/changes/android.webkit.WebViewClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.widget.DatePicker.html b/docs/html/sdk/api_diff/12/changes/android.widget.DatePicker.html
index cade8b2..82ab809 100644
--- a/docs/html/sdk/api_diff/12/changes/android.widget.DatePicker.html
+++ b/docs/html/sdk/api_diff/12/changes/android.widget.DatePicker.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/12/changes/android.widget.RemoteViews.html
index 2205e10..1df3ce0 100644
--- a/docs/html/sdk/api_diff/12/changes/android.widget.RemoteViews.html
+++ b/docs/html/sdk/api_diff/12/changes/android.widget.RemoteViews.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/changes-summary.html b/docs/html/sdk/api_diff/12/changes/changes-summary.html
index e069d3d..1be9ad5 100644
--- a/docs/html/sdk/api_diff/12/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/12/changes/changes-summary.html
@@ -311,7 +311,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/classes_index_additions.html b/docs/html/sdk/api_diff/12/changes/classes_index_additions.html
index 411e35c..c6658c1 100644
--- a/docs/html/sdk/api_diff/12/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/12/changes/classes_index_additions.html
@@ -70,7 +70,7 @@
 <A HREF="pkg_android.view.html#View.OnAttachStateChangeListener" class="hiddenlink" target="rightframe"><b><i>View.OnAttachStateChangeListener</i></b></A><br>
 <A HREF="pkg_android.view.html#View.OnGenericMotionListener" class="hiddenlink" target="rightframe"><b><i>View.OnGenericMotionListener</i></b></A><br>
 <A HREF="pkg_android.view.html#ViewPropertyAnimator" class="hiddenlink" target="rightframe"><b>ViewPropertyAnimator</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/classes_index_all.html b/docs/html/sdk/api_diff/12/changes/classes_index_all.html
index b8f786c..cc1c965 100644
--- a/docs/html/sdk/api_diff/12/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/12/changes/classes_index_all.html
@@ -502,7 +502,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.util.Xml.html" class="hiddenlink" target="rightframe">Xml</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/classes_index_changes.html b/docs/html/sdk/api_diff/12/changes/classes_index_changes.html
index dc2f8b7..1c7b450 100644
--- a/docs/html/sdk/api_diff/12/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/12/changes/classes_index_changes.html
@@ -417,7 +417,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.util.Xml.html" class="hiddenlink" target="rightframe">Xml</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/classes_index_removals.html b/docs/html/sdk/api_diff/12/changes/classes_index_removals.html
index f7fdef7..1267469 100644
--- a/docs/html/sdk/api_diff/12/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/12/changes/classes_index_removals.html
@@ -63,7 +63,7 @@
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.webkit.html#UrlInterceptHandler" class="hiddenlink" target="rightframe"><strike>UrlInterceptHandler</strike></A><br>
 <A HREF="pkg_android.webkit.html#UrlInterceptRegistry" class="hiddenlink" target="rightframe"><strike>UrlInterceptRegistry</strike></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/12/changes/constructors_index_additions.html
index 7aeb135..6f115f2 100644
--- a/docs/html/sdk/api_diff/12/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/12/changes/constructors_index_additions.html
@@ -65,7 +65,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.MotionEvent.PointerCoords.html#android.view.MotionEvent.PointerCoords.ctor_added(android.view.MotionEvent.PointerCoords)" class="hiddenlink" target="rightframe"><b>MotionEvent.PointerCoords</b>
 (<code>PointerCoords</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/constructors_index_all.html b/docs/html/sdk/api_diff/12/changes/constructors_index_all.html
index faf1a77..e2af2fb 100644
--- a/docs/html/sdk/api_diff/12/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/12/changes/constructors_index_all.html
@@ -139,7 +139,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.util.Xml.html#android.util.Xml.ctor_removed()" class="hiddenlink" target="rightframe"><strike>Xml</strike>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/12/changes/constructors_index_changes.html
index 32b2e86..b551c6a 100644
--- a/docs/html/sdk/api_diff/12/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/12/changes/constructors_index_changes.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.net.http.SslCertificate.html#android.net.http.SslCertificate.ctor_changed(java.lang.String, java.lang.String, java.util.Date, java.util.Date)" class="hiddenlink" target="rightframe">SslCertificate
 (<code>String, String, Date, Date</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/12/changes/constructors_index_removals.html
index a0c654a..9601953 100644
--- a/docs/html/sdk/api_diff/12/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/12/changes/constructors_index_removals.html
@@ -113,7 +113,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.util.Xml.html#android.util.Xml.ctor_removed()" class="hiddenlink" target="rightframe"><strike>Xml</strike>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/fields_index_additions.html b/docs/html/sdk/api_diff/12/changes/fields_index_additions.html
index c07e6ee..8ac825e 100644
--- a/docs/html/sdk/api_diff/12/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/12/changes/fields_index_additions.html
@@ -494,7 +494,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.net.wifi.WifiManager.html#android.net.wifi.WifiManager.WIFI_MODE_FULL_HIGH_PERF" class="hiddenlink" target="rightframe">WIFI_MODE_FULL_HIGH_PERF</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/fields_index_all.html b/docs/html/sdk/api_diff/12/changes/fields_index_all.html
index 33d3e51..b5ea4d6 100644
--- a/docs/html/sdk/api_diff/12/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/12/changes/fields_index_all.html
@@ -512,7 +512,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.net.wifi.WifiManager.html#android.net.wifi.WifiManager.WIFI_MODE_FULL_HIGH_PERF" class="hiddenlink" target="rightframe">WIFI_MODE_FULL_HIGH_PERF</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/fields_index_changes.html b/docs/html/sdk/api_diff/12/changes/fields_index_changes.html
index 17ebf22..5458676f 100644
--- a/docs/html/sdk/api_diff/12/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/12/changes/fields_index_changes.html
@@ -69,7 +69,7 @@
 </nobr><br>
 <nobr><A HREF="android.view.InputDevice.html#android.view.InputDevice.MOTION_RANGE_Y" class="hiddenlink" target="rightframe">MOTION_RANGE_Y</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/fields_index_removals.html b/docs/html/sdk/api_diff/12/changes/fields_index_removals.html
index 9f62d88..9ad97a7 100644
--- a/docs/html/sdk/api_diff/12/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/12/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/jdiff_help.html b/docs/html/sdk/api_diff/12/changes/jdiff_help.html
index 5f2ba49..df0fd345 100644
--- a/docs/html/sdk/api_diff/12/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/12/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/12/changes/jdiff_statistics.html
index a2316d6..be609f2 100644
--- a/docs/html/sdk/api_diff/12/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/12/changes/jdiff_statistics.html
@@ -601,7 +601,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/12/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/12/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/12/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/methods_index_additions.html b/docs/html/sdk/api_diff/12/changes/methods_index_additions.html
index fb6eabc..d2e8d40 100644
--- a/docs/html/sdk/api_diff/12/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/12/changes/methods_index_additions.html
@@ -348,7 +348,7 @@
 </A></nobr><br>
 <nobr><A HREF="android.view.Window.html#android.view.Window.superDispatchGenericMotionEvent_added(android.view.MotionEvent)" class="hiddenlink" target="rightframe"><b>superDispatchGenericMotionEvent</b>
 (<code>MotionEvent</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/methods_index_all.html b/docs/html/sdk/api_diff/12/changes/methods_index_all.html
index 12abe16..3a32707 100644
--- a/docs/html/sdk/api_diff/12/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/12/changes/methods_index_all.html
@@ -468,7 +468,7 @@
 (<code>boolean</code>)</A></nobr><br>
 <nobr><A HREF="android.view.Window.html#android.view.Window.superDispatchGenericMotionEvent_added(android.view.MotionEvent)" class="hiddenlink" target="rightframe"><b>superDispatchGenericMotionEvent</b>
 (<code>MotionEvent</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/methods_index_changes.html b/docs/html/sdk/api_diff/12/changes/methods_index_changes.html
index cd4a985..be2471c 100644
--- a/docs/html/sdk/api_diff/12/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/12/changes/methods_index_changes.html
@@ -179,7 +179,7 @@
 (<code>SurfaceTexture</code>)</A></nobr><br>
 <nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setUseWebViewBackgroundForOverscrollBackground_changed(boolean)" class="hiddenlink" target="rightframe">setUseWebViewBackgroundForOverscrollBackground
 (<code>boolean</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/methods_index_removals.html b/docs/html/sdk/api_diff/12/changes/methods_index_removals.html
index 9e06e4e..7b28536 100644
--- a/docs/html/sdk/api_diff/12/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/12/changes/methods_index_removals.html
@@ -61,7 +61,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.webkit.WebView.html#android.webkit.WebView.refreshPlugins_removed(boolean)" class="hiddenlink" target="rightframe"><strike>refreshPlugins</strike>
 (<code>boolean</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/packages_index_additions.html b/docs/html/sdk/api_diff/12/changes/packages_index_additions.html
index df7ecb8..404adf0 100644
--- a/docs/html/sdk/api_diff/12/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/12/changes/packages_index_additions.html
@@ -53,7 +53,7 @@
 <A HREF="changes-summary.html#android.hardware.usb" class="hiddenlink" target="rightframe"><b>android.hardware.usb</b></A><br>
 <A HREF="changes-summary.html#android.mtp" class="hiddenlink" target="rightframe"><b>android.mtp</b></A><br>
 <A HREF="changes-summary.html#android.net.rtp" class="hiddenlink" target="rightframe"><b>android.net.rtp</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/packages_index_all.html b/docs/html/sdk/api_diff/12/changes/packages_index_all.html
index 7217c91..7c2a17c 100644
--- a/docs/html/sdk/api_diff/12/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/12/changes/packages_index_all.html
@@ -77,7 +77,7 @@
 <A HREF="pkg_android.view.inputmethod.html" class="hiddenlink" target="rightframe">android.view.inputmethod</A><br>
 <A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
 <A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/packages_index_changes.html b/docs/html/sdk/api_diff/12/changes/packages_index_changes.html
index 4cc5937..7282329 100644
--- a/docs/html/sdk/api_diff/12/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/12/changes/packages_index_changes.html
@@ -74,7 +74,7 @@
 <A HREF="pkg_android.view.inputmethod.html" class="hiddenlink" target="rightframe">android.view.inputmethod</A><br>
 <A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
 <A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/packages_index_removals.html b/docs/html/sdk/api_diff/12/changes/packages_index_removals.html
index d0ffabc..5f37b27 100644
--- a/docs/html/sdk/api_diff/12/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/12/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.animation.html b/docs/html/sdk/api_diff/12/changes/pkg_android.animation.html
index 6ee186e..cb24298 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.animation.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.app.html b/docs/html/sdk/api_diff/12/changes/pkg_android.app.html
index 8f26f8b..192b13e 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.app.html
@@ -183,7 +183,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.appwidget.html b/docs/html/sdk/api_diff/12/changes/pkg_android.appwidget.html
index 694c4fe..9003eb0 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.appwidget.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.appwidget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.content.html b/docs/html/sdk/api_diff/12/changes/pkg_android.content.html
index 82929b9..11a481e 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.content.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/12/changes/pkg_android.content.pm.html
index 1244d6b..8c3f540 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.content.pm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.drm.html b/docs/html/sdk/api_diff/12/changes/pkg_android.drm.html
index 4a32cb9..36731f7 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.drm.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.drm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/12/changes/pkg_android.graphics.html
index 5ab5d6a..bac0020 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.graphics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/12/changes/pkg_android.hardware.html
index 675536d..824e1ed 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.hardware.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.hardware.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.html b/docs/html/sdk/api_diff/12/changes/pkg_android.html
index e8a0da1..09984dd 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.net.html b/docs/html/sdk/api_diff/12/changes/pkg_android.net.html
index 64e318a..4efcfae 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.net.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.net.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.net.http.html b/docs/html/sdk/api_diff/12/changes/pkg_android.net.http.html
index a83d19b..13b6d0f 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.net.http.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.net.http.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.net.sip.html b/docs/html/sdk/api_diff/12/changes/pkg_android.net.sip.html
index 705ce02..23b7146 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.net.sip.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.net.sip.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.net.wifi.html b/docs/html/sdk/api_diff/12/changes/pkg_android.net.wifi.html
index 85324c9..a4d7d57 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.net.wifi.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.net.wifi.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.os.html b/docs/html/sdk/api_diff/12/changes/pkg_android.os.html
index 2eb0b38..ea1df92 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/12/changes/pkg_android.provider.html
index 5af8685..f7d34e8 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.provider.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.provider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.text.format.html b/docs/html/sdk/api_diff/12/changes/pkg_android.text.format.html
index 4400d93..a445811 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.text.format.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.text.format.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.text.html b/docs/html/sdk/api_diff/12/changes/pkg_android.text.html
index 092adb7..fd6df26 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.text.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.text.method.html b/docs/html/sdk/api_diff/12/changes/pkg_android.text.method.html
index 653724c..ebb8113 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.text.method.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.text.method.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.util.html b/docs/html/sdk/api_diff/12/changes/pkg_android.util.html
index c56e084..5fc241d 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.util.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.util.html
@@ -155,7 +155,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.view.animation.html b/docs/html/sdk/api_diff/12/changes/pkg_android.view.animation.html
index c5955727..3e2ba7e 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.view.animation.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.view.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.view.html b/docs/html/sdk/api_diff/12/changes/pkg_android.view.html
index 74cc844..ad77db0 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.view.html
@@ -197,7 +197,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.view.inputmethod.html b/docs/html/sdk/api_diff/12/changes/pkg_android.view.inputmethod.html
index 75feb6f..3cef34c 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.view.inputmethod.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.view.inputmethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/12/changes/pkg_android.webkit.html
index 20d08df..52356ad 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.webkit.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.webkit.html
@@ -197,7 +197,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/12/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/12/changes/pkg_android.widget.html
index 641956e..195ff3d 100644
--- a/docs/html/sdk/api_diff/12/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/12/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/13/changes/alldiffs_index_additions.html
index 1d53429..7473a7c 100644
--- a/docs/html/sdk/api_diff/13/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/13/changes/alldiffs_index_additions.html
@@ -649,7 +649,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.graphics.PointF.html#android.graphics.PointF.writeToParcel_added(android.os.Parcel, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
 (<code>Parcel, int</code>)</b>&nbsp;in&nbsp;android.graphics.PointF
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/13/changes/alldiffs_index_all.html
index a4e428e..1357c67 100644
--- a/docs/html/sdk/api_diff/13/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/13/changes/alldiffs_index_all.html
@@ -927,7 +927,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.graphics.PointF.html#android.graphics.PointF.writeToParcel_added(android.os.Parcel, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
 (<code>Parcel, int</code>)</b>&nbsp;in&nbsp;android.graphics.PointF
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/13/changes/alldiffs_index_changes.html
index 59e766b..b870d5d 100644
--- a/docs/html/sdk/api_diff/13/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/13/changes/alldiffs_index_changes.html
@@ -547,7 +547,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.hardware.usb.UsbDeviceConnection.html" class="hiddenlink" target="rightframe">UsbDeviceConnection</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/13/changes/alldiffs_index_removals.html
index 68d2c20..48c9fcd 100644
--- a/docs/html/sdk/api_diff/13/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/13/changes/android.Manifest.permission.html
index 5d3cbda..8e18fba 100644
--- a/docs/html/sdk/api_diff/13/changes/android.Manifest.permission.html
+++ b/docs/html/sdk/api_diff/13/changes/android.Manifest.permission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.R.attr.html b/docs/html/sdk/api_diff/13/changes/android.R.attr.html
index f8eb54b..af71817 100644
--- a/docs/html/sdk/api_diff/13/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/13/changes/android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.R.style.html b/docs/html/sdk/api_diff/13/changes/android.R.style.html
index 9e385e2..3fc5834 100644
--- a/docs/html/sdk/api_diff/13/changes/android.R.style.html
+++ b/docs/html/sdk/api_diff/13/changes/android.R.style.html
@@ -381,7 +381,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.app.Activity.html b/docs/html/sdk/api_diff/13/changes/android.app.Activity.html
index b27816b..e9f4d79 100644
--- a/docs/html/sdk/api_diff/13/changes/android.app.Activity.html
+++ b/docs/html/sdk/api_diff/13/changes/android.app.Activity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.app.ActivityGroup.html b/docs/html/sdk/api_diff/13/changes/android.app.ActivityGroup.html
index c755228..ec85f51 100644
--- a/docs/html/sdk/api_diff/13/changes/android.app.ActivityGroup.html
+++ b/docs/html/sdk/api_diff/13/changes/android.app.ActivityGroup.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.app.Fragment.html b/docs/html/sdk/api_diff/13/changes/android.app.Fragment.html
index 074d4b3..be0d0c2 100644
--- a/docs/html/sdk/api_diff/13/changes/android.app.Fragment.html
+++ b/docs/html/sdk/api_diff/13/changes/android.app.Fragment.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.app.FragmentManager.html b/docs/html/sdk/api_diff/13/changes/android.app.FragmentManager.html
index 159b9c9..f12d9f4 100644
--- a/docs/html/sdk/api_diff/13/changes/android.app.FragmentManager.html
+++ b/docs/html/sdk/api_diff/13/changes/android.app.FragmentManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.app.FragmentTransaction.html b/docs/html/sdk/api_diff/13/changes/android.app.FragmentTransaction.html
index dbb7deb..74b8a7c 100644
--- a/docs/html/sdk/api_diff/13/changes/android.app.FragmentTransaction.html
+++ b/docs/html/sdk/api_diff/13/changes/android.app.FragmentTransaction.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.app.KeyguardManager.KeyguardLock.html b/docs/html/sdk/api_diff/13/changes/android.app.KeyguardManager.KeyguardLock.html
index 3ae02ea..403f495 100644
--- a/docs/html/sdk/api_diff/13/changes/android.app.KeyguardManager.KeyguardLock.html
+++ b/docs/html/sdk/api_diff/13/changes/android.app.KeyguardManager.KeyguardLock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.app.KeyguardManager.html b/docs/html/sdk/api_diff/13/changes/android.app.KeyguardManager.html
index bc38771..582e1b7 100644
--- a/docs/html/sdk/api_diff/13/changes/android.app.KeyguardManager.html
+++ b/docs/html/sdk/api_diff/13/changes/android.app.KeyguardManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.app.LocalActivityManager.html b/docs/html/sdk/api_diff/13/changes/android.app.LocalActivityManager.html
index 4ea0848..bf65ba6 100644
--- a/docs/html/sdk/api_diff/13/changes/android.app.LocalActivityManager.html
+++ b/docs/html/sdk/api_diff/13/changes/android.app.LocalActivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.app.TabActivity.html b/docs/html/sdk/api_diff/13/changes/android.app.TabActivity.html
index 405f7d8..4bb2fc0 100644
--- a/docs/html/sdk/api_diff/13/changes/android.app.TabActivity.html
+++ b/docs/html/sdk/api_diff/13/changes/android.app.TabActivity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/13/changes/android.content.pm.ActivityInfo.html
index 70149a3..35bf527 100644
--- a/docs/html/sdk/api_diff/13/changes/android.content.pm.ActivityInfo.html
+++ b/docs/html/sdk/api_diff/13/changes/android.content.pm.ActivityInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.content.pm.ApplicationInfo.html b/docs/html/sdk/api_diff/13/changes/android.content.pm.ApplicationInfo.html
index 4aef492..8f1bf7f 100644
--- a/docs/html/sdk/api_diff/13/changes/android.content.pm.ApplicationInfo.html
+++ b/docs/html/sdk/api_diff/13/changes/android.content.pm.ApplicationInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/13/changes/android.content.pm.PackageManager.html
index ca75d7a..9fa3537 100644
--- a/docs/html/sdk/api_diff/13/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/13/changes/android.content.pm.PackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/13/changes/android.content.res.Configuration.html
index 110a142..44b5306 100644
--- a/docs/html/sdk/api_diff/13/changes/android.content.res.Configuration.html
+++ b/docs/html/sdk/api_diff/13/changes/android.content.res.Configuration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.graphics.Point.html b/docs/html/sdk/api_diff/13/changes/android.graphics.Point.html
index e3324d2..ff6c64e 100644
--- a/docs/html/sdk/api_diff/13/changes/android.graphics.Point.html
+++ b/docs/html/sdk/api_diff/13/changes/android.graphics.Point.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.graphics.PointF.html b/docs/html/sdk/api_diff/13/changes/android.graphics.PointF.html
index 665c259..2155473 100644
--- a/docs/html/sdk/api_diff/13/changes/android.graphics.PointF.html
+++ b/docs/html/sdk/api_diff/13/changes/android.graphics.PointF.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.hardware.usb.UsbDeviceConnection.html b/docs/html/sdk/api_diff/13/changes/android.hardware.usb.UsbDeviceConnection.html
index 1eb15ed..a3f95f6 100644
--- a/docs/html/sdk/api_diff/13/changes/android.hardware.usb.UsbDeviceConnection.html
+++ b/docs/html/sdk/api_diff/13/changes/android.hardware.usb.UsbDeviceConnection.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.net.ConnectivityManager.html b/docs/html/sdk/api_diff/13/changes/android.net.ConnectivityManager.html
index 977649f..a703a76 100644
--- a/docs/html/sdk/api_diff/13/changes/android.net.ConnectivityManager.html
+++ b/docs/html/sdk/api_diff/13/changes/android.net.ConnectivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.os.Binder.html b/docs/html/sdk/api_diff/13/changes/android.os.Binder.html
index fd11dd1..2307776 100644
--- a/docs/html/sdk/api_diff/13/changes/android.os.Binder.html
+++ b/docs/html/sdk/api_diff/13/changes/android.os.Binder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/13/changes/android.os.Build.VERSION_CODES.html
index 0e50af4..c70f748 100644
--- a/docs/html/sdk/api_diff/13/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/13/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.os.IBinder.html b/docs/html/sdk/api_diff/13/changes/android.os.IBinder.html
index 1a251cd..c012087 100644
--- a/docs/html/sdk/api_diff/13/changes/android.os.IBinder.html
+++ b/docs/html/sdk/api_diff/13/changes/android.os.IBinder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.os.ParcelFileDescriptor.html b/docs/html/sdk/api_diff/13/changes/android.os.ParcelFileDescriptor.html
index 3d3d1c3..95c448d 100644
--- a/docs/html/sdk/api_diff/13/changes/android.os.ParcelFileDescriptor.html
+++ b/docs/html/sdk/api_diff/13/changes/android.os.ParcelFileDescriptor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.os.PowerManager.html b/docs/html/sdk/api_diff/13/changes/android.os.PowerManager.html
index 4af746d..a522f6c 100644
--- a/docs/html/sdk/api_diff/13/changes/android.os.PowerManager.html
+++ b/docs/html/sdk/api_diff/13/changes/android.os.PowerManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/13/changes/android.telephony.TelephonyManager.html
index 43d6cf6..2d16828 100644
--- a/docs/html/sdk/api_diff/13/changes/android.telephony.TelephonyManager.html
+++ b/docs/html/sdk/api_diff/13/changes/android.telephony.TelephonyManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.util.DisplayMetrics.html b/docs/html/sdk/api_diff/13/changes/android.util.DisplayMetrics.html
index 01c329f..5eacf10 100644
--- a/docs/html/sdk/api_diff/13/changes/android.util.DisplayMetrics.html
+++ b/docs/html/sdk/api_diff/13/changes/android.util.DisplayMetrics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.view.Display.html b/docs/html/sdk/api_diff/13/changes/android.view.Display.html
index 872532a..1b472dc 100644
--- a/docs/html/sdk/api_diff/13/changes/android.view.Display.html
+++ b/docs/html/sdk/api_diff/13/changes/android.view.Display.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/13/changes/android.view.KeyEvent.html
index eaccac4..0636c4a 100644
--- a/docs/html/sdk/api_diff/13/changes/android.view.KeyEvent.html
+++ b/docs/html/sdk/api_diff/13/changes/android.view.KeyEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/changes-summary.html b/docs/html/sdk/api_diff/13/changes/changes-summary.html
index 3b1c55a..279fe6f 100644
--- a/docs/html/sdk/api_diff/13/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/13/changes/changes-summary.html
@@ -191,7 +191,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/classes_index_additions.html b/docs/html/sdk/api_diff/13/changes/classes_index_additions.html
index 9ca1958..0f80b33 100644
--- a/docs/html/sdk/api_diff/13/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/13/changes/classes_index_additions.html
@@ -59,7 +59,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.os.html#Parcelable.ClassLoaderCreator" class="hiddenlink" target="rightframe"><b><i>Parcelable.ClassLoaderCreator</i></b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/classes_index_all.html b/docs/html/sdk/api_diff/13/changes/classes_index_all.html
index 6bd1021..61cd897 100644
--- a/docs/html/sdk/api_diff/13/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/13/changes/classes_index_all.html
@@ -286,7 +286,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.hardware.usb.UsbDeviceConnection.html" class="hiddenlink" target="rightframe">UsbDeviceConnection</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/classes_index_changes.html b/docs/html/sdk/api_diff/13/changes/classes_index_changes.html
index d76983f..37610a1 100644
--- a/docs/html/sdk/api_diff/13/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/13/changes/classes_index_changes.html
@@ -284,7 +284,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.hardware.usb.UsbDeviceConnection.html" class="hiddenlink" target="rightframe">UsbDeviceConnection</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/classes_index_removals.html b/docs/html/sdk/api_diff/13/changes/classes_index_removals.html
index e6da73f..af7f1d0 100644
--- a/docs/html/sdk/api_diff/13/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/13/changes/constructors_index_additions.html
index 3237ba3..a106dcb 100644
--- a/docs/html/sdk/api_diff/13/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/constructors_index_all.html b/docs/html/sdk/api_diff/13/changes/constructors_index_all.html
index 637582e..3e67e48 100644
--- a/docs/html/sdk/api_diff/13/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/13/changes/constructors_index_changes.html
index 728fa2d..1f3c803 100644
--- a/docs/html/sdk/api_diff/13/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/13/changes/constructors_index_removals.html
index 1b95544..a260baa 100644
--- a/docs/html/sdk/api_diff/13/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/fields_index_additions.html b/docs/html/sdk/api_diff/13/changes/fields_index_additions.html
index 271c9aa..08ae250 100644
--- a/docs/html/sdk/api_diff/13/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/13/changes/fields_index_additions.html
@@ -349,7 +349,7 @@
 </nobr><br>
 <nobr><A HREF="android.R.style.html#android.R.style.Widget_Holo_Light_ActionBar_TabView" class="hiddenlink" target="rightframe">Widget_Holo_Light_ActionBar_TabView</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/fields_index_all.html b/docs/html/sdk/api_diff/13/changes/fields_index_all.html
index f183408..bd73c8c 100644
--- a/docs/html/sdk/api_diff/13/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/13/changes/fields_index_all.html
@@ -351,7 +351,7 @@
 </nobr><br>
 <nobr><A HREF="android.R.style.html#android.R.style.Widget_Holo_Light_ActionBar_TabView" class="hiddenlink" target="rightframe">Widget_Holo_Light_ActionBar_TabView</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/fields_index_changes.html b/docs/html/sdk/api_diff/13/changes/fields_index_changes.html
index 953047c..fa684e1 100644
--- a/docs/html/sdk/api_diff/13/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/13/changes/fields_index_changes.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.os.PowerManager.html#android.os.PowerManager.SCREEN_BRIGHT_WAKE_LOCK" class="hiddenlink" target="rightframe">SCREEN_BRIGHT_WAKE_LOCK</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/fields_index_removals.html b/docs/html/sdk/api_diff/13/changes/fields_index_removals.html
index 9f62d88..9ad97a7 100644
--- a/docs/html/sdk/api_diff/13/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/jdiff_help.html b/docs/html/sdk/api_diff/13/changes/jdiff_help.html
index ec659d4..3710d27 100644
--- a/docs/html/sdk/api_diff/13/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/13/changes/jdiff_statistics.html
index 626c765..98d7077 100644
--- a/docs/html/sdk/api_diff/13/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/13/changes/jdiff_statistics.html
@@ -369,7 +369,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/13/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/13/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/methods_index_additions.html b/docs/html/sdk/api_diff/13/changes/methods_index_additions.html
index fbbf5a6..037a752 100644
--- a/docs/html/sdk/api_diff/13/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/13/changes/methods_index_additions.html
@@ -211,7 +211,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.graphics.PointF.html#android.graphics.PointF.writeToParcel_added(android.os.Parcel, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
 (<code>Parcel, int</code>)</b>&nbsp;in&nbsp;android.graphics.PointF
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/methods_index_all.html b/docs/html/sdk/api_diff/13/changes/methods_index_all.html
index 84d0a2c..5cd3bfa 100644
--- a/docs/html/sdk/api_diff/13/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/13/changes/methods_index_all.html
@@ -284,7 +284,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.graphics.PointF.html#android.graphics.PointF.writeToParcel_added(android.os.Parcel, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
 (<code>Parcel, int</code>)</b>&nbsp;in&nbsp;android.graphics.PointF
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/methods_index_changes.html b/docs/html/sdk/api_diff/13/changes/methods_index_changes.html
index 97cc3ef..bb11fd6 100644
--- a/docs/html/sdk/api_diff/13/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/13/changes/methods_index_changes.html
@@ -144,7 +144,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.app.Activity.html#android.app.Activity.showDialog_changed(int)" class="hiddenlink" target="rightframe">type&nbsp;
 (<code>int</code>)&nbsp;in&nbsp;android.app.Activity
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/methods_index_removals.html b/docs/html/sdk/api_diff/13/changes/methods_index_removals.html
index b5aea4f..b9d406e 100644
--- a/docs/html/sdk/api_diff/13/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/packages_index_additions.html b/docs/html/sdk/api_diff/13/changes/packages_index_additions.html
index 1776064..cb6e9d5 100644
--- a/docs/html/sdk/api_diff/13/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/packages_index_all.html b/docs/html/sdk/api_diff/13/changes/packages_index_all.html
index c23f4a6..f33529a 100644
--- a/docs/html/sdk/api_diff/13/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/13/changes/packages_index_all.html
@@ -61,7 +61,7 @@
 <A HREF="pkg_android.telephony.html" class="hiddenlink" target="rightframe">android.telephony</A><br>
 <A HREF="pkg_android.util.html" class="hiddenlink" target="rightframe">android.util</A><br>
 <A HREF="pkg_android.view.html" class="hiddenlink" target="rightframe">android.view</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/packages_index_changes.html b/docs/html/sdk/api_diff/13/changes/packages_index_changes.html
index d00b449..2e2fe43 100644
--- a/docs/html/sdk/api_diff/13/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/13/changes/packages_index_changes.html
@@ -61,7 +61,7 @@
 <A HREF="pkg_android.telephony.html" class="hiddenlink" target="rightframe">android.telephony</A><br>
 <A HREF="pkg_android.util.html" class="hiddenlink" target="rightframe">android.util</A><br>
 <A HREF="pkg_android.view.html" class="hiddenlink" target="rightframe">android.view</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/packages_index_removals.html b/docs/html/sdk/api_diff/13/changes/packages_index_removals.html
index 9fd0f7e..eaaeb6c 100644
--- a/docs/html/sdk/api_diff/13/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/13/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/pkg_android.app.html b/docs/html/sdk/api_diff/13/changes/pkg_android.app.html
index d728895..816371d 100644
--- a/docs/html/sdk/api_diff/13/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/13/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/13/changes/pkg_android.content.pm.html
index 60ab502..eeb517a 100644
--- a/docs/html/sdk/api_diff/13/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/13/changes/pkg_android.content.pm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/13/changes/pkg_android.content.res.html
index 01c31d04..87a1e98 100644
--- a/docs/html/sdk/api_diff/13/changes/pkg_android.content.res.html
+++ b/docs/html/sdk/api_diff/13/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/13/changes/pkg_android.graphics.html
index 31ddb13..17b6a36 100644
--- a/docs/html/sdk/api_diff/13/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/13/changes/pkg_android.graphics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/pkg_android.hardware.usb.html b/docs/html/sdk/api_diff/13/changes/pkg_android.hardware.usb.html
index ec768c9..145d45c 100644
--- a/docs/html/sdk/api_diff/13/changes/pkg_android.hardware.usb.html
+++ b/docs/html/sdk/api_diff/13/changes/pkg_android.hardware.usb.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/pkg_android.html b/docs/html/sdk/api_diff/13/changes/pkg_android.html
index 6b14637..3f56974 100644
--- a/docs/html/sdk/api_diff/13/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/13/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/pkg_android.net.html b/docs/html/sdk/api_diff/13/changes/pkg_android.net.html
index f3f82cc..8ba328b 100644
--- a/docs/html/sdk/api_diff/13/changes/pkg_android.net.html
+++ b/docs/html/sdk/api_diff/13/changes/pkg_android.net.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/pkg_android.os.html b/docs/html/sdk/api_diff/13/changes/pkg_android.os.html
index b9a8c09..bda4e43 100644
--- a/docs/html/sdk/api_diff/13/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/13/changes/pkg_android.os.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/13/changes/pkg_android.telephony.html
index 9a00876..90f0453 100644
--- a/docs/html/sdk/api_diff/13/changes/pkg_android.telephony.html
+++ b/docs/html/sdk/api_diff/13/changes/pkg_android.telephony.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/pkg_android.util.html b/docs/html/sdk/api_diff/13/changes/pkg_android.util.html
index 0d92956..f20d7a8 100644
--- a/docs/html/sdk/api_diff/13/changes/pkg_android.util.html
+++ b/docs/html/sdk/api_diff/13/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/13/changes/pkg_android.view.html b/docs/html/sdk/api_diff/13/changes/pkg_android.view.html
index 22fde46..4b2116f 100644
--- a/docs/html/sdk/api_diff/13/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/13/changes/pkg_android.view.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/14/changes/alldiffs_index_additions.html
index a1dff53..fd139af 100644
--- a/docs/html/sdk/api_diff/14/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/14/changes/alldiffs_index_additions.html
@@ -3097,7 +3097,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.View.html#android.view.View.Y" class="hiddenlink" target="rightframe">Y</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/14/changes/alldiffs_index_all.html
index 7958b99..aede8e0 100644
--- a/docs/html/sdk/api_diff/14/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/14/changes/alldiffs_index_all.html
@@ -4183,7 +4183,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.View.html#android.view.View.Y" class="hiddenlink" target="rightframe">Y</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/14/changes/alldiffs_index_changes.html
index 76ffbac..dccb034 100644
--- a/docs/html/sdk/api_diff/14/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/14/changes/alldiffs_index_changes.html
@@ -1457,7 +1457,7 @@
 <A HREF="android.view.Window.html" class="hiddenlink" target="rightframe">Window</A><br>
 <!-- Class WindowManager.LayoutParams -->
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/14/changes/alldiffs_index_removals.html
index 18bc2b3..5d514dc 100644
--- a/docs/html/sdk/api_diff/14/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/14/changes/alldiffs_index_removals.html
@@ -329,7 +329,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.Surface.html#android.view.Surface.unfreeze_removed()" class="hiddenlink" target="rightframe"><strike>unfreeze</strike>
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/14/changes/android.Manifest.permission.html
index 542b3c8..5446e31 100644
--- a/docs/html/sdk/api_diff/14/changes/android.Manifest.permission.html
+++ b/docs/html/sdk/api_diff/14/changes/android.Manifest.permission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.R.attr.html b/docs/html/sdk/api_diff/14/changes/android.R.attr.html
index d7adadb..fc0fe27 100644
--- a/docs/html/sdk/api_diff/14/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/14/changes/android.R.attr.html
@@ -566,7 +566,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.R.color.html b/docs/html/sdk/api_diff/14/changes/android.R.color.html
index 2fa2703..1ad4ba6 100644
--- a/docs/html/sdk/api_diff/14/changes/android.R.color.html
+++ b/docs/html/sdk/api_diff/14/changes/android.R.color.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.R.integer.html b/docs/html/sdk/api_diff/14/changes/android.R.integer.html
index 8218ee4..8752adb 100644
--- a/docs/html/sdk/api_diff/14/changes/android.R.integer.html
+++ b/docs/html/sdk/api_diff/14/changes/android.R.integer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.R.string.html b/docs/html/sdk/api_diff/14/changes/android.R.string.html
index 942e97b..f97fc90 100644
--- a/docs/html/sdk/api_diff/14/changes/android.R.string.html
+++ b/docs/html/sdk/api_diff/14/changes/android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.R.style.html b/docs/html/sdk/api_diff/14/changes/android.R.style.html
index e4692cc..5055b62 100644
--- a/docs/html/sdk/api_diff/14/changes/android.R.style.html
+++ b/docs/html/sdk/api_diff/14/changes/android.R.style.html
@@ -1424,7 +1424,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityService.html b/docs/html/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityService.html
index 7cae772..c18339f 100644
--- a/docs/html/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityService.html
+++ b/docs/html/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityServiceInfo.html b/docs/html/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityServiceInfo.html
index 8e775a4..e18e7c6 100644
--- a/docs/html/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityServiceInfo.html
+++ b/docs/html/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityServiceInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.accounts.AccountManager.html b/docs/html/sdk/api_diff/14/changes/android.accounts.AccountManager.html
index 8adef37..3296d9c 100644
--- a/docs/html/sdk/api_diff/14/changes/android.accounts.AccountManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.accounts.AccountManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.animation.Animator.html b/docs/html/sdk/api_diff/14/changes/android.animation.Animator.html
index 1448825..76a5223 100644
--- a/docs/html/sdk/api_diff/14/changes/android.animation.Animator.html
+++ b/docs/html/sdk/api_diff/14/changes/android.animation.Animator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.animation.FloatEvaluator.html b/docs/html/sdk/api_diff/14/changes/android.animation.FloatEvaluator.html
index faedf88..a5ee4d4 100644
--- a/docs/html/sdk/api_diff/14/changes/android.animation.FloatEvaluator.html
+++ b/docs/html/sdk/api_diff/14/changes/android.animation.FloatEvaluator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.animation.IntEvaluator.html b/docs/html/sdk/api_diff/14/changes/android.animation.IntEvaluator.html
index 91388bd..ac78978 100644
--- a/docs/html/sdk/api_diff/14/changes/android.animation.IntEvaluator.html
+++ b/docs/html/sdk/api_diff/14/changes/android.animation.IntEvaluator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.animation.LayoutTransition.html b/docs/html/sdk/api_diff/14/changes/android.animation.LayoutTransition.html
index ed6b3e7..c440d07 100644
--- a/docs/html/sdk/api_diff/14/changes/android.animation.LayoutTransition.html
+++ b/docs/html/sdk/api_diff/14/changes/android.animation.LayoutTransition.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.animation.ObjectAnimator.html b/docs/html/sdk/api_diff/14/changes/android.animation.ObjectAnimator.html
index 872ffff..10f75eb 100644
--- a/docs/html/sdk/api_diff/14/changes/android.animation.ObjectAnimator.html
+++ b/docs/html/sdk/api_diff/14/changes/android.animation.ObjectAnimator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.animation.PropertyValuesHolder.html b/docs/html/sdk/api_diff/14/changes/android.animation.PropertyValuesHolder.html
index 543d91f..fc76078 100644
--- a/docs/html/sdk/api_diff/14/changes/android.animation.PropertyValuesHolder.html
+++ b/docs/html/sdk/api_diff/14/changes/android.animation.PropertyValuesHolder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.animation.TypeEvaluator.html b/docs/html/sdk/api_diff/14/changes/android.animation.TypeEvaluator.html
index 1e95066..13fdf7a 100644
--- a/docs/html/sdk/api_diff/14/changes/android.animation.TypeEvaluator.html
+++ b/docs/html/sdk/api_diff/14/changes/android.animation.TypeEvaluator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.ActionBar.Tab.html b/docs/html/sdk/api_diff/14/changes/android.app.ActionBar.Tab.html
index 22eed31..8ef6301 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.ActionBar.Tab.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.ActionBar.Tab.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.ActionBar.html b/docs/html/sdk/api_diff/14/changes/android.app.ActionBar.html
index 0ca869c..c9b63f4 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.ActionBar.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.ActionBar.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.Activity.html b/docs/html/sdk/api_diff/14/changes/android.app.Activity.html
index 7e5e032..4a53f42 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.Activity.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.Activity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.AlertDialog.html b/docs/html/sdk/api_diff/14/changes/android.app.AlertDialog.html
index b3786dea..44a0398 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.AlertDialog.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.AlertDialog.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.Application.html b/docs/html/sdk/api_diff/14/changes/android.app.Application.html
index da105de..31bef64 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.Application.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.Application.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.Fragment.html b/docs/html/sdk/api_diff/14/changes/android.app.Fragment.html
index 2d85f0c..1b9877b 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.Fragment.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.Fragment.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.FragmentManager.BackStackEntry.html b/docs/html/sdk/api_diff/14/changes/android.app.FragmentManager.BackStackEntry.html
index 6db6763..22091b9 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.FragmentManager.BackStackEntry.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.FragmentManager.BackStackEntry.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.FragmentManager.html b/docs/html/sdk/api_diff/14/changes/android.app.FragmentManager.html
index bb11aba..1c02a4a 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.FragmentManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.FragmentManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.Notification.Builder.html b/docs/html/sdk/api_diff/14/changes/android.app.Notification.Builder.html
index d9fc7f4..b897b96 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.Notification.Builder.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.Notification.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.PendingIntent.html b/docs/html/sdk/api_diff/14/changes/android.app.PendingIntent.html
index e1ac14b..ab19e33 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.PendingIntent.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.PendingIntent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.SearchManager.html b/docs/html/sdk/api_diff/14/changes/android.app.SearchManager.html
index c2ad438..e7acbd4 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.SearchManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.SearchManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.Service.html b/docs/html/sdk/api_diff/14/changes/android.app.Service.html
index a56592b..7c33859 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.Service.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.Service.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.WallpaperManager.html b/docs/html/sdk/api_diff/14/changes/android.app.WallpaperManager.html
index dbe8e9f..3c92580 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.WallpaperManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.WallpaperManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.admin.DeviceAdminInfo.html b/docs/html/sdk/api_diff/14/changes/android.app.admin.DeviceAdminInfo.html
index 73a430d..98cf44d 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.admin.DeviceAdminInfo.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.admin.DeviceAdminInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.admin.DevicePolicyManager.html b/docs/html/sdk/api_diff/14/changes/android.app.admin.DevicePolicyManager.html
index 03febd7..38b2071 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.admin.DevicePolicyManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.admin.DevicePolicyManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.app.backup.BackupAgent.html b/docs/html/sdk/api_diff/14/changes/android.app.backup.BackupAgent.html
index ff28b33..5c3c38f 100644
--- a/docs/html/sdk/api_diff/14/changes/android.app.backup.BackupAgent.html
+++ b/docs/html/sdk/api_diff/14/changes/android.app.backup.BackupAgent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.appwidget.AppWidgetProviderInfo.html b/docs/html/sdk/api_diff/14/changes/android.appwidget.AppWidgetProviderInfo.html
index 0e93fa5..f473153 100644
--- a/docs/html/sdk/api_diff/14/changes/android.appwidget.AppWidgetProviderInfo.html
+++ b/docs/html/sdk/api_diff/14/changes/android.appwidget.AppWidgetProviderInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothAdapter.html b/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothAdapter.html
index 7785223..9713508 100644
--- a/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothAdapter.html
+++ b/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothProfile.html b/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothProfile.html
index 0d25fb1..0f8da7a 100644
--- a/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothProfile.html
+++ b/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothProfile.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothSocket.html b/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothSocket.html
index d4f827b..d0959bb 100644
--- a/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothSocket.html
+++ b/docs/html/sdk/api_diff/14/changes/android.bluetooth.BluetoothSocket.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.content.ContentProvider.html b/docs/html/sdk/api_diff/14/changes/android.content.ContentProvider.html
index 48176b5..1703ee3 100644
--- a/docs/html/sdk/api_diff/14/changes/android.content.ContentProvider.html
+++ b/docs/html/sdk/api_diff/14/changes/android.content.ContentProvider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.content.Context.html b/docs/html/sdk/api_diff/14/changes/android.content.Context.html
index 641b64e..2d27acc 100644
--- a/docs/html/sdk/api_diff/14/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/14/changes/android.content.Context.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.content.Intent.html b/docs/html/sdk/api_diff/14/changes/android.content.Intent.html
index 068fb3f..0c3ce6b 100644
--- a/docs/html/sdk/api_diff/14/changes/android.content.Intent.html
+++ b/docs/html/sdk/api_diff/14/changes/android.content.Intent.html
@@ -213,7 +213,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.content.IntentSender.html b/docs/html/sdk/api_diff/14/changes/android.content.IntentSender.html
index a6e751b..ad445fa 100644
--- a/docs/html/sdk/api_diff/14/changes/android.content.IntentSender.html
+++ b/docs/html/sdk/api_diff/14/changes/android.content.IntentSender.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.content.SyncAdapterType.html b/docs/html/sdk/api_diff/14/changes/android.content.SyncAdapterType.html
index 030de82..1dffa1b 100644
--- a/docs/html/sdk/api_diff/14/changes/android.content.SyncAdapterType.html
+++ b/docs/html/sdk/api_diff/14/changes/android.content.SyncAdapterType.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/14/changes/android.content.pm.ActivityInfo.html
index 95d4f9b..b714b8e 100644
--- a/docs/html/sdk/api_diff/14/changes/android.content.pm.ActivityInfo.html
+++ b/docs/html/sdk/api_diff/14/changes/android.content.pm.ActivityInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.content.pm.ApplicationInfo.html b/docs/html/sdk/api_diff/14/changes/android.content.pm.ApplicationInfo.html
index cd3c18d..8e234f5 100644
--- a/docs/html/sdk/api_diff/14/changes/android.content.pm.ApplicationInfo.html
+++ b/docs/html/sdk/api_diff/14/changes/android.content.pm.ApplicationInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/14/changes/android.content.pm.PackageManager.html
index 62f35f4..b5fffb2 100644
--- a/docs/html/sdk/api_diff/14/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.content.pm.PackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.content.pm.PackageStats.html b/docs/html/sdk/api_diff/14/changes/android.content.pm.PackageStats.html
index faac19e..ca87e95 100644
--- a/docs/html/sdk/api_diff/14/changes/android.content.pm.PackageStats.html
+++ b/docs/html/sdk/api_diff/14/changes/android.content.pm.PackageStats.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.content.pm.ServiceInfo.html b/docs/html/sdk/api_diff/14/changes/android.content.pm.ServiceInfo.html
index 6b9f78a..3e3e472 100644
--- a/docs/html/sdk/api_diff/14/changes/android.content.pm.ServiceInfo.html
+++ b/docs/html/sdk/api_diff/14/changes/android.content.pm.ServiceInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.database.sqlite.SQLiteOpenHelper.html b/docs/html/sdk/api_diff/14/changes/android.database.sqlite.SQLiteOpenHelper.html
index d7b09f3..affdfba 100644
--- a/docs/html/sdk/api_diff/14/changes/android.database.sqlite.SQLiteOpenHelper.html
+++ b/docs/html/sdk/api_diff/14/changes/android.database.sqlite.SQLiteOpenHelper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.database.sqlite.SQLiteQueryBuilder.html b/docs/html/sdk/api_diff/14/changes/android.database.sqlite.SQLiteQueryBuilder.html
index 02bdeee..d74972b 100644
--- a/docs/html/sdk/api_diff/14/changes/android.database.sqlite.SQLiteQueryBuilder.html
+++ b/docs/html/sdk/api_diff/14/changes/android.database.sqlite.SQLiteQueryBuilder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.graphics.Canvas.html b/docs/html/sdk/api_diff/14/changes/android.graphics.Canvas.html
index 8f90381..f2431e9 100644
--- a/docs/html/sdk/api_diff/14/changes/android.graphics.Canvas.html
+++ b/docs/html/sdk/api_diff/14/changes/android.graphics.Canvas.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.graphics.Paint.html b/docs/html/sdk/api_diff/14/changes/android.graphics.Paint.html
index 1cc467f..3597d03 100644
--- a/docs/html/sdk/api_diff/14/changes/android.graphics.Paint.html
+++ b/docs/html/sdk/api_diff/14/changes/android.graphics.Paint.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.graphics.RectF.html b/docs/html/sdk/api_diff/14/changes/android.graphics.RectF.html
index 62d6a96..4cc1292 100644
--- a/docs/html/sdk/api_diff/14/changes/android.graphics.RectF.html
+++ b/docs/html/sdk/api_diff/14/changes/android.graphics.RectF.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.graphics.SurfaceTexture.html b/docs/html/sdk/api_diff/14/changes/android.graphics.SurfaceTexture.html
index 8df17da80..5eb80f1 100644
--- a/docs/html/sdk/api_diff/14/changes/android.graphics.SurfaceTexture.html
+++ b/docs/html/sdk/api_diff/14/changes/android.graphics.SurfaceTexture.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.hardware.Camera.Parameters.html b/docs/html/sdk/api_diff/14/changes/android.hardware.Camera.Parameters.html
index 890a4aa..5bc3025 100644
--- a/docs/html/sdk/api_diff/14/changes/android.hardware.Camera.Parameters.html
+++ b/docs/html/sdk/api_diff/14/changes/android.hardware.Camera.Parameters.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/14/changes/android.hardware.Camera.html
index 1d6907d..5af616c 100644
--- a/docs/html/sdk/api_diff/14/changes/android.hardware.Camera.html
+++ b/docs/html/sdk/api_diff/14/changes/android.hardware.Camera.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.hardware.Sensor.html b/docs/html/sdk/api_diff/14/changes/android.hardware.Sensor.html
index b56e11c..f297e67 100644
--- a/docs/html/sdk/api_diff/14/changes/android.hardware.Sensor.html
+++ b/docs/html/sdk/api_diff/14/changes/android.hardware.Sensor.html
@@ -132,7 +132,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.InputMethodSessionImpl.html b/docs/html/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.InputMethodSessionImpl.html
index d2b2a7a..30d887c 100644
--- a/docs/html/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.InputMethodSessionImpl.html
+++ b/docs/html/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.InputMethodSessionImpl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.html b/docs/html/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.html
index c3dcdc5..28ade86 100644
--- a/docs/html/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.html
+++ b/docs/html/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/14/changes/android.media.AudioManager.html
index 7b68d0c..1ae2e8a 100644
--- a/docs/html/sdk/api_diff/14/changes/android.media.AudioManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.media.AudioManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.media.MediaMetadataRetriever.html b/docs/html/sdk/api_diff/14/changes/android.media.MediaMetadataRetriever.html
index 5f589b9..14d69ea 100644
--- a/docs/html/sdk/api_diff/14/changes/android.media.MediaMetadataRetriever.html
+++ b/docs/html/sdk/api_diff/14/changes/android.media.MediaMetadataRetriever.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.media.MediaPlayer.html b/docs/html/sdk/api_diff/14/changes/android.media.MediaPlayer.html
index ebdab5c..f5ab184 100644
--- a/docs/html/sdk/api_diff/14/changes/android.media.MediaPlayer.html
+++ b/docs/html/sdk/api_diff/14/changes/android.media.MediaPlayer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/14/changes/android.media.MediaRecorder.html
index 6f2405f..e982fd1 100644
--- a/docs/html/sdk/api_diff/14/changes/android.media.MediaRecorder.html
+++ b/docs/html/sdk/api_diff/14/changes/android.media.MediaRecorder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.net.ConnectivityManager.html b/docs/html/sdk/api_diff/14/changes/android.net.ConnectivityManager.html
index f1aaddc..2e28055 100644
--- a/docs/html/sdk/api_diff/14/changes/android.net.ConnectivityManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.net.ConnectivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.net.SSLCertificateSocketFactory.html b/docs/html/sdk/api_diff/14/changes/android.net.SSLCertificateSocketFactory.html
index b57b309..2eff42d 100644
--- a/docs/html/sdk/api_diff/14/changes/android.net.SSLCertificateSocketFactory.html
+++ b/docs/html/sdk/api_diff/14/changes/android.net.SSLCertificateSocketFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.net.TrafficStats.html b/docs/html/sdk/api_diff/14/changes/android.net.TrafficStats.html
index 55c729a..d003b1d 100644
--- a/docs/html/sdk/api_diff/14/changes/android.net.TrafficStats.html
+++ b/docs/html/sdk/api_diff/14/changes/android.net.TrafficStats.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.net.http.SslError.html b/docs/html/sdk/api_diff/14/changes/android.net.http.SslError.html
index 6b9c440..6d01155 100644
--- a/docs/html/sdk/api_diff/14/changes/android.net.http.SslError.html
+++ b/docs/html/sdk/api_diff/14/changes/android.net.http.SslError.html
@@ -197,7 +197,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.net.wifi.WifiManager.html b/docs/html/sdk/api_diff/14/changes/android.net.wifi.WifiManager.html
index d4e2168..84237b3 100644
--- a/docs/html/sdk/api_diff/14/changes/android.net.wifi.WifiManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.net.wifi.WifiManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.nfc.NdefRecord.html b/docs/html/sdk/api_diff/14/changes/android.nfc.NdefRecord.html
index 8fea7bb..96fe06f 100644
--- a/docs/html/sdk/api_diff/14/changes/android.nfc.NdefRecord.html
+++ b/docs/html/sdk/api_diff/14/changes/android.nfc.NdefRecord.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.nfc.NfcAdapter.html b/docs/html/sdk/api_diff/14/changes/android.nfc.NfcAdapter.html
index ef09aa0..26f08305 100644
--- a/docs/html/sdk/api_diff/14/changes/android.nfc.NfcAdapter.html
+++ b/docs/html/sdk/api_diff/14/changes/android.nfc.NfcAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.IsoDep.html b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.IsoDep.html
index 2966854..c20c7e9 100644
--- a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.IsoDep.html
+++ b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.IsoDep.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.MifareClassic.html b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.MifareClassic.html
index c682df0..b1ba4c0 100644
--- a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.MifareClassic.html
+++ b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.MifareClassic.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.MifareUltralight.html b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.MifareUltralight.html
index 31e0903..d5de932 100644
--- a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.MifareUltralight.html
+++ b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.MifareUltralight.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcA.html b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcA.html
index 7213d86..fd14865 100644
--- a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcA.html
+++ b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcA.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcB.html b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcB.html
index 188e4ff..2ba6ac8 100644
--- a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcB.html
+++ b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcB.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcF.html b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcF.html
index 0b4cd91..3caf109 100644
--- a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcF.html
+++ b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcF.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcV.html b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcV.html
index d7cc5b8..913ee9b 100644
--- a/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcV.html
+++ b/docs/html/sdk/api_diff/14/changes/android.nfc.tech.NfcV.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.opengl.GLUtils.html b/docs/html/sdk/api_diff/14/changes/android.opengl.GLUtils.html
index def8913..f53fbf6 100644
--- a/docs/html/sdk/api_diff/14/changes/android.opengl.GLUtils.html
+++ b/docs/html/sdk/api_diff/14/changes/android.opengl.GLUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.opengl.Matrix.html b/docs/html/sdk/api_diff/14/changes/android.opengl.Matrix.html
index 82d7990..eeea75d 100644
--- a/docs/html/sdk/api_diff/14/changes/android.opengl.Matrix.html
+++ b/docs/html/sdk/api_diff/14/changes/android.opengl.Matrix.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/14/changes/android.os.Build.VERSION_CODES.html
index 79e8983..8cf427f 100644
--- a/docs/html/sdk/api_diff/14/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/14/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.os.Build.html b/docs/html/sdk/api_diff/14/changes/android.os.Build.html
index 6b5d7e3..006d74f 100644
--- a/docs/html/sdk/api_diff/14/changes/android.os.Build.html
+++ b/docs/html/sdk/api_diff/14/changes/android.os.Build.html
@@ -125,7 +125,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.os.Debug.MemoryInfo.html b/docs/html/sdk/api_diff/14/changes/android.os.Debug.MemoryInfo.html
index 0b13977..31ddac3 100644
--- a/docs/html/sdk/api_diff/14/changes/android.os.Debug.MemoryInfo.html
+++ b/docs/html/sdk/api_diff/14/changes/android.os.Debug.MemoryInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.os.Debug.html b/docs/html/sdk/api_diff/14/changes/android.os.Debug.html
index 24e8933..a6b4ec2 100644
--- a/docs/html/sdk/api_diff/14/changes/android.os.Debug.html
+++ b/docs/html/sdk/api_diff/14/changes/android.os.Debug.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.os.Handler.html b/docs/html/sdk/api_diff/14/changes/android.os.Handler.html
index 6dbd8d8..d2c6a52 100644
--- a/docs/html/sdk/api_diff/14/changes/android.os.Handler.html
+++ b/docs/html/sdk/api_diff/14/changes/android.os.Handler.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.os.Looper.html b/docs/html/sdk/api_diff/14/changes/android.os.Looper.html
index fb617b2..ce65b83 100644
--- a/docs/html/sdk/api_diff/14/changes/android.os.Looper.html
+++ b/docs/html/sdk/api_diff/14/changes/android.os.Looper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.os.ParcelFileDescriptor.html b/docs/html/sdk/api_diff/14/changes/android.os.ParcelFileDescriptor.html
index aec382d..e9b2e58 100644
--- a/docs/html/sdk/api_diff/14/changes/android.os.ParcelFileDescriptor.html
+++ b/docs/html/sdk/api_diff/14/changes/android.os.ParcelFileDescriptor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.os.Process.html b/docs/html/sdk/api_diff/14/changes/android.os.Process.html
index e3a0add..c005664 100644
--- a/docs/html/sdk/api_diff/14/changes/android.os.Process.html
+++ b/docs/html/sdk/api_diff/14/changes/android.os.Process.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.os.RecoverySystem.html b/docs/html/sdk/api_diff/14/changes/android.os.RecoverySystem.html
index 38a5f5d..e85a365 100644
--- a/docs/html/sdk/api_diff/14/changes/android.os.RecoverySystem.html
+++ b/docs/html/sdk/api_diff/14/changes/android.os.RecoverySystem.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.preference.CheckBoxPreference.html b/docs/html/sdk/api_diff/14/changes/android.preference.CheckBoxPreference.html
index 70f62de..1933148 100644
--- a/docs/html/sdk/api_diff/14/changes/android.preference.CheckBoxPreference.html
+++ b/docs/html/sdk/api_diff/14/changes/android.preference.CheckBoxPreference.html
@@ -198,7 +198,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.preference.Preference.html b/docs/html/sdk/api_diff/14/changes/android.preference.Preference.html
index 28f0b436..5cff467 100644
--- a/docs/html/sdk/api_diff/14/changes/android.preference.Preference.html
+++ b/docs/html/sdk/api_diff/14/changes/android.preference.Preference.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.preference.PreferenceActivity.html b/docs/html/sdk/api_diff/14/changes/android.preference.PreferenceActivity.html
index e1938cb..42584d1 100644
--- a/docs/html/sdk/api_diff/14/changes/android.preference.PreferenceActivity.html
+++ b/docs/html/sdk/api_diff/14/changes/android.preference.PreferenceActivity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.CallLog.Calls.html b/docs/html/sdk/api_diff/14/changes/android.provider.CallLog.Calls.html
index a0223f8..48c298c 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.CallLog.Calls.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.CallLog.Calls.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.CommonDataKinds.Photo.html b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.CommonDataKinds.Photo.html
index 5e4921a..37e0945 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.CommonDataKinds.Photo.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.CommonDataKinds.Photo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.Photo.html b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.Photo.html
index e94ed8c..74f3d06 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.Photo.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.Photo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.html b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.html
index 08d7c36..00302af 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.ContactsColumns.html b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.ContactsColumns.html
index ab4775b..1d00fc6 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.ContactsColumns.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.ContactsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.GroupsColumns.html b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.GroupsColumns.html
index 58381c2..3a2bd3d 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.GroupsColumns.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.GroupsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Intents.html b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Intents.html
index aef0030..f74a526 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Intents.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.Intents.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsColumns.html b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsColumns.html
index b98d1b1..aef3731 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsColumns.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsEntity.html b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsEntity.html
index a63d728..282ed20 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsEntity.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsEntity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.SettingsColumns.html b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.SettingsColumns.html
index 3f02f5f2..c635c51 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.SettingsColumns.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.SettingsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.StatusUpdates.html b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.StatusUpdates.html
index ff069b0..fedbc82 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.StatusUpdates.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.StatusUpdates.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.html b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.html
index f635b59..d83dc5c 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.ContactsContract.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.LiveFolders.html b/docs/html/sdk/api_diff/14/changes/android.provider.LiveFolders.html
index 3db447e..b70dff2 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.LiveFolders.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.LiveFolders.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.MediaStore.Audio.AudioColumns.html b/docs/html/sdk/api_diff/14/changes/android.provider.MediaStore.Audio.AudioColumns.html
index 765bdb7..f4df69f 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.MediaStore.Audio.AudioColumns.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.MediaStore.Audio.AudioColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.Settings.Secure.html b/docs/html/sdk/api_diff/14/changes/android.provider.Settings.Secure.html
index 7cf1983..9dec838 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.Settings.Secure.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.Settings.Secure.html
@@ -260,7 +260,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/14/changes/android.provider.Settings.System.html
index 4705790..a56d613 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.Settings.System.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.Settings.System.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.provider.Settings.html b/docs/html/sdk/api_diff/14/changes/android.provider.Settings.html
index 7ff39a8..ef159a5 100644
--- a/docs/html/sdk/api_diff/14/changes/android.provider.Settings.html
+++ b/docs/html/sdk/api_diff/14/changes/android.provider.Settings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Allocation.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Allocation.html
index 4a3f6e3..f133e3b 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Allocation.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Allocation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.AllocationAdapter.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.AllocationAdapter.html
index 74682a6..0c6b0bb 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.AllocationAdapter.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.AllocationAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.BaseObj.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.BaseObj.html
index 67c4380..be7cb1f 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.BaseObj.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.BaseObj.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte2.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte2.html
index bf81390..9ee3ba5 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte2.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte2.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte3.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte3.html
index 89988ac..306bdfe 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte3.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte3.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte4.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte4.html
index 0317a2a..1e355d7 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte4.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Byte4.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Element.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Element.html
index b2bb1a0..6a53d80 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Element.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Element.html
@@ -290,7 +290,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.FieldPacker.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.FieldPacker.html
index b770687..1da0676 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.FieldPacker.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.FieldPacker.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Int2.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Int2.html
index 9338626..c71fc3f 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Int2.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Int2.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Int3.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Int3.html
index dd2929d..b777da9 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Int3.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Int3.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Int4.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Int4.html
index c7feb7c..e88bf41 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Int4.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Int4.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Long2.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Long2.html
index b70a7b9..4c75970 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Long2.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Long2.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Long3.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Long3.html
index 8f79513..d4c0c77 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Long3.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Long3.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Long4.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Long4.html
index 75e5c1c..4e47d97 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Long4.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Long4.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.RenderScriptGL.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.RenderScriptGL.html
index c95df17..1c1cd33 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.RenderScriptGL.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.RenderScriptGL.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Script.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Script.html
index e758f56..a60d3fd 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Script.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Script.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Short2.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Short2.html
index 29bcabc..39f216c 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Short2.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Short2.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Short3.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Short3.html
index b2c0790..f8e931f 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Short3.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Short3.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.renderscript.Short4.html b/docs/html/sdk/api_diff/14/changes/android.renderscript.Short4.html
index 1b295f9..0aa4ee2 100644
--- a/docs/html/sdk/api_diff/14/changes/android.renderscript.Short4.html
+++ b/docs/html/sdk/api_diff/14/changes/android.renderscript.Short4.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.service.wallpaper.WallpaperService.Engine.html b/docs/html/sdk/api_diff/14/changes/android.service.wallpaper.WallpaperService.Engine.html
index 16d0d11..01da7e94 100644
--- a/docs/html/sdk/api_diff/14/changes/android.service.wallpaper.WallpaperService.Engine.html
+++ b/docs/html/sdk/api_diff/14/changes/android.service.wallpaper.WallpaperService.Engine.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.speech.RecognizerIntent.html b/docs/html/sdk/api_diff/14/changes/android.speech.RecognizerIntent.html
index 11ec629..6a61ff0 100644
--- a/docs/html/sdk/api_diff/14/changes/android.speech.RecognizerIntent.html
+++ b/docs/html/sdk/api_diff/14/changes/android.speech.RecognizerIntent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.speech.SpeechRecognizer.html b/docs/html/sdk/api_diff/14/changes/android.speech.SpeechRecognizer.html
index b668613..377c7f9 100644
--- a/docs/html/sdk/api_diff/14/changes/android.speech.SpeechRecognizer.html
+++ b/docs/html/sdk/api_diff/14/changes/android.speech.SpeechRecognizer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.Engine.html b/docs/html/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.Engine.html
index bb0b4ac..7a01a44 100644
--- a/docs/html/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.Engine.html
+++ b/docs/html/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.Engine.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.html b/docs/html/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.html
index 24de846..6ac4c04 100644
--- a/docs/html/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.html
+++ b/docs/html/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/14/changes/android.test.mock.MockPackageManager.html
index 5dcf841..670dd3e 100644
--- a/docs/html/sdk/api_diff/14/changes/android.test.mock.MockPackageManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.test.mock.MockPackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.text.Layout.html b/docs/html/sdk/api_diff/14/changes/android.text.Layout.html
index 81cc608..952b01f 100644
--- a/docs/html/sdk/api_diff/14/changes/android.text.Layout.html
+++ b/docs/html/sdk/api_diff/14/changes/android.text.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.util.Config.html b/docs/html/sdk/api_diff/14/changes/android.util.Config.html
index 4d1cfe4..dbb7c4d 100644
--- a/docs/html/sdk/api_diff/14/changes/android.util.Config.html
+++ b/docs/html/sdk/api_diff/14/changes/android.util.Config.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.util.Patterns.html b/docs/html/sdk/api_diff/14/changes/android.util.Patterns.html
index c5c0367..2b05290 100644
--- a/docs/html/sdk/api_diff/14/changes/android.util.Patterns.html
+++ b/docs/html/sdk/api_diff/14/changes/android.util.Patterns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.util.SparseArray.html b/docs/html/sdk/api_diff/14/changes/android.util.SparseArray.html
index be509fa..091929c 100644
--- a/docs/html/sdk/api_diff/14/changes/android.util.SparseArray.html
+++ b/docs/html/sdk/api_diff/14/changes/android.util.SparseArray.html
@@ -114,7 +114,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.util.SparseBooleanArray.html b/docs/html/sdk/api_diff/14/changes/android.util.SparseBooleanArray.html
index 3b6a853..3a54bf2 100644
--- a/docs/html/sdk/api_diff/14/changes/android.util.SparseBooleanArray.html
+++ b/docs/html/sdk/api_diff/14/changes/android.util.SparseBooleanArray.html
@@ -114,7 +114,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.util.SparseIntArray.html b/docs/html/sdk/api_diff/14/changes/android.util.SparseIntArray.html
index 63577a3..669bb8e 100644
--- a/docs/html/sdk/api_diff/14/changes/android.util.SparseIntArray.html
+++ b/docs/html/sdk/api_diff/14/changes/android.util.SparseIntArray.html
@@ -114,7 +114,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.ActionMode.html b/docs/html/sdk/api_diff/14/changes/android.view.ActionMode.html
index f0b1252..35b4ab9 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.ActionMode.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.ActionMode.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.Gravity.html b/docs/html/sdk/api_diff/14/changes/android.view.Gravity.html
index 12aa839..ad676e3 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.Gravity.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.Gravity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.InputDevice.html b/docs/html/sdk/api_diff/14/changes/android.view.InputDevice.html
index 4636c47..f508e3b 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.InputDevice.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.InputDevice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/14/changes/android.view.KeyEvent.html
index df18feb..807a7b0 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.KeyEvent.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.KeyEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.MenuItem.html b/docs/html/sdk/api_diff/14/changes/android.view.MenuItem.html
index 4b72464..6c17673 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.MenuItem.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.MenuItem.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.MotionEvent.html b/docs/html/sdk/api_diff/14/changes/android.view.MotionEvent.html
index 1ab1946..a7e893b 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.MotionEvent.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.MotionEvent.html
@@ -264,7 +264,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.Surface.html b/docs/html/sdk/api_diff/14/changes/android.view.Surface.html
index d6d496b..b924e29 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.Surface.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.Surface.html
@@ -335,7 +335,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.View.html b/docs/html/sdk/api_diff/14/changes/android.view.View.html
index 38a21f7..97b52d8 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.View.html
@@ -380,7 +380,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/14/changes/android.view.ViewConfiguration.html
index 18025b0..f70de47 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.ViewConfiguration.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.ViewConfiguration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.ViewGroup.html b/docs/html/sdk/api_diff/14/changes/android.view.ViewGroup.html
index b869fb4..d541158 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.ViewGroup.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.ViewGroup.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.ViewParent.html b/docs/html/sdk/api_diff/14/changes/android.view.ViewParent.html
index 6cb3c63..106bc8f 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.ViewParent.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.ViewParent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.ViewPropertyAnimator.html b/docs/html/sdk/api_diff/14/changes/android.view.ViewPropertyAnimator.html
index 30e0734..3218fd5 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.ViewPropertyAnimator.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.ViewPropertyAnimator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.Window.html b/docs/html/sdk/api_diff/14/changes/android.view.Window.html
index 5c044fe..7b5eff6 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.Window.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.Window.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.WindowManager.LayoutParams.html b/docs/html/sdk/api_diff/14/changes/android.view.WindowManager.LayoutParams.html
index ef0bf07..3c6aca5 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.WindowManager.LayoutParams.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.WindowManager.LayoutParams.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityEvent.html b/docs/html/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityEvent.html
index 1b712e3..ebc49ff 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityEvent.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityEvent.html
@@ -499,7 +499,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityManager.html b/docs/html/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityManager.html
index 6a072f7..8f68e77 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodManager.html b/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodManager.html
index ae39429..72595ba 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodManager.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSession.html b/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSession.html
index c1ff358..023eb28 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSession.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSession.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSubtype.html b/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSubtype.html
index f8e18fa..1f95ffd 100644
--- a/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSubtype.html
+++ b/docs/html/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSubtype.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.webkit.WebChromeClient.html b/docs/html/sdk/api_diff/14/changes/android.webkit.WebChromeClient.html
index d88e6c9..f192bf6 100644
--- a/docs/html/sdk/api_diff/14/changes/android.webkit.WebChromeClient.html
+++ b/docs/html/sdk/api_diff/14/changes/android.webkit.WebChromeClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.webkit.WebSettings.TextSize.html b/docs/html/sdk/api_diff/14/changes/android.webkit.WebSettings.TextSize.html
index 5555034..08e1112 100644
--- a/docs/html/sdk/api_diff/14/changes/android.webkit.WebSettings.TextSize.html
+++ b/docs/html/sdk/api_diff/14/changes/android.webkit.WebSettings.TextSize.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/14/changes/android.webkit.WebSettings.html
index 2966bb8..d66a661 100644
--- a/docs/html/sdk/api_diff/14/changes/android.webkit.WebSettings.html
+++ b/docs/html/sdk/api_diff/14/changes/android.webkit.WebSettings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.webkit.WebView.HitTestResult.html b/docs/html/sdk/api_diff/14/changes/android.webkit.WebView.HitTestResult.html
index 7778856..4d82db6 100644
--- a/docs/html/sdk/api_diff/14/changes/android.webkit.WebView.HitTestResult.html
+++ b/docs/html/sdk/api_diff/14/changes/android.webkit.WebView.HitTestResult.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.AbsListView.html b/docs/html/sdk/api_diff/14/changes/android.widget.AbsListView.html
index c11c111..8a0d5a0 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.AbsListView.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.AbsListView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.AdapterViewAnimator.html b/docs/html/sdk/api_diff/14/changes/android.widget.AdapterViewAnimator.html
index 0d1bccd..fa7ac99 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.AdapterViewAnimator.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.AdapterViewAnimator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.ExpandableListView.html b/docs/html/sdk/api_diff/14/changes/android.widget.ExpandableListView.html
index 71b928a..5ce3ad3 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.ExpandableListView.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.ExpandableListView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.FrameLayout.html b/docs/html/sdk/api_diff/14/changes/android.widget.FrameLayout.html
index be62cbfc..8d6e25c 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.FrameLayout.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.FrameLayout.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.LinearLayout.html b/docs/html/sdk/api_diff/14/changes/android.widget.LinearLayout.html
index 33de5d1..3863dc0 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.LinearLayout.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.LinearLayout.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.OverScroller.html b/docs/html/sdk/api_diff/14/changes/android.widget.OverScroller.html
index 3c902cf..12e1d73 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.OverScroller.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.OverScroller.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.PopupMenu.html b/docs/html/sdk/api_diff/14/changes/android.widget.PopupMenu.html
index 5a82801..f283199 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.PopupMenu.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.PopupMenu.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/14/changes/android.widget.RemoteViews.html
index 2750719..60ec906 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.RemoteViews.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.RemoteViews.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.Scroller.html b/docs/html/sdk/api_diff/14/changes/android.widget.Scroller.html
index d586513..8a920de 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.Scroller.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.Scroller.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.SearchView.html b/docs/html/sdk/api_diff/14/changes/android.widget.SearchView.html
index 1116d30..d14053a 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.SearchView.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.SearchView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.StackView.html b/docs/html/sdk/api_diff/14/changes/android.widget.StackView.html
index 6b491d0..0e5ca9e 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.StackView.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.StackView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/android.widget.TextView.html b/docs/html/sdk/api_diff/14/changes/android.widget.TextView.html
index a2909ac..b90e8ce 100644
--- a/docs/html/sdk/api_diff/14/changes/android.widget.TextView.html
+++ b/docs/html/sdk/api_diff/14/changes/android.widget.TextView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/changes-summary.html b/docs/html/sdk/api_diff/14/changes/changes-summary.html
index 0cec877..1b3eae4 100644
--- a/docs/html/sdk/api_diff/14/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/14/changes/changes-summary.html
@@ -493,7 +493,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/classes_index_additions.html b/docs/html/sdk/api_diff/14/changes/classes_index_additions.html
index 72461ce..6b67985 100644
--- a/docs/html/sdk/api_diff/14/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/14/changes/classes_index_additions.html
@@ -407,7 +407,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.net.wifi.html#WpsInfo" class="hiddenlink" target="rightframe"><b>WpsInfo</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/classes_index_all.html b/docs/html/sdk/api_diff/14/changes/classes_index_all.html
index ef8ccca..f76fa80 100644
--- a/docs/html/sdk/api_diff/14/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/14/changes/classes_index_all.html
@@ -834,7 +834,7 @@
 <A HREF="android.view.Window.html" class="hiddenlink" target="rightframe">Window</A><br>
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
 <A HREF="pkg_android.net.wifi.html#WpsInfo" class="hiddenlink" target="rightframe"><b>WpsInfo</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/classes_index_changes.html b/docs/html/sdk/api_diff/14/changes/classes_index_changes.html
index 0710892..69c311c 100644
--- a/docs/html/sdk/api_diff/14/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/14/changes/classes_index_changes.html
@@ -744,7 +744,7 @@
 <A HREF="android.net.wifi.WifiManager.html" class="hiddenlink" target="rightframe">WifiManager</A><br>
 <A HREF="android.view.Window.html" class="hiddenlink" target="rightframe">Window</A><br>
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/classes_index_removals.html b/docs/html/sdk/api_diff/14/changes/classes_index_removals.html
index e6da73f..af7f1d0 100644
--- a/docs/html/sdk/api_diff/14/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/14/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/14/changes/constructors_index_additions.html
index 6d53ade..610df5e 100644
--- a/docs/html/sdk/api_diff/14/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/14/changes/constructors_index_additions.html
@@ -140,7 +140,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.speech.tts.TextToSpeech.html#android.speech.tts.TextToSpeech.ctor_added(android.content.Context, android.speech.tts.TextToSpeech.OnInitListener, java.lang.String)" class="hiddenlink" target="rightframe"><b>TextToSpeech</b>
 (<code>Context, OnInitListener, String</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/constructors_index_all.html b/docs/html/sdk/api_diff/14/changes/constructors_index_all.html
index 46b1d72..ddea0d5 100644
--- a/docs/html/sdk/api_diff/14/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/14/changes/constructors_index_all.html
@@ -144,7 +144,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.speech.tts.TextToSpeech.html#android.speech.tts.TextToSpeech.ctor_added(android.content.Context, android.speech.tts.TextToSpeech.OnInitListener, java.lang.String)" class="hiddenlink" target="rightframe"><b>TextToSpeech</b>
 (<code>Context, OnInitListener, String</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/14/changes/constructors_index_changes.html
index ceb631c..07182d7 100644
--- a/docs/html/sdk/api_diff/14/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/14/changes/constructors_index_changes.html
@@ -56,7 +56,7 @@
 (<code>int, SslCertificate</code>)</A></nobr>&nbsp;constructor<br>
 &nbsp;&nbsp;<nobr><A HREF="android.net.http.SslError.html#android.net.http.SslError.ctor_changed(int, java.security.cert.X509Certificate)" class="hiddenlink" target="rightframe">SslError
 (<code>int, X509Certificate</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/14/changes/constructors_index_removals.html
index f1a9952..84bcc63 100644
--- a/docs/html/sdk/api_diff/14/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/14/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/dalvik.annotation.TestTarget.html b/docs/html/sdk/api_diff/14/changes/dalvik.annotation.TestTarget.html
index d931d2e..15a0ec9 100644
--- a/docs/html/sdk/api_diff/14/changes/dalvik.annotation.TestTarget.html
+++ b/docs/html/sdk/api_diff/14/changes/dalvik.annotation.TestTarget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/dalvik.annotation.TestTargetClass.html b/docs/html/sdk/api_diff/14/changes/dalvik.annotation.TestTargetClass.html
index eee755b..fa88aa8 100644
--- a/docs/html/sdk/api_diff/14/changes/dalvik.annotation.TestTargetClass.html
+++ b/docs/html/sdk/api_diff/14/changes/dalvik.annotation.TestTargetClass.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/dalvik.system.DexClassLoader.html b/docs/html/sdk/api_diff/14/changes/dalvik.system.DexClassLoader.html
index a932a23..4d8d87e 100644
--- a/docs/html/sdk/api_diff/14/changes/dalvik.system.DexClassLoader.html
+++ b/docs/html/sdk/api_diff/14/changes/dalvik.system.DexClassLoader.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/dalvik.system.PathClassLoader.html b/docs/html/sdk/api_diff/14/changes/dalvik.system.PathClassLoader.html
index 030cef9..94a49dc 100644
--- a/docs/html/sdk/api_diff/14/changes/dalvik.system.PathClassLoader.html
+++ b/docs/html/sdk/api_diff/14/changes/dalvik.system.PathClassLoader.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/fields_index_additions.html b/docs/html/sdk/api_diff/14/changes/fields_index_additions.html
index 17190f8..f587dcf 100644
--- a/docs/html/sdk/api_diff/14/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/14/changes/fields_index_additions.html
@@ -1431,7 +1431,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.View.html#android.view.View.Y" class="hiddenlink" target="rightframe">Y</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/fields_index_all.html b/docs/html/sdk/api_diff/14/changes/fields_index_all.html
index 7c9cc67..fbf4e0f 100644
--- a/docs/html/sdk/api_diff/14/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/14/changes/fields_index_all.html
@@ -1579,7 +1579,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.View.html#android.view.View.Y" class="hiddenlink" target="rightframe">Y</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/fields_index_changes.html b/docs/html/sdk/api_diff/14/changes/fields_index_changes.html
index 6c6aabd..d264c09 100644
--- a/docs/html/sdk/api_diff/14/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/14/changes/fields_index_changes.html
@@ -269,7 +269,7 @@
 </nobr><br>
 <nobr><A HREF="android.provider.Settings.Secure.html#android.provider.Settings.Secure.WIFI_WATCHDOG_WATCH_LIST" class="hiddenlink" target="rightframe">WIFI_WATCHDOG_WATCH_LIST</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/fields_index_removals.html b/docs/html/sdk/api_diff/14/changes/fields_index_removals.html
index 6bc291f..92c20c0 100644
--- a/docs/html/sdk/api_diff/14/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/14/changes/fields_index_removals.html
@@ -149,7 +149,7 @@
 </nobr><br>
 <nobr><A HREF="android.view.Surface.html#android.view.Surface.SURFACE_HIDDEN" class="hiddenlink" target="rightframe"><strike>SURFACE_HIDDEN</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.io.FilePermission.html b/docs/html/sdk/api_diff/14/changes/java.io.FilePermission.html
index 07432bf..d968796 100644
--- a/docs/html/sdk/api_diff/14/changes/java.io.FilePermission.html
+++ b/docs/html/sdk/api_diff/14/changes/java.io.FilePermission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.io.ObjectInputStream.html b/docs/html/sdk/api_diff/14/changes/java.io.ObjectInputStream.html
index 21b48ec..9246fa2 100644
--- a/docs/html/sdk/api_diff/14/changes/java.io.ObjectInputStream.html
+++ b/docs/html/sdk/api_diff/14/changes/java.io.ObjectInputStream.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.io.ObjectOutputStream.html b/docs/html/sdk/api_diff/14/changes/java.io.ObjectOutputStream.html
index 0ab0ed26..7e13ce9 100644
--- a/docs/html/sdk/api_diff/14/changes/java.io.ObjectOutputStream.html
+++ b/docs/html/sdk/api_diff/14/changes/java.io.ObjectOutputStream.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.lang.Class.html b/docs/html/sdk/api_diff/14/changes/java.lang.Class.html
index 394b440..53400f0 100644
--- a/docs/html/sdk/api_diff/14/changes/java.lang.Class.html
+++ b/docs/html/sdk/api_diff/14/changes/java.lang.Class.html
@@ -231,7 +231,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.lang.ref.ReferenceQueue.html b/docs/html/sdk/api_diff/14/changes/java.lang.ref.ReferenceQueue.html
index 000481c..9d2a51c 100644
--- a/docs/html/sdk/api_diff/14/changes/java.lang.ref.ReferenceQueue.html
+++ b/docs/html/sdk/api_diff/14/changes/java.lang.ref.ReferenceQueue.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.lang.reflect.AccessibleObject.html b/docs/html/sdk/api_diff/14/changes/java.lang.reflect.AccessibleObject.html
index f90f9e5..92ca07b 100644
--- a/docs/html/sdk/api_diff/14/changes/java.lang.reflect.AccessibleObject.html
+++ b/docs/html/sdk/api_diff/14/changes/java.lang.reflect.AccessibleObject.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Constructor.html b/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Constructor.html
index acb83ef..9f0195a 100644
--- a/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Constructor.html
+++ b/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Constructor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Field.html b/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Field.html
index 19f58eb..b831c66d8 100644
--- a/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Field.html
+++ b/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Field.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Method.html b/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Method.html
index 2226260..290f038 100644
--- a/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Method.html
+++ b/docs/html/sdk/api_diff/14/changes/java.lang.reflect.Method.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.net.SocketPermission.html b/docs/html/sdk/api_diff/14/changes/java.net.SocketPermission.html
index 0c386f0..def0165 100644
--- a/docs/html/sdk/api_diff/14/changes/java.net.SocketPermission.html
+++ b/docs/html/sdk/api_diff/14/changes/java.net.SocketPermission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.security.AllPermission.html b/docs/html/sdk/api_diff/14/changes/java.security.AllPermission.html
index 25c745b..dcf27be 100644
--- a/docs/html/sdk/api_diff/14/changes/java.security.AllPermission.html
+++ b/docs/html/sdk/api_diff/14/changes/java.security.AllPermission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.security.BasicPermission.html b/docs/html/sdk/api_diff/14/changes/java.security.BasicPermission.html
index 24c047e..02c6483 100644
--- a/docs/html/sdk/api_diff/14/changes/java.security.BasicPermission.html
+++ b/docs/html/sdk/api_diff/14/changes/java.security.BasicPermission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.security.Permission.html b/docs/html/sdk/api_diff/14/changes/java.security.Permission.html
index 6356059..ff0c382 100644
--- a/docs/html/sdk/api_diff/14/changes/java.security.Permission.html
+++ b/docs/html/sdk/api_diff/14/changes/java.security.Permission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.security.UnresolvedPermission.html b/docs/html/sdk/api_diff/14/changes/java.security.UnresolvedPermission.html
index 8d90dc8..b9c6b87 100644
--- a/docs/html/sdk/api_diff/14/changes/java.security.UnresolvedPermission.html
+++ b/docs/html/sdk/api_diff/14/changes/java.security.UnresolvedPermission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/java.util.logging.Handler.html b/docs/html/sdk/api_diff/14/changes/java.util.logging.Handler.html
index 3a33e6e..f3a6a35 100644
--- a/docs/html/sdk/api_diff/14/changes/java.util.logging.Handler.html
+++ b/docs/html/sdk/api_diff/14/changes/java.util.logging.Handler.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/javax.security.auth.PrivateCredentialPermission.html b/docs/html/sdk/api_diff/14/changes/javax.security.auth.PrivateCredentialPermission.html
index cf64e41..2726306 100644
--- a/docs/html/sdk/api_diff/14/changes/javax.security.auth.PrivateCredentialPermission.html
+++ b/docs/html/sdk/api_diff/14/changes/javax.security.auth.PrivateCredentialPermission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/jdiff_help.html b/docs/html/sdk/api_diff/14/changes/jdiff_help.html
index 8220056..64f7af8 100644
--- a/docs/html/sdk/api_diff/14/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/14/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/14/changes/jdiff_statistics.html
index 6729816..fe9c3a9 100644
--- a/docs/html/sdk/api_diff/14/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/14/changes/jdiff_statistics.html
@@ -1332,7 +1332,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/14/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/14/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/14/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/methods_index_additions.html b/docs/html/sdk/api_diff/14/changes/methods_index_additions.html
index 58dd0bf..3d516a6 100644
--- a/docs/html/sdk/api_diff/14/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/14/changes/methods_index_additions.html
@@ -1025,7 +1025,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.view.inputmethod.InputMethodSession.html#android.view.inputmethod.InputMethodSession.viewClicked_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
 (<code>boolean</code>)</b>&nbsp;in&nbsp;android.view.inputmethod.InputMethodSession
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/methods_index_all.html b/docs/html/sdk/api_diff/14/changes/methods_index_all.html
index 3ba8441..7518de6 100644
--- a/docs/html/sdk/api_diff/14/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/14/changes/methods_index_all.html
@@ -1410,7 +1410,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.view.inputmethod.InputMethodSession.html#android.view.inputmethod.InputMethodSession.viewClicked_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
 (<code>boolean</code>)</b>&nbsp;in&nbsp;android.view.inputmethod.InputMethodSession
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/methods_index_changes.html b/docs/html/sdk/api_diff/14/changes/methods_index_changes.html
index 73a7207..3a5e917 100644
--- a/docs/html/sdk/api_diff/14/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/14/changes/methods_index_changes.html
@@ -451,7 +451,7 @@
 (<code>TextSize</code>)</A></nobr><br>
 <nobr><A HREF="android.os.Process.html#android.os.Process.supportsProcesses_changed()" class="hiddenlink" target="rightframe">supportsProcesses
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/methods_index_removals.html b/docs/html/sdk/api_diff/14/changes/methods_index_removals.html
index 1faf343..ddd4186 100644
--- a/docs/html/sdk/api_diff/14/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/14/changes/methods_index_removals.html
@@ -176,7 +176,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.Surface.html#android.view.Surface.unfreeze_removed()" class="hiddenlink" target="rightframe"><strike>unfreeze</strike>
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/packages_index_additions.html b/docs/html/sdk/api_diff/14/changes/packages_index_additions.html
index 04ac28c..afcc9d4 100644
--- a/docs/html/sdk/api_diff/14/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/14/changes/packages_index_additions.html
@@ -55,7 +55,7 @@
 <A HREF="changes-summary.html#android.security" class="hiddenlink" target="rightframe"><b>android.security</b></A><br>
 <A HREF="changes-summary.html#android.service.textservice" class="hiddenlink" target="rightframe"><b>android.service.textservice</b></A><br>
 <A HREF="changes-summary.html#android.view.textservice" class="hiddenlink" target="rightframe"><b>android.view.textservice</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/packages_index_all.html b/docs/html/sdk/api_diff/14/changes/packages_index_all.html
index 8aa185d..056db4b 100644
--- a/docs/html/sdk/api_diff/14/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/14/changes/packages_index_all.html
@@ -105,7 +105,7 @@
 <A HREF="pkg_java.security.html" class="hiddenlink" target="rightframe">java.security</A><br>
 <A HREF="pkg_java.util.logging.html" class="hiddenlink" target="rightframe">java.util.logging</A><br>
 <A HREF="pkg_javax.security.auth.html" class="hiddenlink" target="rightframe">javax.security.auth</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/packages_index_changes.html b/docs/html/sdk/api_diff/14/changes/packages_index_changes.html
index f0e838c..4f24c2e 100644
--- a/docs/html/sdk/api_diff/14/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/14/changes/packages_index_changes.html
@@ -100,7 +100,7 @@
 <A HREF="pkg_java.security.html" class="hiddenlink" target="rightframe">java.security</A><br>
 <A HREF="pkg_java.util.logging.html" class="hiddenlink" target="rightframe">java.util.logging</A><br>
 <A HREF="pkg_javax.security.auth.html" class="hiddenlink" target="rightframe">javax.security.auth</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/packages_index_removals.html b/docs/html/sdk/api_diff/14/changes/packages_index_removals.html
index d0ffabc..5f37b27 100644
--- a/docs/html/sdk/api_diff/14/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/14/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.accessibilityservice.html b/docs/html/sdk/api_diff/14/changes/pkg_android.accessibilityservice.html
index 0ab9feb..a75d5d62 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.accessibilityservice.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.accessibilityservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.accounts.html b/docs/html/sdk/api_diff/14/changes/pkg_android.accounts.html
index b19da2d..6271f75 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.accounts.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.accounts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.animation.html b/docs/html/sdk/api_diff/14/changes/pkg_android.animation.html
index 21148bf..5e7cf9c 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.animation.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.animation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.app.admin.html b/docs/html/sdk/api_diff/14/changes/pkg_android.app.admin.html
index 4dfa032..84880bf 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.app.admin.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.app.admin.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.app.backup.html b/docs/html/sdk/api_diff/14/changes/pkg_android.app.backup.html
index dd5324b..553ba8e 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.app.backup.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.app.backup.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.app.html b/docs/html/sdk/api_diff/14/changes/pkg_android.app.html
index 8e6d724..2b29deb 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.app.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.appwidget.html b/docs/html/sdk/api_diff/14/changes/pkg_android.appwidget.html
index a8651f3..f93ff7e 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.appwidget.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.appwidget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.bluetooth.html b/docs/html/sdk/api_diff/14/changes/pkg_android.bluetooth.html
index 1a5556c..18abc97 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.bluetooth.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.bluetooth.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.content.html b/docs/html/sdk/api_diff/14/changes/pkg_android.content.html
index 60d7c7e..9423e78 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.content.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/14/changes/pkg_android.content.pm.html
index 81ac942..ae942b1 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.content.pm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.database.sqlite.html b/docs/html/sdk/api_diff/14/changes/pkg_android.database.sqlite.html
index 39291b9..d05d9a2 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.database.sqlite.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.database.sqlite.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/14/changes/pkg_android.graphics.html
index b4b1517..78e0a96 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.graphics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/14/changes/pkg_android.hardware.html
index 6e6d40e..658d4ca 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.hardware.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.hardware.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.html b/docs/html/sdk/api_diff/14/changes/pkg_android.html
index 7f15e82..72a4769 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.inputmethodservice.html b/docs/html/sdk/api_diff/14/changes/pkg_android.inputmethodservice.html
index c020347..4fd9766 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.inputmethodservice.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.inputmethodservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.media.html b/docs/html/sdk/api_diff/14/changes/pkg_android.media.html
index 6269a65..ccbd289 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.net.html b/docs/html/sdk/api_diff/14/changes/pkg_android.net.html
index 3deb6bd..466b354 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.net.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.net.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.net.http.html b/docs/html/sdk/api_diff/14/changes/pkg_android.net.http.html
index cd51c20..2d74ebc 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.net.http.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.net.http.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.net.wifi.html b/docs/html/sdk/api_diff/14/changes/pkg_android.net.wifi.html
index 5ae5932..c8a8693 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.net.wifi.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.net.wifi.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.nfc.html b/docs/html/sdk/api_diff/14/changes/pkg_android.nfc.html
index a044e01..a6845a3 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.nfc.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.nfc.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.nfc.tech.html b/docs/html/sdk/api_diff/14/changes/pkg_android.nfc.tech.html
index c7e562d..5150e74 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.nfc.tech.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.nfc.tech.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/14/changes/pkg_android.opengl.html
index 0d66ed8..b34bf9d 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.opengl.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.opengl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.os.html b/docs/html/sdk/api_diff/14/changes/pkg_android.os.html
index 1a56e37..5947519 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.os.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.preference.html b/docs/html/sdk/api_diff/14/changes/pkg_android.preference.html
index ded1274..6a1075f 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.preference.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.preference.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/14/changes/pkg_android.provider.html
index 23a6407..e71e4b6 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.provider.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.provider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.renderscript.html b/docs/html/sdk/api_diff/14/changes/pkg_android.renderscript.html
index 03563af..3e4242f 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.renderscript.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.renderscript.html
@@ -267,7 +267,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.service.wallpaper.html b/docs/html/sdk/api_diff/14/changes/pkg_android.service.wallpaper.html
index c1bdfb1..7d01a65 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.service.wallpaper.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.service.wallpaper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.speech.html b/docs/html/sdk/api_diff/14/changes/pkg_android.speech.html
index bfbe14e..be16a62 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.speech.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.speech.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.speech.tts.html b/docs/html/sdk/api_diff/14/changes/pkg_android.speech.tts.html
index 21fca52..1564ad6 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.speech.tts.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.speech.tts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/14/changes/pkg_android.test.mock.html
index 169b498..77152b0 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.test.mock.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.test.mock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.text.html b/docs/html/sdk/api_diff/14/changes/pkg_android.text.html
index b286fa1..a669cc0 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.text.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.text.style.html b/docs/html/sdk/api_diff/14/changes/pkg_android.text.style.html
index dfda61e..a27cc58 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.text.style.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.text.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.util.html b/docs/html/sdk/api_diff/14/changes/pkg_android.util.html
index 6b9a20b..ffccd1c 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.util.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.util.html
@@ -155,7 +155,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.view.accessibility.html b/docs/html/sdk/api_diff/14/changes/pkg_android.view.accessibility.html
index c78a800..d1cc5bd 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.view.accessibility.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.view.accessibility.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.view.html b/docs/html/sdk/api_diff/14/changes/pkg_android.view.html
index 58e2441..88b3482 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.view.html
@@ -260,7 +260,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.view.inputmethod.html b/docs/html/sdk/api_diff/14/changes/pkg_android.view.inputmethod.html
index d422a5d..d4d50f4 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.view.inputmethod.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.view.inputmethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/14/changes/pkg_android.webkit.html
index 8d52055..68e6d29 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.webkit.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.webkit.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/14/changes/pkg_android.widget.html
index f5a9ede..aa78ce7 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_android.widget.html
@@ -260,7 +260,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_dalvik.annotation.html b/docs/html/sdk/api_diff/14/changes/pkg_dalvik.annotation.html
index 5d6987a..6ff76e4 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_dalvik.annotation.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_dalvik.annotation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_dalvik.system.html b/docs/html/sdk/api_diff/14/changes/pkg_dalvik.system.html
index 246b8dd..bd61d60 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_dalvik.system.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_dalvik.system.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_java.io.html b/docs/html/sdk/api_diff/14/changes/pkg_java.io.html
index 4291f38..b5e4479 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_java.io.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_java.io.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_java.lang.html b/docs/html/sdk/api_diff/14/changes/pkg_java.lang.html
index fcf6b25..4c61ae1 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_java.lang.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_java.lang.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_java.lang.ref.html b/docs/html/sdk/api_diff/14/changes/pkg_java.lang.ref.html
index 1aabf82..f50ea8a 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_java.lang.ref.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_java.lang.ref.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_java.lang.reflect.html b/docs/html/sdk/api_diff/14/changes/pkg_java.lang.reflect.html
index ca050ee..f320e32 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_java.lang.reflect.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_java.lang.reflect.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_java.net.html b/docs/html/sdk/api_diff/14/changes/pkg_java.net.html
index 37a8105..b69348e 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_java.net.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_java.net.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_java.security.html b/docs/html/sdk/api_diff/14/changes/pkg_java.security.html
index 38d8f1f..00ed711 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_java.security.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_java.security.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_java.util.logging.html b/docs/html/sdk/api_diff/14/changes/pkg_java.util.logging.html
index cac83f2..abf9775 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_java.util.logging.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_java.util.logging.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/14/changes/pkg_javax.security.auth.html b/docs/html/sdk/api_diff/14/changes/pkg_javax.security.auth.html
index 9c134cf..4dffa60 100644
--- a/docs/html/sdk/api_diff/14/changes/pkg_javax.security.auth.html
+++ b/docs/html/sdk/api_diff/14/changes/pkg_javax.security.auth.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/15/changes/alldiffs_index_additions.html
index 25c2b0a..08cf438 100644
--- a/docs/html/sdk/api_diff/15/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/15/changes/alldiffs_index_additions.html
@@ -606,7 +606,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.WRITE_SOCIAL_STREAM" class="hiddenlink" target="rightframe">WRITE_SOCIAL_STREAM</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/15/changes/alldiffs_index_all.html
index c4a67da..fe487e0 100644
--- a/docs/html/sdk/api_diff/15/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/15/changes/alldiffs_index_all.html
@@ -814,7 +814,7 @@
 <!-- Field WRITE_SOCIAL_STREAM -->
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.WRITE_SOCIAL_STREAM" class="hiddenlink" target="rightframe">WRITE_SOCIAL_STREAM</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/15/changes/alldiffs_index_changes.html
index 5ee3803..fd61052 100644
--- a/docs/html/sdk/api_diff/15/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/15/changes/alldiffs_index_changes.html
@@ -384,7 +384,7 @@
 <A HREF="android.webkit.WebSettings.html" class="hiddenlink" target="rightframe">WebSettings</A><br>
 <!-- Class WebSettings.LayoutAlgorithm -->
 <A HREF="android.webkit.WebSettings.LayoutAlgorithm.html" class="hiddenlink" target="rightframe">WebSettings.LayoutAlgorithm</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/15/changes/alldiffs_index_removals.html
index 68d2c20..48c9fcd 100644
--- a/docs/html/sdk/api_diff/15/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/15/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/15/changes/android.Manifest.permission.html
index 37bbd8c..00c6a8e 100644
--- a/docs/html/sdk/api_diff/15/changes/android.Manifest.permission.html
+++ b/docs/html/sdk/api_diff/15/changes/android.Manifest.permission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.app.Fragment.html b/docs/html/sdk/api_diff/15/changes/android.app.Fragment.html
index 2b1976e..e7710bc 100644
--- a/docs/html/sdk/api_diff/15/changes/android.app.Fragment.html
+++ b/docs/html/sdk/api_diff/15/changes/android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.appwidget.AppWidgetHostView.html b/docs/html/sdk/api_diff/15/changes/android.appwidget.AppWidgetHostView.html
index 59bdb1f..1003446 100644
--- a/docs/html/sdk/api_diff/15/changes/android.appwidget.AppWidgetHostView.html
+++ b/docs/html/sdk/api_diff/15/changes/android.appwidget.AppWidgetHostView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.bluetooth.BluetoothDevice.html b/docs/html/sdk/api_diff/15/changes/android.bluetooth.BluetoothDevice.html
index a2c87cd..c046a82 100644
--- a/docs/html/sdk/api_diff/15/changes/android.bluetooth.BluetoothDevice.html
+++ b/docs/html/sdk/api_diff/15/changes/android.bluetooth.BluetoothDevice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.content.Context.html b/docs/html/sdk/api_diff/15/changes/android.content.Context.html
index b3b8f1e..7a3a41b 100644
--- a/docs/html/sdk/api_diff/15/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/15/changes/android.content.Context.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.content.Intent.html b/docs/html/sdk/api_diff/15/changes/android.content.Intent.html
index dd2f466..038b214 100644
--- a/docs/html/sdk/api_diff/15/changes/android.content.Intent.html
+++ b/docs/html/sdk/api_diff/15/changes/android.content.Intent.html
@@ -200,7 +200,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.database.CursorWindow.html b/docs/html/sdk/api_diff/15/changes/android.database.CursorWindow.html
index 4ba4252..bc4fdb8 100644
--- a/docs/html/sdk/api_diff/15/changes/android.database.CursorWindow.html
+++ b/docs/html/sdk/api_diff/15/changes/android.database.CursorWindow.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.graphics.SurfaceTexture.html b/docs/html/sdk/api_diff/15/changes/android.graphics.SurfaceTexture.html
index ca44add..e903928 100644
--- a/docs/html/sdk/api_diff/15/changes/android.graphics.SurfaceTexture.html
+++ b/docs/html/sdk/api_diff/15/changes/android.graphics.SurfaceTexture.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.hardware.Camera.Parameters.html b/docs/html/sdk/api_diff/15/changes/android.hardware.Camera.Parameters.html
index 02afe90..75674df 100644
--- a/docs/html/sdk/api_diff/15/changes/android.hardware.Camera.Parameters.html
+++ b/docs/html/sdk/api_diff/15/changes/android.hardware.Camera.Parameters.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.media.CamcorderProfile.html b/docs/html/sdk/api_diff/15/changes/android.media.CamcorderProfile.html
index 6b556bc..6e20d2b 100644
--- a/docs/html/sdk/api_diff/15/changes/android.media.CamcorderProfile.html
+++ b/docs/html/sdk/api_diff/15/changes/android.media.CamcorderProfile.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.media.MediaMetadataRetriever.html b/docs/html/sdk/api_diff/15/changes/android.media.MediaMetadataRetriever.html
index 8247ea9..81b78ee 100644
--- a/docs/html/sdk/api_diff/15/changes/android.media.MediaMetadataRetriever.html
+++ b/docs/html/sdk/api_diff/15/changes/android.media.MediaMetadataRetriever.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.opengl.GLES11Ext.html b/docs/html/sdk/api_diff/15/changes/android.opengl.GLES11Ext.html
index 50913ad..fe433a6 100644
--- a/docs/html/sdk/api_diff/15/changes/android.opengl.GLES11Ext.html
+++ b/docs/html/sdk/api_diff/15/changes/android.opengl.GLES11Ext.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/15/changes/android.os.Build.VERSION_CODES.html
index 8399457..a5c0a50 100644
--- a/docs/html/sdk/api_diff/15/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/15/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.os.IBinder.html b/docs/html/sdk/api_diff/15/changes/android.os.IBinder.html
index 1d090ed..78a9c4b 100644
--- a/docs/html/sdk/api_diff/15/changes/android.os.IBinder.html
+++ b/docs/html/sdk/api_diff/15/changes/android.os.IBinder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.os.RemoteException.html b/docs/html/sdk/api_diff/15/changes/android.os.RemoteException.html
index 55659e3..af69afa 100644
--- a/docs/html/sdk/api_diff/15/changes/android.os.RemoteException.html
+++ b/docs/html/sdk/api_diff/15/changes/android.os.RemoteException.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.AttendeesColumns.html b/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.AttendeesColumns.html
index d2c1f61..e7539e7 100644
--- a/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.AttendeesColumns.html
+++ b/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.AttendeesColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.CalendarColumns.html b/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.CalendarColumns.html
index 60e05ef..a2e64e0 100644
--- a/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.CalendarColumns.html
+++ b/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.CalendarColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.EventsColumns.html b/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.EventsColumns.html
index 6251360..09a3358 100644
--- a/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.EventsColumns.html
+++ b/docs/html/sdk/api_diff/15/changes/android.provider.CalendarContract.EventsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.provider.MediaStore.html b/docs/html/sdk/api_diff/15/changes/android.provider.MediaStore.html
index 34ee9a8..f4f16b2 100644
--- a/docs/html/sdk/api_diff/15/changes/android.provider.MediaStore.html
+++ b/docs/html/sdk/api_diff/15/changes/android.provider.MediaStore.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.provider.Settings.Secure.html b/docs/html/sdk/api_diff/15/changes/android.provider.Settings.Secure.html
index f1cb57b..d81c5f3 100644
--- a/docs/html/sdk/api_diff/15/changes/android.provider.Settings.Secure.html
+++ b/docs/html/sdk/api_diff/15/changes/android.provider.Settings.Secure.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.service.textservice.SpellCheckerService.Session.html b/docs/html/sdk/api_diff/15/changes/android.service.textservice.SpellCheckerService.Session.html
index 019b98a..5ea9263 100644
--- a/docs/html/sdk/api_diff/15/changes/android.service.textservice.SpellCheckerService.Session.html
+++ b/docs/html/sdk/api_diff/15/changes/android.service.textservice.SpellCheckerService.Session.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.service.wallpaper.WallpaperService.Engine.html b/docs/html/sdk/api_diff/15/changes/android.service.wallpaper.WallpaperService.Engine.html
index 356cf9d..7a59f14 100644
--- a/docs/html/sdk/api_diff/15/changes/android.service.wallpaper.WallpaperService.Engine.html
+++ b/docs/html/sdk/api_diff/15/changes/android.service.wallpaper.WallpaperService.Engine.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.Engine.html b/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.Engine.html
index 6f53f8f..8228628 100644
--- a/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.Engine.html
+++ b/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.Engine.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.html b/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.html
index e6e22a5..6f1bae0 100644
--- a/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.html
+++ b/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeechService.html b/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeechService.html
index e772e19..face4e2 100644
--- a/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeechService.html
+++ b/docs/html/sdk/api_diff/15/changes/android.speech.tts.TextToSpeechService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.text.style.SuggestionSpan.html b/docs/html/sdk/api_diff/15/changes/android.text.style.SuggestionSpan.html
index 0add186..6eaf050 100644
--- a/docs/html/sdk/api_diff/15/changes/android.text.style.SuggestionSpan.html
+++ b/docs/html/sdk/api_diff/15/changes/android.text.style.SuggestionSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/15/changes/android.view.KeyEvent.html
index 70843f6..acfa8a0 100644
--- a/docs/html/sdk/api_diff/15/changes/android.view.KeyEvent.html
+++ b/docs/html/sdk/api_diff/15/changes/android.view.KeyEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.view.View.html b/docs/html/sdk/api_diff/15/changes/android.view.View.html
index fa772f9..26a6177 100644
--- a/docs/html/sdk/api_diff/15/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/15/changes/android.view.View.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.view.accessibility.AccessibilityRecord.html b/docs/html/sdk/api_diff/15/changes/android.view.accessibility.AccessibilityRecord.html
index b88467c..e70ce72 100644
--- a/docs/html/sdk/api_diff/15/changes/android.view.accessibility.AccessibilityRecord.html
+++ b/docs/html/sdk/api_diff/15/changes/android.view.accessibility.AccessibilityRecord.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.view.textservice.SpellCheckerSession.html b/docs/html/sdk/api_diff/15/changes/android.view.textservice.SpellCheckerSession.html
index 0782c9c..b5720c2 100644
--- a/docs/html/sdk/api_diff/15/changes/android.view.textservice.SpellCheckerSession.html
+++ b/docs/html/sdk/api_diff/15/changes/android.view.textservice.SpellCheckerSession.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.view.textservice.SuggestionsInfo.html b/docs/html/sdk/api_diff/15/changes/android.view.textservice.SuggestionsInfo.html
index bd1859b..f84d107 100644
--- a/docs/html/sdk/api_diff/15/changes/android.view.textservice.SuggestionsInfo.html
+++ b/docs/html/sdk/api_diff/15/changes/android.view.textservice.SuggestionsInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.webkit.WebSettings.LayoutAlgorithm.html b/docs/html/sdk/api_diff/15/changes/android.webkit.WebSettings.LayoutAlgorithm.html
index 40424ed..d4aa885 100644
--- a/docs/html/sdk/api_diff/15/changes/android.webkit.WebSettings.LayoutAlgorithm.html
+++ b/docs/html/sdk/api_diff/15/changes/android.webkit.WebSettings.LayoutAlgorithm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/15/changes/android.webkit.WebSettings.html
index b7005a0..fd971ee 100644
--- a/docs/html/sdk/api_diff/15/changes/android.webkit.WebSettings.html
+++ b/docs/html/sdk/api_diff/15/changes/android.webkit.WebSettings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/15/changes/android.widget.RemoteViews.html
index 50cacab..0d8512d 100644
--- a/docs/html/sdk/api_diff/15/changes/android.widget.RemoteViews.html
+++ b/docs/html/sdk/api_diff/15/changes/android.widget.RemoteViews.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/changes-summary.html b/docs/html/sdk/api_diff/15/changes/changes-summary.html
index 7f00168..8bbac97 100644
--- a/docs/html/sdk/api_diff/15/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/15/changes/changes-summary.html
@@ -261,7 +261,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/classes_index_additions.html b/docs/html/sdk/api_diff/15/changes/classes_index_additions.html
index 16969ea..5e21dcd 100644
--- a/docs/html/sdk/api_diff/15/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/15/changes/classes_index_additions.html
@@ -77,7 +77,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.speech.tts.html#UtteranceProgressListener" class="hiddenlink" target="rightframe"><b>UtteranceProgressListener</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/classes_index_all.html b/docs/html/sdk/api_diff/15/changes/classes_index_all.html
index e03eba3..f18a87c 100644
--- a/docs/html/sdk/api_diff/15/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/15/changes/classes_index_all.html
@@ -331,7 +331,7 @@
 <A HREF="android.service.wallpaper.WallpaperService.Engine.html" class="hiddenlink" target="rightframe">WallpaperService.Engine</A><br>
 <A HREF="android.webkit.WebSettings.html" class="hiddenlink" target="rightframe">WebSettings</A><br>
 <A HREF="android.webkit.WebSettings.LayoutAlgorithm.html" class="hiddenlink" target="rightframe">WebSettings.LayoutAlgorithm</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/classes_index_changes.html b/docs/html/sdk/api_diff/15/changes/classes_index_changes.html
index 3109b6e..23f2320 100644
--- a/docs/html/sdk/api_diff/15/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/15/changes/classes_index_changes.html
@@ -289,7 +289,7 @@
 <A HREF="android.service.wallpaper.WallpaperService.Engine.html" class="hiddenlink" target="rightframe">WallpaperService.Engine</A><br>
 <A HREF="android.webkit.WebSettings.html" class="hiddenlink" target="rightframe">WebSettings</A><br>
 <A HREF="android.webkit.WebSettings.LayoutAlgorithm.html" class="hiddenlink" target="rightframe">WebSettings.LayoutAlgorithm</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/classes_index_removals.html b/docs/html/sdk/api_diff/15/changes/classes_index_removals.html
index e6da73f..af7f1d0 100644
--- a/docs/html/sdk/api_diff/15/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/15/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/15/changes/constructors_index_additions.html
index c834d4f..b67d085 100644
--- a/docs/html/sdk/api_diff/15/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/15/changes/constructors_index_additions.html
@@ -61,7 +61,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.os.RemoteException.html#android.os.RemoteException.ctor_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>RemoteException</b>
 (<code>String</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/constructors_index_all.html b/docs/html/sdk/api_diff/15/changes/constructors_index_all.html
index 4e8e692..0470e4b 100644
--- a/docs/html/sdk/api_diff/15/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/15/changes/constructors_index_all.html
@@ -64,7 +64,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.os.RemoteException.html#android.os.RemoteException.ctor_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>RemoteException</b>
 (<code>String</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/15/changes/constructors_index_changes.html
index 74dc718..30f7b8d 100644
--- a/docs/html/sdk/api_diff/15/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/15/changes/constructors_index_changes.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.database.CursorWindow.html#android.database.CursorWindow.ctor_changed(boolean)" class="hiddenlink" target="rightframe">CursorWindow
 (<code>boolean</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/15/changes/constructors_index_removals.html
index f1a9952..84bcc63 100644
--- a/docs/html/sdk/api_diff/15/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/15/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/fields_index_additions.html b/docs/html/sdk/api_diff/15/changes/fields_index_additions.html
index 6012ce8..d10ec8a 100644
--- a/docs/html/sdk/api_diff/15/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/15/changes/fields_index_additions.html
@@ -331,7 +331,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.WRITE_SOCIAL_STREAM" class="hiddenlink" target="rightframe">WRITE_SOCIAL_STREAM</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/fields_index_all.html b/docs/html/sdk/api_diff/15/changes/fields_index_all.html
index 66fbf8f..5d4f366 100644
--- a/docs/html/sdk/api_diff/15/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/15/changes/fields_index_all.html
@@ -365,7 +365,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.WRITE_SOCIAL_STREAM" class="hiddenlink" target="rightframe">WRITE_SOCIAL_STREAM</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/fields_index_changes.html b/docs/html/sdk/api_diff/15/changes/fields_index_changes.html
index 82b093d..394c152 100644
--- a/docs/html/sdk/api_diff/15/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/15/changes/fields_index_changes.html
@@ -61,7 +61,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.provider.MediaStore.html#android.provider.MediaStore.INTENT_ACTION_MUSIC_PLAYER" class="hiddenlink" target="rightframe">INTENT_ACTION_MUSIC_PLAYER</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/fields_index_removals.html b/docs/html/sdk/api_diff/15/changes/fields_index_removals.html
index 9f62d88..9ad97a7 100644
--- a/docs/html/sdk/api_diff/15/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/15/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/jdiff_help.html b/docs/html/sdk/api_diff/15/changes/jdiff_help.html
index 4152998..f835a2b 100644
--- a/docs/html/sdk/api_diff/15/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/15/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/15/changes/jdiff_statistics.html
index 2c15e76..2dd3aad 100644
--- a/docs/html/sdk/api_diff/15/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/15/changes/jdiff_statistics.html
@@ -434,7 +434,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/15/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/15/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/15/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/methods_index_additions.html b/docs/html/sdk/api_diff/15/changes/methods_index_additions.html
index 260ec1e..bb778cb 100644
--- a/docs/html/sdk/api_diff/15/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/15/changes/methods_index_additions.html
@@ -185,7 +185,7 @@
 (<code>boolean</code>)</A></nobr><br>
 <nobr><A HREF="android.hardware.Camera.Parameters.html#android.hardware.Camera.Parameters.setVideoStabilization_added(boolean)" class="hiddenlink" target="rightframe"><b>setVideoStabilization</b>
 (<code>boolean</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/methods_index_all.html b/docs/html/sdk/api_diff/15/changes/methods_index_all.html
index 2f0e734..1b23b4d 100644
--- a/docs/html/sdk/api_diff/15/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/15/changes/methods_index_all.html
@@ -191,7 +191,7 @@
 (<code>boolean</code>)</A></nobr><br>
 <nobr><A HREF="android.hardware.Camera.Parameters.html#android.hardware.Camera.Parameters.setVideoStabilization_added(boolean)" class="hiddenlink" target="rightframe"><b>setVideoStabilization</b>
 (<code>boolean</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/methods_index_changes.html b/docs/html/sdk/api_diff/15/changes/methods_index_changes.html
index d22fde3..a4a1dce 100644
--- a/docs/html/sdk/api_diff/15/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/15/changes/methods_index_changes.html
@@ -63,7 +63,7 @@
 (<code>LayoutAlgorithm</code>)</A></nobr><br>
 <nobr><A HREF="android.speech.tts.TextToSpeech.html#android.speech.tts.TextToSpeech.setOnUtteranceCompletedListener_changed(android.speech.tts.TextToSpeech.OnUtteranceCompletedListener)" class="hiddenlink" target="rightframe">setOnUtteranceCompletedListener
 (<code>OnUtteranceCompletedListener</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/methods_index_removals.html b/docs/html/sdk/api_diff/15/changes/methods_index_removals.html
index b5aea4f..b9d406e 100644
--- a/docs/html/sdk/api_diff/15/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/15/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/packages_index_additions.html b/docs/html/sdk/api_diff/15/changes/packages_index_additions.html
index 1776064..cb6e9d5 100644
--- a/docs/html/sdk/api_diff/15/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/15/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/packages_index_all.html b/docs/html/sdk/api_diff/15/changes/packages_index_all.html
index ef66568..4db1089 100644
--- a/docs/html/sdk/api_diff/15/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/15/changes/packages_index_all.html
@@ -71,7 +71,7 @@
 <A HREF="pkg_android.view.textservice.html" class="hiddenlink" target="rightframe">android.view.textservice</A><br>
 <A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
 <A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/packages_index_changes.html b/docs/html/sdk/api_diff/15/changes/packages_index_changes.html
index a2b0a19..634a3ea 100644
--- a/docs/html/sdk/api_diff/15/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/15/changes/packages_index_changes.html
@@ -71,7 +71,7 @@
 <A HREF="pkg_android.view.textservice.html" class="hiddenlink" target="rightframe">android.view.textservice</A><br>
 <A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
 <A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/packages_index_removals.html b/docs/html/sdk/api_diff/15/changes/packages_index_removals.html
index 9fd0f7e..eaaeb6c 100644
--- a/docs/html/sdk/api_diff/15/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/15/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.app.html b/docs/html/sdk/api_diff/15/changes/pkg_android.app.html
index 1b2e65b..a92180e 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.app.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.appwidget.html b/docs/html/sdk/api_diff/15/changes/pkg_android.appwidget.html
index 46bc1dc..63d6dd7 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.appwidget.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.appwidget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.bluetooth.html b/docs/html/sdk/api_diff/15/changes/pkg_android.bluetooth.html
index 16e9db7..1bec24c 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.bluetooth.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.bluetooth.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.content.html b/docs/html/sdk/api_diff/15/changes/pkg_android.content.html
index 036a96e..45fd6fa 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.content.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.database.html b/docs/html/sdk/api_diff/15/changes/pkg_android.database.html
index a8a2963..9367954 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.database.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.database.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/15/changes/pkg_android.graphics.html
index 8388466..f5d4f09 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/15/changes/pkg_android.hardware.html
index 7b02735..f5daf6c 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.hardware.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.hardware.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.html b/docs/html/sdk/api_diff/15/changes/pkg_android.html
index 3af011e..f6a2900 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.media.html b/docs/html/sdk/api_diff/15/changes/pkg_android.media.html
index e537fc9..81622bf 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/15/changes/pkg_android.opengl.html
index dff132d..1afb5cb 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.opengl.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.opengl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.os.html b/docs/html/sdk/api_diff/15/changes/pkg_android.os.html
index ba005a0..7d2868e 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.os.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/15/changes/pkg_android.provider.html
index 93209fa..88573fc 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.provider.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.provider.html
@@ -204,7 +204,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.service.textservice.html b/docs/html/sdk/api_diff/15/changes/pkg_android.service.textservice.html
index 5a14d82..cb5e605 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.service.textservice.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.service.textservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.service.wallpaper.html b/docs/html/sdk/api_diff/15/changes/pkg_android.service.wallpaper.html
index b6f52e4..9ba5bcc 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.service.wallpaper.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.service.wallpaper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.speech.tts.html b/docs/html/sdk/api_diff/15/changes/pkg_android.speech.tts.html
index 1afe9e3..a826b71 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.speech.tts.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.speech.tts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.text.style.html b/docs/html/sdk/api_diff/15/changes/pkg_android.text.style.html
index 5936ed5..105ad3f 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.text.style.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.text.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.view.accessibility.html b/docs/html/sdk/api_diff/15/changes/pkg_android.view.accessibility.html
index 7cca96d5..1607519 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.view.accessibility.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.view.html b/docs/html/sdk/api_diff/15/changes/pkg_android.view.html
index a9c91e0..d0693ec 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.view.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.view.textservice.html b/docs/html/sdk/api_diff/15/changes/pkg_android.view.textservice.html
index 2d874b2..31bb50c 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.view.textservice.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.view.textservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/15/changes/pkg_android.webkit.html
index ad63378..62d2774 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.webkit.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.webkit.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/15/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/15/changes/pkg_android.widget.html
index 02e4b806..99c3bbb 100644
--- a/docs/html/sdk/api_diff/15/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/15/changes/pkg_android.widget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/16/changes/alldiffs_index_additions.html
index d47f571..7c542a1 100644
--- a/docs/html/sdk/api_diff/16/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/16/changes/alldiffs_index_additions.html
@@ -2541,7 +2541,7 @@
 <!-- Method writeToParcel -->
 <nobr><A HREF="android.view.KeyCharacterMap.html#android.view.KeyCharacterMap.writeToParcel_added(android.os.Parcel, int)" class="hiddenlink" target="rightframe"><b>writeToParcel</b>
 (<code>Parcel, int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/16/changes/alldiffs_index_all.html
index 02c78b4..136caf7 100644
--- a/docs/html/sdk/api_diff/16/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/16/changes/alldiffs_index_all.html
@@ -4037,7 +4037,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.View.html#android.view.View.Y" class="hiddenlink" target="rightframe">Y</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/16/changes/alldiffs_index_changes.html
index a043252..482e396 100644
--- a/docs/html/sdk/api_diff/16/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/16/changes/alldiffs_index_changes.html
@@ -1964,7 +1964,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.View.html#android.view.View.Y" class="hiddenlink" target="rightframe">Y</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/16/changes/alldiffs_index_removals.html
index 8175b8d..d0ee440 100644
--- a/docs/html/sdk/api_diff/16/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/16/changes/alldiffs_index_removals.html
@@ -268,7 +268,7 @@
 <!-- Constructor WebStorage -->
 <nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.ctor_removed()" class="hiddenlink" target="rightframe"><strike>WebStorage</strike>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/16/changes/android.Manifest.permission.html
index 3ec476f..260be39c 100644
--- a/docs/html/sdk/api_diff/16/changes/android.Manifest.permission.html
+++ b/docs/html/sdk/api_diff/16/changes/android.Manifest.permission.html
@@ -160,7 +160,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.R.attr.html b/docs/html/sdk/api_diff/16/changes/android.R.attr.html
index a4db7cf..347a291 100644
--- a/docs/html/sdk/api_diff/16/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/16/changes/android.R.attr.html
@@ -203,7 +203,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.R.style.html b/docs/html/sdk/api_diff/16/changes/android.R.style.html
index 988463c..097a5c1 100644
--- a/docs/html/sdk/api_diff/16/changes/android.R.style.html
+++ b/docs/html/sdk/api_diff/16/changes/android.R.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityService.html b/docs/html/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityService.html
index 227ab96..047bd74 100644
--- a/docs/html/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityService.html
+++ b/docs/html/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityService.html
@@ -277,7 +277,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityServiceInfo.html b/docs/html/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityServiceInfo.html
index c5f3e7c..067613d 100644
--- a/docs/html/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityServiceInfo.html
+++ b/docs/html/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityServiceInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.animation.LayoutTransition.html b/docs/html/sdk/api_diff/16/changes/android.animation.LayoutTransition.html
index a170508..7f1fa3f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.animation.LayoutTransition.html
+++ b/docs/html/sdk/api_diff/16/changes/android.animation.LayoutTransition.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.Activity.html b/docs/html/sdk/api_diff/16/changes/android.app.Activity.html
index b15de59..fcaa6b3 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.Activity.html
+++ b/docs/html/sdk/api_diff/16/changes/android.app.Activity.html
@@ -213,7 +213,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.MemoryInfo.html b/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.MemoryInfo.html
index 99c8ca0..a229d1a 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.MemoryInfo.html
+++ b/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.MemoryInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.RunningAppProcessInfo.html b/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.RunningAppProcessInfo.html
index 041094e..8001e2b 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.RunningAppProcessInfo.html
+++ b/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.RunningAppProcessInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.html b/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.html
index 309551c..5c7002a 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.app.ActivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.DownloadManager.Request.html b/docs/html/sdk/api_diff/16/changes/android.app.DownloadManager.Request.html
index 97f5b10..4b475f1 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.DownloadManager.Request.html
+++ b/docs/html/sdk/api_diff/16/changes/android.app.DownloadManager.Request.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.Fragment.html b/docs/html/sdk/api_diff/16/changes/android.app.Fragment.html
index d60cecb..3ec3e1f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.Fragment.html
+++ b/docs/html/sdk/api_diff/16/changes/android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.KeyguardManager.html b/docs/html/sdk/api_diff/16/changes/android.app.KeyguardManager.html
index dd6dd34..33cae40 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.KeyguardManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.app.KeyguardManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.Notification.Builder.html b/docs/html/sdk/api_diff/16/changes/android.app.Notification.Builder.html
index 85d595a..2cf58b9 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.Notification.Builder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.app.Notification.Builder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.Notification.html b/docs/html/sdk/api_diff/16/changes/android.app.Notification.html
index 842bd39..b2e5a67 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.Notification.html
+++ b/docs/html/sdk/api_diff/16/changes/android.app.Notification.html
@@ -167,7 +167,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.PendingIntent.html b/docs/html/sdk/api_diff/16/changes/android.app.PendingIntent.html
index d262768..8fd553e 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.PendingIntent.html
+++ b/docs/html/sdk/api_diff/16/changes/android.app.PendingIntent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.SearchManager.html b/docs/html/sdk/api_diff/16/changes/android.app.SearchManager.html
index 285781e..7c52a0b 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.SearchManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.app.SearchManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.app.WallpaperManager.html b/docs/html/sdk/api_diff/16/changes/android.app.WallpaperManager.html
index 1fb21b4..f830fa2 100644
--- a/docs/html/sdk/api_diff/16/changes/android.app.WallpaperManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.app.WallpaperManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetHostView.html b/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetHostView.html
index be9f0c8..113f94a 100644
--- a/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetHostView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetHostView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetManager.html b/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetManager.html
index 47b3c4a..b5177d1 100644
--- a/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetManager.html
@@ -201,7 +201,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetProvider.html b/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetProvider.html
index e8f677f..233fef6 100644
--- a/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetProvider.html
+++ b/docs/html/sdk/api_diff/16/changes/android.appwidget.AppWidgetProvider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.bluetooth.BluetoothAdapter.html b/docs/html/sdk/api_diff/16/changes/android.bluetooth.BluetoothAdapter.html
index cb152f9..e236659 100644
--- a/docs/html/sdk/api_diff/16/changes/android.bluetooth.BluetoothAdapter.html
+++ b/docs/html/sdk/api_diff/16/changes/android.bluetooth.BluetoothAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.AsyncTaskLoader.html b/docs/html/sdk/api_diff/16/changes/android.content.AsyncTaskLoader.html
index b153537..52b45ba 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.AsyncTaskLoader.html
+++ b/docs/html/sdk/api_diff/16/changes/android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.ClipData.Item.html b/docs/html/sdk/api_diff/16/changes/android.content.ClipData.Item.html
index 38c37b4..9c71555 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.ClipData.Item.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.ClipData.Item.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.ClipData.html b/docs/html/sdk/api_diff/16/changes/android.content.ClipData.html
index 2f60ec4..66f9aea 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.ClipData.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.ClipData.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.ClipDescription.html b/docs/html/sdk/api_diff/16/changes/android.content.ClipDescription.html
index dc32779..d8b27eb 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.ClipDescription.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.ClipDescription.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.ComponentCallbacks2.html b/docs/html/sdk/api_diff/16/changes/android.content.ComponentCallbacks2.html
index 061fa82..3c7bbe6 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.ComponentCallbacks2.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.ComponentCallbacks2.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.ContentProvider.html b/docs/html/sdk/api_diff/16/changes/android.content.ContentProvider.html
index 44e061b..46057c9 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.ContentProvider.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.ContentProvider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.ContentProviderClient.html b/docs/html/sdk/api_diff/16/changes/android.content.ContentProviderClient.html
index a70ba55..183d93d 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.ContentProviderClient.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.ContentProviderClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.ContentResolver.html b/docs/html/sdk/api_diff/16/changes/android.content.ContentResolver.html
index 773aa64..a81f825 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.ContentResolver.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.ContentResolver.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.Context.html b/docs/html/sdk/api_diff/16/changes/android.content.Context.html
index 8a07fda..a06e674 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.Context.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.ContextWrapper.html b/docs/html/sdk/api_diff/16/changes/android.content.ContextWrapper.html
index 4a856e4..2a43b69 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.ContextWrapper.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.ContextWrapper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.Intent.html b/docs/html/sdk/api_diff/16/changes/android.content.Intent.html
index 05391d4..ac2ca65 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.Intent.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.Intent.html
@@ -205,7 +205,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.Loader.html b/docs/html/sdk/api_diff/16/changes/android.content.Loader.html
index 1fdb042..0cbf5cb 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.Loader.html
+++ b/docs/html/sdk/api_diff/16/changes/android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/16/changes/android.content.pm.ActivityInfo.html
index a2db676..a64b5b0 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.pm.ActivityInfo.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.pm.ActivityInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.pm.PackageInfo.html b/docs/html/sdk/api_diff/16/changes/android.content.pm.PackageInfo.html
index 408e4c2..54991d9 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.pm.PackageInfo.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.pm.PackageInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/16/changes/android.content.pm.PackageManager.html
index 65c5f21..27d08f0 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.pm.PackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.pm.PermissionInfo.html b/docs/html/sdk/api_diff/16/changes/android.content.pm.PermissionInfo.html
index 6000877..47c27f9 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.pm.PermissionInfo.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.pm.PermissionInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.pm.ServiceInfo.html b/docs/html/sdk/api_diff/16/changes/android.content.pm.ServiceInfo.html
index 07018f0..1c8f2f3 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.pm.ServiceInfo.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.pm.ServiceInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/16/changes/android.content.res.Configuration.html
index 00f3f75a..93394ee 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.res.Configuration.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.res.Configuration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.content.res.Resources.html b/docs/html/sdk/api_diff/16/changes/android.content.res.Resources.html
index dca61d8..564df87 100644
--- a/docs/html/sdk/api_diff/16/changes/android.content.res.Resources.html
+++ b/docs/html/sdk/api_diff/16/changes/android.content.res.Resources.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.AbstractCursor.html b/docs/html/sdk/api_diff/16/changes/android.database.AbstractCursor.html
index 7a42022..02a8859 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.AbstractCursor.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.AbstractCursor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.ContentObservable.html b/docs/html/sdk/api_diff/16/changes/android.database.ContentObservable.html
index ec458e4..b8d2d87 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.ContentObservable.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.ContentObservable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.ContentObserver.html b/docs/html/sdk/api_diff/16/changes/android.database.ContentObserver.html
index 4f376b4..69397fa 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.ContentObserver.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.ContentObserver.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.Cursor.html b/docs/html/sdk/api_diff/16/changes/android.database.Cursor.html
index 024e8d0..c9682ed 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.Cursor.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.Cursor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.CursorWindow.html b/docs/html/sdk/api_diff/16/changes/android.database.CursorWindow.html
index c42f140..c3ee836 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.CursorWindow.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.CursorWindow.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.SQLException.html b/docs/html/sdk/api_diff/16/changes/android.database.SQLException.html
index 1f6e1c1..5c3e50e 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.SQLException.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.SQLException.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteClosable.html b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteClosable.html
index cb1552d..46d54dc 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteClosable.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteClosable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteDatabase.html b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteDatabase.html
index 12ad842..f51e32b 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteDatabase.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteDatabase.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteException.html b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteException.html
index d6e4ebc..d6f007cb 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteException.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteException.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteOpenHelper.html b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteOpenHelper.html
index 08a21fe..9d88207 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteOpenHelper.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteOpenHelper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteProgram.html b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteProgram.html
index 854d9fc..cdcc41e 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteProgram.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteProgram.html
@@ -204,7 +204,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQuery.html b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQuery.html
index eeec07c..430b9e6 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQuery.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQuery.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQueryBuilder.html b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQueryBuilder.html
index 9863ac3..574e6e9 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQueryBuilder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQueryBuilder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteStatement.html b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteStatement.html
index 3df6e69..31767cb 100644
--- a/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteStatement.html
+++ b/docs/html/sdk/api_diff/16/changes/android.database.sqlite.SQLiteStatement.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.drm.DrmManagerClient.html b/docs/html/sdk/api_diff/16/changes/android.drm.DrmManagerClient.html
index 5eee746..3e0cfd3 100644
--- a/docs/html/sdk/api_diff/16/changes/android.drm.DrmManagerClient.html
+++ b/docs/html/sdk/api_diff/16/changes/android.drm.DrmManagerClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.Action.html b/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.Action.html
index 2aaf764..0943f86 100644
--- a/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.Action.html
+++ b/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.Action.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.DrmObjectType.html b/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.DrmObjectType.html
index 122e3ae..ab7ed36 100644
--- a/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.DrmObjectType.html
+++ b/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.DrmObjectType.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.Playback.html b/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.Playback.html
index f2038d9..00d3609 100644
--- a/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.Playback.html
+++ b/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.Playback.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.RightsStatus.html b/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.RightsStatus.html
index 37b04a8..35084ff 100644
--- a/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.RightsStatus.html
+++ b/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.RightsStatus.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.html b/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.html
index 7039935..08ff56f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.html
+++ b/docs/html/sdk/api_diff/16/changes/android.drm.DrmStore.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.drm.DrmSupportInfo.html b/docs/html/sdk/api_diff/16/changes/android.drm.DrmSupportInfo.html
index ab22f87..c11df45 100644
--- a/docs/html/sdk/api_diff/16/changes/android.drm.DrmSupportInfo.html
+++ b/docs/html/sdk/api_diff/16/changes/android.drm.DrmSupportInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.graphics.AvoidXfermode.html b/docs/html/sdk/api_diff/16/changes/android.graphics.AvoidXfermode.html
index e9d0ebe..b6dd0d3 100644
--- a/docs/html/sdk/api_diff/16/changes/android.graphics.AvoidXfermode.html
+++ b/docs/html/sdk/api_diff/16/changes/android.graphics.AvoidXfermode.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.graphics.Camera.html b/docs/html/sdk/api_diff/16/changes/android.graphics.Camera.html
index f75d71b..2173466 100644
--- a/docs/html/sdk/api_diff/16/changes/android.graphics.Camera.html
+++ b/docs/html/sdk/api_diff/16/changes/android.graphics.Camera.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.graphics.Canvas.html b/docs/html/sdk/api_diff/16/changes/android.graphics.Canvas.html
index f025bc0..a8c8ae2 100644
--- a/docs/html/sdk/api_diff/16/changes/android.graphics.Canvas.html
+++ b/docs/html/sdk/api_diff/16/changes/android.graphics.Canvas.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.graphics.Paint.html b/docs/html/sdk/api_diff/16/changes/android.graphics.Paint.html
index bad0f84..5b1b14c 100644
--- a/docs/html/sdk/api_diff/16/changes/android.graphics.Paint.html
+++ b/docs/html/sdk/api_diff/16/changes/android.graphics.Paint.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.graphics.PixelFormat.html b/docs/html/sdk/api_diff/16/changes/android.graphics.PixelFormat.html
index ea2342b..8e5f10f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.graphics.PixelFormat.html
+++ b/docs/html/sdk/api_diff/16/changes/android.graphics.PixelFormat.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.graphics.PixelXorXfermode.html b/docs/html/sdk/api_diff/16/changes/android.graphics.PixelXorXfermode.html
index 147d373..5af6611 100644
--- a/docs/html/sdk/api_diff/16/changes/android.graphics.PixelXorXfermode.html
+++ b/docs/html/sdk/api_diff/16/changes/android.graphics.PixelXorXfermode.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.graphics.SurfaceTexture.html b/docs/html/sdk/api_diff/16/changes/android.graphics.SurfaceTexture.html
index ecd2e9f..48da8b8 100644
--- a/docs/html/sdk/api_diff/16/changes/android.graphics.SurfaceTexture.html
+++ b/docs/html/sdk/api_diff/16/changes/android.graphics.SurfaceTexture.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.graphics.drawable.GradientDrawable.html b/docs/html/sdk/api_diff/16/changes/android.graphics.drawable.GradientDrawable.html
index 387d2d9..d8680d7 100644
--- a/docs/html/sdk/api_diff/16/changes/android.graphics.drawable.GradientDrawable.html
+++ b/docs/html/sdk/api_diff/16/changes/android.graphics.drawable.GradientDrawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/16/changes/android.hardware.Camera.html
index 5329266..e11bb6d 100644
--- a/docs/html/sdk/api_diff/16/changes/android.hardware.Camera.html
+++ b/docs/html/sdk/api_diff/16/changes/android.hardware.Camera.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.hardware.SensorManager.html b/docs/html/sdk/api_diff/16/changes/android.hardware.SensorManager.html
index 6b8316c..2405919 100644
--- a/docs/html/sdk/api_diff/16/changes/android.hardware.SensorManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.hardware.SensorManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/16/changes/android.media.AudioManager.html
index 4ad8ede..94ed002 100644
--- a/docs/html/sdk/api_diff/16/changes/android.media.AudioManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.media.AudioManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.media.AudioRecord.html b/docs/html/sdk/api_diff/16/changes/android.media.AudioRecord.html
index 00502f1..975981f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.media.AudioRecord.html
+++ b/docs/html/sdk/api_diff/16/changes/android.media.AudioRecord.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.media.MediaPlayer.html b/docs/html/sdk/api_diff/16/changes/android.media.MediaPlayer.html
index 602686e..b2e7a67 100644
--- a/docs/html/sdk/api_diff/16/changes/android.media.MediaPlayer.html
+++ b/docs/html/sdk/api_diff/16/changes/android.media.MediaPlayer.html
@@ -200,7 +200,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.AudioEncoder.html b/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.AudioEncoder.html
index 4672d3a..9d0cbf8 100644
--- a/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.AudioEncoder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.AudioEncoder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.OutputFormat.html b/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.OutputFormat.html
index cc155eb..2cb27a3 100644
--- a/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.OutputFormat.html
+++ b/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.OutputFormat.html
@@ -125,7 +125,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.html
index ab168ed..51d6aa3 100644
--- a/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.media.MediaRecorder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.media.ToneGenerator.html b/docs/html/sdk/api_diff/16/changes/android.media.ToneGenerator.html
index db2c2436..d62cf9c 100644
--- a/docs/html/sdk/api_diff/16/changes/android.media.ToneGenerator.html
+++ b/docs/html/sdk/api_diff/16/changes/android.media.ToneGenerator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.media.audiofx.Visualizer.html b/docs/html/sdk/api_diff/16/changes/android.media.audiofx.Visualizer.html
index 2d359ea..dc3431f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.media.audiofx.Visualizer.html
+++ b/docs/html/sdk/api_diff/16/changes/android.media.audiofx.Visualizer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.net.ConnectivityManager.html b/docs/html/sdk/api_diff/16/changes/android.net.ConnectivityManager.html
index 151f58a..8ada3da 100644
--- a/docs/html/sdk/api_diff/16/changes/android.net.ConnectivityManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.net.ConnectivityManager.html
@@ -125,7 +125,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.net.SSLCertificateSocketFactory.html b/docs/html/sdk/api_diff/16/changes/android.net.SSLCertificateSocketFactory.html
index 69cf35d..e711f25 100644
--- a/docs/html/sdk/api_diff/16/changes/android.net.SSLCertificateSocketFactory.html
+++ b/docs/html/sdk/api_diff/16/changes/android.net.SSLCertificateSocketFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.net.Uri.html b/docs/html/sdk/api_diff/16/changes/android.net.Uri.html
index c8d747b..0e50cbe 100644
--- a/docs/html/sdk/api_diff/16/changes/android.net.Uri.html
+++ b/docs/html/sdk/api_diff/16/changes/android.net.Uri.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.net.wifi.p2p.WifiP2pManager.html b/docs/html/sdk/api_diff/16/changes/android.net.wifi.p2p.WifiP2pManager.html
index 1605831..2aeac8f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.net.wifi.p2p.WifiP2pManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.net.wifi.p2p.WifiP2pManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.nfc.FormatException.html b/docs/html/sdk/api_diff/16/changes/android.nfc.FormatException.html
index 2d6b396..12a4d88 100644
--- a/docs/html/sdk/api_diff/16/changes/android.nfc.FormatException.html
+++ b/docs/html/sdk/api_diff/16/changes/android.nfc.FormatException.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.nfc.NdefMessage.html b/docs/html/sdk/api_diff/16/changes/android.nfc.NdefMessage.html
index 9a8db58..2044ab0 100644
--- a/docs/html/sdk/api_diff/16/changes/android.nfc.NdefMessage.html
+++ b/docs/html/sdk/api_diff/16/changes/android.nfc.NdefMessage.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.nfc.NdefRecord.html b/docs/html/sdk/api_diff/16/changes/android.nfc.NdefRecord.html
index 0eab428..cb75fbe 100644
--- a/docs/html/sdk/api_diff/16/changes/android.nfc.NdefRecord.html
+++ b/docs/html/sdk/api_diff/16/changes/android.nfc.NdefRecord.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.nfc.NfcAdapter.html b/docs/html/sdk/api_diff/16/changes/android.nfc.NfcAdapter.html
index 4d22a1a..3858fa2 100644
--- a/docs/html/sdk/api_diff/16/changes/android.nfc.NfcAdapter.html
+++ b/docs/html/sdk/api_diff/16/changes/android.nfc.NfcAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.nfc.tech.IsoDep.html b/docs/html/sdk/api_diff/16/changes/android.nfc.tech.IsoDep.html
index b6a9cf6..e2f71f9 100644
--- a/docs/html/sdk/api_diff/16/changes/android.nfc.tech.IsoDep.html
+++ b/docs/html/sdk/api_diff/16/changes/android.nfc.tech.IsoDep.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/16/changes/android.os.Build.VERSION_CODES.html
index 422d0c1..3423e5b 100644
--- a/docs/html/sdk/api_diff/16/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/16/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.os.ParcelFileDescriptor.html b/docs/html/sdk/api_diff/16/changes/android.os.ParcelFileDescriptor.html
index dec148b..8bd272a 100644
--- a/docs/html/sdk/api_diff/16/changes/android.os.ParcelFileDescriptor.html
+++ b/docs/html/sdk/api_diff/16/changes/android.os.ParcelFileDescriptor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.os.Process.html b/docs/html/sdk/api_diff/16/changes/android.os.Process.html
index 7a7c4d5..df0e7b1 100644
--- a/docs/html/sdk/api_diff/16/changes/android.os.Process.html
+++ b/docs/html/sdk/api_diff/16/changes/android.os.Process.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.os.StrictMode.VmPolicy.Builder.html b/docs/html/sdk/api_diff/16/changes/android.os.StrictMode.VmPolicy.Builder.html
index c5c332d..32cd67d 100644
--- a/docs/html/sdk/api_diff/16/changes/android.os.StrictMode.VmPolicy.Builder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.os.StrictMode.VmPolicy.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.os.TokenWatcher.html b/docs/html/sdk/api_diff/16/changes/android.os.TokenWatcher.html
index 084af83..3d9e643 100644
--- a/docs/html/sdk/api_diff/16/changes/android.os.TokenWatcher.html
+++ b/docs/html/sdk/api_diff/16/changes/android.os.TokenWatcher.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.os.Vibrator.html b/docs/html/sdk/api_diff/16/changes/android.os.Vibrator.html
index 6b20dac..58c8d21 100644
--- a/docs/html/sdk/api_diff/16/changes/android.os.Vibrator.html
+++ b/docs/html/sdk/api_diff/16/changes/android.os.Vibrator.html
@@ -142,7 +142,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.AttendeesColumns.html b/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.AttendeesColumns.html
index f1a9577..05b798e 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.AttendeesColumns.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.AttendeesColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.EventsColumns.html b/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.EventsColumns.html
index 868f1de..3441dfa 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.EventsColumns.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.EventsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.RemindersColumns.html b/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.RemindersColumns.html
index 1d9e485..e82f81d 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.RemindersColumns.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.RemindersColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.html b/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.html
index 172b1ed..5dbf5c0 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.CalendarContract.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.CommonDataKinds.Phone.html b/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.CommonDataKinds.Phone.html
index 21d29b8..0ce22d2 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.CommonDataKinds.Phone.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.CommonDataKinds.Phone.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.Contacts.html b/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.Contacts.html
index a0f3ad6..220aa8f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.Contacts.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.Contacts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.DataUsageFeedback.html b/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.DataUsageFeedback.html
index e27e55c..3446e1d 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.DataUsageFeedback.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.DataUsageFeedback.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.PhoneLookupColumns.html b/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.PhoneLookupColumns.html
index 086f29a..5173cf2 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.PhoneLookupColumns.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.ContactsContract.PhoneLookupColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.MediaStore.MediaColumns.html b/docs/html/sdk/api_diff/16/changes/android.provider.MediaStore.MediaColumns.html
index 1e9b8dd..56ea462 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.MediaStore.MediaColumns.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.MediaStore.MediaColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.Settings.Secure.html b/docs/html/sdk/api_diff/16/changes/android.provider.Settings.Secure.html
index 85b97e3..85fd43d 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.Settings.Secure.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.Settings.Secure.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/16/changes/android.provider.Settings.System.html
index b13218a..716f3be 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.Settings.System.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.Settings.System.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.Settings.html b/docs/html/sdk/api_diff/16/changes/android.provider.Settings.html
index fdd2e82..080637b 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.Settings.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.Settings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.provider.UserDictionary.Words.html b/docs/html/sdk/api_diff/16/changes/android.provider.UserDictionary.Words.html
index 048f9e7..27e6984 100644
--- a/docs/html/sdk/api_diff/16/changes/android.provider.UserDictionary.Words.html
+++ b/docs/html/sdk/api_diff/16/changes/android.provider.UserDictionary.Words.html
@@ -167,7 +167,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Allocation.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Allocation.html
index a63823f..cdbfc96 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Allocation.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Allocation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Element.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Element.html
index c2e53fe..c803643 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Element.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Element.html
@@ -189,7 +189,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.EntryType.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.EntryType.html
index ef49db3..ff01e2f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.EntryType.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.EntryType.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.IndexEntry.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.IndexEntry.html
index 5d5f307..5b4eeae 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.IndexEntry.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.IndexEntry.html
@@ -142,7 +142,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.html
index 3f65c2c..3de4f0c 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.FileA3D.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Font.Style.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Font.Style.html
index 85bca91..9f95477 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Font.Style.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Font.Style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Font.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Font.html
index b9efb85..864319a 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Font.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Font.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.AllocationBuilder.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.AllocationBuilder.html
index faf6237..c928f5e 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.AllocationBuilder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.AllocationBuilder.html
@@ -180,7 +180,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.Builder.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.Builder.html
index 1ed9a63..b427b73 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.Builder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.Builder.html
@@ -200,7 +200,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.Primitive.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.Primitive.html
index dc94449..04106d1 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.Primitive.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.Primitive.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.TriangleMeshBuilder.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.TriangleMeshBuilder.html
index 30772e0..34e7382 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.TriangleMeshBuilder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.TriangleMeshBuilder.html
@@ -225,7 +225,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.html
index a7d6b19..5adb660 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Mesh.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Program.BaseProgramBuilder.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Program.BaseProgramBuilder.html
index f2ece67..ff55bc4 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Program.BaseProgramBuilder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Program.BaseProgramBuilder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Program.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Program.html
index cea3097..8a290a1 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Program.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Program.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.Builder.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.Builder.html
index b6c50d3..96f55e8 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.Builder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.Builder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.html
index 82f0614..577eb43 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.EnvMode.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.EnvMode.html
index 42e4c41..334f006 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.EnvMode.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.EnvMode.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.Format.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.Format.html
index 6b0d42a..736ed3b 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.Format.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.Format.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.html
index 866e75e..4f03add 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.html
index 043927d..d4a745c 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.Builder.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.Builder.html
index 7a36129..44cd976 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.Builder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.Builder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.CullMode.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.CullMode.html
index 135a7bf..5729ffa 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.CullMode.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.CullMode.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.html
index 60042f4..6ff37eb 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramStore.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramStore.html
index 4e96e4f..63f9bd2 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramStore.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramStore.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.Builder.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.Builder.html
index adfdd1c..f28b1e8 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.Builder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.html
index 278079f..14eae0a 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Builder.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Builder.html
index 52bbdf9..5957b82 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Builder.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Constants.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Constants.html
index 274ae05..63f0746 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Constants.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Constants.html
@@ -160,7 +160,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.html
index 6b1894f..cdf9d6b 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.RSSurfaceView.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.RSSurfaceView.html
index 7c9d264b..d214908 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.RSSurfaceView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.RSSurfaceView.html
@@ -220,7 +220,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.RSTextureView.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.RSTextureView.html
index b0b87ae..c581eaf 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.RSTextureView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.RSTextureView.html
@@ -230,7 +230,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.SurfaceConfig.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.SurfaceConfig.html
index e07b1ac..c600f08 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.SurfaceConfig.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.SurfaceConfig.html
@@ -170,7 +170,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.html
index 6cf0f6c..16425d5 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.html
@@ -230,7 +230,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Sampler.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Sampler.html
index 1345dae5..38b6b93 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Sampler.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Sampler.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.renderscript.Script.html b/docs/html/sdk/api_diff/16/changes/android.renderscript.Script.html
index 8fc9924..0c100b7 100644
--- a/docs/html/sdk/api_diff/16/changes/android.renderscript.Script.html
+++ b/docs/html/sdk/api_diff/16/changes/android.renderscript.Script.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.security.KeyChain.html b/docs/html/sdk/api_diff/16/changes/android.security.KeyChain.html
index 92e57b5..cb78be6 100644
--- a/docs/html/sdk/api_diff/16/changes/android.security.KeyChain.html
+++ b/docs/html/sdk/api_diff/16/changes/android.security.KeyChain.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.service.textservice.SpellCheckerService.Session.html b/docs/html/sdk/api_diff/16/changes/android.service.textservice.SpellCheckerService.Session.html
index c83d21f..87a14e2 100644
--- a/docs/html/sdk/api_diff/16/changes/android.service.textservice.SpellCheckerService.Session.html
+++ b/docs/html/sdk/api_diff/16/changes/android.service.textservice.SpellCheckerService.Session.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.speech.RecognizerIntent.html b/docs/html/sdk/api_diff/16/changes/android.speech.RecognizerIntent.html
index d869c23..bc2998a 100644
--- a/docs/html/sdk/api_diff/16/changes/android.speech.RecognizerIntent.html
+++ b/docs/html/sdk/api_diff/16/changes/android.speech.RecognizerIntent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.test.AssertionFailedError.html b/docs/html/sdk/api_diff/16/changes/android.test.AssertionFailedError.html
index feba168..052da23 100644
--- a/docs/html/sdk/api_diff/16/changes/android.test.AssertionFailedError.html
+++ b/docs/html/sdk/api_diff/16/changes/android.test.AssertionFailedError.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.test.ComparisonFailure.html b/docs/html/sdk/api_diff/16/changes/android.test.ComparisonFailure.html
index 4f9406d..b6cd956 100644
--- a/docs/html/sdk/api_diff/16/changes/android.test.ComparisonFailure.html
+++ b/docs/html/sdk/api_diff/16/changes/android.test.ComparisonFailure.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.test.InstrumentationTestSuite.html b/docs/html/sdk/api_diff/16/changes/android.test.InstrumentationTestSuite.html
index 41f0bc0..5906889 100644
--- a/docs/html/sdk/api_diff/16/changes/android.test.InstrumentationTestSuite.html
+++ b/docs/html/sdk/api_diff/16/changes/android.test.InstrumentationTestSuite.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.test.mock.MockContext.html b/docs/html/sdk/api_diff/16/changes/android.test.mock.MockContext.html
index a44c902..abffd44 100644
--- a/docs/html/sdk/api_diff/16/changes/android.test.mock.MockContext.html
+++ b/docs/html/sdk/api_diff/16/changes/android.test.mock.MockContext.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.text.Html.html b/docs/html/sdk/api_diff/16/changes/android.text.Html.html
index a0361cd..a14cc7e 100644
--- a/docs/html/sdk/api_diff/16/changes/android.text.Html.html
+++ b/docs/html/sdk/api_diff/16/changes/android.text.Html.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.util.DisplayMetrics.html b/docs/html/sdk/api_diff/16/changes/android.util.DisplayMetrics.html
index 2f93ccf..93b3ed1 100644
--- a/docs/html/sdk/api_diff/16/changes/android.util.DisplayMetrics.html
+++ b/docs/html/sdk/api_diff/16/changes/android.util.DisplayMetrics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.ActionMode.html b/docs/html/sdk/api_diff/16/changes/android.view.ActionMode.html
index 0633827..074c726 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.ActionMode.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.ActionMode.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.ActionProvider.html b/docs/html/sdk/api_diff/16/changes/android.view.ActionProvider.html
index 9c65f8f..3a46ccb 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.ActionProvider.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.ActionProvider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.Display.html b/docs/html/sdk/api_diff/16/changes/android.view.Display.html
index c519edf..9753fad 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.Display.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.Display.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.Gravity.html b/docs/html/sdk/api_diff/16/changes/android.view.Gravity.html
index 7e6daea..f3ae68111 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.Gravity.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.Gravity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.InputDevice.html b/docs/html/sdk/api_diff/16/changes/android.view.InputDevice.html
index 9515708..df09892 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.InputDevice.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.InputDevice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.InputEvent.html b/docs/html/sdk/api_diff/16/changes/android.view.InputEvent.html
index e3b872c..af85c46 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.InputEvent.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.InputEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.KeyCharacterMap.html b/docs/html/sdk/api_diff/16/changes/android.view.KeyCharacterMap.html
index e18e9b5..8405f35 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.KeyCharacterMap.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.KeyCharacterMap.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/16/changes/android.view.KeyEvent.html
index bedd73f..d54a1c9 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.KeyEvent.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.KeyEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.TextureView.html b/docs/html/sdk/api_diff/16/changes/android.view.TextureView.html
index e8fd732..f91d0888 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.TextureView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.TextureView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.View.AccessibilityDelegate.html b/docs/html/sdk/api_diff/16/changes/android.view.View.AccessibilityDelegate.html
index 6350eee..924313d 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.View.AccessibilityDelegate.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.View.AccessibilityDelegate.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.View.html b/docs/html/sdk/api_diff/16/changes/android.view.View.html
index 015f638..ae8e90b 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.View.html
@@ -541,7 +541,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.HierarchyTraceType.html b/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.HierarchyTraceType.html
index e908fb5..f1eccd1 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.HierarchyTraceType.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.HierarchyTraceType.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.RecyclerTraceType.html b/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.RecyclerTraceType.html
index 6fa0d11..4059a7a 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.RecyclerTraceType.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.RecyclerTraceType.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.html b/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.html
index 9bc7af1..cdeff88 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.ViewDebug.html
@@ -187,7 +187,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.ViewGroup.html b/docs/html/sdk/api_diff/16/changes/android.view.ViewGroup.html
index e30c4b3..08d98ac 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.ViewGroup.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.ViewGroup.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.ViewParent.html b/docs/html/sdk/api_diff/16/changes/android.view.ViewParent.html
index fc32c23..a721ba0 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.ViewParent.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.ViewParent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.ViewPropertyAnimator.html b/docs/html/sdk/api_diff/16/changes/android.view.ViewPropertyAnimator.html
index 49be2b7..79e3b4f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.ViewPropertyAnimator.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.ViewPropertyAnimator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.ViewStub.html b/docs/html/sdk/api_diff/16/changes/android.view.ViewStub.html
index ff1b0fe..1fe043d 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.ViewStub.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.ViewStub.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.ViewTreeObserver.html b/docs/html/sdk/api_diff/16/changes/android.view.ViewTreeObserver.html
index 8ba4bab..936cd0a 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.ViewTreeObserver.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.ViewTreeObserver.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityEvent.html b/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityEvent.html
index 0c51ee4..1c5facb 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityEvent.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityNodeInfo.html b/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityNodeInfo.html
index 7d3e447..a6edc26 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityNodeInfo.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityNodeInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityRecord.html b/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityRecord.html
index 9637ca2..fb3aca8 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityRecord.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityRecord.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.inputmethod.EditorInfo.html b/docs/html/sdk/api_diff/16/changes/android.view.inputmethod.EditorInfo.html
index bd05573..ab74ec9 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.inputmethod.EditorInfo.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.inputmethod.EditorInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.inputmethod.InputMethodManager.html b/docs/html/sdk/api_diff/16/changes/android.view.inputmethod.InputMethodManager.html
index c8194cf..288b2ee 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.inputmethod.InputMethodManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.inputmethod.InputMethodManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener.html b/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener.html
index 0873414..4bc2f5e 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.html b/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.html
index 32fc681..7822de4 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSubtype.html b/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSubtype.html
index 068b5b8..d42587e 100644
--- a/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSubtype.html
+++ b/docs/html/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSubtype.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.webkit.CookieManager.html b/docs/html/sdk/api_diff/16/changes/android.webkit.CookieManager.html
index b740796..e8b6d77 100644
--- a/docs/html/sdk/api_diff/16/changes/android.webkit.CookieManager.html
+++ b/docs/html/sdk/api_diff/16/changes/android.webkit.CookieManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.webkit.GeolocationPermissions.html b/docs/html/sdk/api_diff/16/changes/android.webkit.GeolocationPermissions.html
index 3ffe9a7..c276185 100644
--- a/docs/html/sdk/api_diff/16/changes/android.webkit.GeolocationPermissions.html
+++ b/docs/html/sdk/api_diff/16/changes/android.webkit.GeolocationPermissions.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.webkit.JsResult.html b/docs/html/sdk/api_diff/16/changes/android.webkit.JsResult.html
index 8f2577f..627a831 100644
--- a/docs/html/sdk/api_diff/16/changes/android.webkit.JsResult.html
+++ b/docs/html/sdk/api_diff/16/changes/android.webkit.JsResult.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.webkit.WebIconDatabase.html b/docs/html/sdk/api_diff/16/changes/android.webkit.WebIconDatabase.html
index 26024f2..d2aafcd 100644
--- a/docs/html/sdk/api_diff/16/changes/android.webkit.WebIconDatabase.html
+++ b/docs/html/sdk/api_diff/16/changes/android.webkit.WebIconDatabase.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/16/changes/android.webkit.WebSettings.html
index 6337887..f89bdf3 100644
--- a/docs/html/sdk/api_diff/16/changes/android.webkit.WebSettings.html
+++ b/docs/html/sdk/api_diff/16/changes/android.webkit.WebSettings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.webkit.WebStorage.html b/docs/html/sdk/api_diff/16/changes/android.webkit.WebStorage.html
index b900c0a..6b7346c 100644
--- a/docs/html/sdk/api_diff/16/changes/android.webkit.WebStorage.html
+++ b/docs/html/sdk/api_diff/16/changes/android.webkit.WebStorage.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.webkit.WebView.HitTestResult.html b/docs/html/sdk/api_diff/16/changes/android.webkit.WebView.HitTestResult.html
index f3a25c0..4cd4a9b7 100644
--- a/docs/html/sdk/api_diff/16/changes/android.webkit.WebView.HitTestResult.html
+++ b/docs/html/sdk/api_diff/16/changes/android.webkit.WebView.HitTestResult.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/16/changes/android.webkit.WebView.html
index e009999..23f4f93 100644
--- a/docs/html/sdk/api_diff/16/changes/android.webkit.WebView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.webkit.WebView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.AbsSeekBar.html b/docs/html/sdk/api_diff/16/changes/android.widget.AbsSeekBar.html
index e5ca3d5..0f0796f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.AbsSeekBar.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.AbsSeekBar.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.AdapterViewAnimator.html b/docs/html/sdk/api_diff/16/changes/android.widget.AdapterViewAnimator.html
index 1b484be..7f17ba0 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.AdapterViewAnimator.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.AdapterViewAnimator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.AdapterViewFlipper.html b/docs/html/sdk/api_diff/16/changes/android.widget.AdapterViewFlipper.html
index aa2f295..b8daa6c 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.AdapterViewFlipper.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.AdapterViewFlipper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.AutoCompleteTextView.html b/docs/html/sdk/api_diff/16/changes/android.widget.AutoCompleteTextView.html
index d32a076..a81d77d 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.AutoCompleteTextView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.AutoCompleteTextView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.CalendarView.html b/docs/html/sdk/api_diff/16/changes/android.widget.CalendarView.html
index fd7b0e4..bb115d3 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.CalendarView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.CalendarView.html
@@ -234,7 +234,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.CheckedTextView.html b/docs/html/sdk/api_diff/16/changes/android.widget.CheckedTextView.html
index 4d257dc..2675673 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.CheckedTextView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.CheckedTextView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.FrameLayout.html b/docs/html/sdk/api_diff/16/changes/android.widget.FrameLayout.html
index 2d18399..e66de8c 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.FrameLayout.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.FrameLayout.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.Gallery.html b/docs/html/sdk/api_diff/16/changes/android.widget.Gallery.html
index bea43e60..40c65a5 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.Gallery.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.Gallery.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.GridLayout.html b/docs/html/sdk/api_diff/16/changes/android.widget.GridLayout.html
index 70600ae..0b4c8ec 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.GridLayout.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.GridLayout.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.GridView.html b/docs/html/sdk/api_diff/16/changes/android.widget.GridView.html
index 31a0a95..087c030 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.GridView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.GridView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.ImageView.html b/docs/html/sdk/api_diff/16/changes/android.widget.ImageView.html
index bb505bf..53457e3 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.ImageView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.ImageView.html
@@ -175,7 +175,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.LinearLayout.html b/docs/html/sdk/api_diff/16/changes/android.widget.LinearLayout.html
index f7717ec..9a9bd2d 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.LinearLayout.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.LinearLayout.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.RelativeLayout.html b/docs/html/sdk/api_diff/16/changes/android.widget.RelativeLayout.html
index 75ce6e6..925c935 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.RelativeLayout.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.RelativeLayout.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/16/changes/android.widget.RemoteViews.html
index c05ae10..9544af0 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.RemoteViews.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.RemoteViews.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.SearchView.html b/docs/html/sdk/api_diff/16/changes/android.widget.SearchView.html
index 0cd0cfb..76e9307 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.SearchView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.SearchView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.Spinner.html b/docs/html/sdk/api_diff/16/changes/android.widget.Spinner.html
index 0d571994..c0ff14b 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.Spinner.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.Spinner.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.Switch.html b/docs/html/sdk/api_diff/16/changes/android.widget.Switch.html
index 6fa62d40..9b6c27f 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.Switch.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.Switch.html
@@ -185,7 +185,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/android.widget.TextView.html b/docs/html/sdk/api_diff/16/changes/android.widget.TextView.html
index 0cb483b..5b1ef10 100644
--- a/docs/html/sdk/api_diff/16/changes/android.widget.TextView.html
+++ b/docs/html/sdk/api_diff/16/changes/android.widget.TextView.html
@@ -256,7 +256,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/changes-summary.html b/docs/html/sdk/api_diff/16/changes/changes-summary.html
index 93c9aaa..63e47c3 100644
--- a/docs/html/sdk/api_diff/16/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/16/changes/changes-summary.html
@@ -423,7 +423,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/classes_index_additions.html b/docs/html/sdk/api_diff/16/changes/classes_index_additions.html
index 4cd366a..34642e0 100644
--- a/docs/html/sdk/api_diff/16/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/16/changes/classes_index_additions.html
@@ -234,7 +234,7 @@
 <A HREF="pkg_android.net.wifi.p2p.html#WifiP2pManager.DnsSdTxtRecordListener" class="hiddenlink" target="rightframe"><b><i>WifiP2pManager.DnsSdTxtRecordListener</i></b></A><br>
 <A HREF="pkg_android.net.wifi.p2p.html#WifiP2pManager.ServiceResponseListener" class="hiddenlink" target="rightframe"><b><i>WifiP2pManager.ServiceResponseListener</i></b></A><br>
 <A HREF="pkg_android.net.wifi.p2p.html#WifiP2pManager.UpnpServiceResponseListener" class="hiddenlink" target="rightframe"><b><i>WifiP2pManager.UpnpServiceResponseListener</i></b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/classes_index_all.html b/docs/html/sdk/api_diff/16/changes/classes_index_all.html
index 6caf76c..ecb6f13 100644
--- a/docs/html/sdk/api_diff/16/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/16/changes/classes_index_all.html
@@ -868,7 +868,7 @@
 <A HREF="pkg_android.net.wifi.p2p.html#WifiP2pManager.DnsSdTxtRecordListener" class="hiddenlink" target="rightframe"><b><i>WifiP2pManager.DnsSdTxtRecordListener</i></b></A><br>
 <A HREF="pkg_android.net.wifi.p2p.html#WifiP2pManager.ServiceResponseListener" class="hiddenlink" target="rightframe"><b><i>WifiP2pManager.ServiceResponseListener</i></b></A><br>
 <A HREF="pkg_android.net.wifi.p2p.html#WifiP2pManager.UpnpServiceResponseListener" class="hiddenlink" target="rightframe"><b><i>WifiP2pManager.UpnpServiceResponseListener</i></b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/classes_index_changes.html b/docs/html/sdk/api_diff/16/changes/classes_index_changes.html
index 987bdc7..ba9499f 100644
--- a/docs/html/sdk/api_diff/16/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/16/changes/classes_index_changes.html
@@ -765,7 +765,7 @@
 <A HREF="android.webkit.WebView.html" class="hiddenlink" target="rightframe">WebView</A><br>
 <A HREF="android.webkit.WebView.HitTestResult.html" class="hiddenlink" target="rightframe">WebView.HitTestResult</A><br>
 <A HREF="android.net.wifi.p2p.WifiP2pManager.html" class="hiddenlink" target="rightframe">WifiP2pManager</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/classes_index_removals.html b/docs/html/sdk/api_diff/16/changes/classes_index_removals.html
index e6da73f..af7f1d0 100644
--- a/docs/html/sdk/api_diff/16/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/16/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/16/changes/constructors_index_additions.html
index 6fe939a..ad1d44a 100644
--- a/docs/html/sdk/api_diff/16/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/16/changes/constructors_index_additions.html
@@ -127,7 +127,7 @@
 (<code>Class&lt;?&gt;</code>)</A></nobr>&nbsp;constructor<br>
 &nbsp;&nbsp;<nobr><A HREF="junit.framework.TestSuite.html#junit.framework.TestSuite.ctor_added(java.lang.Class<?>...)" class="hiddenlink" target="rightframe"><b>TestSuite</b>
 (<code>Class&lt;?&gt;</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/constructors_index_all.html b/docs/html/sdk/api_diff/16/changes/constructors_index_all.html
index 9bbc54e..1b0ecb7 100644
--- a/docs/html/sdk/api_diff/16/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/16/changes/constructors_index_all.html
@@ -282,7 +282,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.ctor_removed()" class="hiddenlink" target="rightframe"><strike>WebStorage</strike>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/16/changes/constructors_index_changes.html
index 9625eed..687f154 100644
--- a/docs/html/sdk/api_diff/16/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/16/changes/constructors_index_changes.html
@@ -134,7 +134,7 @@
 (<code>Context</code>)</A></nobr>&nbsp;constructor<br>
 &nbsp;&nbsp;<nobr><A HREF="android.renderscript.RSTextureView.html#android.renderscript.RSTextureView.ctor_changed(android.content.Context, android.util.AttributeSet)" class="hiddenlink" target="rightframe">RSTextureView
 (<code>Context, AttributeSet</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/16/changes/constructors_index_removals.html
index 29bad17..766bd1b 100644
--- a/docs/html/sdk/api_diff/16/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/16/changes/constructors_index_removals.html
@@ -74,7 +74,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.ctor_removed()" class="hiddenlink" target="rightframe"><strike>WebStorage</strike>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/fields_index_additions.html b/docs/html/sdk/api_diff/16/changes/fields_index_additions.html
index 0d93032..10df363 100644
--- a/docs/html/sdk/api_diff/16/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/16/changes/fields_index_additions.html
@@ -945,7 +945,7 @@
 </nobr><br>
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.WRITE_USER_DICTIONARY" class="hiddenlink" target="rightframe">WRITE_USER_DICTIONARY</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/fields_index_all.html b/docs/html/sdk/api_diff/16/changes/fields_index_all.html
index 2eee5e3..38b57d7 100644
--- a/docs/html/sdk/api_diff/16/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/16/changes/fields_index_all.html
@@ -1143,7 +1143,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.View.html#android.view.View.Y" class="hiddenlink" target="rightframe">Y</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/fields_index_changes.html b/docs/html/sdk/api_diff/16/changes/fields_index_changes.html
index e86c488..590263b 100644
--- a/docs/html/sdk/api_diff/16/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/16/changes/fields_index_changes.html
@@ -377,7 +377,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.View.html#android.view.View.Y" class="hiddenlink" target="rightframe">Y</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/fields_index_removals.html b/docs/html/sdk/api_diff/16/changes/fields_index_removals.html
index c264afeba..aa89b81 100644
--- a/docs/html/sdk/api_diff/16/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/16/changes/fields_index_removals.html
@@ -65,7 +65,7 @@
 </nobr><br>
 <nobr><A HREF="android.database.sqlite.SQLiteProgram.html#android.database.sqlite.SQLiteProgram.nStatement" class="hiddenlink" target="rightframe"><strike>nStatement</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/jdiff_help.html b/docs/html/sdk/api_diff/16/changes/jdiff_help.html
index 543eadb..a30d5bb 100644
--- a/docs/html/sdk/api_diff/16/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/16/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/16/changes/jdiff_statistics.html
index f0ddde1..14cec4b 100644
--- a/docs/html/sdk/api_diff/16/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/16/changes/jdiff_statistics.html
@@ -1391,7 +1391,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/16/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/16/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/16/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/junit.framework.Assert.html b/docs/html/sdk/api_diff/16/changes/junit.framework.Assert.html
index 0d5b2cb..040eed8 100644
--- a/docs/html/sdk/api_diff/16/changes/junit.framework.Assert.html
+++ b/docs/html/sdk/api_diff/16/changes/junit.framework.Assert.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/junit.framework.AssertionFailedError.html b/docs/html/sdk/api_diff/16/changes/junit.framework.AssertionFailedError.html
index 8cc284c6..d43b3f8 100644
--- a/docs/html/sdk/api_diff/16/changes/junit.framework.AssertionFailedError.html
+++ b/docs/html/sdk/api_diff/16/changes/junit.framework.AssertionFailedError.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/junit.framework.ComparisonFailure.html b/docs/html/sdk/api_diff/16/changes/junit.framework.ComparisonFailure.html
index afdcc5f..1250af2 100644
--- a/docs/html/sdk/api_diff/16/changes/junit.framework.ComparisonFailure.html
+++ b/docs/html/sdk/api_diff/16/changes/junit.framework.ComparisonFailure.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/junit.framework.TestResult.html b/docs/html/sdk/api_diff/16/changes/junit.framework.TestResult.html
index ada98fd..35178bc 100644
--- a/docs/html/sdk/api_diff/16/changes/junit.framework.TestResult.html
+++ b/docs/html/sdk/api_diff/16/changes/junit.framework.TestResult.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/junit.framework.TestSuite.html b/docs/html/sdk/api_diff/16/changes/junit.framework.TestSuite.html
index fd9a0ca..a009900 100644
--- a/docs/html/sdk/api_diff/16/changes/junit.framework.TestSuite.html
+++ b/docs/html/sdk/api_diff/16/changes/junit.framework.TestSuite.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/junit.runner.BaseTestRunner.html b/docs/html/sdk/api_diff/16/changes/junit.runner.BaseTestRunner.html
index 64880bc..d55b3e7 100644
--- a/docs/html/sdk/api_diff/16/changes/junit.runner.BaseTestRunner.html
+++ b/docs/html/sdk/api_diff/16/changes/junit.runner.BaseTestRunner.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/methods_index_additions.html b/docs/html/sdk/api_diff/16/changes/methods_index_additions.html
index 3264969..f13c64e 100644
--- a/docs/html/sdk/api_diff/16/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/16/changes/methods_index_additions.html
@@ -1343,7 +1343,7 @@
 (<code>Runnable</code>)</A></nobr><br>
 <nobr><A HREF="android.view.KeyCharacterMap.html#android.view.KeyCharacterMap.writeToParcel_added(android.os.Parcel, int)" class="hiddenlink" target="rightframe"><b>writeToParcel</b>
 (<code>Parcel, int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/methods_index_all.html b/docs/html/sdk/api_diff/16/changes/methods_index_all.html
index 628f0b7..45817d9 100644
--- a/docs/html/sdk/api_diff/16/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/16/changes/methods_index_all.html
@@ -1852,7 +1852,7 @@
 (<code>Runnable</code>)</A></nobr><br>
 <nobr><A HREF="android.view.KeyCharacterMap.html#android.view.KeyCharacterMap.writeToParcel_added(android.os.Parcel, int)" class="hiddenlink" target="rightframe"><b>writeToParcel</b>
 (<code>Parcel, int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/methods_index_changes.html b/docs/html/sdk/api_diff/16/changes/methods_index_changes.html
index f6a95dd..a3c4bed 100644
--- a/docs/html/sdk/api_diff/16/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/16/changes/methods_index_changes.html
@@ -817,7 +817,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.os.Vibrator.html#android.os.Vibrator.vibrate_changed(long[], int)" class="hiddenlink" target="rightframe">type&nbsp;
 (<code>long[], int</code>)&nbsp;in&nbsp;android.os.Vibrator
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/methods_index_removals.html b/docs/html/sdk/api_diff/16/changes/methods_index_removals.html
index 4efdbd4..38f3bef 100644
--- a/docs/html/sdk/api_diff/16/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/16/changes/methods_index_removals.html
@@ -181,7 +181,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.webkit.JsResult.html#android.webkit.JsResult.wakeUp_removed()" class="hiddenlink" target="rightframe"><strike>wakeUp</strike>
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/packages_index_additions.html b/docs/html/sdk/api_diff/16/changes/packages_index_additions.html
index 3f603e5..1b6c980 100644
--- a/docs/html/sdk/api_diff/16/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/16/changes/packages_index_additions.html
@@ -54,7 +54,7 @@
 <A HREF="changes-summary.html#android.hardware.input" class="hiddenlink" target="rightframe"><b>android.hardware.input</b></A><br>
 <A HREF="changes-summary.html#android.net.nsd" class="hiddenlink" target="rightframe"><b>android.net.nsd</b></A><br>
 <A HREF="changes-summary.html#android.net.wifi.p2p.nsd" class="hiddenlink" target="rightframe"><b>android.net.wifi.p2p.nsd</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/packages_index_all.html b/docs/html/sdk/api_diff/16/changes/packages_index_all.html
index 100c124..48525ef 100644
--- a/docs/html/sdk/api_diff/16/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/16/changes/packages_index_all.html
@@ -94,7 +94,7 @@
 <A NAME="J"></A>
 <A HREF="pkg_junit.framework.html" class="hiddenlink" target="rightframe">junit.framework</A><br>
 <A HREF="pkg_junit.runner.html" class="hiddenlink" target="rightframe">junit.runner</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/packages_index_changes.html b/docs/html/sdk/api_diff/16/changes/packages_index_changes.html
index b99dfc9..93c5fd3 100644
--- a/docs/html/sdk/api_diff/16/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/16/changes/packages_index_changes.html
@@ -90,7 +90,7 @@
 <A NAME="J"></A>
 <A HREF="pkg_junit.framework.html" class="hiddenlink" target="rightframe">junit.framework</A><br>
 <A HREF="pkg_junit.runner.html" class="hiddenlink" target="rightframe">junit.runner</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/packages_index_removals.html b/docs/html/sdk/api_diff/16/changes/packages_index_removals.html
index d0ffabc..5f37b27 100644
--- a/docs/html/sdk/api_diff/16/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/16/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.accessibilityservice.html b/docs/html/sdk/api_diff/16/changes/pkg_android.accessibilityservice.html
index e348264..68d3da1 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.accessibilityservice.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.accessibilityservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.animation.html b/docs/html/sdk/api_diff/16/changes/pkg_android.animation.html
index 148635b..6fb398b 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.animation.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.animation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.app.html b/docs/html/sdk/api_diff/16/changes/pkg_android.app.html
index 1eaef10..4550e07 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.app.html
@@ -246,7 +246,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.appwidget.html b/docs/html/sdk/api_diff/16/changes/pkg_android.appwidget.html
index 1495d4b..8793169 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.appwidget.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.appwidget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.bluetooth.html b/docs/html/sdk/api_diff/16/changes/pkg_android.bluetooth.html
index f408836..f1b988a 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.bluetooth.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.bluetooth.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.content.html b/docs/html/sdk/api_diff/16/changes/pkg_android.content.html
index cb45c96..4a710f1 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.content.html
@@ -197,7 +197,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/16/changes/pkg_android.content.pm.html
index 7f80041..72420fa 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.content.pm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/16/changes/pkg_android.content.res.html
index b2dde4d..2748506 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.content.res.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.content.res.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.database.html b/docs/html/sdk/api_diff/16/changes/pkg_android.database.html
index 43029e5..58d746f 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.database.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.database.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.database.sqlite.html b/docs/html/sdk/api_diff/16/changes/pkg_android.database.sqlite.html
index 4c47f61..d8ac540 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.database.sqlite.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.database.sqlite.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.drm.html b/docs/html/sdk/api_diff/16/changes/pkg_android.drm.html
index 9973797..8c75056 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.drm.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.drm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.graphics.drawable.html b/docs/html/sdk/api_diff/16/changes/pkg_android.graphics.drawable.html
index e4f0911..b05d97d 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.graphics.drawable.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/16/changes/pkg_android.graphics.html
index 3b8d71b..26c3e89 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.graphics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/16/changes/pkg_android.hardware.html
index fb6b102..0aad978 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.hardware.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.hardware.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.html b/docs/html/sdk/api_diff/16/changes/pkg_android.html
index 19b3c01..2bee06f 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.media.audiofx.html b/docs/html/sdk/api_diff/16/changes/pkg_android.media.audiofx.html
index 757acd1..914ccc9 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.media.audiofx.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.media.audiofx.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.media.html b/docs/html/sdk/api_diff/16/changes/pkg_android.media.html
index 5083802..9bb4383 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.net.html b/docs/html/sdk/api_diff/16/changes/pkg_android.net.html
index fb9213e..ec76384 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.net.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.net.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.net.wifi.p2p.html b/docs/html/sdk/api_diff/16/changes/pkg_android.net.wifi.p2p.html
index e346fed..7287372 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.net.wifi.p2p.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.net.wifi.p2p.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.nfc.html b/docs/html/sdk/api_diff/16/changes/pkg_android.nfc.html
index d6a49d2..75d696c 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.nfc.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.nfc.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.nfc.tech.html b/docs/html/sdk/api_diff/16/changes/pkg_android.nfc.tech.html
index f01ce8c..0a27605 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.nfc.tech.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.nfc.tech.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.os.html b/docs/html/sdk/api_diff/16/changes/pkg_android.os.html
index 689f8b3..286585a 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.os.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/16/changes/pkg_android.provider.html
index 6a9f620..929e315 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.provider.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.provider.html
@@ -189,7 +189,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.renderscript.html b/docs/html/sdk/api_diff/16/changes/pkg_android.renderscript.html
index 84f8524f..03b5e8c 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.renderscript.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.renderscript.html
@@ -343,7 +343,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.security.html b/docs/html/sdk/api_diff/16/changes/pkg_android.security.html
index c3b16dd..38c5714 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.security.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.security.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.service.textservice.html b/docs/html/sdk/api_diff/16/changes/pkg_android.service.textservice.html
index 511016d..606832c 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.service.textservice.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.service.textservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.speech.html b/docs/html/sdk/api_diff/16/changes/pkg_android.speech.html
index 990b7b1..287cdf0 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.speech.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.speech.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.test.html b/docs/html/sdk/api_diff/16/changes/pkg_android.test.html
index 8d4a6cb..993a7e1 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.test.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.test.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/16/changes/pkg_android.test.mock.html
index 30be34c..1362a7c 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.test.mock.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.test.mock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.text.html b/docs/html/sdk/api_diff/16/changes/pkg_android.text.html
index 378f3b5..a29d420 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.text.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.util.html b/docs/html/sdk/api_diff/16/changes/pkg_android.util.html
index b035341..675993c 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.util.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.util.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.view.accessibility.html b/docs/html/sdk/api_diff/16/changes/pkg_android.view.accessibility.html
index 5e2edfe..67758d0 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.view.accessibility.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.view.accessibility.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.view.html b/docs/html/sdk/api_diff/16/changes/pkg_android.view.html
index 85d3c36..9cfee71 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.view.html
@@ -267,7 +267,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.view.inputmethod.html b/docs/html/sdk/api_diff/16/changes/pkg_android.view.inputmethod.html
index 976a051..fee0bc8 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.view.inputmethod.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.view.inputmethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.view.textservice.html b/docs/html/sdk/api_diff/16/changes/pkg_android.view.textservice.html
index c4cac96..d0868de 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.view.textservice.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.view.textservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/16/changes/pkg_android.webkit.html
index 62fb8ee..9980bf6 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.webkit.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.webkit.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/16/changes/pkg_android.widget.html
index d52b211..5f6c894 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_junit.framework.html b/docs/html/sdk/api_diff/16/changes/pkg_junit.framework.html
index a5d6fcc..5ac6e32 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_junit.framework.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_junit.framework.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/16/changes/pkg_junit.runner.html b/docs/html/sdk/api_diff/16/changes/pkg_junit.runner.html
index dcd45ef..fd9654e 100644
--- a/docs/html/sdk/api_diff/16/changes/pkg_junit.runner.html
+++ b/docs/html/sdk/api_diff/16/changes/pkg_junit.runner.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/17/changes/alldiffs_index_additions.html
index e40f4c0..49cd521 100644
--- a/docs/html/sdk/api_diff/17/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/17/changes/alldiffs_index_additions.html
@@ -1759,7 +1759,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.net.http.html#X509TrustManagerExtensions" class="hiddenlink" target="rightframe"><b>X509TrustManagerExtensions</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/17/changes/alldiffs_index_all.html
index 7b7dddc..e5580f1 100644
--- a/docs/html/sdk/api_diff/17/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/17/changes/alldiffs_index_all.html
@@ -2455,7 +2455,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.net.http.html#X509TrustManagerExtensions" class="hiddenlink" target="rightframe"><b>X509TrustManagerExtensions</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/17/changes/alldiffs_index_changes.html
index 6cd23cc..265df77 100644
--- a/docs/html/sdk/api_diff/17/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/17/changes/alldiffs_index_changes.html
@@ -1128,7 +1128,7 @@
 </nobr><br>
 <!-- Class WindowManager.LayoutParams -->
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/17/changes/alldiffs_index_removals.html
index 53e6dd9..18155b1 100644
--- a/docs/html/sdk/api_diff/17/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/17/changes/alldiffs_index_removals.html
@@ -225,7 +225,7 @@
 <!-- Field TEXT_ALIGNMENT_RESOLVED_DEFAULT -->
 <nobr><A HREF="android.view.View.html#android.view.View.TEXT_ALIGNMENT_RESOLVED_DEFAULT" class="hiddenlink" target="rightframe"><strike>TEXT_ALIGNMENT_RESOLVED_DEFAULT</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.Manifest.permission_group.html b/docs/html/sdk/api_diff/17/changes/android.Manifest.permission_group.html
index d81a5f0..28ba5ee 100644
--- a/docs/html/sdk/api_diff/17/changes/android.Manifest.permission_group.html
+++ b/docs/html/sdk/api_diff/17/changes/android.Manifest.permission_group.html
@@ -234,7 +234,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.R.attr.html b/docs/html/sdk/api_diff/17/changes/android.R.attr.html
index b118e7c..1adee79 100644
--- a/docs/html/sdk/api_diff/17/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/17/changes/android.R.attr.html
@@ -304,7 +304,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.R.style.html b/docs/html/sdk/api_diff/17/changes/android.R.style.html
index 04a6933..0e16bf5a 100644
--- a/docs/html/sdk/api_diff/17/changes/android.R.style.html
+++ b/docs/html/sdk/api_diff/17/changes/android.R.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.accessibilityservice.AccessibilityService.html b/docs/html/sdk/api_diff/17/changes/android.accessibilityservice.AccessibilityService.html
index 47e8868..f497e5b 100644
--- a/docs/html/sdk/api_diff/17/changes/android.accessibilityservice.AccessibilityService.html
+++ b/docs/html/sdk/api_diff/17/changes/android.accessibilityservice.AccessibilityService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.accessibilityservice.AccessibilityServiceInfo.html b/docs/html/sdk/api_diff/17/changes/android.accessibilityservice.AccessibilityServiceInfo.html
index b96916f..33723d0 100644
--- a/docs/html/sdk/api_diff/17/changes/android.accessibilityservice.AccessibilityServiceInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.accessibilityservice.AccessibilityServiceInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.app.Activity.html b/docs/html/sdk/api_diff/17/changes/android.app.Activity.html
index 081d49d..065a100 100644
--- a/docs/html/sdk/api_diff/17/changes/android.app.Activity.html
+++ b/docs/html/sdk/api_diff/17/changes/android.app.Activity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.app.AlertDialog.Builder.html b/docs/html/sdk/api_diff/17/changes/android.app.AlertDialog.Builder.html
index cba0cd3..fa66bc9 100644
--- a/docs/html/sdk/api_diff/17/changes/android.app.AlertDialog.Builder.html
+++ b/docs/html/sdk/api_diff/17/changes/android.app.AlertDialog.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.app.Fragment.html b/docs/html/sdk/api_diff/17/changes/android.app.Fragment.html
index 3824575..be3464e 100644
--- a/docs/html/sdk/api_diff/17/changes/android.app.Fragment.html
+++ b/docs/html/sdk/api_diff/17/changes/android.app.Fragment.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.app.FragmentManager.html b/docs/html/sdk/api_diff/17/changes/android.app.FragmentManager.html
index 30beb99..d1b62a0 100644
--- a/docs/html/sdk/api_diff/17/changes/android.app.FragmentManager.html
+++ b/docs/html/sdk/api_diff/17/changes/android.app.FragmentManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.app.Notification.Builder.html b/docs/html/sdk/api_diff/17/changes/android.app.Notification.Builder.html
index fbd8880..8996e20 100644
--- a/docs/html/sdk/api_diff/17/changes/android.app.Notification.Builder.html
+++ b/docs/html/sdk/api_diff/17/changes/android.app.Notification.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.app.PendingIntent.html b/docs/html/sdk/api_diff/17/changes/android.app.PendingIntent.html
index eb72e3a..64d18d4 100644
--- a/docs/html/sdk/api_diff/17/changes/android.app.PendingIntent.html
+++ b/docs/html/sdk/api_diff/17/changes/android.app.PendingIntent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.app.WallpaperManager.html b/docs/html/sdk/api_diff/17/changes/android.app.WallpaperManager.html
index a5045d2..779c776 100644
--- a/docs/html/sdk/api_diff/17/changes/android.app.WallpaperManager.html
+++ b/docs/html/sdk/api_diff/17/changes/android.app.WallpaperManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.app.admin.DeviceAdminInfo.html b/docs/html/sdk/api_diff/17/changes/android.app.admin.DeviceAdminInfo.html
index b5b261c..960cac9 100644
--- a/docs/html/sdk/api_diff/17/changes/android.app.admin.DeviceAdminInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.app.admin.DeviceAdminInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.app.admin.DevicePolicyManager.html b/docs/html/sdk/api_diff/17/changes/android.app.admin.DevicePolicyManager.html
index a9a0d11..0bbf62a 100644
--- a/docs/html/sdk/api_diff/17/changes/android.app.admin.DevicePolicyManager.html
+++ b/docs/html/sdk/api_diff/17/changes/android.app.admin.DevicePolicyManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetHost.html b/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetHost.html
index 8aaa7b9f..b97558a 100644
--- a/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetHost.html
+++ b/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetHost.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetManager.html b/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetManager.html
index d36f9a5..3a5465b 100644
--- a/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetManager.html
+++ b/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetProviderInfo.html b/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetProviderInfo.html
index ed0dbb9..780c310a 100644
--- a/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetProviderInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.appwidget.AppWidgetProviderInfo.html
@@ -149,7 +149,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.bluetooth.BluetoothA2dp.html b/docs/html/sdk/api_diff/17/changes/android.bluetooth.BluetoothA2dp.html
index c1fb66c..bb0f49d 100644
--- a/docs/html/sdk/api_diff/17/changes/android.bluetooth.BluetoothA2dp.html
+++ b/docs/html/sdk/api_diff/17/changes/android.bluetooth.BluetoothA2dp.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.ContentProviderClient.html b/docs/html/sdk/api_diff/17/changes/android.content.ContentProviderClient.html
index 65f758c..423682fc 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.ContentProviderClient.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.ContentProviderClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.Context.html b/docs/html/sdk/api_diff/17/changes/android.content.Context.html
index 2169575..d3a30a8 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.Context.html
@@ -205,7 +205,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.ContextWrapper.html b/docs/html/sdk/api_diff/17/changes/android.content.ContextWrapper.html
index e96cfe9..6819d62 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.ContextWrapper.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.ContextWrapper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.Intent.html b/docs/html/sdk/api_diff/17/changes/android.content.Intent.html
index 1c77051..eebdeae 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.Intent.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.Intent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.IntentSender.html b/docs/html/sdk/api_diff/17/changes/android.content.IntentSender.html
index 1c0ac90..9839376 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.IntentSender.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.IntentSender.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/17/changes/android.content.pm.ActivityInfo.html
index 1c835df..3da3f20 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.pm.ActivityInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.pm.ActivityInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.pm.ApplicationInfo.html b/docs/html/sdk/api_diff/17/changes/android.content.pm.ApplicationInfo.html
index e770229..250b6f3 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.pm.ApplicationInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.pm.ApplicationInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/17/changes/android.content.pm.PackageManager.html
index 0bd66ed..e80a57b 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.pm.PackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.pm.PermissionGroupInfo.html b/docs/html/sdk/api_diff/17/changes/android.content.pm.PermissionGroupInfo.html
index 6784c30..3867df7 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.pm.PermissionGroupInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.pm.PermissionGroupInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.pm.PermissionInfo.html b/docs/html/sdk/api_diff/17/changes/android.content.pm.PermissionInfo.html
index 16314f8..a2866baf 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.pm.PermissionInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.pm.PermissionInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.pm.ProviderInfo.html b/docs/html/sdk/api_diff/17/changes/android.content.pm.ProviderInfo.html
index de54866..0a85033 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.pm.ProviderInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.pm.ProviderInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.pm.ResolveInfo.html b/docs/html/sdk/api_diff/17/changes/android.content.pm.ResolveInfo.html
index ea75367..ae6ac77 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.pm.ResolveInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.pm.ResolveInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.pm.ServiceInfo.html b/docs/html/sdk/api_diff/17/changes/android.content.pm.ServiceInfo.html
index b3e0dcf..8e52ca3 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.pm.ServiceInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.pm.ServiceInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/17/changes/android.content.res.Configuration.html
index 007bed9..21cb8fa 100644
--- a/docs/html/sdk/api_diff/17/changes/android.content.res.Configuration.html
+++ b/docs/html/sdk/api_diff/17/changes/android.content.res.Configuration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.database.DatabaseUtils.InsertHelper.html b/docs/html/sdk/api_diff/17/changes/android.database.DatabaseUtils.InsertHelper.html
index fc6bf4a..0c1444c 100644
--- a/docs/html/sdk/api_diff/17/changes/android.database.DatabaseUtils.InsertHelper.html
+++ b/docs/html/sdk/api_diff/17/changes/android.database.DatabaseUtils.InsertHelper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.graphics.Bitmap.html b/docs/html/sdk/api_diff/17/changes/android.graphics.Bitmap.html
index 1c91b36..807c28d 100644
--- a/docs/html/sdk/api_diff/17/changes/android.graphics.Bitmap.html
+++ b/docs/html/sdk/api_diff/17/changes/android.graphics.Bitmap.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.graphics.Paint.html b/docs/html/sdk/api_diff/17/changes/android.graphics.Paint.html
index 14f466f..c28311b 100644
--- a/docs/html/sdk/api_diff/17/changes/android.graphics.Paint.html
+++ b/docs/html/sdk/api_diff/17/changes/android.graphics.Paint.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.CameraInfo.html b/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.CameraInfo.html
index 61888e4..348aa8c 100644
--- a/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.CameraInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.CameraInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.Parameters.html b/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.Parameters.html
index e96f27f..e0d9685 100644
--- a/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.Parameters.html
+++ b/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.Parameters.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.html
index 8f0ea73..9586af0 100644
--- a/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.html
+++ b/docs/html/sdk/api_diff/17/changes/android.hardware.Camera.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.hardware.Sensor.html b/docs/html/sdk/api_diff/17/changes/android.hardware.Sensor.html
index 4a2b4a0..0477c57 100644
--- a/docs/html/sdk/api_diff/17/changes/android.hardware.Sensor.html
+++ b/docs/html/sdk/api_diff/17/changes/android.hardware.Sensor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl.html b/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl.html
index 3707cb8..3e8dd9d 100644
--- a/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl.html
+++ b/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.AbstractInputMethodService.html b/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.AbstractInputMethodService.html
index 71b3d90..96b588f 100644
--- a/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.AbstractInputMethodService.html
+++ b/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.AbstractInputMethodService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.InputMethodService.html b/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.InputMethodService.html
index 913c3db..c15ae3c 100644
--- a/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.InputMethodService.html
+++ b/docs/html/sdk/api_diff/17/changes/android.inputmethodservice.InputMethodService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.location.Location.html b/docs/html/sdk/api_diff/17/changes/android.location.Location.html
index bc7329e..c79359a 100644
--- a/docs/html/sdk/api_diff/17/changes/android.location.Location.html
+++ b/docs/html/sdk/api_diff/17/changes/android.location.Location.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.location.LocationProvider.html b/docs/html/sdk/api_diff/17/changes/android.location.LocationProvider.html
index f30f1d3..d11ae6a 100644
--- a/docs/html/sdk/api_diff/17/changes/android.location.LocationProvider.html
+++ b/docs/html/sdk/api_diff/17/changes/android.location.LocationProvider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/17/changes/android.media.AudioManager.html
index 6dd662e..5f179fa 100644
--- a/docs/html/sdk/api_diff/17/changes/android.media.AudioManager.html
+++ b/docs/html/sdk/api_diff/17/changes/android.media.AudioManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.media.MediaMetadataRetriever.html b/docs/html/sdk/api_diff/17/changes/android.media.MediaMetadataRetriever.html
index ab2f148..3f85e5f 100644
--- a/docs/html/sdk/api_diff/17/changes/android.media.MediaMetadataRetriever.html
+++ b/docs/html/sdk/api_diff/17/changes/android.media.MediaMetadataRetriever.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.media.MediaPlayer.html b/docs/html/sdk/api_diff/17/changes/android.media.MediaPlayer.html
index 240b3ba..06dbd51 100644
--- a/docs/html/sdk/api_diff/17/changes/android.media.MediaPlayer.html
+++ b/docs/html/sdk/api_diff/17/changes/android.media.MediaPlayer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/17/changes/android.media.MediaRecorder.html
index f0a9874..4805798 100644
--- a/docs/html/sdk/api_diff/17/changes/android.media.MediaRecorder.html
+++ b/docs/html/sdk/api_diff/17/changes/android.media.MediaRecorder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.media.MediaRouter.Callback.html b/docs/html/sdk/api_diff/17/changes/android.media.MediaRouter.Callback.html
index 7bd7353..1c0c126 100644
--- a/docs/html/sdk/api_diff/17/changes/android.media.MediaRouter.Callback.html
+++ b/docs/html/sdk/api_diff/17/changes/android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.media.MediaRouter.RouteInfo.html b/docs/html/sdk/api_diff/17/changes/android.media.MediaRouter.RouteInfo.html
index a7f39fe..7b03f78 100644
--- a/docs/html/sdk/api_diff/17/changes/android.media.MediaRouter.RouteInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.media.MediaRouter.RouteInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.media.MediaRouter.html b/docs/html/sdk/api_diff/17/changes/android.media.MediaRouter.html
index 258ad3c..bdad04c 100644
--- a/docs/html/sdk/api_diff/17/changes/android.media.MediaRouter.html
+++ b/docs/html/sdk/api_diff/17/changes/android.media.MediaRouter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.net.ConnectivityManager.html b/docs/html/sdk/api_diff/17/changes/android.net.ConnectivityManager.html
index a9acb12..e7540ab 100644
--- a/docs/html/sdk/api_diff/17/changes/android.net.ConnectivityManager.html
+++ b/docs/html/sdk/api_diff/17/changes/android.net.ConnectivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.net.LocalSocket.html b/docs/html/sdk/api_diff/17/changes/android.net.LocalSocket.html
index de70962..765b32f 100644
--- a/docs/html/sdk/api_diff/17/changes/android.net.LocalSocket.html
+++ b/docs/html/sdk/api_diff/17/changes/android.net.LocalSocket.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.net.SSLCertificateSocketFactory.html b/docs/html/sdk/api_diff/17/changes/android.net.SSLCertificateSocketFactory.html
index 861c632..37cd162 100644
--- a/docs/html/sdk/api_diff/17/changes/android.net.SSLCertificateSocketFactory.html
+++ b/docs/html/sdk/api_diff/17/changes/android.net.SSLCertificateSocketFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.net.wifi.ScanResult.html b/docs/html/sdk/api_diff/17/changes/android.net.wifi.ScanResult.html
index aee26cf..492d62b 100644
--- a/docs/html/sdk/api_diff/17/changes/android.net.wifi.ScanResult.html
+++ b/docs/html/sdk/api_diff/17/changes/android.net.wifi.ScanResult.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.opengl.GLES20.html b/docs/html/sdk/api_diff/17/changes/android.opengl.GLES20.html
index af909ed..836aa9b 100644
--- a/docs/html/sdk/api_diff/17/changes/android.opengl.GLES20.html
+++ b/docs/html/sdk/api_diff/17/changes/android.opengl.GLES20.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.os.BatteryManager.html b/docs/html/sdk/api_diff/17/changes/android.os.BatteryManager.html
index 3beccbd..a2f9e63 100644
--- a/docs/html/sdk/api_diff/17/changes/android.os.BatteryManager.html
+++ b/docs/html/sdk/api_diff/17/changes/android.os.BatteryManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.os.Binder.html b/docs/html/sdk/api_diff/17/changes/android.os.Binder.html
index 5140918..227bb8e 100644
--- a/docs/html/sdk/api_diff/17/changes/android.os.Binder.html
+++ b/docs/html/sdk/api_diff/17/changes/android.os.Binder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/17/changes/android.os.Build.VERSION_CODES.html
index 0cb5cf5..47578e1 100644
--- a/docs/html/sdk/api_diff/17/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/17/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.os.PowerManager.WakeLock.html b/docs/html/sdk/api_diff/17/changes/android.os.PowerManager.WakeLock.html
index 6361c8d..da33be5 100644
--- a/docs/html/sdk/api_diff/17/changes/android.os.PowerManager.WakeLock.html
+++ b/docs/html/sdk/api_diff/17/changes/android.os.PowerManager.WakeLock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.os.PowerManager.html b/docs/html/sdk/api_diff/17/changes/android.os.PowerManager.html
index 0874295..1e83e01 100644
--- a/docs/html/sdk/api_diff/17/changes/android.os.PowerManager.html
+++ b/docs/html/sdk/api_diff/17/changes/android.os.PowerManager.html
@@ -135,7 +135,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.os.Process.html b/docs/html/sdk/api_diff/17/changes/android.os.Process.html
index 97240da..bdc3665 100644
--- a/docs/html/sdk/api_diff/17/changes/android.os.Process.html
+++ b/docs/html/sdk/api_diff/17/changes/android.os.Process.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.os.RemoteCallbackList.html b/docs/html/sdk/api_diff/17/changes/android.os.RemoteCallbackList.html
index 77b8b7e..428e995 100644
--- a/docs/html/sdk/api_diff/17/changes/android.os.RemoteCallbackList.html
+++ b/docs/html/sdk/api_diff/17/changes/android.os.RemoteCallbackList.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.os.SystemClock.html b/docs/html/sdk/api_diff/17/changes/android.os.SystemClock.html
index e7f6fe8..efdedd6 100644
--- a/docs/html/sdk/api_diff/17/changes/android.os.SystemClock.html
+++ b/docs/html/sdk/api_diff/17/changes/android.os.SystemClock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.provider.CalendarContract.CalendarColumns.html b/docs/html/sdk/api_diff/17/changes/android.provider.CalendarContract.CalendarColumns.html
index d067f78..9ba1895 100644
--- a/docs/html/sdk/api_diff/17/changes/android.provider.CalendarContract.CalendarColumns.html
+++ b/docs/html/sdk/api_diff/17/changes/android.provider.CalendarContract.CalendarColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.provider.CalendarContract.EventsColumns.html b/docs/html/sdk/api_diff/17/changes/android.provider.CalendarContract.EventsColumns.html
index 36e4029..0788dba 100644
--- a/docs/html/sdk/api_diff/17/changes/android.provider.CalendarContract.EventsColumns.html
+++ b/docs/html/sdk/api_diff/17/changes/android.provider.CalendarContract.EventsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.provider.CallLog.Calls.html b/docs/html/sdk/api_diff/17/changes/android.provider.CallLog.Calls.html
index 5ae5fc0..1bb580d 100644
--- a/docs/html/sdk/api_diff/17/changes/android.provider.CallLog.Calls.html
+++ b/docs/html/sdk/api_diff/17/changes/android.provider.CallLog.Calls.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.provider.MediaStore.html b/docs/html/sdk/api_diff/17/changes/android.provider.MediaStore.html
index 09b422e..0d7e749 100644
--- a/docs/html/sdk/api_diff/17/changes/android.provider.MediaStore.html
+++ b/docs/html/sdk/api_diff/17/changes/android.provider.MediaStore.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.provider.Settings.Secure.html b/docs/html/sdk/api_diff/17/changes/android.provider.Settings.Secure.html
index ba5b553..2ef49d7 100644
--- a/docs/html/sdk/api_diff/17/changes/android.provider.Settings.Secure.html
+++ b/docs/html/sdk/api_diff/17/changes/android.provider.Settings.Secure.html
@@ -263,7 +263,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/17/changes/android.provider.Settings.System.html
index aa7c33e..7751562 100644
--- a/docs/html/sdk/api_diff/17/changes/android.provider.Settings.System.html
+++ b/docs/html/sdk/api_diff/17/changes/android.provider.Settings.System.html
@@ -390,7 +390,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.renderscript.Script.html b/docs/html/sdk/api_diff/17/changes/android.renderscript.Script.html
index 3cacb90..732b082 100644
--- a/docs/html/sdk/api_diff/17/changes/android.renderscript.Script.html
+++ b/docs/html/sdk/api_diff/17/changes/android.renderscript.Script.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.telephony.PhoneStateListener.html b/docs/html/sdk/api_diff/17/changes/android.telephony.PhoneStateListener.html
index d244732..657d9da 100644
--- a/docs/html/sdk/api_diff/17/changes/android.telephony.PhoneStateListener.html
+++ b/docs/html/sdk/api_diff/17/changes/android.telephony.PhoneStateListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/17/changes/android.telephony.TelephonyManager.html
index 0248453..6719e18 100644
--- a/docs/html/sdk/api_diff/17/changes/android.telephony.TelephonyManager.html
+++ b/docs/html/sdk/api_diff/17/changes/android.telephony.TelephonyManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.telephony.cdma.CdmaCellLocation.html b/docs/html/sdk/api_diff/17/changes/android.telephony.cdma.CdmaCellLocation.html
index f3f288e..ace7e42 100644
--- a/docs/html/sdk/api_diff/17/changes/android.telephony.cdma.CdmaCellLocation.html
+++ b/docs/html/sdk/api_diff/17/changes/android.telephony.cdma.CdmaCellLocation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.test.mock.MockContext.html b/docs/html/sdk/api_diff/17/changes/android.test.mock.MockContext.html
index d0f605f..f86d48c 100644
--- a/docs/html/sdk/api_diff/17/changes/android.test.mock.MockContext.html
+++ b/docs/html/sdk/api_diff/17/changes/android.test.mock.MockContext.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/17/changes/android.test.mock.MockPackageManager.html
index 4b37968..e81ab01 100644
--- a/docs/html/sdk/api_diff/17/changes/android.test.mock.MockPackageManager.html
+++ b/docs/html/sdk/api_diff/17/changes/android.test.mock.MockPackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.text.TextUtils.html b/docs/html/sdk/api_diff/17/changes/android.text.TextUtils.html
index a9199da1..667a944 100644
--- a/docs/html/sdk/api_diff/17/changes/android.text.TextUtils.html
+++ b/docs/html/sdk/api_diff/17/changes/android.text.TextUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.text.format.DateFormat.html b/docs/html/sdk/api_diff/17/changes/android.text.format.DateFormat.html
index caf69a7..fad3596 100644
--- a/docs/html/sdk/api_diff/17/changes/android.text.format.DateFormat.html
+++ b/docs/html/sdk/api_diff/17/changes/android.text.format.DateFormat.html
@@ -196,7 +196,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.text.format.DateUtils.html b/docs/html/sdk/api_diff/17/changes/android.text.format.DateUtils.html
index 2c327b34..2431abc 100644
--- a/docs/html/sdk/api_diff/17/changes/android.text.format.DateUtils.html
+++ b/docs/html/sdk/api_diff/17/changes/android.text.format.DateUtils.html
@@ -283,7 +283,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.util.DisplayMetrics.html b/docs/html/sdk/api_diff/17/changes/android.util.DisplayMetrics.html
index 7580d75..972f850 100644
--- a/docs/html/sdk/api_diff/17/changes/android.util.DisplayMetrics.html
+++ b/docs/html/sdk/api_diff/17/changes/android.util.DisplayMetrics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.util.FloatMath.html b/docs/html/sdk/api_diff/17/changes/android.util.FloatMath.html
index 618c730..02406ce 100644
--- a/docs/html/sdk/api_diff/17/changes/android.util.FloatMath.html
+++ b/docs/html/sdk/api_diff/17/changes/android.util.FloatMath.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.util.LruCache.html b/docs/html/sdk/api_diff/17/changes/android.util.LruCache.html
index 2c40941..8260c81 100644
--- a/docs/html/sdk/api_diff/17/changes/android.util.LruCache.html
+++ b/docs/html/sdk/api_diff/17/changes/android.util.LruCache.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.ContextThemeWrapper.html b/docs/html/sdk/api_diff/17/changes/android.view.ContextThemeWrapper.html
index 832b36e..ee15d07 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.ContextThemeWrapper.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.ContextThemeWrapper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.Display.html b/docs/html/sdk/api_diff/17/changes/android.view.Display.html
index 674e1c5..ee02b29 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.Display.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.Display.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.Gravity.html b/docs/html/sdk/api_diff/17/changes/android.view.Gravity.html
index c3965cf..ad3f94b 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.Gravity.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.Gravity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.Surface.html b/docs/html/sdk/api_diff/17/changes/android.view.Surface.html
index 878c2c8..80356ed 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.Surface.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.Surface.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.SurfaceView.html b/docs/html/sdk/api_diff/17/changes/android.view.SurfaceView.html
index ec45c76..537b0a5 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.SurfaceView.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.SurfaceView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.View.html b/docs/html/sdk/api_diff/17/changes/android.view.View.html
index 7fcd852..ee9d1c2 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.View.html
@@ -348,7 +348,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.ViewGroup.LayoutParams.html b/docs/html/sdk/api_diff/17/changes/android.view.ViewGroup.LayoutParams.html
index 6459b06..e69fd2f 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.ViewGroup.LayoutParams.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.ViewGroup.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.ViewGroup.MarginLayoutParams.html b/docs/html/sdk/api_diff/17/changes/android.view.ViewGroup.MarginLayoutParams.html
index a4f01afb..648f713 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.ViewGroup.MarginLayoutParams.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.ViewGroup.MarginLayoutParams.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.WindowManager.LayoutParams.html b/docs/html/sdk/api_diff/17/changes/android.view.WindowManager.LayoutParams.html
index 9071e7d..f47dd2c 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.WindowManager.LayoutParams.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.WindowManager.LayoutParams.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.accessibility.AccessibilityEvent.html b/docs/html/sdk/api_diff/17/changes/android.view.accessibility.AccessibilityEvent.html
index 452fbfe..61bd0c6 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.accessibility.AccessibilityEvent.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.accessibility.AccessibilityEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.accessibility.AccessibilityNodeInfo.html b/docs/html/sdk/api_diff/17/changes/android.view.accessibility.AccessibilityNodeInfo.html
index 95bab46..8720c1c 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.accessibility.AccessibilityNodeInfo.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.accessibility.AccessibilityNodeInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.inputmethod.InputMethodSession.html b/docs/html/sdk/api_diff/17/changes/android.view.inputmethod.InputMethodSession.html
index a2d912a..8df4ead 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.inputmethod.InputMethodSession.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.inputmethod.InputMethodSession.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.view.inputmethod.InputMethodSubtype.html b/docs/html/sdk/api_diff/17/changes/android.view.inputmethod.InputMethodSubtype.html
index 947c69c..51a5cfd 100644
--- a/docs/html/sdk/api_diff/17/changes/android.view.inputmethod.InputMethodSubtype.html
+++ b/docs/html/sdk/api_diff/17/changes/android.view.inputmethod.InputMethodSubtype.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.webkit.WebChromeClient.html b/docs/html/sdk/api_diff/17/changes/android.webkit.WebChromeClient.html
index 658bb85..f18d434 100644
--- a/docs/html/sdk/api_diff/17/changes/android.webkit.WebChromeClient.html
+++ b/docs/html/sdk/api_diff/17/changes/android.webkit.WebChromeClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.webkit.WebHistoryItem.html b/docs/html/sdk/api_diff/17/changes/android.webkit.WebHistoryItem.html
index 91866f5..1135de9 100644
--- a/docs/html/sdk/api_diff/17/changes/android.webkit.WebHistoryItem.html
+++ b/docs/html/sdk/api_diff/17/changes/android.webkit.WebHistoryItem.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/17/changes/android.webkit.WebSettings.html
index b8157ea..b2d805e 100644
--- a/docs/html/sdk/api_diff/17/changes/android.webkit.WebSettings.html
+++ b/docs/html/sdk/api_diff/17/changes/android.webkit.WebSettings.html
@@ -231,7 +231,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/17/changes/android.webkit.WebView.html
index a4234d2..18a3964 100644
--- a/docs/html/sdk/api_diff/17/changes/android.webkit.WebView.html
+++ b/docs/html/sdk/api_diff/17/changes/android.webkit.WebView.html
@@ -226,7 +226,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.webkit.WebViewDatabase.html b/docs/html/sdk/api_diff/17/changes/android.webkit.WebViewDatabase.html
index 4b51daa..7e85e96 100644
--- a/docs/html/sdk/api_diff/17/changes/android.webkit.WebViewDatabase.html
+++ b/docs/html/sdk/api_diff/17/changes/android.webkit.WebViewDatabase.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.widget.AutoCompleteTextView.html b/docs/html/sdk/api_diff/17/changes/android.widget.AutoCompleteTextView.html
index 4ff84f4..4c72d026 100644
--- a/docs/html/sdk/api_diff/17/changes/android.widget.AutoCompleteTextView.html
+++ b/docs/html/sdk/api_diff/17/changes/android.widget.AutoCompleteTextView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.widget.CheckedTextView.html b/docs/html/sdk/api_diff/17/changes/android.widget.CheckedTextView.html
index 3624beb..0d68bd7 100644
--- a/docs/html/sdk/api_diff/17/changes/android.widget.CheckedTextView.html
+++ b/docs/html/sdk/api_diff/17/changes/android.widget.CheckedTextView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.widget.DigitalClock.html b/docs/html/sdk/api_diff/17/changes/android.widget.DigitalClock.html
index 727870c..5aa4df7 100644
--- a/docs/html/sdk/api_diff/17/changes/android.widget.DigitalClock.html
+++ b/docs/html/sdk/api_diff/17/changes/android.widget.DigitalClock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.widget.RelativeLayout.LayoutParams.html b/docs/html/sdk/api_diff/17/changes/android.widget.RelativeLayout.LayoutParams.html
index 61940b7..477dc4c 100644
--- a/docs/html/sdk/api_diff/17/changes/android.widget.RelativeLayout.LayoutParams.html
+++ b/docs/html/sdk/api_diff/17/changes/android.widget.RelativeLayout.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.widget.RelativeLayout.html b/docs/html/sdk/api_diff/17/changes/android.widget.RelativeLayout.html
index c056ddb..dc6f151 100644
--- a/docs/html/sdk/api_diff/17/changes/android.widget.RelativeLayout.html
+++ b/docs/html/sdk/api_diff/17/changes/android.widget.RelativeLayout.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/17/changes/android.widget.RemoteViews.html
index 4de9a8c..ac42258 100644
--- a/docs/html/sdk/api_diff/17/changes/android.widget.RemoteViews.html
+++ b/docs/html/sdk/api_diff/17/changes/android.widget.RemoteViews.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.widget.SlidingDrawer.html b/docs/html/sdk/api_diff/17/changes/android.widget.SlidingDrawer.html
index 0896020..ae64b48 100644
--- a/docs/html/sdk/api_diff/17/changes/android.widget.SlidingDrawer.html
+++ b/docs/html/sdk/api_diff/17/changes/android.widget.SlidingDrawer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.widget.TextView.html b/docs/html/sdk/api_diff/17/changes/android.widget.TextView.html
index 30aa980..bb1ae2c 100644
--- a/docs/html/sdk/api_diff/17/changes/android.widget.TextView.html
+++ b/docs/html/sdk/api_diff/17/changes/android.widget.TextView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.widget.TwoLineListItem.html b/docs/html/sdk/api_diff/17/changes/android.widget.TwoLineListItem.html
index fb23c1c..9af29f4 100644
--- a/docs/html/sdk/api_diff/17/changes/android.widget.TwoLineListItem.html
+++ b/docs/html/sdk/api_diff/17/changes/android.widget.TwoLineListItem.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.widget.VideoView.html b/docs/html/sdk/api_diff/17/changes/android.widget.VideoView.html
index 4ec5579..4c5b8b3f 100644
--- a/docs/html/sdk/api_diff/17/changes/android.widget.VideoView.html
+++ b/docs/html/sdk/api_diff/17/changes/android.widget.VideoView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/android.widget.ViewAnimator.html b/docs/html/sdk/api_diff/17/changes/android.widget.ViewAnimator.html
index e0df51b..0b05e5c 100644
--- a/docs/html/sdk/api_diff/17/changes/android.widget.ViewAnimator.html
+++ b/docs/html/sdk/api_diff/17/changes/android.widget.ViewAnimator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/changes-summary.html b/docs/html/sdk/api_diff/17/changes/changes-summary.html
index 98d9924..909cc19 100644
--- a/docs/html/sdk/api_diff/17/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/17/changes/changes-summary.html
@@ -381,7 +381,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/classes_index_additions.html b/docs/html/sdk/api_diff/17/changes/classes_index_additions.html
index 453e766a..d5f7d52 100644
--- a/docs/html/sdk/api_diff/17/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/17/changes/classes_index_additions.html
@@ -268,7 +268,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.net.http.html#X509TrustManagerExtensions" class="hiddenlink" target="rightframe"><b>X509TrustManagerExtensions</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/classes_index_all.html b/docs/html/sdk/api_diff/17/changes/classes_index_all.html
index 49d116c..c9d521b 100644
--- a/docs/html/sdk/api_diff/17/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/17/changes/classes_index_all.html
@@ -661,7 +661,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.net.http.html#X509TrustManagerExtensions" class="hiddenlink" target="rightframe"><b>X509TrustManagerExtensions</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/classes_index_changes.html b/docs/html/sdk/api_diff/17/changes/classes_index_changes.html
index 9d44a7e..3ac7a94 100644
--- a/docs/html/sdk/api_diff/17/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/17/changes/classes_index_changes.html
@@ -462,7 +462,7 @@
 <A HREF="android.webkit.WebView.html" class="hiddenlink" target="rightframe">WebView</A><br>
 <A HREF="android.webkit.WebViewDatabase.html" class="hiddenlink" target="rightframe">WebViewDatabase</A><br>
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/classes_index_removals.html b/docs/html/sdk/api_diff/17/changes/classes_index_removals.html
index 7e5bdcd..60ada1c 100644
--- a/docs/html/sdk/api_diff/17/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/17/changes/classes_index_removals.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.webkit.html#CacheManager" class="hiddenlink" target="rightframe"><strike>CacheManager</strike></A><br>
 <A HREF="pkg_android.webkit.html#CacheManager.CacheResult" class="hiddenlink" target="rightframe"><strike>CacheManager.CacheResult</strike></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/17/changes/constructors_index_additions.html
index 6395619..1c22240 100644
--- a/docs/html/sdk/api_diff/17/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/17/changes/constructors_index_additions.html
@@ -61,7 +61,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.content.pm.ResolveInfo.html#android.content.pm.ResolveInfo.ctor_added(android.content.pm.ResolveInfo)" class="hiddenlink" target="rightframe"><b>ResolveInfo</b>
 (<code>ResolveInfo</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/constructors_index_all.html b/docs/html/sdk/api_diff/17/changes/constructors_index_all.html
index f4471ee..6ba3e21 100644
--- a/docs/html/sdk/api_diff/17/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/17/changes/constructors_index_all.html
@@ -71,7 +71,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.webkit.WebView.html#android.webkit.WebView.ctor_changed(android.content.Context, android.util.AttributeSet, int, boolean)" class="hiddenlink" target="rightframe">WebView
 (<code>Context, AttributeSet, int, boolean</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/17/changes/constructors_index_changes.html
index ecac5b1..925116f 100644
--- a/docs/html/sdk/api_diff/17/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/17/changes/constructors_index_changes.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.webkit.WebView.html#android.webkit.WebView.ctor_changed(android.content.Context, android.util.AttributeSet, int, boolean)" class="hiddenlink" target="rightframe">WebView
 (<code>Context, AttributeSet, int, boolean</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/17/changes/constructors_index_removals.html
index f1a9952..84bcc63 100644
--- a/docs/html/sdk/api_diff/17/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/17/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/fields_index_additions.html b/docs/html/sdk/api_diff/17/changes/fields_index_additions.html
index 15224bc..1107d9f 100644
--- a/docs/html/sdk/api_diff/17/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/17/changes/fields_index_additions.html
@@ -831,7 +831,7 @@
 </nobr><br>
 <nobr><A HREF="android.Manifest.permission_group.html#android.Manifest.permission_group.WRITE_USER_DICTIONARY" class="hiddenlink" target="rightframe">WRITE_USER_DICTIONARY</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/fields_index_all.html b/docs/html/sdk/api_diff/17/changes/fields_index_all.html
index 7114247..b655dee 100644
--- a/docs/html/sdk/api_diff/17/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/17/changes/fields_index_all.html
@@ -1065,7 +1065,7 @@
 </nobr><br>
 <nobr><A HREF="android.Manifest.permission_group.html#android.Manifest.permission_group.WRITE_USER_DICTIONARY" class="hiddenlink" target="rightframe">WRITE_USER_DICTIONARY</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/fields_index_changes.html b/docs/html/sdk/api_diff/17/changes/fields_index_changes.html
index d2e1a68..731f9b7 100644
--- a/docs/html/sdk/api_diff/17/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/17/changes/fields_index_changes.html
@@ -423,7 +423,7 @@
 </nobr><br>
 <nobr><A HREF="android.provider.Settings.System.html#android.provider.Settings.System.WINDOW_ANIMATION_SCALE" class="hiddenlink" target="rightframe">WINDOW_ANIMATION_SCALE</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/fields_index_removals.html b/docs/html/sdk/api_diff/17/changes/fields_index_removals.html
index ce3253f..f8acb8e 100644
--- a/docs/html/sdk/api_diff/17/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/17/changes/fields_index_removals.html
@@ -63,7 +63,7 @@
 </nobr><br>
 <nobr><A HREF="android.view.View.html#android.view.View.TEXT_ALIGNMENT_RESOLVED_DEFAULT" class="hiddenlink" target="rightframe"><strike>TEXT_ALIGNMENT_RESOLVED_DEFAULT</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/jdiff_help.html b/docs/html/sdk/api_diff/17/changes/jdiff_help.html
index 8a5fa27..74a8f9e 100644
--- a/docs/html/sdk/api_diff/17/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/17/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/17/changes/jdiff_statistics.html
index 00c3c81..f161d6b 100644
--- a/docs/html/sdk/api_diff/17/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/17/changes/jdiff_statistics.html
@@ -875,7 +875,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/17/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/17/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/17/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/methods_index_additions.html b/docs/html/sdk/api_diff/17/changes/methods_index_additions.html
index 4b61d63..894e702 100644
--- a/docs/html/sdk/api_diff/17/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/17/changes/methods_index_additions.html
@@ -710,7 +710,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.os.PowerManager.html#android.os.PowerManager.wakeUp_added(long)" class="hiddenlink" target="rightframe"><b>wakeUp</b>
 (<code>long</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/methods_index_all.html b/docs/html/sdk/api_diff/17/changes/methods_index_all.html
index 4b1d8a8..029f302 100644
--- a/docs/html/sdk/api_diff/17/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/17/changes/methods_index_all.html
@@ -902,7 +902,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.os.PowerManager.html#android.os.PowerManager.wakeUp_added(long)" class="hiddenlink" target="rightframe"><b>wakeUp</b>
 (<code>long</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/methods_index_changes.html b/docs/html/sdk/api_diff/17/changes/methods_index_changes.html
index 073c422..7d12f0d 100644
--- a/docs/html/sdk/api_diff/17/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/17/changes/methods_index_changes.html
@@ -236,7 +236,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.Surface.html#android.view.Surface.unlockCanvas_changed(android.graphics.Canvas)" class="hiddenlink" target="rightframe">unlockCanvas
 (<code>Canvas</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/methods_index_removals.html b/docs/html/sdk/api_diff/17/changes/methods_index_removals.html
index f421947..c06c446 100644
--- a/docs/html/sdk/api_diff/17/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/17/changes/methods_index_removals.html
@@ -139,7 +139,7 @@
 (<code>int</code>)</A></nobr><br>
 <nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setUseWebViewBackgroundForOverscrollBackground_removed(boolean)" class="hiddenlink" target="rightframe"><strike>setUseWebViewBackgroundForOverscrollBackground</strike>
 (<code>boolean</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/packages_index_additions.html b/docs/html/sdk/api_diff/17/changes/packages_index_additions.html
index 992d1561..e9b2888 100644
--- a/docs/html/sdk/api_diff/17/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/17/changes/packages_index_additions.html
@@ -52,7 +52,7 @@
 <A NAME="A"></A>
 <A HREF="changes-summary.html#android.hardware.display" class="hiddenlink" target="rightframe"><b>android.hardware.display</b></A><br>
 <A HREF="changes-summary.html#android.service.dreams" class="hiddenlink" target="rightframe"><b>android.service.dreams</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/packages_index_all.html b/docs/html/sdk/api_diff/17/changes/packages_index_all.html
index 1162372..a95f2d9 100644
--- a/docs/html/sdk/api_diff/17/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/17/changes/packages_index_all.html
@@ -87,7 +87,7 @@
 <A HREF="pkg_android.view.inputmethod.html" class="hiddenlink" target="rightframe">android.view.inputmethod</A><br>
 <A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
 <A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/packages_index_changes.html b/docs/html/sdk/api_diff/17/changes/packages_index_changes.html
index 95f3eaa..847f6a0 100644
--- a/docs/html/sdk/api_diff/17/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/17/changes/packages_index_changes.html
@@ -85,7 +85,7 @@
 <A HREF="pkg_android.view.inputmethod.html" class="hiddenlink" target="rightframe">android.view.inputmethod</A><br>
 <A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
 <A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/packages_index_removals.html b/docs/html/sdk/api_diff/17/changes/packages_index_removals.html
index d0ffabc..5f37b27 100644
--- a/docs/html/sdk/api_diff/17/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/17/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.accessibilityservice.html b/docs/html/sdk/api_diff/17/changes/pkg_android.accessibilityservice.html
index a6444ec..24e2bc0 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.accessibilityservice.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.accessibilityservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.app.admin.html b/docs/html/sdk/api_diff/17/changes/pkg_android.app.admin.html
index c376db3..f925800 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.app.admin.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.app.admin.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.app.html b/docs/html/sdk/api_diff/17/changes/pkg_android.app.html
index 9254b2c..aecb448 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.appwidget.html b/docs/html/sdk/api_diff/17/changes/pkg_android.appwidget.html
index 89464ec..a0ebb2d 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.appwidget.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.appwidget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.bluetooth.html b/docs/html/sdk/api_diff/17/changes/pkg_android.bluetooth.html
index 62c8ca8..e417ad6 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.bluetooth.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.bluetooth.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.content.html b/docs/html/sdk/api_diff/17/changes/pkg_android.content.html
index 552695a..30af075 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.content.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/17/changes/pkg_android.content.pm.html
index f905418..2d74e8dc 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.content.pm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/17/changes/pkg_android.content.res.html
index 34fce2d..a3f4f07 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.content.res.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.database.html b/docs/html/sdk/api_diff/17/changes/pkg_android.database.html
index ea1b1cd..6a3cf58 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.database.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.database.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/17/changes/pkg_android.graphics.html
index e8cb4bd..71c54ab 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.graphics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/17/changes/pkg_android.hardware.html
index 3474e45..f0f37e1 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.hardware.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.hardware.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.html b/docs/html/sdk/api_diff/17/changes/pkg_android.html
index 0d244c4..d321da4 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.inputmethodservice.html b/docs/html/sdk/api_diff/17/changes/pkg_android.inputmethodservice.html
index c4ece16..d7f1e29 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.inputmethodservice.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.inputmethodservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.location.html b/docs/html/sdk/api_diff/17/changes/pkg_android.location.html
index aa2b406..4de3a05 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.location.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.location.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.media.html b/docs/html/sdk/api_diff/17/changes/pkg_android.media.html
index e6f9142..2620c39 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.net.html b/docs/html/sdk/api_diff/17/changes/pkg_android.net.html
index 7d5074a..cedd018 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.net.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.net.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.net.http.html b/docs/html/sdk/api_diff/17/changes/pkg_android.net.http.html
index 4c64be1..bb8c834 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.net.http.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.net.http.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.net.wifi.html b/docs/html/sdk/api_diff/17/changes/pkg_android.net.wifi.html
index c87fc81..cfc7c0c 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.net.wifi.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.net.wifi.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.nfc.tech.html b/docs/html/sdk/api_diff/17/changes/pkg_android.nfc.tech.html
index fbb6cf7..4649ebe 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.nfc.tech.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.nfc.tech.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/17/changes/pkg_android.opengl.html
index 2591d26..dbafaf6 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.opengl.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.opengl.html
@@ -155,7 +155,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.os.html b/docs/html/sdk/api_diff/17/changes/pkg_android.os.html
index deab1aa..aaf98cb 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.os.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/17/changes/pkg_android.provider.html
index 5f3855e..5fd007b 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.provider.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.provider.html
@@ -155,7 +155,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.renderscript.html b/docs/html/sdk/api_diff/17/changes/pkg_android.renderscript.html
index 81ec16d..a893dec 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.renderscript.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.renderscript.html
@@ -197,7 +197,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.telephony.cdma.html b/docs/html/sdk/api_diff/17/changes/pkg_android.telephony.cdma.html
index 6d3a785..c672aba 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.telephony.cdma.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.telephony.cdma.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/17/changes/pkg_android.telephony.html
index 01a1338..ced1bf7 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.telephony.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.telephony.html
@@ -197,7 +197,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/17/changes/pkg_android.test.mock.html
index 7ca6b36..d0c4f81 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.test.mock.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.test.mock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.text.format.html b/docs/html/sdk/api_diff/17/changes/pkg_android.text.format.html
index ad85eaf..9e8a5ad 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.text.format.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.text.format.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.text.html b/docs/html/sdk/api_diff/17/changes/pkg_android.text.html
index e56697b..711a8c4 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.text.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.text.style.html b/docs/html/sdk/api_diff/17/changes/pkg_android.text.style.html
index 71a9243..f65e226 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.text.style.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.text.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.util.html b/docs/html/sdk/api_diff/17/changes/pkg_android.util.html
index 07cc2b4..1f7dc17 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.util.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.util.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.view.accessibility.html b/docs/html/sdk/api_diff/17/changes/pkg_android.view.accessibility.html
index 94b7be6..2dfb65c 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.view.accessibility.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.view.accessibility.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.view.html b/docs/html/sdk/api_diff/17/changes/pkg_android.view.html
index 1656c33..8e9d92e 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.view.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.view.inputmethod.html b/docs/html/sdk/api_diff/17/changes/pkg_android.view.inputmethod.html
index 9b00617..fba2a74 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.view.inputmethod.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.view.inputmethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/17/changes/pkg_android.webkit.html
index 551d55e..70c633c 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.webkit.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.webkit.html
@@ -170,7 +170,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/17/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/17/changes/pkg_android.widget.html
index 0942a3f..52d3e66 100644
--- a/docs/html/sdk/api_diff/17/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/17/changes/pkg_android.widget.html
@@ -197,7 +197,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html
index bf2c09f..ae74f81 100644
--- a/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html
@@ -3206,7 +3206,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.database.sqlite.SQLiteDatabase.html#android.database.sqlite.SQLiteDatabase.yieldIfContendedSafely_added()" class="hiddenlink" target="rightframe"><b>yieldIfContendedSafely</b>
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html
index 055d4bf..19fb2e8 100644
--- a/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html
@@ -4316,7 +4316,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html
index df82cd4..84541d1 100644
--- a/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html
@@ -1693,7 +1693,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html
index 0f55f31..8c85470 100644
--- a/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html
@@ -111,7 +111,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.app.AlertDialog.html#android.app.AlertDialog.setButton_removed(java.lang.CharSequence, android.os.Message)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
 (<code>CharSequence, Message</code>)</strike>&nbsp;in&nbsp;android.app.AlertDialog
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html
index fd78ed8..562562f 100644
--- a/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html
+++ b/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.R.attr.html b/docs/html/sdk/api_diff/3/changes/android.R.attr.html
index d35804e..3b65375 100644
--- a/docs/html/sdk/api_diff/3/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/3/changes/android.R.attr.html
@@ -724,7 +724,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.R.drawable.html b/docs/html/sdk/api_diff/3/changes/android.R.drawable.html
index ec91c69..6b60cdc 100644
--- a/docs/html/sdk/api_diff/3/changes/android.R.drawable.html
+++ b/docs/html/sdk/api_diff/3/changes/android.R.drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.R.id.html b/docs/html/sdk/api_diff/3/changes/android.R.id.html
index b4eed46..4c38801 100644
--- a/docs/html/sdk/api_diff/3/changes/android.R.id.html
+++ b/docs/html/sdk/api_diff/3/changes/android.R.id.html
@@ -206,7 +206,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.R.string.html b/docs/html/sdk/api_diff/3/changes/android.R.string.html
index 8c700c0..bc1dd41 100644
--- a/docs/html/sdk/api_diff/3/changes/android.R.string.html
+++ b/docs/html/sdk/api_diff/3/changes/android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.R.style.html b/docs/html/sdk/api_diff/3/changes/android.R.style.html
index fa925bb..83b694c 100644
--- a/docs/html/sdk/api_diff/3/changes/android.R.style.html
+++ b/docs/html/sdk/api_diff/3/changes/android.R.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.app.Activity.html b/docs/html/sdk/api_diff/3/changes/android.app.Activity.html
index 59c2711..cbe6d8d 100644
--- a/docs/html/sdk/api_diff/3/changes/android.app.Activity.html
+++ b/docs/html/sdk/api_diff/3/changes/android.app.Activity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html b/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html
index 422a675..283157f 100644
--- a/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html
+++ b/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html b/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html
index 1be5089..ba3fe64 100644
--- a/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html
+++ b/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html b/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html
index 37f5cd4..bb2fda5 100644
--- a/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html
+++ b/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html
@@ -220,7 +220,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html b/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html
index 0d56b9c..1c7adf5 100644
--- a/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html
+++ b/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html b/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html
index bcfcabb..91176d3 100644
--- a/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html
+++ b/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html b/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html
index 58421a3..6804f43 100644
--- a/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html
+++ b/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html b/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html
index 8056fdb..6dfe39f 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html b/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html
index 438aeb2..4d18701 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html b/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html
index 97bb8f7..997a519 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.Context.html b/docs/html/sdk/api_diff/3/changes/android.content.Context.html
index d41db1b..b9ed258 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.Context.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html b/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html
index 3cce190..5e9ec5c 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.Intent.html b/docs/html/sdk/api_diff/3/changes/android.content.Intent.html
index 5053901..41a2fb3 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.Intent.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.Intent.html
@@ -236,7 +236,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html
index c8b3f78..2756893 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html
index d9fb46b..482f24c 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html
index 12395cc..38e525c 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html b/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html
index 4b08d37..63d2389 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html
@@ -159,7 +159,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html
index 2902399..48e8357 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html b/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html
index c3c0573..fbefa16 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html b/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html
index bb67b6d..5442e85 100644
--- a/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html
+++ b/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html b/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html
index f072598..4cce233 100644
--- a/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html
+++ b/docs/html/sdk/api_diff/3/changes/android.database.Cursor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html b/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html
index ab1c183..9553414 100644
--- a/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html
+++ b/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html b/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html
index fa57630..5174f13 100644
--- a/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html
+++ b/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html b/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html
index 491a707..24f6016 100644
--- a/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html
+++ b/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html
index a2df5de..580ce31 100644
--- a/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html
+++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html
index 01842b7..3f3109e 100644
--- a/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html
+++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html
index 0db409c..6b51c62 100644
--- a/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html
+++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html b/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html
index 05c1da6..5d0ec61 100644
--- a/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html
+++ b/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html
index 6b05cbfa..a03a7d9 100644
--- a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html
+++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html
index f4b8d7b..460b349 100644
--- a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html
+++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html
index d525dd7..3d71536 100644
--- a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html
+++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html
index 520dcd46..6625ac5 100644
--- a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html
+++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html
index 5f03e03..27725fd 100644
--- a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html
+++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html
@@ -113,7 +113,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html
index 84fea2a..aa2e090 100644
--- a/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html
+++ b/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html
index 8a4f15a..d37d62ef 100644
--- a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html
index d276bd7..95acf13 100644
--- a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html
+++ b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html
@@ -458,7 +458,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.location.Location.html b/docs/html/sdk/api_diff/3/changes/android.location.Location.html
index 05f5191..850fcae 100644
--- a/docs/html/sdk/api_diff/3/changes/android.location.Location.html
+++ b/docs/html/sdk/api_diff/3/changes/android.location.Location.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html b/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html
index d98b5f3..57356d9 100644
--- a/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html
+++ b/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html
@@ -228,7 +228,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html
index 00c04bf..94c1ce1 100644
--- a/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html
+++ b/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html
@@ -212,7 +212,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html
index f3e24db..dbcf159 100644
--- a/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html
+++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html
index d6340c1..310cb4b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html
+++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html
index ff46481..901f04b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html
+++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html
@@ -225,7 +225,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html b/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html
index a4f729a..6b41868 100644
--- a/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html
+++ b/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html b/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html
index 52f3301..488eb9e 100644
--- a/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html
+++ b/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html b/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html
index b78d6a0..93f58cbc 100644
--- a/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html
+++ b/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html b/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html
index 1f3768e..c01eb8a 100644
--- a/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html
+++ b/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html b/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html
index 4fd3f6e..1320e01 100644
--- a/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html
+++ b/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Binder.html b/docs/html/sdk/api_diff/3/changes/android.os.Binder.html
index 9fec6a4..4a709aa 100644
--- a/docs/html/sdk/api_diff/3/changes/android.os.Binder.html
+++ b/docs/html/sdk/api_diff/3/changes/android.os.Binder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Build.html b/docs/html/sdk/api_diff/3/changes/android.os.Build.html
index cf738eb..e4cfb74 100644
--- a/docs/html/sdk/api_diff/3/changes/android.os.Build.html
+++ b/docs/html/sdk/api_diff/3/changes/android.os.Build.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Debug.html b/docs/html/sdk/api_diff/3/changes/android.os.Debug.html
index c2aead7..bad7674 100644
--- a/docs/html/sdk/api_diff/3/changes/android.os.Debug.html
+++ b/docs/html/sdk/api_diff/3/changes/android.os.Debug.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Environment.html b/docs/html/sdk/api_diff/3/changes/android.os.Environment.html
index 1151021..7213689 100644
--- a/docs/html/sdk/api_diff/3/changes/android.os.Environment.html
+++ b/docs/html/sdk/api_diff/3/changes/android.os.Environment.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Handler.html b/docs/html/sdk/api_diff/3/changes/android.os.Handler.html
index dcc1da8..53b0a6e 100644
--- a/docs/html/sdk/api_diff/3/changes/android.os.Handler.html
+++ b/docs/html/sdk/api_diff/3/changes/android.os.Handler.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html b/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html
index 1328f26..b2f85b6 100644
--- a/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html
+++ b/docs/html/sdk/api_diff/3/changes/android.os.IBinder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Looper.html b/docs/html/sdk/api_diff/3/changes/android.os.Looper.html
index 9910373..70fa745 100644
--- a/docs/html/sdk/api_diff/3/changes/android.os.Looper.html
+++ b/docs/html/sdk/api_diff/3/changes/android.os.Looper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html b/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html
index 70eb25d..3dda83d 100644
--- a/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html
+++ b/docs/html/sdk/api_diff/3/changes/android.os.Parcel.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html b/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html
index 605c019..416bb58 100644
--- a/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html
+++ b/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html b/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html
index 7acc308..c53842a 100644
--- a/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html
+++ b/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html b/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html
index 110d28a..ccf63ce8 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.Browser.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html
index 0f2a63b..9050037 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html
index c2694d4..90a543e 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html
index 758917d..72e3e56 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html
index 1b14ca5..eb6bc62 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html
index cecc4f6..50257df 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html
index 7eb4f8f..ac4b7aa 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html
index d4ebdaf..f8163d6 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html
index 76a3df3..c502302 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html
index 8c61a9a..a62409b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html
index 0672182..fe797d7 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html
@@ -487,7 +487,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html
index 00b0b1f..f475c84 100644
--- a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html
+++ b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html
@@ -185,7 +185,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html b/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html
index 5804c12..4e7729b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html
+++ b/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html
index 2948e22..5ece4b2 100644
--- a/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html
+++ b/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html b/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html
index ce994dc..d5b4c3e 100644
--- a/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html
+++ b/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html
index 7574c36..63f5cb0 100644
--- a/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html
+++ b/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html
index b8970e5..986bd8b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html
+++ b/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html
index 19c7eb5..570b5e6 100644
--- a/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html
+++ b/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html b/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html
index 4606b94..af0222b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html
+++ b/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html
@@ -359,7 +359,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html
index ff4e607..95055ba 100644
--- a/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html
+++ b/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html
index e98d280..bc32fc5 100644
--- a/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html
+++ b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html b/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html
index cc1c872..fd59f7a 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.Annotation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html b/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html
index fe1dac8..be59e37 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.AutoText.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html b/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html
index 83524fd3..639f1c9 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html b/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html
index 0997f18..4169150 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.Spanned.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html b/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html
index daf9724..505151f 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html b/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html
index 4507a9f..6fe0c10 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html
index 9842e35..08ceb8e 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html
index 5771069..68a5768 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html
index 55d951b..b1c7776 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html
index fdc0694..22a06d5 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html
index 665ddfb..bb7eee0 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html
index e616589..bb42b0b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html
index e130b45..f5114a0 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html
index 718952d..684c68c 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html
index a35816b..9cc00e7 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html
index 5dbcb76..ece5c16 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html
index 248d333..eb22663 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html
index 7f01b23..a68689b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html
index 132e8ac..846d5a0 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html
index 0b69f96..0d16dec 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html b/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html
index 8ee56c8..90b4db6 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html
index bce6cac..753eb9b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html b/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html
index c05042e..bbafaf2 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html
index f6f111a..d26e267 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html
index 6c1afa4..fd3c8de 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html
index d6665d8..a381c11 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html
index d0c72f8..e0226d4 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html
index 2008d44..fcd3129 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html
index 08ba87a..cccb7d8 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html b/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html
index 77b798d..25031ea 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html
index c71892f..3b32d89 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html
index 90dd564..71dfabb 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html
index bac6148..8ad550d 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html
index e9ea964..cb82c64 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html
index 6fafb9a..a2952de 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html
index 123f7d1..a793bc8 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html
index 2c2d71f..e6db4dd 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html
index feca474..411c459 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html
index b112ec7..9404b9f 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html
index fd3b0ea..ad1e947 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html
index 2a3c149..9051e72 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html
index a100c67..6529d41 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html
index 95123ce..97e1514 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html b/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html
index 81251dc0..d005af2 100644
--- a/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html
+++ b/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html b/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html
index 6a04ea8..ac8d9cc 100644
--- a/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html
+++ b/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html b/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html
index 4635a73..7d02b7c 100644
--- a/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html
+++ b/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html
index 0248e7a..b01d50b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html
index c06eb57..ecce925 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html b/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html
index 2d430f6..09462e6 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.Gravity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html b/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html
index c6f5a77..ec58eb75 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html
index ae09692..927b948 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html
@@ -260,7 +260,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Menu.html b/docs/html/sdk/api_diff/3/changes/android.view.Menu.html
index aa93fb8..f47de3b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.Menu.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.Menu.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html b/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html
index 41c690e..bbb8169 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html b/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html
index 4b7421f..90d3170 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.View.html b/docs/html/sdk/api_diff/3/changes/android.view.View.html
index 86f9ca6..b0bd98b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.View.html
@@ -242,7 +242,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html
index e1083ba..eb2fbb1 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html
@@ -267,7 +267,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html
index 90b2d20..aae063b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html
index a8457da..36764a5 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html
index 5f9fc027..33681d1 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html
index 6cd9724..722b3f3 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Window.html b/docs/html/sdk/api_diff/3/changes/android.view.Window.html
index bf5347e..d9e1635 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.Window.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.Window.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html b/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html
index c59fef8..47fc3e6 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html
@@ -277,7 +277,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html b/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html
index d0e860b..e4136f2 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html b/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html
index 62120f6..1527048 100644
--- a/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html
+++ b/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html b/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html
index bb49443..4676bce 100644
--- a/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html
+++ b/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html
index ea2b610..16d7617 100644
--- a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html
+++ b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html
index ca0addd..620b93d 100644
--- a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html
+++ b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html
index e223080..45f69eb 100644
--- a/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html
+++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html
index 7c7161d..e9a08e6 100644
--- a/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html
+++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html
index acc289c..57d1b11 100644
--- a/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html
+++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html
index f3dc8e7..8c24e02 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html
index 830ea55..f0a99fc 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html
index b43d34b..8af8c2a 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html
index e7b65ad..da6573b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html b/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html
index de12564..7e0a692 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html
@@ -199,7 +199,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html b/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html
index 428ece8..949dcb27 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html
index d0f5491..28a0fb3 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html
@@ -146,7 +146,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html b/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html
index 3304a1a..693eff4 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.GridView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html b/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html
index dbef56f..69cdb9f 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.ListView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html
index 7ef698d..544c4fc 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html
index 409ccc5..cddc67b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html
@@ -228,7 +228,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html b/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html
index 9d1e13a..1246e46 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html
index ce206f5..09c4909 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html
index 0a27192..3f443a6 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html
@@ -206,7 +206,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html
index 2cf9c82..ef0e179 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html b/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html
index c72001d..66d2d0b 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html
index 7ceecd6..2cec40a 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html b/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html
index 08f7454..11ebaeb 100644
--- a/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html
+++ b/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html
@@ -318,7 +318,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/changes-summary.html b/docs/html/sdk/api_diff/3/changes/changes-summary.html
index 4c0012a..754669b 100644
--- a/docs/html/sdk/api_diff/3/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/3/changes/changes-summary.html
@@ -416,7 +416,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_additions.html b/docs/html/sdk/api_diff/3/changes/classes_index_additions.html
index f15b280..8cb8d9a 100644
--- a/docs/html/sdk/api_diff/3/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/3/changes/classes_index_additions.html
@@ -454,7 +454,7 @@
 <A HREF="pkg_android.view.html#ViewDebug.CapturedViewProperty" class="hiddenlink" target="rightframe"><b>ViewDebug.CapturedViewProperty</b></A><br>
 <A HREF="pkg_android.view.html#ViewTreeObserver.OnScrollChangedListener" class="hiddenlink" target="rightframe"><b><i>ViewTreeObserver.OnScrollChangedListener</i></b></A><br>
 <A HREF="pkg_android.opengl.html#Visibility" class="hiddenlink" target="rightframe"><b>Visibility</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_all.html b/docs/html/sdk/api_diff/3/changes/classes_index_all.html
index 408e749..ea3f242 100644
--- a/docs/html/sdk/api_diff/3/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/3/changes/classes_index_all.html
@@ -943,7 +943,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_changes.html b/docs/html/sdk/api_diff/3/changes/classes_index_changes.html
index df07718..6fa0199 100644
--- a/docs/html/sdk/api_diff/3/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/3/changes/classes_index_changes.html
@@ -826,7 +826,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_removals.html b/docs/html/sdk/api_diff/3/changes/classes_index_removals.html
index 5b38988..a855673 100644
--- a/docs/html/sdk/api_diff/3/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/3/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:.5em;">
 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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html
index e934822..4b3f854 100644
--- a/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html
@@ -394,7 +394,7 @@
 (<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
 <nobr><A HREF="android.text.style.URLSpan.html#android.text.style.URLSpan.ctor_added(android.os.Parcel)" class="hiddenlink" target="rightframe"><b>URLSpan</b>
 (<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_all.html b/docs/html/sdk/api_diff/3/changes/constructors_index_all.html
index 9372548..eb943fe 100644
--- a/docs/html/sdk/api_diff/3/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/3/changes/constructors_index_all.html
@@ -472,7 +472,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.ViewConfiguration.html#android.view.ViewConfiguration.ctor_changed()" class="hiddenlink" target="rightframe">ViewConfiguration
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html
index 34bc391..95e03bc 100644
--- a/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html
@@ -64,7 +64,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.ViewConfiguration.html#android.view.ViewConfiguration.ctor_changed()" class="hiddenlink" target="rightframe">ViewConfiguration
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html
index 5306e8d..4ad9058 100644
--- a/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.net.NetworkInfo.html#android.net.NetworkInfo.ctor_removed(int)" class="hiddenlink" target="rightframe"><strike>NetworkInfo</strike>
 (<code>int</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html
index b8517aa..37e4f63 100644
--- a/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html
+++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html
index 3f53e44..312b2b0 100644
--- a/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html
+++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html
index 4282162..9869cc5 100644
--- a/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html
+++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html
@@ -180,7 +180,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_additions.html b/docs/html/sdk/api_diff/3/changes/fields_index_additions.html
index 5c24079..bb880c3 100644
--- a/docs/html/sdk/api_diff/3/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/3/changes/fields_index_additions.html
@@ -1114,7 +1114,7 @@
 </nobr><br>
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.WRITE_SECURE_SETTINGS" class="hiddenlink" target="rightframe">WRITE_SECURE_SETTINGS</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_all.html b/docs/html/sdk/api_diff/3/changes/fields_index_all.html
index 49c429f..a1ca32f 100644
--- a/docs/html/sdk/api_diff/3/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/3/changes/fields_index_all.html
@@ -1255,7 +1255,7 @@
 </nobr><br>
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.WRITE_SECURE_SETTINGS" class="hiddenlink" target="rightframe">WRITE_SECURE_SETTINGS</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_changes.html b/docs/html/sdk/api_diff/3/changes/fields_index_changes.html
index 5059b34..8f6f6a8 100644
--- a/docs/html/sdk/api_diff/3/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/3/changes/fields_index_changes.html
@@ -456,7 +456,7 @@
 </nobr><br>
 <nobr><A HREF="android.provider.Settings.System.html#android.provider.Settings.System.WIFI_WATCHDOG_PING_TIMEOUT_MS" class="hiddenlink" target="rightframe">WIFI_WATCHDOG_PING_TIMEOUT_MS</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_removals.html b/docs/html/sdk/api_diff/3/changes/fields_index_removals.html
index fc49c41..3928565 100644
--- a/docs/html/sdk/api_diff/3/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/3/changes/fields_index_removals.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.content.Intent.html#android.content.Intent.CATEGORY_GADGET" class="hiddenlink" target="rightframe"><strike>CATEGORY_GADGET</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html b/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html
index 0e04731..80bdc54 100644
--- a/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html
+++ b/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.Class.html b/docs/html/sdk/api_diff/3/changes/java.lang.Class.html
index 212899a..33938b7 100644
--- a/docs/html/sdk/api_diff/3/changes/java.lang.Class.html
+++ b/docs/html/sdk/api_diff/3/changes/java.lang.Class.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html
index c27ba0c..343cca3 100644
--- a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html
+++ b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html
index ca185e0..03a5e92 100644
--- a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html
+++ b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html b/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html
index e85b8a6..f43ef10 100644
--- a/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html
+++ b/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html b/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html
index 9682ddc..ecad5d5 100644
--- a/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html
+++ b/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_help.html b/docs/html/sdk/api_diff/3/changes/jdiff_help.html
index 08f8704..8ae54dc 100644
--- a/docs/html/sdk/api_diff/3/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/3/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html
index e39c5b9..8b1c227 100644
--- a/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html
@@ -1229,7 +1229,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/3/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_additions.html b/docs/html/sdk/api_diff/3/changes/methods_index_additions.html
index d9a7102..c1b01b7 100644
--- a/docs/html/sdk/api_diff/3/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/3/changes/methods_index_additions.html
@@ -1401,7 +1401,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.database.sqlite.SQLiteDatabase.html#android.database.sqlite.SQLiteDatabase.yieldIfContendedSafely_added()" class="hiddenlink" target="rightframe"><b>yieldIfContendedSafely</b>
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_all.html b/docs/html/sdk/api_diff/3/changes/methods_index_all.html
index 3ebc06c..f2b6d11 100644
--- a/docs/html/sdk/api_diff/3/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/3/changes/methods_index_all.html
@@ -1596,7 +1596,7 @@
 ()</A></nobr><br>
 <nobr><A HREF="android.database.sqlite.SQLiteDatabase.html#android.database.sqlite.SQLiteDatabase.yieldIfContendedSafely_added()" class="hiddenlink" target="rightframe"><b>yieldIfContendedSafely</b>
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_changes.html b/docs/html/sdk/api_diff/3/changes/methods_index_changes.html
index 947c7df..670a1a7 100644
--- a/docs/html/sdk/api_diff/3/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/3/changes/methods_index_changes.html
@@ -431,7 +431,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.database.sqlite.SQLiteDatabase.html#android.database.sqlite.SQLiteDatabase.yieldIfContended_changed()" class="hiddenlink" target="rightframe">yieldIfContended
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_removals.html b/docs/html/sdk/api_diff/3/changes/methods_index_removals.html
index fff7c9b..10a8b511 100644
--- a/docs/html/sdk/api_diff/3/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/3/changes/methods_index_removals.html
@@ -78,7 +78,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.app.AlertDialog.html#android.app.AlertDialog.setButton_removed(java.lang.CharSequence, android.os.Message)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
 (<code>CharSequence, Message</code>)</strike>&nbsp;in&nbsp;android.app.AlertDialog
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_additions.html b/docs/html/sdk/api_diff/3/changes/packages_index_additions.html
index 619b923..ab39e8d 100644
--- a/docs/html/sdk/api_diff/3/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/3/changes/packages_index_additions.html
@@ -55,7 +55,7 @@
 <A HREF="changes-summary.html#android.text.format" class="hiddenlink" target="rightframe"><b>android.text.format</b></A><br>
 <A HREF="changes-summary.html#android.view.inputmethod" class="hiddenlink" target="rightframe"><b>android.view.inputmethod</b></A><br>
 <A HREF="changes-summary.html#java.beans" class="hiddenlink" target="rightframe"><b>java.beans</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_all.html b/docs/html/sdk/api_diff/3/changes/packages_index_all.html
index a5b6aa5..e39aab1 100644
--- a/docs/html/sdk/api_diff/3/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/3/changes/packages_index_all.html
@@ -91,7 +91,7 @@
 <A HREF="pkg_java.lang.html" class="hiddenlink" target="rightframe">java.lang</A><br>
 <A HREF="pkg_java.util.jar.html" class="hiddenlink" target="rightframe">java.util.jar</A><br>
 <A HREF="pkg_java.util.logging.html" class="hiddenlink" target="rightframe">java.util.logging</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_changes.html b/docs/html/sdk/api_diff/3/changes/packages_index_changes.html
index 303991c..bc6b45c 100644
--- a/docs/html/sdk/api_diff/3/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/3/changes/packages_index_changes.html
@@ -85,7 +85,7 @@
 <A HREF="pkg_java.lang.html" class="hiddenlink" target="rightframe">java.lang</A><br>
 <A HREF="pkg_java.util.jar.html" class="hiddenlink" target="rightframe">java.util.jar</A><br>
 <A HREF="pkg_java.util.logging.html" class="hiddenlink" target="rightframe">java.util.logging</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_removals.html b/docs/html/sdk/api_diff/3/changes/packages_index_removals.html
index cd89a22..f22b7e4 100644
--- a/docs/html/sdk/api_diff/3/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/3/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.app.html b/docs/html/sdk/api_diff/3/changes/pkg_android.app.html
index e71150e..50d372d 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.app.html
@@ -183,7 +183,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.html
index 82c7540..be2eb8b 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html
index 228d5370..46d3c81 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html
index ed61a68..9bb6d98 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.database.html b/docs/html/sdk/api_diff/3/changes/pkg_android.database.html
index 3779b1e..2ae206f 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.database.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.database.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html b/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html
index 759b62e..e7d313b 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html
index 390658f..f2ac3ec 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html
index a6f9d2b..0fe8132 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html
index c7b3656..ed1244f 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html
index 2feb91c..814da27 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html
@@ -155,7 +155,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.html b/docs/html/sdk/api_diff/3/changes/pkg_android.html
index 389d3ba..634e236 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.location.html b/docs/html/sdk/api_diff/3/changes/pkg_android.location.html
index d4cde3a..a7c8727 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.location.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.location.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.media.html b/docs/html/sdk/api_diff/3/changes/pkg_android.media.html
index 788a689..e7a5c4c 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.net.html b/docs/html/sdk/api_diff/3/changes/pkg_android.net.html
index c9163bc..e9a7fd8 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.net.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.net.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html b/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html
index 7b2f4d6..612bc2c 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html
index 0d5be82..d89e0c5 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.os.html b/docs/html/sdk/api_diff/3/changes/pkg_android.os.html
index 8058a44..e98d713 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.os.html
@@ -197,7 +197,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html b/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html
index a08098c..ea6f993 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html
index ded1469..e205cb5 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html
@@ -218,7 +218,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html
index 952457a..7cd7023 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html
index 70abc5b..fdf8ead 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.html
index ad006a8..a43438c 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.test.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html
index 151b2cb..2ca0024 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html
index 6935761..3286a11 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.html
index a7fb2d6..d1bffd0 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.text.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html
index 8f9a1b2..81118a4 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html
@@ -203,7 +203,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html
index fa610ce8..a9c2ead 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html
@@ -274,7 +274,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.util.html b/docs/html/sdk/api_diff/3/changes/pkg_android.util.html
index a72da6e..710dc07 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.util.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.util.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html b/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html
index 55da448..10b853f 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.view.html b/docs/html/sdk/api_diff/3/changes/pkg_android.view.html
index b5acb57..4bc77bb 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.view.html
@@ -253,7 +253,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html
index c44cc89..65530e9 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html
@@ -155,7 +155,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html
index 5f5cfbf..f7e681c 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html
@@ -295,7 +295,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html b/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html
index 075e90e..5879505 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html
index acfdcb7..b802c33 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html
index 15a17d0..984c261 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html
index 0a711a8..c70c775 100644
--- a/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html
+++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/4/changes/alldiffs_index_additions.html
index 1de6686..21c8732 100644
--- a/docs/html/sdk/api_diff/4/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/4/changes/alldiffs_index_additions.html
@@ -1537,7 +1537,7 @@
 <A HREF="pkg_android.widget.html#ZoomButtonsController" class="hiddenlink" target="rightframe"><b>ZoomButtonsController</b></A><br>
 <!-- Class ZoomButtonsController.OnZoomListener -->
 <A HREF="pkg_android.widget.html#ZoomButtonsController.OnZoomListener" class="hiddenlink" target="rightframe"><b><i>ZoomButtonsController.OnZoomListener</i></b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/4/changes/alldiffs_index_all.html
index e8828f6..b417df4 100644
--- a/docs/html/sdk/api_diff/4/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/4/changes/alldiffs_index_all.html
@@ -2209,7 +2209,7 @@
 <A HREF="pkg_android.widget.html#ZoomButtonsController" class="hiddenlink" target="rightframe"><b>ZoomButtonsController</b></A><br>
 <!-- Class ZoomButtonsController.OnZoomListener -->
 <A HREF="pkg_android.widget.html#ZoomButtonsController.OnZoomListener" class="hiddenlink" target="rightframe"><b><i>ZoomButtonsController.OnZoomListener</i></b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/4/changes/alldiffs_index_changes.html
index cce73e0..81508e3 100644
--- a/docs/html/sdk/api_diff/4/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/4/changes/alldiffs_index_changes.html
@@ -936,7 +936,7 @@
 <A HREF="android.net.wifi.WifiManager.html" class="hiddenlink" target="rightframe">WifiManager</A><br>
 <!-- Class Window.Callback -->
 <A HREF="android.view.Window.Callback.html" class="hiddenlink" target="rightframe"><i>Window.Callback</i></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/4/changes/alldiffs_index_removals.html
index f303bfa..88e578b 100644
--- a/docs/html/sdk/api_diff/4/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/4/changes/alldiffs_index_removals.html
@@ -191,7 +191,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.SET_PROCESS_FOREGROUND" class="hiddenlink" target="rightframe"><strike>SET_PROCESS_FOREGROUND</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/4/changes/android.Manifest.permission.html
index dac036f..0ee98da 100644
--- a/docs/html/sdk/api_diff/4/changes/android.Manifest.permission.html
+++ b/docs/html/sdk/api_diff/4/changes/android.Manifest.permission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.Manifest.permission_group.html b/docs/html/sdk/api_diff/4/changes/android.Manifest.permission_group.html
index b9cef41..aa65fd6 100644
--- a/docs/html/sdk/api_diff/4/changes/android.Manifest.permission_group.html
+++ b/docs/html/sdk/api_diff/4/changes/android.Manifest.permission_group.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.R.anim.html b/docs/html/sdk/api_diff/4/changes/android.R.anim.html
index 02567d1..6a2d814 100644
--- a/docs/html/sdk/api_diff/4/changes/android.R.anim.html
+++ b/docs/html/sdk/api_diff/4/changes/android.R.anim.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.R.attr.html b/docs/html/sdk/api_diff/4/changes/android.R.attr.html
index ac65950..40ac141 100644
--- a/docs/html/sdk/api_diff/4/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/4/changes/android.R.attr.html
@@ -353,7 +353,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.R.drawable.html b/docs/html/sdk/api_diff/4/changes/android.R.drawable.html
index db5443e..8cf8b3e 100644
--- a/docs/html/sdk/api_diff/4/changes/android.R.drawable.html
+++ b/docs/html/sdk/api_diff/4/changes/android.R.drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.R.style.html b/docs/html/sdk/api_diff/4/changes/android.R.style.html
index 8526cb8..d50b4f9 100644
--- a/docs/html/sdk/api_diff/4/changes/android.R.style.html
+++ b/docs/html/sdk/api_diff/4/changes/android.R.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.app.Activity.html b/docs/html/sdk/api_diff/4/changes/android.app.Activity.html
index ce11b59..6e9359f 100644
--- a/docs/html/sdk/api_diff/4/changes/android.app.Activity.html
+++ b/docs/html/sdk/api_diff/4/changes/android.app.Activity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.app.Dialog.html b/docs/html/sdk/api_diff/4/changes/android.app.Dialog.html
index fbd3663..cc30e68 100644
--- a/docs/html/sdk/api_diff/4/changes/android.app.Dialog.html
+++ b/docs/html/sdk/api_diff/4/changes/android.app.Dialog.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html b/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html
index 6379db8..80e5557 100644
--- a/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html
+++ b/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.html b/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.html
index 149e7b4..ed3235c 100644
--- a/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.html
+++ b/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.app.PendingIntent.html b/docs/html/sdk/api_diff/4/changes/android.app.PendingIntent.html
index 490c781..2667ced 100644
--- a/docs/html/sdk/api_diff/4/changes/android.app.PendingIntent.html
+++ b/docs/html/sdk/api_diff/4/changes/android.app.PendingIntent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.app.SearchManager.html b/docs/html/sdk/api_diff/4/changes/android.app.SearchManager.html
index f9c6ea7..82ea50d 100644
--- a/docs/html/sdk/api_diff/4/changes/android.app.SearchManager.html
+++ b/docs/html/sdk/api_diff/4/changes/android.app.SearchManager.html
@@ -206,7 +206,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.content.ComponentName.html b/docs/html/sdk/api_diff/4/changes/android.content.ComponentName.html
index 8299043..84748ef 100644
--- a/docs/html/sdk/api_diff/4/changes/android.content.ComponentName.html
+++ b/docs/html/sdk/api_diff/4/changes/android.content.ComponentName.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.content.ContentProvider.html b/docs/html/sdk/api_diff/4/changes/android.content.ContentProvider.html
index 88c4e72..6e24b81 100644
--- a/docs/html/sdk/api_diff/4/changes/android.content.ContentProvider.html
+++ b/docs/html/sdk/api_diff/4/changes/android.content.ContentProvider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.content.Context.html b/docs/html/sdk/api_diff/4/changes/android.content.Context.html
index 2c348fd..724d804 100644
--- a/docs/html/sdk/api_diff/4/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/4/changes/android.content.Context.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.content.ContextWrapper.html b/docs/html/sdk/api_diff/4/changes/android.content.ContextWrapper.html
index 80f47b8..cec27fa 100644
--- a/docs/html/sdk/api_diff/4/changes/android.content.ContextWrapper.html
+++ b/docs/html/sdk/api_diff/4/changes/android.content.ContextWrapper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.content.Intent.html b/docs/html/sdk/api_diff/4/changes/android.content.Intent.html
index e482147..f1fb697 100644
--- a/docs/html/sdk/api_diff/4/changes/android.content.Intent.html
+++ b/docs/html/sdk/api_diff/4/changes/android.content.Intent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html
index a6a0b2a..c97cb73 100644
--- a/docs/html/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html
+++ b/docs/html/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html b/docs/html/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html
index e3fef19..7e8c77d 100644
--- a/docs/html/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html
+++ b/docs/html/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html b/docs/html/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html
index 0c26b5f..0928de9 100644
--- a/docs/html/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html
+++ b/docs/html/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/4/changes/android.content.pm.PackageManager.html
index ca2d857..e3b77a7 100644
--- a/docs/html/sdk/api_diff/4/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/4/changes/android.content.pm.PackageManager.html
@@ -323,7 +323,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html b/docs/html/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html
index f0c8d61..98f0182 100644
--- a/docs/html/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html
+++ b/docs/html/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/4/changes/android.content.res.Configuration.html
index 661a19b..a4a3a98 100644
--- a/docs/html/sdk/api_diff/4/changes/android.content.res.Configuration.html
+++ b/docs/html/sdk/api_diff/4/changes/android.content.res.Configuration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.Bitmap.html b/docs/html/sdk/api_diff/4/changes/android.graphics.Bitmap.html
index 2ebc43c..26d1a755 100644
--- a/docs/html/sdk/api_diff/4/changes/android.graphics.Bitmap.html
+++ b/docs/html/sdk/api_diff/4/changes/android.graphics.Bitmap.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html b/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html
index eb21e27..dcb3a7f 100644
--- a/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html
+++ b/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html b/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html
index cf7ac0f..267a1dc 100644
--- a/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html
+++ b/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.Canvas.html b/docs/html/sdk/api_diff/4/changes/android.graphics.Canvas.html
index c728b37..8455cd6 100644
--- a/docs/html/sdk/api_diff/4/changes/android.graphics.Canvas.html
+++ b/docs/html/sdk/api_diff/4/changes/android.graphics.Canvas.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.NinePatch.html b/docs/html/sdk/api_diff/4/changes/android.graphics.NinePatch.html
index 66d909f..ff9224d 100644
--- a/docs/html/sdk/api_diff/4/changes/android.graphics.NinePatch.html
+++ b/docs/html/sdk/api_diff/4/changes/android.graphics.NinePatch.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.Typeface.html b/docs/html/sdk/api_diff/4/changes/android.graphics.Typeface.html
index 5683347..031606c 100644
--- a/docs/html/sdk/api_diff/4/changes/android.graphics.Typeface.html
+++ b/docs/html/sdk/api_diff/4/changes/android.graphics.Typeface.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html
index 7817d70..9fe7bba 100644
--- a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html
+++ b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html
index 0554466..1dcf950 100644
--- a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html
+++ b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.Drawable.html b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.Drawable.html
index 2fec70b..5b01c7a 100644
--- a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.Drawable.html
+++ b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.html b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.html
index d761628..3e9b460 100644
--- a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.html
+++ b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.hardware.SensorManager.html b/docs/html/sdk/api_diff/4/changes/android.hardware.SensorManager.html
index a24198a..42a556f 100644
--- a/docs/html/sdk/api_diff/4/changes/android.hardware.SensorManager.html
+++ b/docs/html/sdk/api_diff/4/changes/android.hardware.SensorManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.html b/docs/html/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.html
index 243ba18..2ef63d1 100644
--- a/docs/html/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.html
+++ b/docs/html/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.location.Address.html b/docs/html/sdk/api_diff/4/changes/android.location.Address.html
index 1d4684e..445087f3 100644
--- a/docs/html/sdk/api_diff/4/changes/android.location.Address.html
+++ b/docs/html/sdk/api_diff/4/changes/android.location.Address.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/4/changes/android.media.AudioManager.html
index d8e89b9..849440b 100644
--- a/docs/html/sdk/api_diff/4/changes/android.media.AudioManager.html
+++ b/docs/html/sdk/api_diff/4/changes/android.media.AudioManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html b/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html
index c115d80..cd9b2ce 100644
--- a/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html
+++ b/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.html
index 973f0ec..9c9501e 100644
--- a/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.html
+++ b/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.media.ToneGenerator.html b/docs/html/sdk/api_diff/4/changes/android.media.ToneGenerator.html
index b24d142..9e75c6f 100644
--- a/docs/html/sdk/api_diff/4/changes/android.media.ToneGenerator.html
+++ b/docs/html/sdk/api_diff/4/changes/android.media.ToneGenerator.html
@@ -591,7 +591,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.net.wifi.WifiManager.html b/docs/html/sdk/api_diff/4/changes/android.net.wifi.WifiManager.html
index 4fa554e..c56c9bf 100644
--- a/docs/html/sdk/api_diff/4/changes/android.net.wifi.WifiManager.html
+++ b/docs/html/sdk/api_diff/4/changes/android.net.wifi.WifiManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.os.Build.VERSION.html b/docs/html/sdk/api_diff/4/changes/android.os.Build.VERSION.html
index 0b0da42..7099db0 100644
--- a/docs/html/sdk/api_diff/4/changes/android.os.Build.VERSION.html
+++ b/docs/html/sdk/api_diff/4/changes/android.os.Build.VERSION.html
@@ -132,7 +132,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.os.Build.html b/docs/html/sdk/api_diff/4/changes/android.os.Build.html
index 1d28669..4892400 100644
--- a/docs/html/sdk/api_diff/4/changes/android.os.Build.html
+++ b/docs/html/sdk/api_diff/4/changes/android.os.Build.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.os.RemoteCallbackList.html b/docs/html/sdk/api_diff/4/changes/android.os.RemoteCallbackList.html
index 4af931f..b5b73d5 100644
--- a/docs/html/sdk/api_diff/4/changes/android.os.RemoteCallbackList.html
+++ b/docs/html/sdk/api_diff/4/changes/android.os.RemoteCallbackList.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html b/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html
index 8ad259f..a2fb5d3 100644
--- a/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html
+++ b/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html b/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html
index 2b71910..a8cd0b2 100644
--- a/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html
+++ b/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.provider.Settings.Secure.html b/docs/html/sdk/api_diff/4/changes/android.provider.Settings.Secure.html
index 605753f..2676fee 100644
--- a/docs/html/sdk/api_diff/4/changes/android.provider.Settings.Secure.html
+++ b/docs/html/sdk/api_diff/4/changes/android.provider.Settings.Secure.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/4/changes/android.provider.Settings.System.html
index 3c4bdab..f5906e8 100644
--- a/docs/html/sdk/api_diff/4/changes/android.provider.Settings.System.html
+++ b/docs/html/sdk/api_diff/4/changes/android.provider.Settings.System.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/4/changes/android.telephony.TelephonyManager.html
index 6c115df..e96ff5d 100644
--- a/docs/html/sdk/api_diff/4/changes/android.telephony.TelephonyManager.html
+++ b/docs/html/sdk/api_diff/4/changes/android.telephony.TelephonyManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html
index 0401a92..7a9ff8b 100644
--- a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html
+++ b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html
@@ -241,7 +241,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.html b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.html
index 8eee7f6..5d94975 100644
--- a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.html
+++ b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html
index 7863761..41dfe11 100644
--- a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html
+++ b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html
index b42baa3..e30ca86 100644
--- a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html
+++ b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html
@@ -491,7 +491,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.test.AndroidTestCase.html b/docs/html/sdk/api_diff/4/changes/android.test.AndroidTestCase.html
index a54bbed..fb9f311 100644
--- a/docs/html/sdk/api_diff/4/changes/android.test.AndroidTestCase.html
+++ b/docs/html/sdk/api_diff/4/changes/android.test.AndroidTestCase.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.test.mock.MockContext.html b/docs/html/sdk/api_diff/4/changes/android.test.mock.MockContext.html
index 1991722..8f6afba 100644
--- a/docs/html/sdk/api_diff/4/changes/android.test.mock.MockContext.html
+++ b/docs/html/sdk/api_diff/4/changes/android.test.mock.MockContext.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.html
index 35d9333..a431a3a 100644
--- a/docs/html/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.html
+++ b/docs/html/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.text.style.ImageSpan.html b/docs/html/sdk/api_diff/4/changes/android.text.style.ImageSpan.html
index c09b145..927d9f8 100644
--- a/docs/html/sdk/api_diff/4/changes/android.text.style.ImageSpan.html
+++ b/docs/html/sdk/api_diff/4/changes/android.text.style.ImageSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.util.Config.html b/docs/html/sdk/api_diff/4/changes/android.util.Config.html
index fabc6fc..75f7358 100644
--- a/docs/html/sdk/api_diff/4/changes/android.util.Config.html
+++ b/docs/html/sdk/api_diff/4/changes/android.util.Config.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.util.DisplayMetrics.html b/docs/html/sdk/api_diff/4/changes/android.util.DisplayMetrics.html
index 2548a72..ac49477 100644
--- a/docs/html/sdk/api_diff/4/changes/android.util.DisplayMetrics.html
+++ b/docs/html/sdk/api_diff/4/changes/android.util.DisplayMetrics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.util.TypedValue.html b/docs/html/sdk/api_diff/4/changes/android.util.TypedValue.html
index 9898fcb..71071f9 100644
--- a/docs/html/sdk/api_diff/4/changes/android.util.TypedValue.html
+++ b/docs/html/sdk/api_diff/4/changes/android.util.TypedValue.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.view.Surface.html b/docs/html/sdk/api_diff/4/changes/android.view.Surface.html
index 09dbb273a..5dff188 100644
--- a/docs/html/sdk/api_diff/4/changes/android.view.Surface.html
+++ b/docs/html/sdk/api_diff/4/changes/android.view.Surface.html
@@ -125,7 +125,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.view.VelocityTracker.html b/docs/html/sdk/api_diff/4/changes/android.view.VelocityTracker.html
index 18da4941..569809d 100644
--- a/docs/html/sdk/api_diff/4/changes/android.view.VelocityTracker.html
+++ b/docs/html/sdk/api_diff/4/changes/android.view.VelocityTracker.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.view.View.html b/docs/html/sdk/api_diff/4/changes/android.view.View.html
index 803bc7a..aff688f 100644
--- a/docs/html/sdk/api_diff/4/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/4/changes/android.view.View.html
@@ -194,7 +194,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/4/changes/android.view.ViewConfiguration.html
index c38a9f5..f32face 100644
--- a/docs/html/sdk/api_diff/4/changes/android.view.ViewConfiguration.html
+++ b/docs/html/sdk/api_diff/4/changes/android.view.ViewConfiguration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.view.Window.Callback.html b/docs/html/sdk/api_diff/4/changes/android.view.Window.Callback.html
index a76ab48..5c44168 100644
--- a/docs/html/sdk/api_diff/4/changes/android.view.Window.Callback.html
+++ b/docs/html/sdk/api_diff/4/changes/android.view.Window.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html b/docs/html/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html
index 6a123ac..a9f3776 100644
--- a/docs/html/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html
+++ b/docs/html/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.CheckedTextView.html b/docs/html/sdk/api_diff/4/changes/android.widget.CheckedTextView.html
index 9629a79..0f22adb 100644
--- a/docs/html/sdk/api_diff/4/changes/android.widget.CheckedTextView.html
+++ b/docs/html/sdk/api_diff/4/changes/android.widget.CheckedTextView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.ListView.html b/docs/html/sdk/api_diff/4/changes/android.widget.ListView.html
index 1f2d3d6..36f20bb 100644
--- a/docs/html/sdk/api_diff/4/changes/android.widget.ListView.html
+++ b/docs/html/sdk/api_diff/4/changes/android.widget.ListView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.PopupWindow.html b/docs/html/sdk/api_diff/4/changes/android.widget.PopupWindow.html
index 8b52b3f..923a7af 100644
--- a/docs/html/sdk/api_diff/4/changes/android.widget.PopupWindow.html
+++ b/docs/html/sdk/api_diff/4/changes/android.widget.PopupWindow.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.html b/docs/html/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.html
index 65286bd..08634f7 100644
--- a/docs/html/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.html
+++ b/docs/html/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.TabWidget.html b/docs/html/sdk/api_diff/4/changes/android.widget.TabWidget.html
index f080dc5..8a34165 100644
--- a/docs/html/sdk/api_diff/4/changes/android.widget.TabWidget.html
+++ b/docs/html/sdk/api_diff/4/changes/android.widget.TabWidget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/changes-summary.html b/docs/html/sdk/api_diff/4/changes/changes-summary.html
index bbed016..734862f 100644
--- a/docs/html/sdk/api_diff/4/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/4/changes/changes-summary.html
@@ -332,7 +332,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/classes_index_additions.html b/docs/html/sdk/api_diff/4/changes/classes_index_additions.html
index 71e2423..7db8de3 100644
--- a/docs/html/sdk/api_diff/4/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/4/changes/classes_index_additions.html
@@ -199,7 +199,7 @@
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.widget.html#ZoomButtonsController" class="hiddenlink" target="rightframe"><b>ZoomButtonsController</b></A><br>
 <A HREF="pkg_android.widget.html#ZoomButtonsController.OnZoomListener" class="hiddenlink" target="rightframe"><b><i>ZoomButtonsController.OnZoomListener</i></b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/classes_index_all.html b/docs/html/sdk/api_diff/4/changes/classes_index_all.html
index 5415cf4..b38ed7d 100644
--- a/docs/html/sdk/api_diff/4/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/4/changes/classes_index_all.html
@@ -526,7 +526,7 @@
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.widget.html#ZoomButtonsController" class="hiddenlink" target="rightframe"><b>ZoomButtonsController</b></A><br>
 <A HREF="pkg_android.widget.html#ZoomButtonsController.OnZoomListener" class="hiddenlink" target="rightframe"><b><i>ZoomButtonsController.OnZoomListener</i></b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/classes_index_changes.html b/docs/html/sdk/api_diff/4/changes/classes_index_changes.html
index f74c857..758eeba 100644
--- a/docs/html/sdk/api_diff/4/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/4/changes/classes_index_changes.html
@@ -390,7 +390,7 @@
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.net.wifi.WifiManager.html" class="hiddenlink" target="rightframe">WifiManager</A><br>
 <A HREF="android.view.Window.Callback.html" class="hiddenlink" target="rightframe"><i>Window.Callback</i></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/classes_index_removals.html b/docs/html/sdk/api_diff/4/changes/classes_index_removals.html
index 9b37279..c61f12e 100644
--- a/docs/html/sdk/api_diff/4/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/4/changes/classes_index_removals.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.content.pm.html#IPackageInstallObserver" class="hiddenlink" target="rightframe"><strike>IPackageInstallObserver</strike></A><br>
 <A HREF="pkg_android.content.pm.html#IPackageInstallObserver.Stub" class="hiddenlink" target="rightframe"><strike>IPackageInstallObserver.Stub</strike></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/4/changes/constructors_index_additions.html
index 85db680..6dc4870 100644
--- a/docs/html/sdk/api_diff/4/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/4/changes/constructors_index_additions.html
@@ -80,7 +80,7 @@
 (<code>Resources, Bitmap, byte[], Rect, String</code>)</A></nobr>&nbsp;constructor<br>
 &nbsp;&nbsp;<nobr><A HREF="android.graphics.drawable.NinePatchDrawable.html#android.graphics.drawable.NinePatchDrawable.ctor_added(android.content.res.Resources, android.graphics.NinePatch)" class="hiddenlink" target="rightframe"><b>NinePatchDrawable</b>
 (<code>Resources, NinePatch</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/constructors_index_all.html b/docs/html/sdk/api_diff/4/changes/constructors_index_all.html
index cd80e6d..23f6601 100644
--- a/docs/html/sdk/api_diff/4/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/4/changes/constructors_index_all.html
@@ -106,7 +106,7 @@
 ()</A></nobr>&nbsp;constructor<br>
 <nobr><A HREF="android.telephony.gsm.SmsMessage.SubmitPdu.html#android.telephony.gsm.SmsMessage.SubmitPdu.ctor_changed()" class="hiddenlink" target="rightframe">SmsMessage.SubmitPdu
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/4/changes/constructors_index_changes.html
index a9d21d1e..c80a225 100644
--- a/docs/html/sdk/api_diff/4/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/4/changes/constructors_index_changes.html
@@ -94,7 +94,7 @@
 ()</A></nobr>&nbsp;constructor<br>
 <nobr><A HREF="android.telephony.gsm.SmsMessage.SubmitPdu.html#android.telephony.gsm.SmsMessage.SubmitPdu.ctor_changed()" class="hiddenlink" target="rightframe">SmsMessage.SubmitPdu
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/4/changes/constructors_index_removals.html
index c884917..a64ce22 100644
--- a/docs/html/sdk/api_diff/4/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/4/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:.5em;">
 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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/fields_index_additions.html b/docs/html/sdk/api_diff/4/changes/fields_index_additions.html
index d1bb48f..6e5b17e 100644
--- a/docs/html/sdk/api_diff/4/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/4/changes/fields_index_additions.html
@@ -932,7 +932,7 @@
 </nobr><br>
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.WRITE_HISTORY_BOOKMARKS" class="hiddenlink" target="rightframe">WRITE_HISTORY_BOOKMARKS</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/fields_index_all.html b/docs/html/sdk/api_diff/4/changes/fields_index_all.html
index 05afee5..dbb6873 100644
--- a/docs/html/sdk/api_diff/4/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/4/changes/fields_index_all.html
@@ -1047,7 +1047,7 @@
 </nobr><br>
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.WRITE_HISTORY_BOOKMARKS" class="hiddenlink" target="rightframe">WRITE_HISTORY_BOOKMARKS</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/fields_index_changes.html b/docs/html/sdk/api_diff/4/changes/fields_index_changes.html
index 5d60034..c04310a 100644
--- a/docs/html/sdk/api_diff/4/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/4/changes/fields_index_changes.html
@@ -174,7 +174,7 @@
 </nobr><br>
 <nobr><A HREF="android.view.Surface.html#android.view.Surface.SURACE_FROZEN" class="hiddenlink" target="rightframe">SURACE_FROZEN</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/fields_index_removals.html b/docs/html/sdk/api_diff/4/changes/fields_index_removals.html
index 1ec4ff5..edf4454 100644
--- a/docs/html/sdk/api_diff/4/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/4/changes/fields_index_removals.html
@@ -145,7 +145,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.SET_PROCESS_FOREGROUND" class="hiddenlink" target="rightframe"><strike>SET_PROCESS_FOREGROUND</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/java.util.concurrent.TimeUnit.html b/docs/html/sdk/api_diff/4/changes/java.util.concurrent.TimeUnit.html
index 41c1be3..dab55d4 100644
--- a/docs/html/sdk/api_diff/4/changes/java.util.concurrent.TimeUnit.html
+++ b/docs/html/sdk/api_diff/4/changes/java.util.concurrent.TimeUnit.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/java.util.concurrent.locks.AbstractQueuedSynchronizer.html b/docs/html/sdk/api_diff/4/changes/java.util.concurrent.locks.AbstractQueuedSynchronizer.html
index 1c6ae14..9498486 100644
--- a/docs/html/sdk/api_diff/4/changes/java.util.concurrent.locks.AbstractQueuedSynchronizer.html
+++ b/docs/html/sdk/api_diff/4/changes/java.util.concurrent.locks.AbstractQueuedSynchronizer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/jdiff_help.html b/docs/html/sdk/api_diff/4/changes/jdiff_help.html
index f4b9968..68fbbc4 100644
--- a/docs/html/sdk/api_diff/4/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/4/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/4/changes/jdiff_statistics.html
index c21b875..866cb99 100644
--- a/docs/html/sdk/api_diff/4/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/4/changes/jdiff_statistics.html
@@ -649,7 +649,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/4/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/4/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/4/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/methods_index_additions.html b/docs/html/sdk/api_diff/4/changes/methods_index_additions.html
index 86270d4..7a71e23 100644
--- a/docs/html/sdk/api_diff/4/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/4/changes/methods_index_additions.html
@@ -427,7 +427,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.widget.PopupWindow.html#android.widget.PopupWindow.update_added(int, int)" class="hiddenlink" target="rightframe"><b>update</b>
 (<code>int, int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/methods_index_all.html b/docs/html/sdk/api_diff/4/changes/methods_index_all.html
index fd4f229..a0f677a 100644
--- a/docs/html/sdk/api_diff/4/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/4/changes/methods_index_all.html
@@ -532,7 +532,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.widget.PopupWindow.html#android.widget.PopupWindow.update_added(int, int)" class="hiddenlink" target="rightframe"><b>update</b>
 (<code>int, int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/methods_index_changes.html b/docs/html/sdk/api_diff/4/changes/methods_index_changes.html
index 88e203f..f5390e0 100644
--- a/docs/html/sdk/api_diff/4/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/4/changes/methods_index_changes.html
@@ -212,7 +212,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.content.Intent.html#android.content.Intent.toURI_changed()" class="hiddenlink" target="rightframe">toURI
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/methods_index_removals.html b/docs/html/sdk/api_diff/4/changes/methods_index_removals.html
index 392307d..c01696f 100644
--- a/docs/html/sdk/api_diff/4/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/4/changes/methods_index_removals.html
@@ -61,7 +61,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.test.mock.MockPackageManager.html#android.test.mock.MockPackageManager.installPackage_removed(android.net.Uri, android.content.pm.IPackageInstallObserver, int)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
 (<code>Uri, IPackageInstallObserver, int</code>)</strike>&nbsp;in&nbsp;android.test.mock.MockPackageManager
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/packages_index_additions.html b/docs/html/sdk/api_diff/4/changes/packages_index_additions.html
index a77bd9f..856243b 100644
--- a/docs/html/sdk/api_diff/4/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/4/changes/packages_index_additions.html
@@ -53,7 +53,7 @@
 <A HREF="changes-summary.html#android.gesture" class="hiddenlink" target="rightframe"><b>android.gesture</b></A><br>
 <A HREF="changes-summary.html#android.speech.tts" class="hiddenlink" target="rightframe"><b>android.speech.tts</b></A><br>
 <A HREF="changes-summary.html#android.view.accessibility" class="hiddenlink" target="rightframe"><b>android.view.accessibility</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/packages_index_all.html b/docs/html/sdk/api_diff/4/changes/packages_index_all.html
index d27d95c..86c5005 100644
--- a/docs/html/sdk/api_diff/4/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/4/changes/packages_index_all.html
@@ -79,7 +79,7 @@
 <A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
 <A HREF="pkg_java.util.concurrent.html" class="hiddenlink" target="rightframe">java.util.concurrent</A><br>
 <A HREF="pkg_java.util.concurrent.locks.html" class="hiddenlink" target="rightframe">java.util.concurrent.locks</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/packages_index_changes.html b/docs/html/sdk/api_diff/4/changes/packages_index_changes.html
index 4299ed1..9c8d0dd 100644
--- a/docs/html/sdk/api_diff/4/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/4/changes/packages_index_changes.html
@@ -75,7 +75,7 @@
 <A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
 <A HREF="pkg_java.util.concurrent.html" class="hiddenlink" target="rightframe">java.util.concurrent</A><br>
 <A HREF="pkg_java.util.concurrent.locks.html" class="hiddenlink" target="rightframe">java.util.concurrent.locks</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/packages_index_removals.html b/docs/html/sdk/api_diff/4/changes/packages_index_removals.html
index cd89a22..f22b7e4 100644
--- a/docs/html/sdk/api_diff/4/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/4/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.app.html b/docs/html/sdk/api_diff/4/changes/pkg_android.app.html
index 2595bbe..0c1559a 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.app.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.content.html b/docs/html/sdk/api_diff/4/changes/pkg_android.content.html
index 457912e..32dafa2 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.content.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/4/changes/pkg_android.content.pm.html
index 0ad5f80..c584b92 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.content.pm.html
@@ -170,7 +170,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/4/changes/pkg_android.content.res.html
index b11f799..a65b2b2 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.content.res.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.graphics.drawable.html b/docs/html/sdk/api_diff/4/changes/pkg_android.graphics.drawable.html
index 94659fd..db4199b 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.graphics.drawable.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.graphics.drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/4/changes/pkg_android.graphics.html
index fe64e72..38196a9 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.graphics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/4/changes/pkg_android.hardware.html
index 2c9ef0b..997e81d 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.hardware.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.hardware.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.html b/docs/html/sdk/api_diff/4/changes/pkg_android.html
index 3e358ca..eb67621 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.inputmethodservice.html b/docs/html/sdk/api_diff/4/changes/pkg_android.inputmethodservice.html
index a422be2..eced149 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.inputmethodservice.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.inputmethodservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.location.html b/docs/html/sdk/api_diff/4/changes/pkg_android.location.html
index 023ef62..17a402c 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.location.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.location.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.media.html b/docs/html/sdk/api_diff/4/changes/pkg_android.media.html
index f3a60bb..85e528d 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.net.wifi.html b/docs/html/sdk/api_diff/4/changes/pkg_android.net.wifi.html
index 74b182c..2b29b41 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.net.wifi.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.net.wifi.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/4/changes/pkg_android.opengl.html
index 3689e7c..ffc8e94 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.opengl.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.opengl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.os.html b/docs/html/sdk/api_diff/4/changes/pkg_android.os.html
index ef994f9..9f43ae79 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.os.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/4/changes/pkg_android.provider.html
index 295126e..fa3cce7 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.provider.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.provider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.telephony.gsm.html b/docs/html/sdk/api_diff/4/changes/pkg_android.telephony.gsm.html
index 3d6fcde..c99792e 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.telephony.gsm.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.telephony.gsm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/4/changes/pkg_android.telephony.html
index e2175ba..f5bb816 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.telephony.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.telephony.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.test.html b/docs/html/sdk/api_diff/4/changes/pkg_android.test.html
index 28c1fc9..0153e2b 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.test.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.test.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/4/changes/pkg_android.test.mock.html
index e971fed..f385141 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.test.mock.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.test.mock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.text.style.html b/docs/html/sdk/api_diff/4/changes/pkg_android.text.style.html
index 64b7353..3550835 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.text.style.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.text.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.util.html b/docs/html/sdk/api_diff/4/changes/pkg_android.util.html
index 5a35a6f..4f6e1bf 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.util.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.view.animation.html b/docs/html/sdk/api_diff/4/changes/pkg_android.view.animation.html
index 0cfa915..dd421aa 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.view.animation.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.view.animation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.view.html b/docs/html/sdk/api_diff/4/changes/pkg_android.view.html
index 4914da2..41b674c 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.view.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/4/changes/pkg_android.widget.html
index a0b6f8e..9196a79 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_java.util.concurrent.html b/docs/html/sdk/api_diff/4/changes/pkg_java.util.concurrent.html
index 8e64161..4de4166 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_java.util.concurrent.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_java.util.concurrent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/4/changes/pkg_java.util.concurrent.locks.html b/docs/html/sdk/api_diff/4/changes/pkg_java.util.concurrent.locks.html
index f66e05a..e084641 100644
--- a/docs/html/sdk/api_diff/4/changes/pkg_java.util.concurrent.locks.html
+++ b/docs/html/sdk/api_diff/4/changes/pkg_java.util.concurrent.locks.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/5/changes/alldiffs_index_additions.html
index 33d78fe..3e499af 100644
--- a/docs/html/sdk/api_diff/5/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/5/changes/alldiffs_index_additions.html
@@ -2266,7 +2266,7 @@
 <!-- Method yieldIfContendedSafely -->
 <nobr><A HREF="android.database.sqlite.SQLiteDatabase.html#android.database.sqlite.SQLiteDatabase.yieldIfContendedSafely_added(long)" class="hiddenlink" target="rightframe"><b>yieldIfContendedSafely</b>
 (<code>long</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/5/changes/alldiffs_index_all.html
index 4ef879a..b340a28 100644
--- a/docs/html/sdk/api_diff/5/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/5/changes/alldiffs_index_all.html
@@ -3766,7 +3766,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/5/changes/alldiffs_index_changes.html
index 3e42fc8..e48224a 100644
--- a/docs/html/sdk/api_diff/5/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/5/changes/alldiffs_index_changes.html
@@ -2129,7 +2129,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/5/changes/alldiffs_index_removals.html
index df544c6..567f1ee 100644
--- a/docs/html/sdk/api_diff/5/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/5/changes/alldiffs_index_removals.html
@@ -54,7 +54,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.ViewGroup.html#android.view.ViewGroup.FLAG_USE_CHILD_DRAWING_ORDER" class="hiddenlink" target="rightframe"><strike>FLAG_USE_CHILD_DRAWING_ORDER</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/5/changes/android.Manifest.permission.html
index be337a6..01c15fb 100644
--- a/docs/html/sdk/api_diff/5/changes/android.Manifest.permission.html
+++ b/docs/html/sdk/api_diff/5/changes/android.Manifest.permission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.R.attr.html b/docs/html/sdk/api_diff/5/changes/android.R.attr.html
index 0b8ddaa..a8ca384 100644
--- a/docs/html/sdk/api_diff/5/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/5/changes/android.R.attr.html
@@ -325,7 +325,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.R.drawable.html b/docs/html/sdk/api_diff/5/changes/android.R.drawable.html
index 84daf72..c52a10f 100644
--- a/docs/html/sdk/api_diff/5/changes/android.R.drawable.html
+++ b/docs/html/sdk/api_diff/5/changes/android.R.drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.R.style.html b/docs/html/sdk/api_diff/5/changes/android.R.style.html
index 5ee4afe..3dd25e2 100644
--- a/docs/html/sdk/api_diff/5/changes/android.R.style.html
+++ b/docs/html/sdk/api_diff/5/changes/android.R.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.app.Activity.html b/docs/html/sdk/api_diff/5/changes/android.app.Activity.html
index 409de84..f87f68c 100644
--- a/docs/html/sdk/api_diff/5/changes/android.app.Activity.html
+++ b/docs/html/sdk/api_diff/5/changes/android.app.Activity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.RunningAppProcessInfo.html b/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.RunningAppProcessInfo.html
index 943fd04..b475917 100644
--- a/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.RunningAppProcessInfo.html
+++ b/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.RunningAppProcessInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.RunningServiceInfo.html b/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.RunningServiceInfo.html
index 6c7d00c..9252cb8 100644
--- a/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.RunningServiceInfo.html
+++ b/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.RunningServiceInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.html b/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.html
index 513d31e..33878b3 100644
--- a/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.html
+++ b/docs/html/sdk/api_diff/5/changes/android.app.ActivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.app.Dialog.html b/docs/html/sdk/api_diff/5/changes/android.app.Dialog.html
index 20b776d..563792f 100644
--- a/docs/html/sdk/api_diff/5/changes/android.app.Dialog.html
+++ b/docs/html/sdk/api_diff/5/changes/android.app.Dialog.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.app.IntentService.html b/docs/html/sdk/api_diff/5/changes/android.app.IntentService.html
index 44f59cd..209b99f 100644
--- a/docs/html/sdk/api_diff/5/changes/android.app.IntentService.html
+++ b/docs/html/sdk/api_diff/5/changes/android.app.IntentService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.app.LauncherActivity.html b/docs/html/sdk/api_diff/5/changes/android.app.LauncherActivity.html
index 1eafeab..52ee9ee 100644
--- a/docs/html/sdk/api_diff/5/changes/android.app.LauncherActivity.html
+++ b/docs/html/sdk/api_diff/5/changes/android.app.LauncherActivity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.app.Notification.html b/docs/html/sdk/api_diff/5/changes/android.app.Notification.html
index 621f4a3..8eb8d17 100644
--- a/docs/html/sdk/api_diff/5/changes/android.app.Notification.html
+++ b/docs/html/sdk/api_diff/5/changes/android.app.Notification.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.app.NotificationManager.html b/docs/html/sdk/api_diff/5/changes/android.app.NotificationManager.html
index b0fc478..c388001 100644
--- a/docs/html/sdk/api_diff/5/changes/android.app.NotificationManager.html
+++ b/docs/html/sdk/api_diff/5/changes/android.app.NotificationManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.app.SearchManager.html b/docs/html/sdk/api_diff/5/changes/android.app.SearchManager.html
index e6e95cb..956a422 100644
--- a/docs/html/sdk/api_diff/5/changes/android.app.SearchManager.html
+++ b/docs/html/sdk/api_diff/5/changes/android.app.SearchManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.app.Service.html b/docs/html/sdk/api_diff/5/changes/android.app.Service.html
index dfde229..245f1c2 100644
--- a/docs/html/sdk/api_diff/5/changes/android.app.Service.html
+++ b/docs/html/sdk/api_diff/5/changes/android.app.Service.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.BroadcastReceiver.html b/docs/html/sdk/api_diff/5/changes/android.content.BroadcastReceiver.html
index 9b0f58a..2d6c647 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.BroadcastReceiver.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.BroadcastReceiver.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.ContentProvider.html b/docs/html/sdk/api_diff/5/changes/android.content.ContentProvider.html
index ba3eef2..6a19d4f 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.ContentProvider.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.ContentProvider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.ContentResolver.html b/docs/html/sdk/api_diff/5/changes/android.content.ContentResolver.html
index 2ccc017..18bcf94 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.ContentResolver.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.ContentResolver.html
@@ -289,7 +289,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.Context.html b/docs/html/sdk/api_diff/5/changes/android.content.Context.html
index f66714f..34bec24 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.Context.html
@@ -208,7 +208,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.ContextWrapper.html b/docs/html/sdk/api_diff/5/changes/android.content.ContextWrapper.html
index a2f55d8..0d8e6cf 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.ContextWrapper.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.ContextWrapper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.Intent.html b/docs/html/sdk/api_diff/5/changes/android.content.Intent.html
index bd30f3b..fb221bb 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.Intent.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.Intent.html
@@ -185,7 +185,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/5/changes/android.content.pm.ActivityInfo.html
index fd28af1..991c020 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.pm.ActivityInfo.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.pm.ActivityInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.pm.PackageInfo.html b/docs/html/sdk/api_diff/5/changes/android.content.pm.PackageInfo.html
index a9b257d..83705e6 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.pm.PackageInfo.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.pm.PackageInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/5/changes/android.content.pm.PackageManager.html
index 4c7b240..d2655ee 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.pm.PackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.pm.ProviderInfo.html b/docs/html/sdk/api_diff/5/changes/android.content.pm.ProviderInfo.html
index 3aa8243..dfab7c3 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.pm.ProviderInfo.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.pm.ProviderInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.pm.ResolveInfo.html b/docs/html/sdk/api_diff/5/changes/android.content.pm.ResolveInfo.html
index 9a3bea8..05ab7a5 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.pm.ResolveInfo.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.pm.ResolveInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.pm.ServiceInfo.html b/docs/html/sdk/api_diff/5/changes/android.content.pm.ServiceInfo.html
index 013d8c1..dc31cb8 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.pm.ServiceInfo.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.pm.ServiceInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/5/changes/android.content.res.Configuration.html
index b08e917..d1bb50e 100644
--- a/docs/html/sdk/api_diff/5/changes/android.content.res.Configuration.html
+++ b/docs/html/sdk/api_diff/5/changes/android.content.res.Configuration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.database.AbstractWindowedCursor.html b/docs/html/sdk/api_diff/5/changes/android.database.AbstractWindowedCursor.html
index 39c0ce3..f17d552 100644
--- a/docs/html/sdk/api_diff/5/changes/android.database.AbstractWindowedCursor.html
+++ b/docs/html/sdk/api_diff/5/changes/android.database.AbstractWindowedCursor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.database.CursorWindow.html b/docs/html/sdk/api_diff/5/changes/android.database.CursorWindow.html
index e8a9f29..a0a1f5e 100644
--- a/docs/html/sdk/api_diff/5/changes/android.database.CursorWindow.html
+++ b/docs/html/sdk/api_diff/5/changes/android.database.CursorWindow.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.database.DatabaseUtils.html b/docs/html/sdk/api_diff/5/changes/android.database.DatabaseUtils.html
index 6e939c3..6cd3060 100644
--- a/docs/html/sdk/api_diff/5/changes/android.database.DatabaseUtils.html
+++ b/docs/html/sdk/api_diff/5/changes/android.database.DatabaseUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.database.sqlite.SQLiteDatabase.html b/docs/html/sdk/api_diff/5/changes/android.database.sqlite.SQLiteDatabase.html
index b81f2f8..2200781 100644
--- a/docs/html/sdk/api_diff/5/changes/android.database.sqlite.SQLiteDatabase.html
+++ b/docs/html/sdk/api_diff/5/changes/android.database.sqlite.SQLiteDatabase.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.graphics.PixelFormat.html b/docs/html/sdk/api_diff/5/changes/android.graphics.PixelFormat.html
index de9e2b9..7665f5bd 100644
--- a/docs/html/sdk/api_diff/5/changes/android.graphics.PixelFormat.html
+++ b/docs/html/sdk/api_diff/5/changes/android.graphics.PixelFormat.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.BitmapDrawable.html b/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.BitmapDrawable.html
index 42677c5..ea31a69 100644
--- a/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.BitmapDrawable.html
+++ b/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.BitmapDrawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.ConstantState.html b/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.ConstantState.html
index bb8647a..58a83a2 100644
--- a/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.ConstantState.html
+++ b/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.ConstantState.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.html b/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.html
index 42c2ff1..5bcd2eb 100644
--- a/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.html
+++ b/docs/html/sdk/api_diff/5/changes/android.graphics.drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.hardware.Camera.Parameters.html b/docs/html/sdk/api_diff/5/changes/android.hardware.Camera.Parameters.html
index a95b424..35ab033 100644
--- a/docs/html/sdk/api_diff/5/changes/android.hardware.Camera.Parameters.html
+++ b/docs/html/sdk/api_diff/5/changes/android.hardware.Camera.Parameters.html
@@ -669,7 +669,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/5/changes/android.hardware.Camera.html
index aab1021..28ae598 100644
--- a/docs/html/sdk/api_diff/5/changes/android.hardware.Camera.html
+++ b/docs/html/sdk/api_diff/5/changes/android.hardware.Camera.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.inputmethodservice.AbstractInputMethodService.html b/docs/html/sdk/api_diff/5/changes/android.inputmethodservice.AbstractInputMethodService.html
index c7a58f2..5670b0bc0 100644
--- a/docs/html/sdk/api_diff/5/changes/android.inputmethodservice.AbstractInputMethodService.html
+++ b/docs/html/sdk/api_diff/5/changes/android.inputmethodservice.AbstractInputMethodService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.inputmethodservice.InputMethodService.html b/docs/html/sdk/api_diff/5/changes/android.inputmethodservice.InputMethodService.html
index 58bed5d..2766f3c 100644
--- a/docs/html/sdk/api_diff/5/changes/android.inputmethodservice.InputMethodService.html
+++ b/docs/html/sdk/api_diff/5/changes/android.inputmethodservice.InputMethodService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.location.LocationManager.html b/docs/html/sdk/api_diff/5/changes/android.location.LocationManager.html
index cc6a91d..bea388c 100644
--- a/docs/html/sdk/api_diff/5/changes/android.location.LocationManager.html
+++ b/docs/html/sdk/api_diff/5/changes/android.location.LocationManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.media.AudioFormat.html b/docs/html/sdk/api_diff/5/changes/android.media.AudioFormat.html
index f122de0..1d413d6 100644
--- a/docs/html/sdk/api_diff/5/changes/android.media.AudioFormat.html
+++ b/docs/html/sdk/api_diff/5/changes/android.media.AudioFormat.html
@@ -383,7 +383,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/5/changes/android.media.AudioManager.html
index 912b1d1..b6c6229 100644
--- a/docs/html/sdk/api_diff/5/changes/android.media.AudioManager.html
+++ b/docs/html/sdk/api_diff/5/changes/android.media.AudioManager.html
@@ -224,7 +224,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.media.MediaPlayer.html b/docs/html/sdk/api_diff/5/changes/android.media.MediaPlayer.html
index e8e2f82..ffccb75 100644
--- a/docs/html/sdk/api_diff/5/changes/android.media.MediaPlayer.html
+++ b/docs/html/sdk/api_diff/5/changes/android.media.MediaPlayer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.media.ToneGenerator.html b/docs/html/sdk/api_diff/5/changes/android.media.ToneGenerator.html
index 289e820..9fdb28f 100644
--- a/docs/html/sdk/api_diff/5/changes/android.media.ToneGenerator.html
+++ b/docs/html/sdk/api_diff/5/changes/android.media.ToneGenerator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.opengl.GLSurfaceView.html b/docs/html/sdk/api_diff/5/changes/android.opengl.GLSurfaceView.html
index 42f56e2..51789f3 100644
--- a/docs/html/sdk/api_diff/5/changes/android.opengl.GLSurfaceView.html
+++ b/docs/html/sdk/api_diff/5/changes/android.opengl.GLSurfaceView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.os.BatteryManager.html b/docs/html/sdk/api_diff/5/changes/android.os.BatteryManager.html
index 9bf76d3..0499e8b 100644
--- a/docs/html/sdk/api_diff/5/changes/android.os.BatteryManager.html
+++ b/docs/html/sdk/api_diff/5/changes/android.os.BatteryManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/5/changes/android.os.Build.VERSION_CODES.html
index 58ae354..ac8435e 100644
--- a/docs/html/sdk/api_diff/5/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/5/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.os.Debug.MemoryInfo.html b/docs/html/sdk/api_diff/5/changes/android.os.Debug.MemoryInfo.html
index 8f49b3a..82fec87 100644
--- a/docs/html/sdk/api_diff/5/changes/android.os.Debug.MemoryInfo.html
+++ b/docs/html/sdk/api_diff/5/changes/android.os.Debug.MemoryInfo.html
@@ -159,7 +159,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.os.HandlerThread.html b/docs/html/sdk/api_diff/5/changes/android.os.HandlerThread.html
index c45faf3..5cedb18 100644
--- a/docs/html/sdk/api_diff/5/changes/android.os.HandlerThread.html
+++ b/docs/html/sdk/api_diff/5/changes/android.os.HandlerThread.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethods.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethods.html
index 7619936..0ca0133 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethods.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethods.html
@@ -340,7 +340,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethodsColumns.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethodsColumns.html
index abd9fe0..01b3c9e 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethodsColumns.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethodsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Extensions.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Extensions.html
index b3e68bb..393f6f6 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Extensions.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Extensions.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ExtensionsColumns.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ExtensionsColumns.html
index ba94393..8674ac9 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ExtensionsColumns.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.ExtensionsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.GroupMembership.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.GroupMembership.html
index f9ecf01..467e914 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.GroupMembership.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.GroupMembership.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Groups.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Groups.html
index 9a2003a..35fb2ca 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Groups.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Groups.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.GroupsColumns.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.GroupsColumns.html
index a7a8c99..daa2564 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.GroupsColumns.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.GroupsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.Insert.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.Insert.html
index 72ce6a1..11fc700 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.Insert.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.Insert.html
@@ -363,7 +363,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.UI.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.UI.html
index 607190c..a083cd4 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.UI.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.UI.html
@@ -219,7 +219,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.html
index 5db9c26..60eb73a 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Intents.html
@@ -183,7 +183,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.OrganizationColumns.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.OrganizationColumns.html
index b0b54d2..f1bb81a 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.OrganizationColumns.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.OrganizationColumns.html
@@ -183,7 +183,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Organizations.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Organizations.html
index c55bc68..a6009d0 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Organizations.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Organizations.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.ContactMethods.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.ContactMethods.html
index 31befa0..96a6740 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.ContactMethods.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.ContactMethods.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.Extensions.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.Extensions.html
index 2ce0491..e883fd1 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.Extensions.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.Extensions.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.Phones.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.Phones.html
index afe96f2..d091cdd 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.Phones.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.Phones.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.html
index 87231ab..189cad4 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.People.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PeopleColumns.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PeopleColumns.html
index 037acd6..d8f8c32 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PeopleColumns.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PeopleColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Phones.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Phones.html
index a604145..1c43e7c 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Phones.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Phones.html
@@ -184,7 +184,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PhonesColumns.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PhonesColumns.html
index e42a51e..34f31c9 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PhonesColumns.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PhonesColumns.html
@@ -219,7 +219,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Photos.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Photos.html
index 0aeaa9cb..c34ca63 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Photos.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Photos.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PhotosColumns.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PhotosColumns.html
index f13d55d..4bcb43f 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PhotosColumns.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PhotosColumns.html
@@ -156,7 +156,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PresenceColumns.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PresenceColumns.html
index ec5ec5b..7942558 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PresenceColumns.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.PresenceColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Settings.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Settings.html
index 65020e9..77c0724 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Settings.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.Settings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.SettingsColumns.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.SettingsColumns.html
index d03da38..a80bfa2 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.SettingsColumns.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.SettingsColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.html b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.html
index 6ed2ae8..2f1bdee 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Contacts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.MediaStore.Images.Thumbnails.html b/docs/html/sdk/api_diff/5/changes/android.provider.MediaStore.Images.Thumbnails.html
index 67f1d18..9d53bbe 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.MediaStore.Images.Thumbnails.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.MediaStore.Images.Thumbnails.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/5/changes/android.provider.Settings.System.html
index ac417e6..607cceb 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Settings.System.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Settings.System.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.provider.Settings.html b/docs/html/sdk/api_diff/5/changes/android.provider.Settings.html
index 0e2f350..767bd8c 100644
--- a/docs/html/sdk/api_diff/5/changes/android.provider.Settings.html
+++ b/docs/html/sdk/api_diff/5/changes/android.provider.Settings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.telephony.NeighboringCellInfo.html b/docs/html/sdk/api_diff/5/changes/android.telephony.NeighboringCellInfo.html
index a7b0204..beb2c71 100644
--- a/docs/html/sdk/api_diff/5/changes/android.telephony.NeighboringCellInfo.html
+++ b/docs/html/sdk/api_diff/5/changes/android.telephony.NeighboringCellInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.telephony.PhoneNumberUtils.html b/docs/html/sdk/api_diff/5/changes/android.telephony.PhoneNumberUtils.html
index b4b41f2..ae98f56 100644
--- a/docs/html/sdk/api_diff/5/changes/android.telephony.PhoneNumberUtils.html
+++ b/docs/html/sdk/api_diff/5/changes/android.telephony.PhoneNumberUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.telephony.PhoneStateListener.html b/docs/html/sdk/api_diff/5/changes/android.telephony.PhoneStateListener.html
index 57d7cf7..d85a2b2 100644
--- a/docs/html/sdk/api_diff/5/changes/android.telephony.PhoneStateListener.html
+++ b/docs/html/sdk/api_diff/5/changes/android.telephony.PhoneStateListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/5/changes/android.telephony.TelephonyManager.html
index 80c80bf..988ae33 100644
--- a/docs/html/sdk/api_diff/5/changes/android.telephony.TelephonyManager.html
+++ b/docs/html/sdk/api_diff/5/changes/android.telephony.TelephonyManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.test.AndroidTestRunner.html b/docs/html/sdk/api_diff/5/changes/android.test.AndroidTestRunner.html
index 3cfa8af..f2d4342 100644
--- a/docs/html/sdk/api_diff/5/changes/android.test.AndroidTestRunner.html
+++ b/docs/html/sdk/api_diff/5/changes/android.test.AndroidTestRunner.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.test.InstrumentationTestCase.html b/docs/html/sdk/api_diff/5/changes/android.test.InstrumentationTestCase.html
index 0a67d9c..494a3df 100644
--- a/docs/html/sdk/api_diff/5/changes/android.test.InstrumentationTestCase.html
+++ b/docs/html/sdk/api_diff/5/changes/android.test.InstrumentationTestCase.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.test.mock.MockContext.html b/docs/html/sdk/api_diff/5/changes/android.test.mock.MockContext.html
index b397470..7d4cb52 100644
--- a/docs/html/sdk/api_diff/5/changes/android.test.mock.MockContext.html
+++ b/docs/html/sdk/api_diff/5/changes/android.test.mock.MockContext.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/5/changes/android.test.mock.MockPackageManager.html
index f81699c..dae7d15 100644
--- a/docs/html/sdk/api_diff/5/changes/android.test.mock.MockPackageManager.html
+++ b/docs/html/sdk/api_diff/5/changes/android.test.mock.MockPackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.text.InputType.html b/docs/html/sdk/api_diff/5/changes/android.text.InputType.html
index ba05eb3..0e229b6 100644
--- a/docs/html/sdk/api_diff/5/changes/android.text.InputType.html
+++ b/docs/html/sdk/api_diff/5/changes/android.text.InputType.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.text.TextPaint.html b/docs/html/sdk/api_diff/5/changes/android.text.TextPaint.html
index c6569d6..ee211b1 100644
--- a/docs/html/sdk/api_diff/5/changes/android.text.TextPaint.html
+++ b/docs/html/sdk/api_diff/5/changes/android.text.TextPaint.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.text.format.DateUtils.html b/docs/html/sdk/api_diff/5/changes/android.text.format.DateUtils.html
index fdebbe0..b7a0438 100644
--- a/docs/html/sdk/api_diff/5/changes/android.text.format.DateUtils.html
+++ b/docs/html/sdk/api_diff/5/changes/android.text.format.DateUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.text.format.Formatter.html b/docs/html/sdk/api_diff/5/changes/android.text.format.Formatter.html
index 96fbe10..cfbbf7b 100644
--- a/docs/html/sdk/api_diff/5/changes/android.text.format.Formatter.html
+++ b/docs/html/sdk/api_diff/5/changes/android.text.format.Formatter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.text.style.AbsoluteSizeSpan.html b/docs/html/sdk/api_diff/5/changes/android.text.style.AbsoluteSizeSpan.html
index 4b44bd1..8f9948e 100644
--- a/docs/html/sdk/api_diff/5/changes/android.text.style.AbsoluteSizeSpan.html
+++ b/docs/html/sdk/api_diff/5/changes/android.text.style.AbsoluteSizeSpan.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.HapticFeedbackConstants.html b/docs/html/sdk/api_diff/5/changes/android.view.HapticFeedbackConstants.html
index 9d85354..074e28a 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.HapticFeedbackConstants.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.HapticFeedbackConstants.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.KeyEvent.Callback.html b/docs/html/sdk/api_diff/5/changes/android.view.KeyEvent.Callback.html
index 7412049..26d39c6 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.KeyEvent.Callback.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.KeyEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/5/changes/android.view.KeyEvent.html
index c8820ca..9836bbc 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.KeyEvent.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.KeyEvent.html
@@ -222,7 +222,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.MotionEvent.html b/docs/html/sdk/api_diff/5/changes/android.view.MotionEvent.html
index f338077..da318bf 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.MotionEvent.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.MotionEvent.html
@@ -277,7 +277,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.Surface.html b/docs/html/sdk/api_diff/5/changes/android.view.Surface.html
index 5f36258..1aa90bd 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.Surface.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.Surface.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.SurfaceHolder.html b/docs/html/sdk/api_diff/5/changes/android.view.SurfaceHolder.html
index 2487e9b..31607bc 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.SurfaceHolder.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.SurfaceHolder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.SurfaceView.html b/docs/html/sdk/api_diff/5/changes/android.view.SurfaceView.html
index 1736f2f..4e1e549 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.SurfaceView.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.SurfaceView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.View.html b/docs/html/sdk/api_diff/5/changes/android.view.View.html
index 1f7e9af..c8d21e4 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.View.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/5/changes/android.view.ViewConfiguration.html
index cc2b05e..9ace32d 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.ViewConfiguration.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.ViewConfiguration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.ViewGroup.html b/docs/html/sdk/api_diff/5/changes/android.view.ViewGroup.html
index 83d3a29..bc5a78b 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.ViewGroup.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.ViewGroup.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.Window.Callback.html b/docs/html/sdk/api_diff/5/changes/android.view.Window.Callback.html
index 3358968..54381ae 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.Window.Callback.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.Window.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.WindowManager.LayoutParams.html b/docs/html/sdk/api_diff/5/changes/android.view.WindowManager.LayoutParams.html
index f43f3dd..2c847a3 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.WindowManager.LayoutParams.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.WindowManager.LayoutParams.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.view.animation.Animation.html b/docs/html/sdk/api_diff/5/changes/android.view.animation.Animation.html
index d784700..7bdbcf7 100644
--- a/docs/html/sdk/api_diff/5/changes/android.view.animation.Animation.html
+++ b/docs/html/sdk/api_diff/5/changes/android.view.animation.Animation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.webkit.CallbackProxy.html b/docs/html/sdk/api_diff/5/changes/android.webkit.CallbackProxy.html
index 3cdd68b..caa1b21 100644
--- a/docs/html/sdk/api_diff/5/changes/android.webkit.CallbackProxy.html
+++ b/docs/html/sdk/api_diff/5/changes/android.webkit.CallbackProxy.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.webkit.Plugin.html b/docs/html/sdk/api_diff/5/changes/android.webkit.Plugin.html
index 52638aca..9b4ca37 100644
--- a/docs/html/sdk/api_diff/5/changes/android.webkit.Plugin.html
+++ b/docs/html/sdk/api_diff/5/changes/android.webkit.Plugin.html
@@ -220,7 +220,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.webkit.PluginData.html b/docs/html/sdk/api_diff/5/changes/android.webkit.PluginData.html
index 1e5a241..5387f43 100644
--- a/docs/html/sdk/api_diff/5/changes/android.webkit.PluginData.html
+++ b/docs/html/sdk/api_diff/5/changes/android.webkit.PluginData.html
@@ -160,7 +160,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.webkit.PluginList.html b/docs/html/sdk/api_diff/5/changes/android.webkit.PluginList.html
index 564a341..7bcae9a 100644
--- a/docs/html/sdk/api_diff/5/changes/android.webkit.PluginList.html
+++ b/docs/html/sdk/api_diff/5/changes/android.webkit.PluginList.html
@@ -170,7 +170,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.webkit.UrlInterceptHandler.html b/docs/html/sdk/api_diff/5/changes/android.webkit.UrlInterceptHandler.html
index 0fa0787..5d1778b 100644
--- a/docs/html/sdk/api_diff/5/changes/android.webkit.UrlInterceptHandler.html
+++ b/docs/html/sdk/api_diff/5/changes/android.webkit.UrlInterceptHandler.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.webkit.UrlInterceptRegistry.html b/docs/html/sdk/api_diff/5/changes/android.webkit.UrlInterceptRegistry.html
index e562019..1b6a994 100644
--- a/docs/html/sdk/api_diff/5/changes/android.webkit.UrlInterceptRegistry.html
+++ b/docs/html/sdk/api_diff/5/changes/android.webkit.UrlInterceptRegistry.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.webkit.WebChromeClient.html b/docs/html/sdk/api_diff/5/changes/android.webkit.WebChromeClient.html
index e9ca0e0..563c426 100644
--- a/docs/html/sdk/api_diff/5/changes/android.webkit.WebChromeClient.html
+++ b/docs/html/sdk/api_diff/5/changes/android.webkit.WebChromeClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/5/changes/android.webkit.WebSettings.html
index 3b10d1a..ed45bf0 100644
--- a/docs/html/sdk/api_diff/5/changes/android.webkit.WebSettings.html
+++ b/docs/html/sdk/api_diff/5/changes/android.webkit.WebSettings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/5/changes/android.webkit.WebView.html
index 7c287cb..e5788e9 100644
--- a/docs/html/sdk/api_diff/5/changes/android.webkit.WebView.html
+++ b/docs/html/sdk/api_diff/5/changes/android.webkit.WebView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.webkit.WebViewClient.html b/docs/html/sdk/api_diff/5/changes/android.webkit.WebViewClient.html
index 49e517a..c8dd458 100644
--- a/docs/html/sdk/api_diff/5/changes/android.webkit.WebViewClient.html
+++ b/docs/html/sdk/api_diff/5/changes/android.webkit.WebViewClient.html
@@ -206,7 +206,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.widget.AutoCompleteTextView.html b/docs/html/sdk/api_diff/5/changes/android.widget.AutoCompleteTextView.html
index 5b2294b..02491ee 100644
--- a/docs/html/sdk/api_diff/5/changes/android.widget.AutoCompleteTextView.html
+++ b/docs/html/sdk/api_diff/5/changes/android.widget.AutoCompleteTextView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.widget.MediaController.MediaPlayerControl.html b/docs/html/sdk/api_diff/5/changes/android.widget.MediaController.MediaPlayerControl.html
index f19a279..f769824 100644
--- a/docs/html/sdk/api_diff/5/changes/android.widget.MediaController.MediaPlayerControl.html
+++ b/docs/html/sdk/api_diff/5/changes/android.widget.MediaController.MediaPlayerControl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.widget.SimpleCursorTreeAdapter.html b/docs/html/sdk/api_diff/5/changes/android.widget.SimpleCursorTreeAdapter.html
index ee9e73f..7ecdbc0c 100644
--- a/docs/html/sdk/api_diff/5/changes/android.widget.SimpleCursorTreeAdapter.html
+++ b/docs/html/sdk/api_diff/5/changes/android.widget.SimpleCursorTreeAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/android.widget.VideoView.html b/docs/html/sdk/api_diff/5/changes/android.widget.VideoView.html
index edbbd6c..873170f 100644
--- a/docs/html/sdk/api_diff/5/changes/android.widget.VideoView.html
+++ b/docs/html/sdk/api_diff/5/changes/android.widget.VideoView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/changes-summary.html b/docs/html/sdk/api_diff/5/changes/changes-summary.html
index 1f10f25..05f0d60 100644
--- a/docs/html/sdk/api_diff/5/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/5/changes/changes-summary.html
@@ -353,7 +353,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/classes_index_additions.html b/docs/html/sdk/api_diff/5/changes/classes_index_additions.html
index f8c9c04..9ad3049 100644
--- a/docs/html/sdk/api_diff/5/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/5/changes/classes_index_additions.html
@@ -340,7 +340,7 @@
 <A HREF="pkg_android.app.html#WallpaperManager" class="hiddenlink" target="rightframe"><b>WallpaperManager</b></A><br>
 <A HREF="pkg_android.webkit.html#WebStorage" class="hiddenlink" target="rightframe"><b>WebStorage</b></A><br>
 <A HREF="pkg_android.webkit.html#WebStorage.QuotaUpdater" class="hiddenlink" target="rightframe"><b><i>WebStorage.QuotaUpdater</i></b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/classes_index_all.html b/docs/html/sdk/api_diff/5/changes/classes_index_all.html
index 973dade..27baa0c 100644
--- a/docs/html/sdk/api_diff/5/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/5/changes/classes_index_all.html
@@ -858,7 +858,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/classes_index_changes.html b/docs/html/sdk/api_diff/5/changes/classes_index_changes.html
index 4ff9b60..a9307eb 100644
--- a/docs/html/sdk/api_diff/5/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/5/changes/classes_index_changes.html
@@ -635,7 +635,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/classes_index_removals.html b/docs/html/sdk/api_diff/5/changes/classes_index_removals.html
index 5b38988..a855673 100644
--- a/docs/html/sdk/api_diff/5/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/5/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:.5em;">
 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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/5/changes/constructors_index_additions.html
index cbd4302..c075e7b 100644
--- a/docs/html/sdk/api_diff/5/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/5/changes/constructors_index_additions.html
@@ -64,7 +64,7 @@
 (<code>Resources, String</code>)</A></nobr>&nbsp;constructor<br>
 &nbsp;&nbsp;<nobr><A HREF="android.graphics.drawable.BitmapDrawable.html#android.graphics.drawable.BitmapDrawable.ctor_added(android.content.res.Resources, java.io.InputStream)" class="hiddenlink" target="rightframe"><b>BitmapDrawable</b>
 (<code>Resources, InputStream</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/constructors_index_all.html b/docs/html/sdk/api_diff/5/changes/constructors_index_all.html
index ced2ea8..030d35f 100644
--- a/docs/html/sdk/api_diff/5/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/5/changes/constructors_index_all.html
@@ -131,7 +131,7 @@
 (<code>InputStream, long, Map&lt;String, String[]&gt;, int</code>)</A></nobr>&nbsp;constructor<br>
 <nobr><A HREF="android.webkit.PluginList.html#android.webkit.PluginList.ctor_changed()" class="hiddenlink" target="rightframe">PluginList
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/5/changes/constructors_index_changes.html
index c106a1d..cabcb6d 100644
--- a/docs/html/sdk/api_diff/5/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/5/changes/constructors_index_changes.html
@@ -111,7 +111,7 @@
 (<code>InputStream, long, Map&lt;String, String[]&gt;, int</code>)</A></nobr>&nbsp;constructor<br>
 <nobr><A HREF="android.webkit.PluginList.html#android.webkit.PluginList.ctor_changed()" class="hiddenlink" target="rightframe">PluginList
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/5/changes/constructors_index_removals.html
index c884917..a64ce22 100644
--- a/docs/html/sdk/api_diff/5/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/5/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:.5em;">
 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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/dalvik.system.AllocationLimitError.html b/docs/html/sdk/api_diff/5/changes/dalvik.system.AllocationLimitError.html
index 6726ead..1159d27 100644
--- a/docs/html/sdk/api_diff/5/changes/dalvik.system.AllocationLimitError.html
+++ b/docs/html/sdk/api_diff/5/changes/dalvik.system.AllocationLimitError.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/dalvik.system.PotentialDeadlockError.html b/docs/html/sdk/api_diff/5/changes/dalvik.system.PotentialDeadlockError.html
index b3198f7..bf78f9d 100644
--- a/docs/html/sdk/api_diff/5/changes/dalvik.system.PotentialDeadlockError.html
+++ b/docs/html/sdk/api_diff/5/changes/dalvik.system.PotentialDeadlockError.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/dalvik.system.StaleDexCacheError.html b/docs/html/sdk/api_diff/5/changes/dalvik.system.StaleDexCacheError.html
index 07a91ac..98ad6d9 100644
--- a/docs/html/sdk/api_diff/5/changes/dalvik.system.StaleDexCacheError.html
+++ b/docs/html/sdk/api_diff/5/changes/dalvik.system.StaleDexCacheError.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/dalvik.system.TemporaryDirectory.html b/docs/html/sdk/api_diff/5/changes/dalvik.system.TemporaryDirectory.html
index 7201009..a0b205c 100644
--- a/docs/html/sdk/api_diff/5/changes/dalvik.system.TemporaryDirectory.html
+++ b/docs/html/sdk/api_diff/5/changes/dalvik.system.TemporaryDirectory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/dalvik.system.TouchDex.html b/docs/html/sdk/api_diff/5/changes/dalvik.system.TouchDex.html
index 164b44c..b74d5c5 100644
--- a/docs/html/sdk/api_diff/5/changes/dalvik.system.TouchDex.html
+++ b/docs/html/sdk/api_diff/5/changes/dalvik.system.TouchDex.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/dalvik.system.VMDebug.html b/docs/html/sdk/api_diff/5/changes/dalvik.system.VMDebug.html
index 3a36806..13a2134 100644
--- a/docs/html/sdk/api_diff/5/changes/dalvik.system.VMDebug.html
+++ b/docs/html/sdk/api_diff/5/changes/dalvik.system.VMDebug.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/dalvik.system.VMRuntime.html b/docs/html/sdk/api_diff/5/changes/dalvik.system.VMRuntime.html
index dd924a1..400061e 100644
--- a/docs/html/sdk/api_diff/5/changes/dalvik.system.VMRuntime.html
+++ b/docs/html/sdk/api_diff/5/changes/dalvik.system.VMRuntime.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/dalvik.system.VMStack.html b/docs/html/sdk/api_diff/5/changes/dalvik.system.VMStack.html
index 8311763..d2190ff 100644
--- a/docs/html/sdk/api_diff/5/changes/dalvik.system.VMStack.html
+++ b/docs/html/sdk/api_diff/5/changes/dalvik.system.VMStack.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/dalvik.system.Zygote.html b/docs/html/sdk/api_diff/5/changes/dalvik.system.Zygote.html
index d683f4e..5233a3b 100644
--- a/docs/html/sdk/api_diff/5/changes/dalvik.system.Zygote.html
+++ b/docs/html/sdk/api_diff/5/changes/dalvik.system.Zygote.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/fields_index_additions.html b/docs/html/sdk/api_diff/5/changes/fields_index_additions.html
index 35a55d9..e185df1 100644
--- a/docs/html/sdk/api_diff/5/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/5/changes/fields_index_additions.html
@@ -896,7 +896,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.graphics.PixelFormat.html#android.graphics.PixelFormat.YCbCr_422_I" class="hiddenlink" target="rightframe">YCbCr_422_I</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/fields_index_all.html b/docs/html/sdk/api_diff/5/changes/fields_index_all.html
index f18c2a1..8890e5f 100644
--- a/docs/html/sdk/api_diff/5/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/5/changes/fields_index_all.html
@@ -1590,7 +1590,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.graphics.PixelFormat.html#android.graphics.PixelFormat.YCbCr_422_I" class="hiddenlink" target="rightframe">YCbCr_422_I</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/fields_index_changes.html b/docs/html/sdk/api_diff/5/changes/fields_index_changes.html
index ae324f7..d1b970f 100644
--- a/docs/html/sdk/api_diff/5/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/5/changes/fields_index_changes.html
@@ -985,7 +985,7 @@
 <nobr>&nbsp;in&nbsp;
 <A HREF="android.provider.Contacts.SettingsColumns.html#android.provider.Contacts.SettingsColumns.VALUE" class="hiddenlink" target="rightframe">android.provider.Contacts.SettingsColumns</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/fields_index_removals.html b/docs/html/sdk/api_diff/5/changes/fields_index_removals.html
index 9bbd9e6..62a98e2 100644
--- a/docs/html/sdk/api_diff/5/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/5/changes/fields_index_removals.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.ViewGroup.html#android.view.ViewGroup.FLAG_USE_CHILD_DRAWING_ORDER" class="hiddenlink" target="rightframe"><strike>FLAG_USE_CHILD_DRAWING_ORDER</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/java.util.concurrent.BlockingQueue.html b/docs/html/sdk/api_diff/5/changes/java.util.concurrent.BlockingQueue.html
index d383b70..46902c7 100644
--- a/docs/html/sdk/api_diff/5/changes/java.util.concurrent.BlockingQueue.html
+++ b/docs/html/sdk/api_diff/5/changes/java.util.concurrent.BlockingQueue.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/jdiff_help.html b/docs/html/sdk/api_diff/5/changes/jdiff_help.html
index 74e2508..0bd65a5 100644
--- a/docs/html/sdk/api_diff/5/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/5/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/5/changes/jdiff_statistics.html
index 0fb1ba9..c3e91275 100644
--- a/docs/html/sdk/api_diff/5/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/5/changes/jdiff_statistics.html
@@ -940,7 +940,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/5/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/5/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/5/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/methods_index_additions.html b/docs/html/sdk/api_diff/5/changes/methods_index_additions.html
index 152d63d..e333579 100644
--- a/docs/html/sdk/api_diff/5/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/5/changes/methods_index_additions.html
@@ -943,7 +943,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.database.sqlite.SQLiteDatabase.html#android.database.sqlite.SQLiteDatabase.yieldIfContendedSafely_added(long)" class="hiddenlink" target="rightframe"><b>yieldIfContendedSafely</b>
 (<code>long</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/methods_index_all.html b/docs/html/sdk/api_diff/5/changes/methods_index_all.html
index 5da58bb..cd84372 100644
--- a/docs/html/sdk/api_diff/5/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/5/changes/methods_index_all.html
@@ -1183,7 +1183,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.database.sqlite.SQLiteDatabase.html#android.database.sqlite.SQLiteDatabase.yieldIfContendedSafely_added(long)" class="hiddenlink" target="rightframe"><b>yieldIfContendedSafely</b>
 (<code>long</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/methods_index_changes.html b/docs/html/sdk/api_diff/5/changes/methods_index_changes.html
index 81dc7d9..48b9f9b 100644
--- a/docs/html/sdk/api_diff/5/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/5/changes/methods_index_changes.html
@@ -433,7 +433,7 @@
 (<code>UrlInterceptHandler</code>)</A></nobr><br>
 <nobr><A HREF="android.webkit.UrlInterceptRegistry.html#android.webkit.UrlInterceptRegistry.urlInterceptDisabled_changed()" class="hiddenlink" target="rightframe">urlInterceptDisabled
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/methods_index_removals.html b/docs/html/sdk/api_diff/5/changes/methods_index_removals.html
index f3c2288..6d33874e 100644
--- a/docs/html/sdk/api_diff/5/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/5/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:.5em;">
 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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/packages_index_additions.html b/docs/html/sdk/api_diff/5/changes/packages_index_additions.html
index 5c8de21..6bf0861 100644
--- a/docs/html/sdk/api_diff/5/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/5/changes/packages_index_additions.html
@@ -52,7 +52,7 @@
 <A HREF="changes-summary.html#android.accounts" class="hiddenlink" target="rightframe"><b>android.accounts</b></A><br>
 <A HREF="changes-summary.html#android.bluetooth" class="hiddenlink" target="rightframe"><b>android.bluetooth</b></A><br>
 <A HREF="changes-summary.html#android.telephony.cdma" class="hiddenlink" target="rightframe"><b>android.telephony.cdma</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/packages_index_all.html b/docs/html/sdk/api_diff/5/changes/packages_index_all.html
index b56bd23..ea994f2 100644
--- a/docs/html/sdk/api_diff/5/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/5/changes/packages_index_all.html
@@ -82,7 +82,7 @@
 <A HREF="pkg_dalvik.system.html" class="hiddenlink" target="rightframe">dalvik.system</A><br>
 <A HREF="pkg_java.util.concurrent.html" class="hiddenlink" target="rightframe">java.util.concurrent</A><br>
 <A HREF="pkg_java.util.concurrent.locks.html" class="hiddenlink" target="rightframe">java.util.concurrent.locks</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/packages_index_changes.html b/docs/html/sdk/api_diff/5/changes/packages_index_changes.html
index 5cc9d4c..75ee8cf 100644
--- a/docs/html/sdk/api_diff/5/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/5/changes/packages_index_changes.html
@@ -79,7 +79,7 @@
 <A HREF="pkg_dalvik.system.html" class="hiddenlink" target="rightframe">dalvik.system</A><br>
 <A HREF="pkg_java.util.concurrent.html" class="hiddenlink" target="rightframe">java.util.concurrent</A><br>
 <A HREF="pkg_java.util.concurrent.locks.html" class="hiddenlink" target="rightframe">java.util.concurrent.locks</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/packages_index_removals.html b/docs/html/sdk/api_diff/5/changes/packages_index_removals.html
index cd89a22..f22b7e4 100644
--- a/docs/html/sdk/api_diff/5/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/5/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.app.html b/docs/html/sdk/api_diff/5/changes/pkg_android.app.html
index 5016947..758e706 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.app.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.content.html b/docs/html/sdk/api_diff/5/changes/pkg_android.content.html
index 068fa0b..2b7e98a 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.content.html
@@ -225,7 +225,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/5/changes/pkg_android.content.pm.html
index b5a96ab..06607bb 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.content.pm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/5/changes/pkg_android.content.res.html
index b973647..4869210 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.content.res.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.database.html b/docs/html/sdk/api_diff/5/changes/pkg_android.database.html
index a1fa334..0ececbe 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.database.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.database.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.database.sqlite.html b/docs/html/sdk/api_diff/5/changes/pkg_android.database.sqlite.html
index d336a08..3009636 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.database.sqlite.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.database.sqlite.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.graphics.drawable.html b/docs/html/sdk/api_diff/5/changes/pkg_android.graphics.drawable.html
index e9430d2..ac9d38d 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.graphics.drawable.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.graphics.drawable.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/5/changes/pkg_android.graphics.html
index 15b3bcb..2ec8d26 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/5/changes/pkg_android.hardware.html
index c3241d7..e37abae 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.hardware.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.hardware.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.html b/docs/html/sdk/api_diff/5/changes/pkg_android.html
index 9328627..a63b59f 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.inputmethodservice.html b/docs/html/sdk/api_diff/5/changes/pkg_android.inputmethodservice.html
index 2bfd62f..9f9945f 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.inputmethodservice.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.inputmethodservice.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.location.html b/docs/html/sdk/api_diff/5/changes/pkg_android.location.html
index d6a4ed9..272cc5b 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.location.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.location.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.media.html b/docs/html/sdk/api_diff/5/changes/pkg_android.media.html
index ac83324..d32f7ea 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/5/changes/pkg_android.opengl.html
index a230ea2..e679773 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.opengl.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.opengl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.os.html b/docs/html/sdk/api_diff/5/changes/pkg_android.os.html
index c1ad2c1..405a251 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.os.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/5/changes/pkg_android.provider.html
index 0249646..c81e88b 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.provider.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.provider.html
@@ -680,7 +680,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/5/changes/pkg_android.telephony.html
index c5e1738..f9b6e98 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.telephony.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.telephony.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.test.html b/docs/html/sdk/api_diff/5/changes/pkg_android.test.html
index 7b81943..81cdc3b 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.test.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.test.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/5/changes/pkg_android.test.mock.html
index 451ed0b..7391166 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.test.mock.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.test.mock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.text.format.html b/docs/html/sdk/api_diff/5/changes/pkg_android.text.format.html
index ca42b02..f1ffa07 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.text.format.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.text.format.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.text.html b/docs/html/sdk/api_diff/5/changes/pkg_android.text.html
index 5125730..6144b50 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.text.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.text.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.text.style.html b/docs/html/sdk/api_diff/5/changes/pkg_android.text.style.html
index bedca4c..3f2188d 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.text.style.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.text.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.util.html b/docs/html/sdk/api_diff/5/changes/pkg_android.util.html
index 0a64985..e46fc15 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.util.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.view.animation.html b/docs/html/sdk/api_diff/5/changes/pkg_android.view.animation.html
index 91302af..1b6f948 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.view.animation.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.view.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.view.html b/docs/html/sdk/api_diff/5/changes/pkg_android.view.html
index a7c186a..b82970d 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.view.html
@@ -197,7 +197,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/5/changes/pkg_android.webkit.html
index 685e48e..8c1a99c 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.webkit.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.webkit.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/5/changes/pkg_android.widget.html
index 2f11503..c6f0fe5 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_android.widget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_dalvik.system.html b/docs/html/sdk/api_diff/5/changes/pkg_dalvik.system.html
index bf030e2..51c2009 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_dalvik.system.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_dalvik.system.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_java.util.concurrent.html b/docs/html/sdk/api_diff/5/changes/pkg_java.util.concurrent.html
index c20421d..4179ebb 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_java.util.concurrent.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_java.util.concurrent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/5/changes/pkg_java.util.concurrent.locks.html b/docs/html/sdk/api_diff/5/changes/pkg_java.util.concurrent.locks.html
index c061eb6..b42052a 100644
--- a/docs/html/sdk/api_diff/5/changes/pkg_java.util.concurrent.locks.html
+++ b/docs/html/sdk/api_diff/5/changes/pkg_java.util.concurrent.locks.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/6/changes/alldiffs_index_additions.html
index 3db469c..cbe0da4 100644
--- a/docs/html/sdk/api_diff/6/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/6/changes/alldiffs_index_additions.html
@@ -78,7 +78,7 @@
 <!-- Field quickContactBadgeStyleWindowSmall -->
 <nobr><A HREF="android.R.attr.html#android.R.attr.quickContactBadgeStyleWindowSmall" class="hiddenlink" target="rightframe">quickContactBadgeStyleWindowSmall</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/6/changes/alldiffs_index_all.html
index ebcbdf5..a263e84 100644
--- a/docs/html/sdk/api_diff/6/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/6/changes/alldiffs_index_all.html
@@ -201,7 +201,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/6/changes/alldiffs_index_changes.html
index 20eab19..02192b6 100644
--- a/docs/html/sdk/api_diff/6/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/6/changes/alldiffs_index_changes.html
@@ -142,7 +142,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/6/changes/alldiffs_index_removals.html
index 68d2c20..48c9fcd 100644
--- a/docs/html/sdk/api_diff/6/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/android.R.attr.html b/docs/html/sdk/api_diff/6/changes/android.R.attr.html
index b516ada..8e45952 100644
--- a/docs/html/sdk/api_diff/6/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/6/changes/android.R.attr.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/android.accounts.AbstractAccountAuthenticator.html b/docs/html/sdk/api_diff/6/changes/android.accounts.AbstractAccountAuthenticator.html
index 97f6e93..a6f24ff 100644
--- a/docs/html/sdk/api_diff/6/changes/android.accounts.AbstractAccountAuthenticator.html
+++ b/docs/html/sdk/api_diff/6/changes/android.accounts.AbstractAccountAuthenticator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/6/changes/android.os.Build.VERSION_CODES.html
index f3d9391..6198be6 100644
--- a/docs/html/sdk/api_diff/6/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/6/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/android.view.WindowManager.LayoutParams.html b/docs/html/sdk/api_diff/6/changes/android.view.WindowManager.LayoutParams.html
index 9cb6b27..a583ff37 100644
--- a/docs/html/sdk/api_diff/6/changes/android.view.WindowManager.LayoutParams.html
+++ b/docs/html/sdk/api_diff/6/changes/android.view.WindowManager.LayoutParams.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/changes-summary.html b/docs/html/sdk/api_diff/6/changes/changes-summary.html
index a1c3985..d837eb4 100644
--- a/docs/html/sdk/api_diff/6/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/6/changes/changes-summary.html
@@ -142,7 +142,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/classes_index_additions.html b/docs/html/sdk/api_diff/6/changes/classes_index_additions.html
index ccd5b66..601e927 100644
--- a/docs/html/sdk/api_diff/6/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/classes_index_all.html b/docs/html/sdk/api_diff/6/changes/classes_index_all.html
index 97997b7..ecae613 100644
--- a/docs/html/sdk/api_diff/6/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/6/changes/classes_index_all.html
@@ -79,7 +79,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/classes_index_changes.html b/docs/html/sdk/api_diff/6/changes/classes_index_changes.html
index 98b6c1f..620d5fe 100644
--- a/docs/html/sdk/api_diff/6/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/6/changes/classes_index_changes.html
@@ -79,7 +79,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.view.WindowManager.LayoutParams.html" class="hiddenlink" target="rightframe">WindowManager.LayoutParams</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/classes_index_removals.html b/docs/html/sdk/api_diff/6/changes/classes_index_removals.html
index 792fc4e..1a681c4 100644
--- a/docs/html/sdk/api_diff/6/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/6/changes/constructors_index_additions.html
index 3237ba3..a106dcb 100644
--- a/docs/html/sdk/api_diff/6/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/constructors_index_all.html b/docs/html/sdk/api_diff/6/changes/constructors_index_all.html
index 637582e..3e67e48 100644
--- a/docs/html/sdk/api_diff/6/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/6/changes/constructors_index_changes.html
index 728fa2d..1f3c803 100644
--- a/docs/html/sdk/api_diff/6/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/6/changes/constructors_index_removals.html
index 1b95544..a260baa 100644
--- a/docs/html/sdk/api_diff/6/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/fields_index_additions.html b/docs/html/sdk/api_diff/6/changes/fields_index_additions.html
index cc8d873..3e5b2cd 100644
--- a/docs/html/sdk/api_diff/6/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/6/changes/fields_index_additions.html
@@ -71,7 +71,7 @@
 </nobr><br>
 <nobr><A HREF="android.R.attr.html#android.R.attr.quickContactBadgeStyleWindowSmall" class="hiddenlink" target="rightframe">quickContactBadgeStyleWindowSmall</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/fields_index_all.html b/docs/html/sdk/api_diff/6/changes/fields_index_all.html
index 2b59a4b..1732374 100644
--- a/docs/html/sdk/api_diff/6/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/6/changes/fields_index_all.html
@@ -81,7 +81,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.WindowManager.LayoutParams.html#android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL" class="hiddenlink" target="rightframe">TYPE_STATUS_BAR_PANEL</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/fields_index_changes.html b/docs/html/sdk/api_diff/6/changes/fields_index_changes.html
index e05a989..48a9387 100644
--- a/docs/html/sdk/api_diff/6/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/6/changes/fields_index_changes.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.view.WindowManager.LayoutParams.html#android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL" class="hiddenlink" target="rightframe">TYPE_STATUS_BAR_PANEL</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/fields_index_removals.html b/docs/html/sdk/api_diff/6/changes/fields_index_removals.html
index 9f62d88..9ad97a7 100644
--- a/docs/html/sdk/api_diff/6/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/jdiff_help.html b/docs/html/sdk/api_diff/6/changes/jdiff_help.html
index 999508c..4be6975 100644
--- a/docs/html/sdk/api_diff/6/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/6/changes/jdiff_statistics.html
index b4b77cd..e78f33d 100644
--- a/docs/html/sdk/api_diff/6/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/6/changes/jdiff_statistics.html
@@ -216,7 +216,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/6/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/6/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/methods_index_additions.html b/docs/html/sdk/api_diff/6/changes/methods_index_additions.html
index 7a9392f..3ef0845 100644
--- a/docs/html/sdk/api_diff/6/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/6/changes/methods_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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/methods_index_all.html b/docs/html/sdk/api_diff/6/changes/methods_index_all.html
index a3a35e4..493e94c 100644
--- a/docs/html/sdk/api_diff/6/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/6/changes/methods_index_all.html
@@ -61,7 +61,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.accounts.AbstractAccountAuthenticator.html#android.accounts.AbstractAccountAuthenticator.updateCredentials_changed(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String, android.os.Bundle)" class="hiddenlink" target="rightframe">updateCredentials
 (<code>AccountAuthenticatorResponse, Account, String, Bundle</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/methods_index_changes.html b/docs/html/sdk/api_diff/6/changes/methods_index_changes.html
index ab25ba5..130e1d1 100644
--- a/docs/html/sdk/api_diff/6/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/6/changes/methods_index_changes.html
@@ -61,7 +61,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.accounts.AbstractAccountAuthenticator.html#android.accounts.AbstractAccountAuthenticator.updateCredentials_changed(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String, android.os.Bundle)" class="hiddenlink" target="rightframe">updateCredentials
 (<code>AccountAuthenticatorResponse, Account, String, Bundle</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/methods_index_removals.html b/docs/html/sdk/api_diff/6/changes/methods_index_removals.html
index 3906d28..76670a51 100644
--- a/docs/html/sdk/api_diff/6/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/packages_index_additions.html b/docs/html/sdk/api_diff/6/changes/packages_index_additions.html
index 1776064..cb6e9d5 100644
--- a/docs/html/sdk/api_diff/6/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/packages_index_all.html b/docs/html/sdk/api_diff/6/changes/packages_index_all.html
index 32c6eeb8..14634ba 100644
--- a/docs/html/sdk/api_diff/6/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/6/changes/packages_index_all.html
@@ -54,7 +54,7 @@
 <A HREF="pkg_android.accounts.html" class="hiddenlink" target="rightframe">android.accounts</A><br>
 <A HREF="pkg_android.os.html" class="hiddenlink" target="rightframe">android.os</A><br>
 <A HREF="pkg_android.view.html" class="hiddenlink" target="rightframe">android.view</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/packages_index_changes.html b/docs/html/sdk/api_diff/6/changes/packages_index_changes.html
index edd70f0..a973e7d 100644
--- a/docs/html/sdk/api_diff/6/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/6/changes/packages_index_changes.html
@@ -54,7 +54,7 @@
 <A HREF="pkg_android.accounts.html" class="hiddenlink" target="rightframe">android.accounts</A><br>
 <A HREF="pkg_android.os.html" class="hiddenlink" target="rightframe">android.os</A><br>
 <A HREF="pkg_android.view.html" class="hiddenlink" target="rightframe">android.view</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/packages_index_removals.html b/docs/html/sdk/api_diff/6/changes/packages_index_removals.html
index 9fd0f7e..eaaeb6c 100644
--- a/docs/html/sdk/api_diff/6/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/6/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/pkg_android.accounts.html b/docs/html/sdk/api_diff/6/changes/pkg_android.accounts.html
index 21224bf..72d7634 100644
--- a/docs/html/sdk/api_diff/6/changes/pkg_android.accounts.html
+++ b/docs/html/sdk/api_diff/6/changes/pkg_android.accounts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/pkg_android.html b/docs/html/sdk/api_diff/6/changes/pkg_android.html
index 25ddfa0c..0116d4c 100644
--- a/docs/html/sdk/api_diff/6/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/6/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/pkg_android.os.html b/docs/html/sdk/api_diff/6/changes/pkg_android.os.html
index 5b5570c..1465121 100644
--- a/docs/html/sdk/api_diff/6/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/6/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/6/changes/pkg_android.view.html b/docs/html/sdk/api_diff/6/changes/pkg_android.view.html
index 2595fad..180eecc 100644
--- a/docs/html/sdk/api_diff/6/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/6/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/7/changes/alldiffs_index_additions.html
index 5f2347a..e3fefc3 100644
--- a/docs/html/sdk/api_diff/7/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/7/changes/alldiffs_index_additions.html
@@ -560,7 +560,7 @@
 <A HREF="pkg_android.webkit.html#WebChromeClient.CustomViewCallback" class="hiddenlink" target="rightframe"><b><i>WebChromeClient.CustomViewCallback</i></b></A><br>
 <!-- Class WebSettings.ZoomDensity -->
 <A HREF="pkg_android.webkit.html#WebSettings.ZoomDensity" class="hiddenlink" target="rightframe"><b>WebSettings.ZoomDensity</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/7/changes/alldiffs_index_all.html
index f0df458..6e3119d 100644
--- a/docs/html/sdk/api_diff/7/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/7/changes/alldiffs_index_all.html
@@ -748,7 +748,7 @@
 <A HREF="android.webkit.WebStorage.html" class="hiddenlink" target="rightframe">WebStorage</A><br>
 <!-- Class WebView -->
 <A HREF="android.webkit.WebView.html" class="hiddenlink" target="rightframe">WebView</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/7/changes/alldiffs_index_changes.html
index 173d8e9..a536e7f 100644
--- a/docs/html/sdk/api_diff/7/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/7/changes/alldiffs_index_changes.html
@@ -364,7 +364,7 @@
 <A HREF="android.webkit.WebStorage.html" class="hiddenlink" target="rightframe">WebStorage</A><br>
 <!-- Class WebView -->
 <A HREF="android.webkit.WebView.html" class="hiddenlink" target="rightframe">WebView</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/7/changes/alldiffs_index_removals.html
index 68d2c20..48c9fcd 100644
--- a/docs/html/sdk/api_diff/7/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/7/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/7/changes/android.Manifest.permission.html
index 48b3bb0..0160c9c 100644
--- a/docs/html/sdk/api_diff/7/changes/android.Manifest.permission.html
+++ b/docs/html/sdk/api_diff/7/changes/android.Manifest.permission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.R.attr.html b/docs/html/sdk/api_diff/7/changes/android.R.attr.html
index 609b2fc..7a6ad21 100644
--- a/docs/html/sdk/api_diff/7/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/7/changes/android.R.attr.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.app.WallpaperManager.html b/docs/html/sdk/api_diff/7/changes/android.app.WallpaperManager.html
index 45db50d..03114be 100644
--- a/docs/html/sdk/api_diff/7/changes/android.app.WallpaperManager.html
+++ b/docs/html/sdk/api_diff/7/changes/android.app.WallpaperManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.content.Intent.html b/docs/html/sdk/api_diff/7/changes/android.content.Intent.html
index 4eb6058..5e709fa 100644
--- a/docs/html/sdk/api_diff/7/changes/android.content.Intent.html
+++ b/docs/html/sdk/api_diff/7/changes/android.content.Intent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/7/changes/android.content.pm.PackageManager.html
index 58b17ee..aafe35f 100644
--- a/docs/html/sdk/api_diff/7/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/7/changes/android.content.pm.PackageManager.html
@@ -199,7 +199,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.graphics.Rect.html b/docs/html/sdk/api_diff/7/changes/android.graphics.Rect.html
index dad11c7..83a1c4a 100644
--- a/docs/html/sdk/api_diff/7/changes/android.graphics.Rect.html
+++ b/docs/html/sdk/api_diff/7/changes/android.graphics.Rect.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.media.MediaRecorder.AudioSource.html b/docs/html/sdk/api_diff/7/changes/android.media.MediaRecorder.AudioSource.html
index b08003c..9f81cc7 100644
--- a/docs/html/sdk/api_diff/7/changes/android.media.MediaRecorder.AudioSource.html
+++ b/docs/html/sdk/api_diff/7/changes/android.media.MediaRecorder.AudioSource.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/7/changes/android.os.Build.VERSION_CODES.html
index 26b054be..4a07b5f 100644
--- a/docs/html/sdk/api_diff/7/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/7/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.os.PowerManager.html b/docs/html/sdk/api_diff/7/changes/android.os.PowerManager.html
index f766c93..cfb53f9 100644
--- a/docs/html/sdk/api_diff/7/changes/android.os.PowerManager.html
+++ b/docs/html/sdk/api_diff/7/changes/android.os.PowerManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.telephony.NeighboringCellInfo.html b/docs/html/sdk/api_diff/7/changes/android.telephony.NeighboringCellInfo.html
index e59d1e8..b1b5302 100644
--- a/docs/html/sdk/api_diff/7/changes/android.telephony.NeighboringCellInfo.html
+++ b/docs/html/sdk/api_diff/7/changes/android.telephony.NeighboringCellInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.telephony.PhoneStateListener.html b/docs/html/sdk/api_diff/7/changes/android.telephony.PhoneStateListener.html
index aa87eb8..914e9c1 100644
--- a/docs/html/sdk/api_diff/7/changes/android.telephony.PhoneStateListener.html
+++ b/docs/html/sdk/api_diff/7/changes/android.telephony.PhoneStateListener.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.view.View.html b/docs/html/sdk/api_diff/7/changes/android.view.View.html
index 1194d59..338ea88 100644
--- a/docs/html/sdk/api_diff/7/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/7/changes/android.view.View.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.view.ViewGroup.html b/docs/html/sdk/api_diff/7/changes/android.view.ViewGroup.html
index d7c030c..18c5c52 100644
--- a/docs/html/sdk/api_diff/7/changes/android.view.ViewGroup.html
+++ b/docs/html/sdk/api_diff/7/changes/android.view.ViewGroup.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.CacheManager.CacheResult.html b/docs/html/sdk/api_diff/7/changes/android.webkit.CacheManager.CacheResult.html
index 869421e..32176fc 100644
--- a/docs/html/sdk/api_diff/7/changes/android.webkit.CacheManager.CacheResult.html
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.CacheManager.CacheResult.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.GeolocationPermissions.html b/docs/html/sdk/api_diff/7/changes/android.webkit.GeolocationPermissions.html
index 2dacbba..bc81cb0 100644
--- a/docs/html/sdk/api_diff/7/changes/android.webkit.GeolocationPermissions.html
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.GeolocationPermissions.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.WebChromeClient.html b/docs/html/sdk/api_diff/7/changes/android.webkit.WebChromeClient.html
index 5bc64b3..69bdddd 100644
--- a/docs/html/sdk/api_diff/7/changes/android.webkit.WebChromeClient.html
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.WebChromeClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/7/changes/android.webkit.WebSettings.html
index f763d8b..33d7a87 100644
--- a/docs/html/sdk/api_diff/7/changes/android.webkit.WebSettings.html
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.WebSettings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.WebStorage.html b/docs/html/sdk/api_diff/7/changes/android.webkit.WebStorage.html
index 0b20ec2..9ea4eb4 100644
--- a/docs/html/sdk/api_diff/7/changes/android.webkit.WebStorage.html
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.WebStorage.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/7/changes/android.webkit.WebView.html
index e927bc6..9d7f33826 100644
--- a/docs/html/sdk/api_diff/7/changes/android.webkit.WebView.html
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.WebView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/7/changes/android.widget.RemoteViews.html
index 2651c5e..6dd551b 100644
--- a/docs/html/sdk/api_diff/7/changes/android.widget.RemoteViews.html
+++ b/docs/html/sdk/api_diff/7/changes/android.widget.RemoteViews.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/android.widget.ViewFlipper.html b/docs/html/sdk/api_diff/7/changes/android.widget.ViewFlipper.html
index fe92777..99af3f9 100644
--- a/docs/html/sdk/api_diff/7/changes/android.widget.ViewFlipper.html
+++ b/docs/html/sdk/api_diff/7/changes/android.widget.ViewFlipper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/changes-summary.html b/docs/html/sdk/api_diff/7/changes/changes-summary.html
index 34d4d25..c66c124 100644
--- a/docs/html/sdk/api_diff/7/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/7/changes/changes-summary.html
@@ -206,7 +206,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/classes_index_additions.html b/docs/html/sdk/api_diff/7/changes/classes_index_additions.html
index db5459e..e35e9aa 100644
--- a/docs/html/sdk/api_diff/7/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/7/changes/classes_index_additions.html
@@ -70,7 +70,7 @@
 <A HREF="pkg_android.app.html#WallpaperInfo" class="hiddenlink" target="rightframe"><b>WallpaperInfo</b></A><br>
 <A HREF="pkg_android.webkit.html#WebChromeClient.CustomViewCallback" class="hiddenlink" target="rightframe"><b><i>WebChromeClient.CustomViewCallback</i></b></A><br>
 <A HREF="pkg_android.webkit.html#WebSettings.ZoomDensity" class="hiddenlink" target="rightframe"><b>WebSettings.ZoomDensity</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/classes_index_all.html b/docs/html/sdk/api_diff/7/changes/classes_index_all.html
index 49b9728..ee2c788 100644
--- a/docs/html/sdk/api_diff/7/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/7/changes/classes_index_all.html
@@ -227,7 +227,7 @@
 <A HREF="pkg_android.webkit.html#WebSettings.ZoomDensity" class="hiddenlink" target="rightframe"><b>WebSettings.ZoomDensity</b></A><br>
 <A HREF="android.webkit.WebStorage.html" class="hiddenlink" target="rightframe">WebStorage</A><br>
 <A HREF="android.webkit.WebView.html" class="hiddenlink" target="rightframe">WebView</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/classes_index_changes.html b/docs/html/sdk/api_diff/7/changes/classes_index_changes.html
index f40db15..649f5d2 100644
--- a/docs/html/sdk/api_diff/7/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/7/changes/classes_index_changes.html
@@ -198,7 +198,7 @@
 <A HREF="android.webkit.WebSettings.html" class="hiddenlink" target="rightframe">WebSettings</A><br>
 <A HREF="android.webkit.WebStorage.html" class="hiddenlink" target="rightframe">WebStorage</A><br>
 <A HREF="android.webkit.WebView.html" class="hiddenlink" target="rightframe">WebView</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/classes_index_removals.html b/docs/html/sdk/api_diff/7/changes/classes_index_removals.html
index e6da73f..af7f1d0 100644
--- a/docs/html/sdk/api_diff/7/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/7/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/7/changes/constructors_index_additions.html
index 1858441..bbfaeda 100644
--- a/docs/html/sdk/api_diff/7/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/7/changes/constructors_index_additions.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.telephony.NeighboringCellInfo.html#android.telephony.NeighboringCellInfo.ctor_added(int, java.lang.String, int)" class="hiddenlink" target="rightframe"><b>NeighboringCellInfo</b>
 (<code>int, String, int</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/constructors_index_all.html b/docs/html/sdk/api_diff/7/changes/constructors_index_all.html
index 4975970..80c0382 100644
--- a/docs/html/sdk/api_diff/7/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/7/changes/constructors_index_all.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.telephony.NeighboringCellInfo.html#android.telephony.NeighboringCellInfo.ctor_added(int, java.lang.String, int)" class="hiddenlink" target="rightframe"><b>NeighboringCellInfo</b>
 (<code>int, String, int</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/7/changes/constructors_index_changes.html
index a5ca2ef..3078d87 100644
--- a/docs/html/sdk/api_diff/7/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/7/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/7/changes/constructors_index_removals.html
index 74a09ba..3603b75 100644
--- a/docs/html/sdk/api_diff/7/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/7/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/fields_index_additions.html b/docs/html/sdk/api_diff/7/changes/fields_index_additions.html
index 3148f4c..629a06a 100644
--- a/docs/html/sdk/api_diff/7/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/7/changes/fields_index_additions.html
@@ -145,7 +145,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.media.MediaRecorder.AudioSource.html#android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION" class="hiddenlink" target="rightframe">VOICE_RECOGNITION</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/fields_index_all.html b/docs/html/sdk/api_diff/7/changes/fields_index_all.html
index c782afc..3583d69 100644
--- a/docs/html/sdk/api_diff/7/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/7/changes/fields_index_all.html
@@ -167,7 +167,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.media.MediaRecorder.AudioSource.html#android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION" class="hiddenlink" target="rightframe">VOICE_RECOGNITION</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/fields_index_changes.html b/docs/html/sdk/api_diff/7/changes/fields_index_changes.html
index 88f77de..beef943 100644
--- a/docs/html/sdk/api_diff/7/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/7/changes/fields_index_changes.html
@@ -71,7 +71,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.SET_PREFERRED_APPLICATIONS" class="hiddenlink" target="rightframe">SET_PREFERRED_APPLICATIONS</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/fields_index_removals.html b/docs/html/sdk/api_diff/7/changes/fields_index_removals.html
index 9f62d88..9ad97a7 100644
--- a/docs/html/sdk/api_diff/7/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/7/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/jdiff_help.html b/docs/html/sdk/api_diff/7/changes/jdiff_help.html
index 6cc80dc..28076bf 100644
--- a/docs/html/sdk/api_diff/7/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/7/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/7/changes/jdiff_statistics.html
index ba81aec..bcf7b5a 100644
--- a/docs/html/sdk/api_diff/7/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/7/changes/jdiff_statistics.html
@@ -329,7 +329,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/7/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/7/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/7/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/methods_index_additions.html b/docs/html/sdk/api_diff/7/changes/methods_index_additions.html
index 1623337..eb5ba41 100644
--- a/docs/html/sdk/api_diff/7/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/7/changes/methods_index_additions.html
@@ -287,7 +287,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.graphics.Rect.html#android.graphics.Rect.unflattenFromString_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>unflattenFromString</b>
 (<code>String</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/methods_index_all.html b/docs/html/sdk/api_diff/7/changes/methods_index_all.html
index 7258ab1..94abeca 100644
--- a/docs/html/sdk/api_diff/7/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/7/changes/methods_index_all.html
@@ -291,7 +291,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.graphics.Rect.html#android.graphics.Rect.unflattenFromString_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>unflattenFromString</b>
 (<code>String</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/methods_index_changes.html b/docs/html/sdk/api_diff/7/changes/methods_index_changes.html
index 35867b1..1cab2d7 100644
--- a/docs/html/sdk/api_diff/7/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/7/changes/methods_index_changes.html
@@ -61,7 +61,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.removePackageFromPreferred_changed(java.lang.String)" class="hiddenlink" target="rightframe">removePackageFromPreferred
 (<code>String</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/methods_index_removals.html b/docs/html/sdk/api_diff/7/changes/methods_index_removals.html
index b5aea4f..b9d406e 100644
--- a/docs/html/sdk/api_diff/7/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/7/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/packages_index_additions.html b/docs/html/sdk/api_diff/7/changes/packages_index_additions.html
index d6ad068..4094c20 100644
--- a/docs/html/sdk/api_diff/7/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/7/changes/packages_index_additions.html
@@ -51,7 +51,7 @@
 <div id="indexTableEntries">
 <A NAME="A"></A>
 <A HREF="changes-summary.html#android.service.wallpaper" class="hiddenlink" target="rightframe"><b>android.service.wallpaper</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/packages_index_all.html b/docs/html/sdk/api_diff/7/changes/packages_index_all.html
index 5ab8b40..75bf059 100644
--- a/docs/html/sdk/api_diff/7/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/7/changes/packages_index_all.html
@@ -62,7 +62,7 @@
 <A HREF="pkg_android.view.html" class="hiddenlink" target="rightframe">android.view</A><br>
 <A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
 <A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/packages_index_changes.html b/docs/html/sdk/api_diff/7/changes/packages_index_changes.html
index 2331bb2..8c2e013 100644
--- a/docs/html/sdk/api_diff/7/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/7/changes/packages_index_changes.html
@@ -61,7 +61,7 @@
 <A HREF="pkg_android.view.html" class="hiddenlink" target="rightframe">android.view</A><br>
 <A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
 <A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/packages_index_removals.html b/docs/html/sdk/api_diff/7/changes/packages_index_removals.html
index d0ffabc..5f37b27 100644
--- a/docs/html/sdk/api_diff/7/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/7/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.app.html b/docs/html/sdk/api_diff/7/changes/pkg_android.app.html
index f05a62f..c11f93e 100644
--- a/docs/html/sdk/api_diff/7/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.content.html b/docs/html/sdk/api_diff/7/changes/pkg_android.content.html
index 4920ce3..24d77e8 100644
--- a/docs/html/sdk/api_diff/7/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/7/changes/pkg_android.content.pm.html
index c5c3b2e..f397a3f 100644
--- a/docs/html/sdk/api_diff/7/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.content.pm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/7/changes/pkg_android.graphics.html
index 732481f..6a353ef 100644
--- a/docs/html/sdk/api_diff/7/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.html b/docs/html/sdk/api_diff/7/changes/pkg_android.html
index fa07ac1..9477cb9 100644
--- a/docs/html/sdk/api_diff/7/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.media.html b/docs/html/sdk/api_diff/7/changes/pkg_android.media.html
index d5cd679..16c07b4 100644
--- a/docs/html/sdk/api_diff/7/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.os.html b/docs/html/sdk/api_diff/7/changes/pkg_android.os.html
index bfaa1eb..9de8c28 100644
--- a/docs/html/sdk/api_diff/7/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.os.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/7/changes/pkg_android.telephony.html
index adc1ceb..c665aad 100644
--- a/docs/html/sdk/api_diff/7/changes/pkg_android.telephony.html
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.telephony.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.view.html b/docs/html/sdk/api_diff/7/changes/pkg_android.view.html
index 40a8f57..59d79a5 100644
--- a/docs/html/sdk/api_diff/7/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.view.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/7/changes/pkg_android.webkit.html
index 8c37e6f..456151c 100644
--- a/docs/html/sdk/api_diff/7/changes/pkg_android.webkit.html
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.webkit.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/7/changes/pkg_android.widget.html
index e404840..185b6af 100644
--- a/docs/html/sdk/api_diff/7/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/8/changes/alldiffs_index_additions.html
index 303aeb3..9f130c6 100644
--- a/docs/html/sdk/api_diff/8/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/8/changes/alldiffs_index_additions.html
@@ -2063,7 +2063,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.graphics.html#YuvImage" class="hiddenlink" target="rightframe"><b>YuvImage</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/8/changes/alldiffs_index_all.html
index 278625a..d0fa267 100644
--- a/docs/html/sdk/api_diff/8/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/8/changes/alldiffs_index_all.html
@@ -2784,7 +2784,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/8/changes/alldiffs_index_changes.html
index 5bbba42..e965b96 100644
--- a/docs/html/sdk/api_diff/8/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/8/changes/alldiffs_index_changes.html
@@ -1125,7 +1125,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/8/changes/alldiffs_index_removals.html
index fbca7ca..60ff1bf 100644
--- a/docs/html/sdk/api_diff/8/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/8/changes/alldiffs_index_removals.html
@@ -200,7 +200,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="javax.xml.XMLConstants.html#javax.xml.XMLConstants.ctor_removed()" class="hiddenlink" target="rightframe"><strike>XMLConstants</strike>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/8/changes/android.Manifest.permission.html
index 2b79d42..3979477 100644
--- a/docs/html/sdk/api_diff/8/changes/android.Manifest.permission.html
+++ b/docs/html/sdk/api_diff/8/changes/android.Manifest.permission.html
@@ -146,7 +146,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.R.anim.html b/docs/html/sdk/api_diff/8/changes/android.R.anim.html
index 0d1118e..3c995e4 100644
--- a/docs/html/sdk/api_diff/8/changes/android.R.anim.html
+++ b/docs/html/sdk/api_diff/8/changes/android.R.anim.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.R.attr.html b/docs/html/sdk/api_diff/8/changes/android.R.attr.html
index 0a1193c..fadcb80 100644
--- a/docs/html/sdk/api_diff/8/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/8/changes/android.R.attr.html
@@ -174,7 +174,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.R.id.html b/docs/html/sdk/api_diff/8/changes/android.R.id.html
index e2845c4..3998e66 100644
--- a/docs/html/sdk/api_diff/8/changes/android.R.id.html
+++ b/docs/html/sdk/api_diff/8/changes/android.R.id.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.accounts.AccountManager.html b/docs/html/sdk/api_diff/8/changes/android.accounts.AccountManager.html
index 1380d97..3c59fa7 100644
--- a/docs/html/sdk/api_diff/8/changes/android.accounts.AccountManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.accounts.AccountManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.app.Activity.html b/docs/html/sdk/api_diff/8/changes/android.app.Activity.html
index 9c6f336..e7fcee6 100644
--- a/docs/html/sdk/api_diff/8/changes/android.app.Activity.html
+++ b/docs/html/sdk/api_diff/8/changes/android.app.Activity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.app.ActivityManager.ProcessErrorStateInfo.html b/docs/html/sdk/api_diff/8/changes/android.app.ActivityManager.ProcessErrorStateInfo.html
index 1a9d306..5af9583 100644
--- a/docs/html/sdk/api_diff/8/changes/android.app.ActivityManager.ProcessErrorStateInfo.html
+++ b/docs/html/sdk/api_diff/8/changes/android.app.ActivityManager.ProcessErrorStateInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.app.ActivityManager.html b/docs/html/sdk/api_diff/8/changes/android.app.ActivityManager.html
index 08897c9..c66a72f 100644
--- a/docs/html/sdk/api_diff/8/changes/android.app.ActivityManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.app.ActivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.app.AlarmManager.html b/docs/html/sdk/api_diff/8/changes/android.app.AlarmManager.html
index 7c1bad4..6b49887 100644
--- a/docs/html/sdk/api_diff/8/changes/android.app.AlarmManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.app.AlarmManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.app.Dialog.html b/docs/html/sdk/api_diff/8/changes/android.app.Dialog.html
index 3cbda33..3922d1a 100644
--- a/docs/html/sdk/api_diff/8/changes/android.app.Dialog.html
+++ b/docs/html/sdk/api_diff/8/changes/android.app.Dialog.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.app.SearchManager.html b/docs/html/sdk/api_diff/8/changes/android.app.SearchManager.html
index e7246ad..f3339b4 100644
--- a/docs/html/sdk/api_diff/8/changes/android.app.SearchManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.app.SearchManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.AbstractThreadedSyncAdapter.html b/docs/html/sdk/api_diff/8/changes/android.content.AbstractThreadedSyncAdapter.html
index bb11780..a9cdd9a 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.AbstractThreadedSyncAdapter.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.AbstractThreadedSyncAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.ComponentName.html b/docs/html/sdk/api_diff/8/changes/android.content.ComponentName.html
index 636d0a1..6a2ca14 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.ComponentName.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.ComponentName.html
@@ -114,7 +114,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.ContentResolver.html b/docs/html/sdk/api_diff/8/changes/android.content.ContentResolver.html
index 5565ed9..308bee5 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.ContentResolver.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.ContentResolver.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.Context.html b/docs/html/sdk/api_diff/8/changes/android.content.Context.html
index 0af8e49..c309851 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.Context.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.ContextWrapper.html b/docs/html/sdk/api_diff/8/changes/android.content.ContextWrapper.html
index 2205266..824d693 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.ContextWrapper.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.ContextWrapper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.Intent.html b/docs/html/sdk/api_diff/8/changes/android.content.Intent.html
index 4872ecc..d3e0254 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.Intent.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.Intent.html
@@ -180,7 +180,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.SyncResult.html b/docs/html/sdk/api_diff/8/changes/android.content.SyncResult.html
index b4b7884..4484877 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.SyncResult.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.SyncResult.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/8/changes/android.content.pm.ActivityInfo.html
index 6d406bf..6a2be41 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.pm.ActivityInfo.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.pm.ActivityInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.pm.ApplicationInfo.html b/docs/html/sdk/api_diff/8/changes/android.content.pm.ApplicationInfo.html
index 2a5d0fe..d8caa0e 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.pm.ApplicationInfo.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.pm.ApplicationInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.pm.ComponentInfo.html b/docs/html/sdk/api_diff/8/changes/android.content.pm.ComponentInfo.html
index ef0b4b3..bbf6065 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.pm.ComponentInfo.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.pm.ComponentInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/8/changes/android.content.pm.PackageManager.html
index 369a199..58d9ec6 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.pm.PackageManager.html
@@ -240,7 +240,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/8/changes/android.content.res.Configuration.html
index 7d18172..06c58ad 100644
--- a/docs/html/sdk/api_diff/8/changes/android.content.res.Configuration.html
+++ b/docs/html/sdk/api_diff/8/changes/android.content.res.Configuration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.database.DatabaseUtils.html b/docs/html/sdk/api_diff/8/changes/android.database.DatabaseUtils.html
index 71d06f3..5a540f6 100644
--- a/docs/html/sdk/api_diff/8/changes/android.database.DatabaseUtils.html
+++ b/docs/html/sdk/api_diff/8/changes/android.database.DatabaseUtils.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.database.sqlite.SQLiteDatabase.html b/docs/html/sdk/api_diff/8/changes/android.database.sqlite.SQLiteDatabase.html
index 069347a..c79b83c 100644
--- a/docs/html/sdk/api_diff/8/changes/android.database.sqlite.SQLiteDatabase.html
+++ b/docs/html/sdk/api_diff/8/changes/android.database.sqlite.SQLiteDatabase.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.database.sqlite.SQLiteProgram.html b/docs/html/sdk/api_diff/8/changes/android.database.sqlite.SQLiteProgram.html
index 622a951..25322bda 100644
--- a/docs/html/sdk/api_diff/8/changes/android.database.sqlite.SQLiteProgram.html
+++ b/docs/html/sdk/api_diff/8/changes/android.database.sqlite.SQLiteProgram.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.gesture.Gesture.html b/docs/html/sdk/api_diff/8/changes/android.gesture.Gesture.html
index 66b7e23..8676327 100644
--- a/docs/html/sdk/api_diff/8/changes/android.gesture.Gesture.html
+++ b/docs/html/sdk/api_diff/8/changes/android.gesture.Gesture.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.gesture.GesturePoint.html b/docs/html/sdk/api_diff/8/changes/android.gesture.GesturePoint.html
index 86bb697..1d177ab 100644
--- a/docs/html/sdk/api_diff/8/changes/android.gesture.GesturePoint.html
+++ b/docs/html/sdk/api_diff/8/changes/android.gesture.GesturePoint.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.gesture.GestureStroke.html b/docs/html/sdk/api_diff/8/changes/android.gesture.GestureStroke.html
index 55bc9fe..371fe61 100644
--- a/docs/html/sdk/api_diff/8/changes/android.gesture.GestureStroke.html
+++ b/docs/html/sdk/api_diff/8/changes/android.gesture.GestureStroke.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.graphics.PixelFormat.html b/docs/html/sdk/api_diff/8/changes/android.graphics.PixelFormat.html
index 40ca2c7..bb9cdf1 100644
--- a/docs/html/sdk/api_diff/8/changes/android.graphics.PixelFormat.html
+++ b/docs/html/sdk/api_diff/8/changes/android.graphics.PixelFormat.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.hardware.Camera.Parameters.html b/docs/html/sdk/api_diff/8/changes/android.hardware.Camera.Parameters.html
index 13e2cc5..1c25f0c 100644
--- a/docs/html/sdk/api_diff/8/changes/android.hardware.Camera.Parameters.html
+++ b/docs/html/sdk/api_diff/8/changes/android.hardware.Camera.Parameters.html
@@ -235,7 +235,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/8/changes/android.hardware.Camera.html
index b4e0709..1ad9033 100644
--- a/docs/html/sdk/api_diff/8/changes/android.hardware.Camera.html
+++ b/docs/html/sdk/api_diff/8/changes/android.hardware.Camera.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.hardware.Sensor.html b/docs/html/sdk/api_diff/8/changes/android.hardware.Sensor.html
index 4c453408..f7d8426 100644
--- a/docs/html/sdk/api_diff/8/changes/android.hardware.Sensor.html
+++ b/docs/html/sdk/api_diff/8/changes/android.hardware.Sensor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.location.LocationManager.html b/docs/html/sdk/api_diff/8/changes/android.location.LocationManager.html
index ccbc00c..a7b2521 100644
--- a/docs/html/sdk/api_diff/8/changes/android.location.LocationManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.location.LocationManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/8/changes/android.media.AudioManager.html
index b337b3d..3bb8c32 100644
--- a/docs/html/sdk/api_diff/8/changes/android.media.AudioManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.media.AudioManager.html
@@ -249,7 +249,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.media.ExifInterface.html b/docs/html/sdk/api_diff/8/changes/android.media.ExifInterface.html
index 0f32571..25c6384 100644
--- a/docs/html/sdk/api_diff/8/changes/android.media.ExifInterface.html
+++ b/docs/html/sdk/api_diff/8/changes/android.media.ExifInterface.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/8/changes/android.media.MediaRecorder.html
index d0a6263..4807228 100644
--- a/docs/html/sdk/api_diff/8/changes/android.media.MediaRecorder.html
+++ b/docs/html/sdk/api_diff/8/changes/android.media.MediaRecorder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.media.MediaScannerConnection.MediaScannerConnectionClient.html b/docs/html/sdk/api_diff/8/changes/android.media.MediaScannerConnection.MediaScannerConnectionClient.html
index 5ee8da4..c6479c0 100644
--- a/docs/html/sdk/api_diff/8/changes/android.media.MediaScannerConnection.MediaScannerConnectionClient.html
+++ b/docs/html/sdk/api_diff/8/changes/android.media.MediaScannerConnection.MediaScannerConnectionClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.media.MediaScannerConnection.html b/docs/html/sdk/api_diff/8/changes/android.media.MediaScannerConnection.html
index 5d5070c..10e96d1 100644
--- a/docs/html/sdk/api_diff/8/changes/android.media.MediaScannerConnection.html
+++ b/docs/html/sdk/api_diff/8/changes/android.media.MediaScannerConnection.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.media.SoundPool.html b/docs/html/sdk/api_diff/8/changes/android.media.SoundPool.html
index 39f81fd..19eb9cc 100644
--- a/docs/html/sdk/api_diff/8/changes/android.media.SoundPool.html
+++ b/docs/html/sdk/api_diff/8/changes/android.media.SoundPool.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.net.ConnectivityManager.html b/docs/html/sdk/api_diff/8/changes/android.net.ConnectivityManager.html
index 9030e2d..e5f8375 100644
--- a/docs/html/sdk/api_diff/8/changes/android.net.ConnectivityManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.net.ConnectivityManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.net.SSLCertificateSocketFactory.html b/docs/html/sdk/api_diff/8/changes/android.net.SSLCertificateSocketFactory.html
index 74c1bbb..15ede16 100644
--- a/docs/html/sdk/api_diff/8/changes/android.net.SSLCertificateSocketFactory.html
+++ b/docs/html/sdk/api_diff/8/changes/android.net.SSLCertificateSocketFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.net.http.SslCertificate.html b/docs/html/sdk/api_diff/8/changes/android.net.http.SslCertificate.html
index 5a8fe4f..106c292 100644
--- a/docs/html/sdk/api_diff/8/changes/android.net.http.SslCertificate.html
+++ b/docs/html/sdk/api_diff/8/changes/android.net.http.SslCertificate.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.opengl.GLSurfaceView.html b/docs/html/sdk/api_diff/8/changes/android.opengl.GLSurfaceView.html
index 8679a61..094e40f 100644
--- a/docs/html/sdk/api_diff/8/changes/android.opengl.GLSurfaceView.html
+++ b/docs/html/sdk/api_diff/8/changes/android.opengl.GLSurfaceView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.opengl.Matrix.html b/docs/html/sdk/api_diff/8/changes/android.opengl.Matrix.html
index 9288e5c..9b38adf 100644
--- a/docs/html/sdk/api_diff/8/changes/android.opengl.Matrix.html
+++ b/docs/html/sdk/api_diff/8/changes/android.opengl.Matrix.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/8/changes/android.os.Build.VERSION_CODES.html
index 4f86bca..23b6d38 100644
--- a/docs/html/sdk/api_diff/8/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/8/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.os.Build.html b/docs/html/sdk/api_diff/8/changes/android.os.Build.html
index d6a3fd3..6f85302 100644
--- a/docs/html/sdk/api_diff/8/changes/android.os.Build.html
+++ b/docs/html/sdk/api_diff/8/changes/android.os.Build.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.os.Bundle.html b/docs/html/sdk/api_diff/8/changes/android.os.Bundle.html
index 091f483..8e7d582 100644
--- a/docs/html/sdk/api_diff/8/changes/android.os.Bundle.html
+++ b/docs/html/sdk/api_diff/8/changes/android.os.Bundle.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.os.Debug.html b/docs/html/sdk/api_diff/8/changes/android.os.Debug.html
index e5a57b3..e3e83a1 100644
--- a/docs/html/sdk/api_diff/8/changes/android.os.Debug.html
+++ b/docs/html/sdk/api_diff/8/changes/android.os.Debug.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.os.Environment.html b/docs/html/sdk/api_diff/8/changes/android.os.Environment.html
index b803614..1879cc3 100644
--- a/docs/html/sdk/api_diff/8/changes/android.os.Environment.html
+++ b/docs/html/sdk/api_diff/8/changes/android.os.Environment.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.os.PowerManager.html b/docs/html/sdk/api_diff/8/changes/android.os.PowerManager.html
index 0fd9c9e..89c048d 100644
--- a/docs/html/sdk/api_diff/8/changes/android.os.PowerManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.os.PowerManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.Browser.html b/docs/html/sdk/api_diff/8/changes/android.provider.Browser.html
index b75b7a0..2a33f82 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.Browser.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.Browser.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.CallLog.Calls.html b/docs/html/sdk/api_diff/8/changes/android.provider.CallLog.Calls.html
index ab8dbae..3463a9a 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.CallLog.Calls.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.CallLog.Calls.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.Contacts.PresenceColumns.html b/docs/html/sdk/api_diff/8/changes/android.provider.Contacts.PresenceColumns.html
index 8a216d7..1b4b5ab 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.Contacts.PresenceColumns.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.Contacts.PresenceColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.Groups.html b/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.Groups.html
index f8f0e2f..e5d294d 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.Groups.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.Groups.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.RawContacts.html b/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.RawContacts.html
index 011a590..ac2ebbe 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.RawContacts.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.RawContacts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.StatusColumns.html b/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.StatusColumns.html
index 970ce5e..2c3116b 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.StatusColumns.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.ContactsContract.StatusColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.AudioColumns.html b/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.AudioColumns.html
index ed9fd8d..7532375 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.AudioColumns.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.AudioColumns.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.Playlists.Members.html b/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.Playlists.Members.html
index 9c0ab20..5370022 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.Playlists.Members.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.Playlists.Members.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Images.Thumbnails.html b/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Images.Thumbnails.html
index 999ae40..cf7f20d 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Images.Thumbnails.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Images.Thumbnails.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Video.Thumbnails.html b/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Video.Thumbnails.html
index 2ffd079..8bf25d4 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Video.Thumbnails.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.Video.Thumbnails.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.html b/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.html
index 2aab1e8..9ce6944 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.MediaStore.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.Settings.Secure.html b/docs/html/sdk/api_diff/8/changes/android.provider.Settings.Secure.html
index 7b89ab1..00e28d3 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.Settings.Secure.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.Settings.Secure.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/8/changes/android.provider.Settings.System.html
index 81dd481..a4c10b2 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.Settings.System.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.Settings.System.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.provider.Settings.html b/docs/html/sdk/api_diff/8/changes/android.provider.Settings.html
index c78568c..21eadc9 100644
--- a/docs/html/sdk/api_diff/8/changes/android.provider.Settings.html
+++ b/docs/html/sdk/api_diff/8/changes/android.provider.Settings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.speech.RecognizerIntent.html b/docs/html/sdk/api_diff/8/changes/android.speech.RecognizerIntent.html
index e70defc..8dc9b19 100644
--- a/docs/html/sdk/api_diff/8/changes/android.speech.RecognizerIntent.html
+++ b/docs/html/sdk/api_diff/8/changes/android.speech.RecognizerIntent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.Engine.html b/docs/html/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.Engine.html
index 0219ce2..03947e6 100644
--- a/docs/html/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.Engine.html
+++ b/docs/html/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.Engine.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.html b/docs/html/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.html
index 8bcd351..1875069 100644
--- a/docs/html/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.html
+++ b/docs/html/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/8/changes/android.telephony.TelephonyManager.html
index f899475..cf697fb 100644
--- a/docs/html/sdk/api_diff/8/changes/android.telephony.TelephonyManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.telephony.TelephonyManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.test.ActivityInstrumentationTestCase2.html b/docs/html/sdk/api_diff/8/changes/android.test.ActivityInstrumentationTestCase2.html
index 97023e6..f6ecd94 100644
--- a/docs/html/sdk/api_diff/8/changes/android.test.ActivityInstrumentationTestCase2.html
+++ b/docs/html/sdk/api_diff/8/changes/android.test.ActivityInstrumentationTestCase2.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.test.mock.MockContext.html b/docs/html/sdk/api_diff/8/changes/android.test.mock.MockContext.html
index d2241eb..88cb93a 100644
--- a/docs/html/sdk/api_diff/8/changes/android.test.mock.MockContext.html
+++ b/docs/html/sdk/api_diff/8/changes/android.test.mock.MockContext.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/8/changes/android.test.mock.MockPackageManager.html
index 9a90a3c..f2510d8 100644
--- a/docs/html/sdk/api_diff/8/changes/android.test.mock.MockPackageManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.test.mock.MockPackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.text.AndroidCharacter.html b/docs/html/sdk/api_diff/8/changes/android.text.AndroidCharacter.html
index 0e7788e..8899623 100644
--- a/docs/html/sdk/api_diff/8/changes/android.text.AndroidCharacter.html
+++ b/docs/html/sdk/api_diff/8/changes/android.text.AndroidCharacter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.text.util.Rfc822Tokenizer.html b/docs/html/sdk/api_diff/8/changes/android.text.util.Rfc822Tokenizer.html
index 41cbee6..da7ee2f 100644
--- a/docs/html/sdk/api_diff/8/changes/android.text.util.Rfc822Tokenizer.html
+++ b/docs/html/sdk/api_diff/8/changes/android.text.util.Rfc822Tokenizer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.util.EventLogTags.html b/docs/html/sdk/api_diff/8/changes/android.util.EventLogTags.html
index d0eef8a..de756b7 100644
--- a/docs/html/sdk/api_diff/8/changes/android.util.EventLogTags.html
+++ b/docs/html/sdk/api_diff/8/changes/android.util.EventLogTags.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.util.Log.html b/docs/html/sdk/api_diff/8/changes/android.util.Log.html
index f3266be..27272a4 100644
--- a/docs/html/sdk/api_diff/8/changes/android.util.Log.html
+++ b/docs/html/sdk/api_diff/8/changes/android.util.Log.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.view.Display.html b/docs/html/sdk/api_diff/8/changes/android.view.Display.html
index 8542008..8745821 100644
--- a/docs/html/sdk/api_diff/8/changes/android.view.Display.html
+++ b/docs/html/sdk/api_diff/8/changes/android.view.Display.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.view.GestureDetector.html b/docs/html/sdk/api_diff/8/changes/android.view.GestureDetector.html
index 7b7aacf..2424166 100644
--- a/docs/html/sdk/api_diff/8/changes/android.view.GestureDetector.html
+++ b/docs/html/sdk/api_diff/8/changes/android.view.GestureDetector.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.view.HapticFeedbackConstants.html b/docs/html/sdk/api_diff/8/changes/android.view.HapticFeedbackConstants.html
index dfb20ec..fac5334 100644
--- a/docs/html/sdk/api_diff/8/changes/android.view.HapticFeedbackConstants.html
+++ b/docs/html/sdk/api_diff/8/changes/android.view.HapticFeedbackConstants.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.view.MotionEvent.html b/docs/html/sdk/api_diff/8/changes/android.view.MotionEvent.html
index 568a205..7d17339 100644
--- a/docs/html/sdk/api_diff/8/changes/android.view.MotionEvent.html
+++ b/docs/html/sdk/api_diff/8/changes/android.view.MotionEvent.html
@@ -217,7 +217,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.view.VelocityTracker.html b/docs/html/sdk/api_diff/8/changes/android.view.VelocityTracker.html
index 905da726..845be6f 100644
--- a/docs/html/sdk/api_diff/8/changes/android.view.VelocityTracker.html
+++ b/docs/html/sdk/api_diff/8/changes/android.view.VelocityTracker.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.view.View.html b/docs/html/sdk/api_diff/8/changes/android.view.View.html
index 9f4e648..13fba35 100644
--- a/docs/html/sdk/api_diff/8/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/8/changes/android.view.View.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/8/changes/android.view.ViewConfiguration.html
index fb06822..eec245b 100644
--- a/docs/html/sdk/api_diff/8/changes/android.view.ViewConfiguration.html
+++ b/docs/html/sdk/api_diff/8/changes/android.view.ViewConfiguration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.view.ViewGroup.LayoutParams.html b/docs/html/sdk/api_diff/8/changes/android.view.ViewGroup.LayoutParams.html
index dd82f12..3793aa9 100644
--- a/docs/html/sdk/api_diff/8/changes/android.view.ViewGroup.LayoutParams.html
+++ b/docs/html/sdk/api_diff/8/changes/android.view.ViewGroup.LayoutParams.html
@@ -125,7 +125,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.view.WindowManager.LayoutParams.html b/docs/html/sdk/api_diff/8/changes/android.view.WindowManager.LayoutParams.html
index ada327e..4c9c6d6 100644
--- a/docs/html/sdk/api_diff/8/changes/android.view.WindowManager.LayoutParams.html
+++ b/docs/html/sdk/api_diff/8/changes/android.view.WindowManager.LayoutParams.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.view.animation.Animation.html b/docs/html/sdk/api_diff/8/changes/android.view.animation.Animation.html
index e75c000..b99f3fa 100644
--- a/docs/html/sdk/api_diff/8/changes/android.view.animation.Animation.html
+++ b/docs/html/sdk/api_diff/8/changes/android.view.animation.Animation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.webkit.CacheManager.html b/docs/html/sdk/api_diff/8/changes/android.webkit.CacheManager.html
index 3f85e2c..981cbe9 100644
--- a/docs/html/sdk/api_diff/8/changes/android.webkit.CacheManager.html
+++ b/docs/html/sdk/api_diff/8/changes/android.webkit.CacheManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.webkit.JsResult.html b/docs/html/sdk/api_diff/8/changes/android.webkit.JsResult.html
index a403bfb..45faadc 100644
--- a/docs/html/sdk/api_diff/8/changes/android.webkit.JsResult.html
+++ b/docs/html/sdk/api_diff/8/changes/android.webkit.JsResult.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.webkit.WebChromeClient.html b/docs/html/sdk/api_diff/8/changes/android.webkit.WebChromeClient.html
index 056f613..ddaf440 100644
--- a/docs/html/sdk/api_diff/8/changes/android.webkit.WebChromeClient.html
+++ b/docs/html/sdk/api_diff/8/changes/android.webkit.WebChromeClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/8/changes/android.webkit.WebSettings.html
index a4c8b8a..db9c9a2 100644
--- a/docs/html/sdk/api_diff/8/changes/android.webkit.WebSettings.html
+++ b/docs/html/sdk/api_diff/8/changes/android.webkit.WebSettings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/8/changes/android.webkit.WebView.html
index 8b78a13..c7b9f2d 100644
--- a/docs/html/sdk/api_diff/8/changes/android.webkit.WebView.html
+++ b/docs/html/sdk/api_diff/8/changes/android.webkit.WebView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.webkit.WebViewClient.html b/docs/html/sdk/api_diff/8/changes/android.webkit.WebViewClient.html
index 9ebfd5b..50e0dd2 100644
--- a/docs/html/sdk/api_diff/8/changes/android.webkit.WebViewClient.html
+++ b/docs/html/sdk/api_diff/8/changes/android.webkit.WebViewClient.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.widget.AbsListView.html b/docs/html/sdk/api_diff/8/changes/android.widget.AbsListView.html
index e3bb860..44dd852 100644
--- a/docs/html/sdk/api_diff/8/changes/android.widget.AbsListView.html
+++ b/docs/html/sdk/api_diff/8/changes/android.widget.AbsListView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.widget.BaseExpandableListAdapter.html b/docs/html/sdk/api_diff/8/changes/android.widget.BaseExpandableListAdapter.html
index 184cfac..41b562d 100644
--- a/docs/html/sdk/api_diff/8/changes/android.widget.BaseExpandableListAdapter.html
+++ b/docs/html/sdk/api_diff/8/changes/android.widget.BaseExpandableListAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.widget.ImageView.html b/docs/html/sdk/api_diff/8/changes/android.widget.ImageView.html
index 0587c2d..2b2e4e4 100644
--- a/docs/html/sdk/api_diff/8/changes/android.widget.ImageView.html
+++ b/docs/html/sdk/api_diff/8/changes/android.widget.ImageView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.widget.ListView.html b/docs/html/sdk/api_diff/8/changes/android.widget.ListView.html
index 1653521..fcbb480 100644
--- a/docs/html/sdk/api_diff/8/changes/android.widget.ListView.html
+++ b/docs/html/sdk/api_diff/8/changes/android.widget.ListView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/8/changes/android.widget.RemoteViews.html
index c18470b..b5e22d1 100644
--- a/docs/html/sdk/api_diff/8/changes/android.widget.RemoteViews.html
+++ b/docs/html/sdk/api_diff/8/changes/android.widget.RemoteViews.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.widget.TabWidget.html b/docs/html/sdk/api_diff/8/changes/android.widget.TabWidget.html
index 5f23961..fa61a4e 100644
--- a/docs/html/sdk/api_diff/8/changes/android.widget.TabWidget.html
+++ b/docs/html/sdk/api_diff/8/changes/android.widget.TabWidget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/android.widget.VideoView.html b/docs/html/sdk/api_diff/8/changes/android.widget.VideoView.html
index 2002f9b..ad7490f 100644
--- a/docs/html/sdk/api_diff/8/changes/android.widget.VideoView.html
+++ b/docs/html/sdk/api_diff/8/changes/android.widget.VideoView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/changes-summary.html b/docs/html/sdk/api_diff/8/changes/changes-summary.html
index 5041182..d71a547 100644
--- a/docs/html/sdk/api_diff/8/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/8/changes/changes-summary.html
@@ -479,7 +479,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/classes_index_additions.html b/docs/html/sdk/api_diff/8/changes/classes_index_additions.html
index 4480299..3f0dfba 100644
--- a/docs/html/sdk/api_diff/8/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/8/changes/classes_index_additions.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="pkg_android.graphics.html#YuvImage" class="hiddenlink" target="rightframe"><b>YuvImage</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/classes_index_all.html b/docs/html/sdk/api_diff/8/changes/classes_index_all.html
index c0b5a6a..36b1a1f 100644
--- a/docs/html/sdk/api_diff/8/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/8/changes/classes_index_all.html
@@ -828,7 +828,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/classes_index_changes.html b/docs/html/sdk/api_diff/8/changes/classes_index_changes.html
index 71c9736..911f86f 100644
--- a/docs/html/sdk/api_diff/8/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/8/changes/classes_index_changes.html
@@ -673,7 +673,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="dalvik.system.Zygote.html" class="hiddenlink" target="rightframe">Zygote</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/classes_index_removals.html b/docs/html/sdk/api_diff/8/changes/classes_index_removals.html
index e6da73f..af7f1d0 100644
--- a/docs/html/sdk/api_diff/8/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/8/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/8/changes/constructors_index_additions.html
index 62a4528..b37a0b5 100644
--- a/docs/html/sdk/api_diff/8/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/8/changes/constructors_index_additions.html
@@ -71,7 +71,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.net.http.SslCertificate.html#android.net.http.SslCertificate.ctor_added(java.lang.String, java.lang.String, java.util.Date, java.util.Date)" class="hiddenlink" target="rightframe"><b>SslCertificate</b>
 (<code>String, String, Date, Date</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/constructors_index_all.html b/docs/html/sdk/api_diff/8/changes/constructors_index_all.html
index c8a68d8f..e1d4039 100644
--- a/docs/html/sdk/api_diff/8/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/8/changes/constructors_index_all.html
@@ -91,7 +91,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="javax.xml.XMLConstants.html#javax.xml.XMLConstants.ctor_removed()" class="hiddenlink" target="rightframe"><strike>XMLConstants</strike>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/8/changes/constructors_index_changes.html
index 0f9ca3c..4bce2cc 100644
--- a/docs/html/sdk/api_diff/8/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/8/changes/constructors_index_changes.html
@@ -63,7 +63,7 @@
 (<code>String, String, String, String</code>)</A></nobr>&nbsp;constructor<br>
 <nobr><A HREF="android.net.SSLCertificateSocketFactory.html#android.net.SSLCertificateSocketFactory.ctor_changed(int)" class="hiddenlink" target="rightframe">SSLCertificateSocketFactory
 (<code>int</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/8/changes/constructors_index_removals.html
index 618fd13..77a6d0e 100644
--- a/docs/html/sdk/api_diff/8/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/8/changes/constructors_index_removals.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="javax.xml.XMLConstants.html#javax.xml.XMLConstants.ctor_removed()" class="hiddenlink" target="rightframe"><strike>XMLConstants</strike>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/dalvik.bytecode.Opcodes.html b/docs/html/sdk/api_diff/8/changes/dalvik.bytecode.Opcodes.html
index c12ea91..a5cf9e8 100644
--- a/docs/html/sdk/api_diff/8/changes/dalvik.bytecode.Opcodes.html
+++ b/docs/html/sdk/api_diff/8/changes/dalvik.bytecode.Opcodes.html
@@ -312,7 +312,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/dalvik.system.VMDebug.html b/docs/html/sdk/api_diff/8/changes/dalvik.system.VMDebug.html
index 3bec244..28bbea9 100644
--- a/docs/html/sdk/api_diff/8/changes/dalvik.system.VMDebug.html
+++ b/docs/html/sdk/api_diff/8/changes/dalvik.system.VMDebug.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/dalvik.system.Zygote.html b/docs/html/sdk/api_diff/8/changes/dalvik.system.Zygote.html
index 3565aedf..e8cbc8c 100644
--- a/docs/html/sdk/api_diff/8/changes/dalvik.system.Zygote.html
+++ b/docs/html/sdk/api_diff/8/changes/dalvik.system.Zygote.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/fields_index_additions.html b/docs/html/sdk/api_diff/8/changes/fields_index_additions.html
index c7b9eba..c715ef07 100644
--- a/docs/html/sdk/api_diff/8/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/8/changes/fields_index_additions.html
@@ -921,7 +921,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.R.attr.html#android.R.attr.webTextViewStyle" class="hiddenlink" target="rightframe">webTextViewStyle</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/fields_index_all.html b/docs/html/sdk/api_diff/8/changes/fields_index_all.html
index b34f9aa..7039983 100644
--- a/docs/html/sdk/api_diff/8/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/8/changes/fields_index_all.html
@@ -1124,7 +1124,7 @@
 </nobr><br>
 <nobr><A HREF="android.graphics.PixelFormat.html#android.graphics.PixelFormat.YCbCr_422_SP" class="hiddenlink" target="rightframe">YCbCr_422_SP</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/fields_index_changes.html b/docs/html/sdk/api_diff/8/changes/fields_index_changes.html
index b8ca063..a000145 100644
--- a/docs/html/sdk/api_diff/8/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/8/changes/fields_index_changes.html
@@ -223,7 +223,7 @@
 </nobr><br>
 <nobr><A HREF="android.graphics.PixelFormat.html#android.graphics.PixelFormat.YCbCr_422_SP" class="hiddenlink" target="rightframe">YCbCr_422_SP</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/fields_index_removals.html b/docs/html/sdk/api_diff/8/changes/fields_index_removals.html
index b7b9304..024fe87 100644
--- a/docs/html/sdk/api_diff/8/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/8/changes/fields_index_removals.html
@@ -123,7 +123,7 @@
 </nobr><br>
 <nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.PKG_INSTALL_INCOMPLETE" class="hiddenlink" target="rightframe"><strike>PKG_INSTALL_INCOMPLETE</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/java.net.DatagramSocketImpl.html b/docs/html/sdk/api_diff/8/changes/java.net.DatagramSocketImpl.html
index f2797c2..6c88203 100644
--- a/docs/html/sdk/api_diff/8/changes/java.net.DatagramSocketImpl.html
+++ b/docs/html/sdk/api_diff/8/changes/java.net.DatagramSocketImpl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/java.nio.charset.Charset.html b/docs/html/sdk/api_diff/8/changes/java.nio.charset.Charset.html
index 00459bb..c38cae3 100644
--- a/docs/html/sdk/api_diff/8/changes/java.nio.charset.Charset.html
+++ b/docs/html/sdk/api_diff/8/changes/java.nio.charset.Charset.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/java.util.ArrayList.html b/docs/html/sdk/api_diff/8/changes/java.util.ArrayList.html
index 57a6f01..59e8c1d 100644
--- a/docs/html/sdk/api_diff/8/changes/java.util.ArrayList.html
+++ b/docs/html/sdk/api_diff/8/changes/java.util.ArrayList.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/java.util.HashMap.html b/docs/html/sdk/api_diff/8/changes/java.util.HashMap.html
index f80f209..95656b6 100644
--- a/docs/html/sdk/api_diff/8/changes/java.util.HashMap.html
+++ b/docs/html/sdk/api_diff/8/changes/java.util.HashMap.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/java.util.regex.Matcher.html b/docs/html/sdk/api_diff/8/changes/java.util.regex.Matcher.html
index cde54ef..c8764bd 100644
--- a/docs/html/sdk/api_diff/8/changes/java.util.regex.Matcher.html
+++ b/docs/html/sdk/api_diff/8/changes/java.util.regex.Matcher.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/java.util.regex.Pattern.html b/docs/html/sdk/api_diff/8/changes/java.util.regex.Pattern.html
index 04ccbc1..f1cc6de 100644
--- a/docs/html/sdk/api_diff/8/changes/java.util.regex.Pattern.html
+++ b/docs/html/sdk/api_diff/8/changes/java.util.regex.Pattern.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/javax.xml.XMLConstants.html b/docs/html/sdk/api_diff/8/changes/javax.xml.XMLConstants.html
index 5b75dcc..95d97c8 100644
--- a/docs/html/sdk/api_diff/8/changes/javax.xml.XMLConstants.html
+++ b/docs/html/sdk/api_diff/8/changes/javax.xml.XMLConstants.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilder.html b/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilder.html
index 3b0320e..da7003a 100644
--- a/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilder.html
+++ b/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilderFactory.html b/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilderFactory.html
index db4f0a3..f9adcd9 100644
--- a/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilderFactory.html
+++ b/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilderFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.SAXParser.html b/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.SAXParser.html
index 48cb76d..15cff16 100644
--- a/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.SAXParser.html
+++ b/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.SAXParser.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.SAXParserFactory.html b/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.SAXParserFactory.html
index f36f63f..2dfe1ad 100644
--- a/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.SAXParserFactory.html
+++ b/docs/html/sdk/api_diff/8/changes/javax.xml.parsers.SAXParserFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/jdiff_help.html b/docs/html/sdk/api_diff/8/changes/jdiff_help.html
index 5dfacec..07748dd9 100644
--- a/docs/html/sdk/api_diff/8/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/8/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/8/changes/jdiff_statistics.html
index d0eb78b..40d2a0c 100644
--- a/docs/html/sdk/api_diff/8/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/8/changes/jdiff_statistics.html
@@ -950,7 +950,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/8/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/8/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/8/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/methods_index_additions.html b/docs/html/sdk/api_diff/8/changes/methods_index_additions.html
index 822c43b..5f43903 100644
--- a/docs/html/sdk/api_diff/8/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/8/changes/methods_index_additions.html
@@ -902,7 +902,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.util.Log.html#android.util.Log.wtf_added(java.lang.String, java.lang.Throwable)" class="hiddenlink" target="rightframe">type&nbsp;<b>
 (<code>String, Throwable</code>)</b>&nbsp;in&nbsp;android.util.Log
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/methods_index_all.html b/docs/html/sdk/api_diff/8/changes/methods_index_all.html
index 91d79f8..a4e7e6a 100644
--- a/docs/html/sdk/api_diff/8/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/8/changes/methods_index_all.html
@@ -1043,7 +1043,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.util.Log.html#android.util.Log.wtf_added(java.lang.String, java.lang.Throwable)" class="hiddenlink" target="rightframe">type&nbsp;<b>
 (<code>String, Throwable</code>)</b>&nbsp;in&nbsp;android.util.Log
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/methods_index_changes.html b/docs/html/sdk/api_diff/8/changes/methods_index_changes.html
index b7268b7..0c2c591 100644
--- a/docs/html/sdk/api_diff/8/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/8/changes/methods_index_changes.html
@@ -289,7 +289,7 @@
 ()</A></nobr><br>
 <nobr><A HREF="dalvik.system.VMDebug.html#dalvik.system.VMDebug.startMethodTracing_changed()" class="hiddenlink" target="rightframe">startMethodTracing
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/methods_index_removals.html b/docs/html/sdk/api_diff/8/changes/methods_index_removals.html
index 5e7e067e..84d57c1 100644
--- a/docs/html/sdk/api_diff/8/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/8/changes/methods_index_removals.html
@@ -71,7 +71,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="java.net.DatagramSocketImpl.html#java.net.DatagramSocketImpl.setOption_removed(int, java.lang.Object)" class="hiddenlink" target="rightframe"><strike>setOption</strike>
 (<code>int, Object</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Attr.html b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Attr.html
index 860375b..b0d60c3 100644
--- a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Attr.html
+++ b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Attr.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.DOMException.html b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.DOMException.html
index c7e82fb..bbebfc3 100644
--- a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.DOMException.html
+++ b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.DOMException.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.DOMImplementation.html b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.DOMImplementation.html
index 4c498fa..53d8c58 100644
--- a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.DOMImplementation.html
+++ b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.DOMImplementation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Document.html b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Document.html
index 8eaf593..5f1318b 100644
--- a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Document.html
+++ b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Document.html
@@ -199,7 +199,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Element.html b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Element.html
index bef9622..99292d3 100644
--- a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Element.html
+++ b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Element.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Entity.html b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Entity.html
index 07cc42c..801bb6c 100644
--- a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Entity.html
+++ b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Entity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.NamedNodeMap.html b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.NamedNodeMap.html
index 08662fd..c88863d 100644
--- a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.NamedNodeMap.html
+++ b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.NamedNodeMap.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Node.html b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Node.html
index 9c9e968..86bdd0b 100644
--- a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Node.html
+++ b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Node.html
@@ -235,7 +235,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Text.html b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Text.html
index eb8a239..3c2da5c 100644
--- a/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Text.html
+++ b/docs/html/sdk/api_diff/8/changes/org.w3c.dom.Text.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/packages_index_additions.html b/docs/html/sdk/api_diff/8/changes/packages_index_additions.html
index 80069e3..d0aa4d54 100644
--- a/docs/html/sdk/api_diff/8/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/8/changes/packages_index_additions.html
@@ -63,7 +63,7 @@
 <A HREF="changes-summary.html#javax.xml.xpath" class="hiddenlink" target="rightframe"><b>javax.xml.xpath</b></A><br>
 <A NAME="O"></A>
 <A HREF="changes-summary.html#org.w3c.dom.ls" class="hiddenlink" target="rightframe"><b>org.w3c.dom.ls</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/packages_index_all.html b/docs/html/sdk/api_diff/8/changes/packages_index_all.html
index 49852d2..2228d67 100644
--- a/docs/html/sdk/api_diff/8/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/8/changes/packages_index_all.html
@@ -104,7 +104,7 @@
 <A NAME="O"></A>
 <A HREF="pkg_org.w3c.dom.html" class="hiddenlink" target="rightframe">org.w3c.dom</A><br>
 <A HREF="changes-summary.html#org.w3c.dom.ls" class="hiddenlink" target="rightframe"><b>org.w3c.dom.ls</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/packages_index_changes.html b/docs/html/sdk/api_diff/8/changes/packages_index_changes.html
index 152b182..d2ea605 100644
--- a/docs/html/sdk/api_diff/8/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/8/changes/packages_index_changes.html
@@ -93,7 +93,7 @@
 <A HREF="pkg_javax.xml.parsers.html" class="hiddenlink" target="rightframe">javax.xml.parsers</A><br>
 <A NAME="O"></A>
 <A HREF="pkg_org.w3c.dom.html" class="hiddenlink" target="rightframe">org.w3c.dom</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/packages_index_removals.html b/docs/html/sdk/api_diff/8/changes/packages_index_removals.html
index d0ffabc..5f37b27 100644
--- a/docs/html/sdk/api_diff/8/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/8/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.accounts.html b/docs/html/sdk/api_diff/8/changes/pkg_android.accounts.html
index 7f2c3e0..daa6695e 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.accounts.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.accounts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.app.html b/docs/html/sdk/api_diff/8/changes/pkg_android.app.html
index 892b454..7283f12 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.content.html b/docs/html/sdk/api_diff/8/changes/pkg_android.content.html
index d0a8e32..2e47ded 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.content.html
@@ -197,7 +197,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/8/changes/pkg_android.content.pm.html
index 29f6c7a..1499a8a 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.content.pm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/8/changes/pkg_android.content.res.html
index 055d42a..aec6606 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.content.res.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.database.html b/docs/html/sdk/api_diff/8/changes/pkg_android.database.html
index dece819..0c68c82 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.database.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.database.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.database.sqlite.html b/docs/html/sdk/api_diff/8/changes/pkg_android.database.sqlite.html
index 6f0d2ba..ca349da 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.database.sqlite.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.database.sqlite.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.gesture.html b/docs/html/sdk/api_diff/8/changes/pkg_android.gesture.html
index 28ec9d1..93665ec 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.gesture.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.gesture.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/8/changes/pkg_android.graphics.html
index aafb0e0..a4a95d3 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.graphics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/8/changes/pkg_android.hardware.html
index 13d1c3a..7edee93 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.hardware.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.hardware.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.html b/docs/html/sdk/api_diff/8/changes/pkg_android.html
index c100283..cf8d090 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.location.html b/docs/html/sdk/api_diff/8/changes/pkg_android.location.html
index a4244d2..4f1df5f 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.location.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.location.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.media.html b/docs/html/sdk/api_diff/8/changes/pkg_android.media.html
index 4289206..197a647 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.net.html b/docs/html/sdk/api_diff/8/changes/pkg_android.net.html
index b771a2b..bf5fb00 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.net.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.net.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.net.http.html b/docs/html/sdk/api_diff/8/changes/pkg_android.net.http.html
index 5b9f5c8..6f812e1 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.net.http.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.net.http.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/8/changes/pkg_android.opengl.html
index 1bea6d9..658f145 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.opengl.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.opengl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.os.html b/docs/html/sdk/api_diff/8/changes/pkg_android.os.html
index cf3fc7d..d650c1d 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.os.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/8/changes/pkg_android.provider.html
index 06db000..dcb1d53 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.provider.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.provider.html
@@ -196,7 +196,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.speech.html b/docs/html/sdk/api_diff/8/changes/pkg_android.speech.html
index 0ae2978..0b6a0b1 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.speech.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.speech.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.speech.tts.html b/docs/html/sdk/api_diff/8/changes/pkg_android.speech.tts.html
index d8368a2..f5b5ff9 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.speech.tts.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.speech.tts.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/8/changes/pkg_android.telephony.html
index 718df76..4d995f1 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.telephony.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.telephony.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.test.html b/docs/html/sdk/api_diff/8/changes/pkg_android.test.html
index df8b98c..4bf67c1 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.test.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.test.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/8/changes/pkg_android.test.mock.html
index 344281b..3963b4b 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.test.mock.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.test.mock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.text.html b/docs/html/sdk/api_diff/8/changes/pkg_android.text.html
index ae9e9a7..9820705 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.text.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.text.style.html b/docs/html/sdk/api_diff/8/changes/pkg_android.text.style.html
index 6332233..bf3cea6 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.text.style.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.text.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.text.util.html b/docs/html/sdk/api_diff/8/changes/pkg_android.text.util.html
index 875efa6..5734e37 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.text.util.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.text.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.util.html b/docs/html/sdk/api_diff/8/changes/pkg_android.util.html
index 7803591..44f21d5 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.util.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.util.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.view.animation.html b/docs/html/sdk/api_diff/8/changes/pkg_android.view.animation.html
index 559c118..2063b02 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.view.animation.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.view.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.view.html b/docs/html/sdk/api_diff/8/changes/pkg_android.view.html
index cb5401f..a9acc5a 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.view.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/8/changes/pkg_android.webkit.html
index 038f1451..25dae5f 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.webkit.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.webkit.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/8/changes/pkg_android.widget.html
index bfbf096..9239e4f 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_dalvik.bytecode.html b/docs/html/sdk/api_diff/8/changes/pkg_dalvik.bytecode.html
index 943ec6b..639d695 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_dalvik.bytecode.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_dalvik.bytecode.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_dalvik.system.html b/docs/html/sdk/api_diff/8/changes/pkg_dalvik.system.html
index 14aff19..28726b6 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_dalvik.system.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_dalvik.system.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_java.net.html b/docs/html/sdk/api_diff/8/changes/pkg_java.net.html
index 510e838..3d7d0ee 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_java.net.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_java.net.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_java.nio.charset.html b/docs/html/sdk/api_diff/8/changes/pkg_java.nio.charset.html
index e83a1be..d7ae97e 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_java.nio.charset.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_java.nio.charset.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_java.util.html b/docs/html/sdk/api_diff/8/changes/pkg_java.util.html
index 0d13408..eca4073 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_java.util.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_java.util.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_java.util.regex.html b/docs/html/sdk/api_diff/8/changes/pkg_java.util.regex.html
index 5227e54..d188baa 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_java.util.regex.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_java.util.regex.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_javax.xml.html b/docs/html/sdk/api_diff/8/changes/pkg_javax.xml.html
index f0168b6..b874c1a 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_javax.xml.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_javax.xml.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_javax.xml.parsers.html b/docs/html/sdk/api_diff/8/changes/pkg_javax.xml.parsers.html
index 9ddbcbb..c0adc80 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_javax.xml.parsers.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_javax.xml.parsers.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/8/changes/pkg_org.w3c.dom.html b/docs/html/sdk/api_diff/8/changes/pkg_org.w3c.dom.html
index eca49bc0..253b928 100644
--- a/docs/html/sdk/api_diff/8/changes/pkg_org.w3c.dom.html
+++ b/docs/html/sdk/api_diff/8/changes/pkg_org.w3c.dom.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/9/changes/alldiffs_index_additions.html
index c959256..0be157d 100644
--- a/docs/html/sdk/api_diff/9/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/api_diff/9/changes/alldiffs_index_additions.html
@@ -3283,7 +3283,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_java.util.zip.html#ZipError" class="hiddenlink" target="rightframe"><b>ZipError</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/9/changes/alldiffs_index_all.html
index 9e779b1..287908e 100644
--- a/docs/html/sdk/api_diff/9/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/api_diff/9/changes/alldiffs_index_all.html
@@ -4068,7 +4068,7 @@
 <A HREF="pkg_java.util.zip.html#ZipError" class="hiddenlink" target="rightframe"><b>ZipError</b></A><br>
 <!-- Class Zygote -->
 <A HREF="pkg_dalvik.system.html#Zygote" class="hiddenlink" target="rightframe"><strike>Zygote</strike></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/9/changes/alldiffs_index_changes.html
index 09ebd79..fd6792f 100644
--- a/docs/html/sdk/api_diff/9/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/api_diff/9/changes/alldiffs_index_changes.html
@@ -1184,7 +1184,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="javax.security.auth.x500.X500Principal.html" class="hiddenlink" target="rightframe">X500Principal</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/9/changes/alldiffs_index_removals.html
index 6d454fc..6a988e7 100644
--- a/docs/html/sdk/api_diff/9/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/api_diff/9/changes/alldiffs_index_removals.html
@@ -427,7 +427,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_dalvik.system.html#Zygote" class="hiddenlink" target="rightframe"><strike>Zygote</strike></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/9/changes/android.Manifest.permission.html
index 70283e4..89a9af0 100644
--- a/docs/html/sdk/api_diff/9/changes/android.Manifest.permission.html
+++ b/docs/html/sdk/api_diff/9/changes/android.Manifest.permission.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.R.attr.html b/docs/html/sdk/api_diff/9/changes/android.R.attr.html
index 3d48dfc..2de5a9b 100644
--- a/docs/html/sdk/api_diff/9/changes/android.R.attr.html
+++ b/docs/html/sdk/api_diff/9/changes/android.R.attr.html
@@ -185,7 +185,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.R.drawable.html b/docs/html/sdk/api_diff/9/changes/android.R.drawable.html
index e3673ad..c98ead9 100644
--- a/docs/html/sdk/api_diff/9/changes/android.R.drawable.html
+++ b/docs/html/sdk/api_diff/9/changes/android.R.drawable.html
@@ -196,7 +196,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.R.style.html b/docs/html/sdk/api_diff/9/changes/android.R.style.html
index 5ca5763..1d50812 100644
--- a/docs/html/sdk/api_diff/9/changes/android.R.style.html
+++ b/docs/html/sdk/api_diff/9/changes/android.R.style.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.app.Activity.html b/docs/html/sdk/api_diff/9/changes/android.app.Activity.html
index 78d77e0..6b9893f 100644
--- a/docs/html/sdk/api_diff/9/changes/android.app.Activity.html
+++ b/docs/html/sdk/api_diff/9/changes/android.app.Activity.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.app.ActivityManager.RunningAppProcessInfo.html b/docs/html/sdk/api_diff/9/changes/android.app.ActivityManager.RunningAppProcessInfo.html
index 1e24fad..e3e1701 100644
--- a/docs/html/sdk/api_diff/9/changes/android.app.ActivityManager.RunningAppProcessInfo.html
+++ b/docs/html/sdk/api_diff/9/changes/android.app.ActivityManager.RunningAppProcessInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.app.Notification.html b/docs/html/sdk/api_diff/9/changes/android.app.Notification.html
index 91af5a4..ff611d4 100644
--- a/docs/html/sdk/api_diff/9/changes/android.app.Notification.html
+++ b/docs/html/sdk/api_diff/9/changes/android.app.Notification.html
@@ -128,7 +128,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.app.admin.DevicePolicyManager.html b/docs/html/sdk/api_diff/9/changes/android.app.admin.DevicePolicyManager.html
index efa9a6f..0ceaf15 100644
--- a/docs/html/sdk/api_diff/9/changes/android.app.admin.DevicePolicyManager.html
+++ b/docs/html/sdk/api_diff/9/changes/android.app.admin.DevicePolicyManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.content.AbstractThreadedSyncAdapter.html b/docs/html/sdk/api_diff/9/changes/android.content.AbstractThreadedSyncAdapter.html
index 87b41032..eb4a7a3 100644
--- a/docs/html/sdk/api_diff/9/changes/android.content.AbstractThreadedSyncAdapter.html
+++ b/docs/html/sdk/api_diff/9/changes/android.content.AbstractThreadedSyncAdapter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.content.Context.html b/docs/html/sdk/api_diff/9/changes/android.content.Context.html
index a6e0f1c..755cd59 100644
--- a/docs/html/sdk/api_diff/9/changes/android.content.Context.html
+++ b/docs/html/sdk/api_diff/9/changes/android.content.Context.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.content.IntentSender.html b/docs/html/sdk/api_diff/9/changes/android.content.IntentSender.html
index 73d4a54..ea341f3 100644
--- a/docs/html/sdk/api_diff/9/changes/android.content.IntentSender.html
+++ b/docs/html/sdk/api_diff/9/changes/android.content.IntentSender.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.content.SharedPreferences.Editor.html b/docs/html/sdk/api_diff/9/changes/android.content.SharedPreferences.Editor.html
index 8c58b8e..83b9855 100644
--- a/docs/html/sdk/api_diff/9/changes/android.content.SharedPreferences.Editor.html
+++ b/docs/html/sdk/api_diff/9/changes/android.content.SharedPreferences.Editor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/9/changes/android.content.pm.ActivityInfo.html
index 0ffcfc1e..dddd153 100644
--- a/docs/html/sdk/api_diff/9/changes/android.content.pm.ActivityInfo.html
+++ b/docs/html/sdk/api_diff/9/changes/android.content.pm.ActivityInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.content.pm.ApplicationInfo.html b/docs/html/sdk/api_diff/9/changes/android.content.pm.ApplicationInfo.html
index cfb51b0..3d492a0 100644
--- a/docs/html/sdk/api_diff/9/changes/android.content.pm.ApplicationInfo.html
+++ b/docs/html/sdk/api_diff/9/changes/android.content.pm.ApplicationInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageInfo.html b/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageInfo.html
index 32f27d9..dc421c1 100644
--- a/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageInfo.html
+++ b/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageItemInfo.html b/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageItemInfo.html
index f01fcce..e50c3e5 100644
--- a/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageItemInfo.html
+++ b/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageItemInfo.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageManager.html
index f6e3ad4..26ce106 100644
--- a/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageManager.html
+++ b/docs/html/sdk/api_diff/9/changes/android.content.pm.PackageManager.html
@@ -200,7 +200,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/9/changes/android.content.res.Configuration.html
index cc7c38f..38e26d6 100644
--- a/docs/html/sdk/api_diff/9/changes/android.content.res.Configuration.html
+++ b/docs/html/sdk/api_diff/9/changes/android.content.res.Configuration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.graphics.ImageFormat.html b/docs/html/sdk/api_diff/9/changes/android.graphics.ImageFormat.html
index a65e27a..178eabe 100644
--- a/docs/html/sdk/api_diff/9/changes/android.graphics.ImageFormat.html
+++ b/docs/html/sdk/api_diff/9/changes/android.graphics.ImageFormat.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.hardware.Camera.Parameters.html b/docs/html/sdk/api_diff/9/changes/android.hardware.Camera.Parameters.html
index 6a4ebe3..4be8276 100644
--- a/docs/html/sdk/api_diff/9/changes/android.hardware.Camera.Parameters.html
+++ b/docs/html/sdk/api_diff/9/changes/android.hardware.Camera.Parameters.html
@@ -217,7 +217,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/9/changes/android.hardware.Camera.html
index 915c1e9..8ee07c4 100644
--- a/docs/html/sdk/api_diff/9/changes/android.hardware.Camera.html
+++ b/docs/html/sdk/api_diff/9/changes/android.hardware.Camera.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.hardware.Sensor.html b/docs/html/sdk/api_diff/9/changes/android.hardware.Sensor.html
index 62f2848..e808d197 100644
--- a/docs/html/sdk/api_diff/9/changes/android.hardware.Sensor.html
+++ b/docs/html/sdk/api_diff/9/changes/android.hardware.Sensor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.hardware.SensorManager.html b/docs/html/sdk/api_diff/9/changes/android.hardware.SensorManager.html
index ca414bc..7d6c19b 100644
--- a/docs/html/sdk/api_diff/9/changes/android.hardware.SensorManager.html
+++ b/docs/html/sdk/api_diff/9/changes/android.hardware.SensorManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.location.Criteria.html b/docs/html/sdk/api_diff/9/changes/android.location.Criteria.html
index 25b67c0..38f0aef 100644
--- a/docs/html/sdk/api_diff/9/changes/android.location.Criteria.html
+++ b/docs/html/sdk/api_diff/9/changes/android.location.Criteria.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.location.Geocoder.html b/docs/html/sdk/api_diff/9/changes/android.location.Geocoder.html
index 19e62dd..5fa79bf 100644
--- a/docs/html/sdk/api_diff/9/changes/android.location.Geocoder.html
+++ b/docs/html/sdk/api_diff/9/changes/android.location.Geocoder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.location.LocationManager.html b/docs/html/sdk/api_diff/9/changes/android.location.LocationManager.html
index b8f7b99..44868f3 100644
--- a/docs/html/sdk/api_diff/9/changes/android.location.LocationManager.html
+++ b/docs/html/sdk/api_diff/9/changes/android.location.LocationManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.media.AudioTrack.html b/docs/html/sdk/api_diff/9/changes/android.media.AudioTrack.html
index a577060..1405ac2 100644
--- a/docs/html/sdk/api_diff/9/changes/android.media.AudioTrack.html
+++ b/docs/html/sdk/api_diff/9/changes/android.media.AudioTrack.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.media.CamcorderProfile.html b/docs/html/sdk/api_diff/9/changes/android.media.CamcorderProfile.html
index 46f3297..8e732dc 100644
--- a/docs/html/sdk/api_diff/9/changes/android.media.CamcorderProfile.html
+++ b/docs/html/sdk/api_diff/9/changes/android.media.CamcorderProfile.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.media.CameraProfile.html b/docs/html/sdk/api_diff/9/changes/android.media.CameraProfile.html
index 6f6d359..c286ebe 100644
--- a/docs/html/sdk/api_diff/9/changes/android.media.CameraProfile.html
+++ b/docs/html/sdk/api_diff/9/changes/android.media.CameraProfile.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.media.ExifInterface.html b/docs/html/sdk/api_diff/9/changes/android.media.ExifInterface.html
index 7763832..a23c693 100644
--- a/docs/html/sdk/api_diff/9/changes/android.media.ExifInterface.html
+++ b/docs/html/sdk/api_diff/9/changes/android.media.ExifInterface.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.media.MediaPlayer.html b/docs/html/sdk/api_diff/9/changes/android.media.MediaPlayer.html
index f67f0ff..378527e 100644
--- a/docs/html/sdk/api_diff/9/changes/android.media.MediaPlayer.html
+++ b/docs/html/sdk/api_diff/9/changes/android.media.MediaPlayer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/9/changes/android.media.MediaRecorder.html
index d7932ce..ee7e307 100644
--- a/docs/html/sdk/api_diff/9/changes/android.media.MediaRecorder.html
+++ b/docs/html/sdk/api_diff/9/changes/android.media.MediaRecorder.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.net.wifi.WifiManager.WifiLock.html b/docs/html/sdk/api_diff/9/changes/android.net.wifi.WifiManager.WifiLock.html
index 2422b0e..b689d7e 100644
--- a/docs/html/sdk/api_diff/9/changes/android.net.wifi.WifiManager.WifiLock.html
+++ b/docs/html/sdk/api_diff/9/changes/android.net.wifi.WifiManager.WifiLock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.opengl.GLES20.html b/docs/html/sdk/api_diff/9/changes/android.opengl.GLES20.html
index 54e205a..b393657 100644
--- a/docs/html/sdk/api_diff/9/changes/android.opengl.GLES20.html
+++ b/docs/html/sdk/api_diff/9/changes/android.opengl.GLES20.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/9/changes/android.os.Build.VERSION_CODES.html
index 35865f8..3b49e34 100644
--- a/docs/html/sdk/api_diff/9/changes/android.os.Build.VERSION_CODES.html
+++ b/docs/html/sdk/api_diff/9/changes/android.os.Build.VERSION_CODES.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.os.Build.html b/docs/html/sdk/api_diff/9/changes/android.os.Build.html
index c6a9257..e5d584a 100644
--- a/docs/html/sdk/api_diff/9/changes/android.os.Build.html
+++ b/docs/html/sdk/api_diff/9/changes/android.os.Build.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.os.DropBoxManager.Entry.html b/docs/html/sdk/api_diff/9/changes/android.os.DropBoxManager.Entry.html
index 0120ed3..199b93a 100644
--- a/docs/html/sdk/api_diff/9/changes/android.os.DropBoxManager.Entry.html
+++ b/docs/html/sdk/api_diff/9/changes/android.os.DropBoxManager.Entry.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.os.Environment.html b/docs/html/sdk/api_diff/9/changes/android.os.Environment.html
index 7fe9b068..94164a2 100644
--- a/docs/html/sdk/api_diff/9/changes/android.os.Environment.html
+++ b/docs/html/sdk/api_diff/9/changes/android.os.Environment.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.os.ParcelFileDescriptor.html b/docs/html/sdk/api_diff/9/changes/android.os.ParcelFileDescriptor.html
index 65a161e..61b8b33 100644
--- a/docs/html/sdk/api_diff/9/changes/android.os.ParcelFileDescriptor.html
+++ b/docs/html/sdk/api_diff/9/changes/android.os.ParcelFileDescriptor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.os.PowerManager.WakeLock.html b/docs/html/sdk/api_diff/9/changes/android.os.PowerManager.WakeLock.html
index 8bb70b2..5fa793c 100644
--- a/docs/html/sdk/api_diff/9/changes/android.os.PowerManager.WakeLock.html
+++ b/docs/html/sdk/api_diff/9/changes/android.os.PowerManager.WakeLock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.provider.ContactsContract.CommonDataKinds.Nickname.html b/docs/html/sdk/api_diff/9/changes/android.provider.ContactsContract.CommonDataKinds.Nickname.html
index ca50ebe..7745d4c 100644
--- a/docs/html/sdk/api_diff/9/changes/android.provider.ContactsContract.CommonDataKinds.Nickname.html
+++ b/docs/html/sdk/api_diff/9/changes/android.provider.ContactsContract.CommonDataKinds.Nickname.html
@@ -125,7 +125,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.provider.MediaStore.html b/docs/html/sdk/api_diff/9/changes/android.provider.MediaStore.html
index 4bb64ce..17f487f 100644
--- a/docs/html/sdk/api_diff/9/changes/android.provider.MediaStore.html
+++ b/docs/html/sdk/api_diff/9/changes/android.provider.MediaStore.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.provider.Settings.html b/docs/html/sdk/api_diff/9/changes/android.provider.Settings.html
index 775c5bd..d71d346 100644
--- a/docs/html/sdk/api_diff/9/changes/android.provider.Settings.html
+++ b/docs/html/sdk/api_diff/9/changes/android.provider.Settings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.service.wallpaper.WallpaperService.Engine.html b/docs/html/sdk/api_diff/9/changes/android.service.wallpaper.WallpaperService.Engine.html
index aa8316d..5f75e93 100644
--- a/docs/html/sdk/api_diff/9/changes/android.service.wallpaper.WallpaperService.Engine.html
+++ b/docs/html/sdk/api_diff/9/changes/android.service.wallpaper.WallpaperService.Engine.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/9/changes/android.telephony.TelephonyManager.html
index ccad409..9315b81 100644
--- a/docs/html/sdk/api_diff/9/changes/android.telephony.TelephonyManager.html
+++ b/docs/html/sdk/api_diff/9/changes/android.telephony.TelephonyManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.telephony.gsm.GsmCellLocation.html b/docs/html/sdk/api_diff/9/changes/android.telephony.gsm.GsmCellLocation.html
index 525cc78..67cc36a 100644
--- a/docs/html/sdk/api_diff/9/changes/android.telephony.gsm.GsmCellLocation.html
+++ b/docs/html/sdk/api_diff/9/changes/android.telephony.gsm.GsmCellLocation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/9/changes/android.test.mock.MockPackageManager.html
index 71c9ab7..2c674ef 100644
--- a/docs/html/sdk/api_diff/9/changes/android.test.mock.MockPackageManager.html
+++ b/docs/html/sdk/api_diff/9/changes/android.test.mock.MockPackageManager.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.text.format.DateUtils.html b/docs/html/sdk/api_diff/9/changes/android.text.format.DateUtils.html
index dd8efaa..c48282d 100644
--- a/docs/html/sdk/api_diff/9/changes/android.text.format.DateUtils.html
+++ b/docs/html/sdk/api_diff/9/changes/android.text.format.DateUtils.html
@@ -125,7 +125,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.util.DisplayMetrics.html b/docs/html/sdk/api_diff/9/changes/android.util.DisplayMetrics.html
index 9e55310..8e7855c 100644
--- a/docs/html/sdk/api_diff/9/changes/android.util.DisplayMetrics.html
+++ b/docs/html/sdk/api_diff/9/changes/android.util.DisplayMetrics.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/9/changes/android.view.KeyEvent.html
index e334021..69b9920 100644
--- a/docs/html/sdk/api_diff/9/changes/android.view.KeyEvent.html
+++ b/docs/html/sdk/api_diff/9/changes/android.view.KeyEvent.html
@@ -278,7 +278,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.view.MotionEvent.html b/docs/html/sdk/api_diff/9/changes/android.view.MotionEvent.html
index ab8d209..47c5ae6 100644
--- a/docs/html/sdk/api_diff/9/changes/android.view.MotionEvent.html
+++ b/docs/html/sdk/api_diff/9/changes/android.view.MotionEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.view.View.html b/docs/html/sdk/api_diff/9/changes/android.view.View.html
index e9c299b..3bd408f 100644
--- a/docs/html/sdk/api_diff/9/changes/android.view.View.html
+++ b/docs/html/sdk/api_diff/9/changes/android.view.View.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/9/changes/android.view.ViewConfiguration.html
index 1f94737..013052a 100644
--- a/docs/html/sdk/api_diff/9/changes/android.view.ViewConfiguration.html
+++ b/docs/html/sdk/api_diff/9/changes/android.view.ViewConfiguration.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.view.Window.html b/docs/html/sdk/api_diff/9/changes/android.view.Window.html
index 4cd2943..05849c3 100644
--- a/docs/html/sdk/api_diff/9/changes/android.view.Window.html
+++ b/docs/html/sdk/api_diff/9/changes/android.view.Window.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.BaseInputConnection.html b/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.BaseInputConnection.html
index ed0154b..7c802e8 100644
--- a/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.BaseInputConnection.html
+++ b/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.BaseInputConnection.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.InputConnection.html b/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.InputConnection.html
index 17c8b16..99f9236 100644
--- a/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.InputConnection.html
+++ b/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.InputConnection.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.InputConnectionWrapper.html b/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.InputConnectionWrapper.html
index 4fbec13..212717f 100644
--- a/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.InputConnectionWrapper.html
+++ b/docs/html/sdk/api_diff/9/changes/android.view.inputmethod.InputConnectionWrapper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/9/changes/android.webkit.WebSettings.html
index 5270329..5921045 100644
--- a/docs/html/sdk/api_diff/9/changes/android.webkit.WebSettings.html
+++ b/docs/html/sdk/api_diff/9/changes/android.webkit.WebSettings.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.widget.ListView.html b/docs/html/sdk/api_diff/9/changes/android.widget.ListView.html
index e3fe75a..8f235ed 100644
--- a/docs/html/sdk/api_diff/9/changes/android.widget.ListView.html
+++ b/docs/html/sdk/api_diff/9/changes/android.widget.ListView.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/9/changes/android.widget.RemoteViews.html
index 2940f16..f857ff0 100644
--- a/docs/html/sdk/api_diff/9/changes/android.widget.RemoteViews.html
+++ b/docs/html/sdk/api_diff/9/changes/android.widget.RemoteViews.html
@@ -113,7 +113,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/changes-summary.html b/docs/html/sdk/api_diff/9/changes/changes-summary.html
index 4bccfe5..f1264a6 100644
--- a/docs/html/sdk/api_diff/9/changes/changes-summary.html
+++ b/docs/html/sdk/api_diff/9/changes/changes-summary.html
@@ -500,7 +500,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/classes_index_additions.html b/docs/html/sdk/api_diff/9/changes/classes_index_additions.html
index cb2edff..afd7536 100644
--- a/docs/html/sdk/api_diff/9/changes/classes_index_additions.html
+++ b/docs/html/sdk/api_diff/9/changes/classes_index_additions.html
@@ -396,7 +396,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_java.util.zip.html#ZipError" class="hiddenlink" target="rightframe"><b>ZipError</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/classes_index_all.html b/docs/html/sdk/api_diff/9/changes/classes_index_all.html
index 22137dc..4c795c3f 100644
--- a/docs/html/sdk/api_diff/9/changes/classes_index_all.html
+++ b/docs/html/sdk/api_diff/9/changes/classes_index_all.html
@@ -899,7 +899,7 @@
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_java.util.zip.html#ZipError" class="hiddenlink" target="rightframe"><b>ZipError</b></A><br>
 <A HREF="pkg_dalvik.system.html#Zygote" class="hiddenlink" target="rightframe"><strike>Zygote</strike></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/classes_index_changes.html b/docs/html/sdk/api_diff/9/changes/classes_index_changes.html
index 9446527..b84ff57 100644
--- a/docs/html/sdk/api_diff/9/changes/classes_index_changes.html
+++ b/docs/html/sdk/api_diff/9/changes/classes_index_changes.html
@@ -763,7 +763,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="javax.security.auth.x500.X500Principal.html" class="hiddenlink" target="rightframe">X500Principal</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/classes_index_removals.html b/docs/html/sdk/api_diff/9/changes/classes_index_removals.html
index 1cc22e1..c8696fc 100644
--- a/docs/html/sdk/api_diff/9/changes/classes_index_removals.html
+++ b/docs/html/sdk/api_diff/9/changes/classes_index_removals.html
@@ -110,7 +110,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_dalvik.system.html#Zygote" class="hiddenlink" target="rightframe"><strike>Zygote</strike></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/9/changes/constructors_index_additions.html
index 122442e..b369083 100644
--- a/docs/html/sdk/api_diff/9/changes/constructors_index_additions.html
+++ b/docs/html/sdk/api_diff/9/changes/constructors_index_additions.html
@@ -220,7 +220,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="javax.security.auth.x500.X500Principal.html#javax.security.auth.x500.X500Principal.ctor_added(java.lang.String, java.util.Map<java.lang.String, java.lang.String>)" class="hiddenlink" target="rightframe"><b>X500Principal</b>
 (<code>String, Map&lt;String, String&gt;</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/constructors_index_all.html b/docs/html/sdk/api_diff/9/changes/constructors_index_all.html
index 80d83ea..b0843be 100644
--- a/docs/html/sdk/api_diff/9/changes/constructors_index_all.html
+++ b/docs/html/sdk/api_diff/9/changes/constructors_index_all.html
@@ -273,7 +273,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="javax.security.auth.x500.X500Principal.html#javax.security.auth.x500.X500Principal.ctor_added(java.lang.String, java.util.Map<java.lang.String, java.lang.String>)" class="hiddenlink" target="rightframe"><b>X500Principal</b>
 (<code>String, Map&lt;String, String&gt;</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/9/changes/constructors_index_changes.html
index 376f692..646c1a8 100644
--- a/docs/html/sdk/api_diff/9/changes/constructors_index_changes.html
+++ b/docs/html/sdk/api_diff/9/changes/constructors_index_changes.html
@@ -61,7 +61,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="java.text.NumberFormat.html#java.text.NumberFormat.ctor_changed()" class="hiddenlink" target="rightframe">NumberFormat
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/9/changes/constructors_index_removals.html
index d5c6a02d..d1a4444 100644
--- a/docs/html/sdk/api_diff/9/changes/constructors_index_removals.html
+++ b/docs/html/sdk/api_diff/9/changes/constructors_index_removals.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="javax.net.ssl.KeyStoreBuilderParameters.html#javax.net.ssl.KeyStoreBuilderParameters.ctor_removed(java.util.List)" class="hiddenlink" target="rightframe"><strike>KeyStoreBuilderParameters</strike>
 (<code>List</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/dalvik.bytecode.Opcodes.html b/docs/html/sdk/api_diff/9/changes/dalvik.bytecode.Opcodes.html
index 0d75aed..603d551 100644
--- a/docs/html/sdk/api_diff/9/changes/dalvik.bytecode.Opcodes.html
+++ b/docs/html/sdk/api_diff/9/changes/dalvik.bytecode.Opcodes.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/dalvik.system.PathClassLoader.html b/docs/html/sdk/api_diff/9/changes/dalvik.system.PathClassLoader.html
index 035fab5..80a2cf0 100644
--- a/docs/html/sdk/api_diff/9/changes/dalvik.system.PathClassLoader.html
+++ b/docs/html/sdk/api_diff/9/changes/dalvik.system.PathClassLoader.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/fields_index_additions.html b/docs/html/sdk/api_diff/9/changes/fields_index_additions.html
index 2ca911c..a743100 100644
--- a/docs/html/sdk/api_diff/9/changes/fields_index_additions.html
+++ b/docs/html/sdk/api_diff/9/changes/fields_index_additions.html
@@ -716,7 +716,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.graphics.ImageFormat.html#android.graphics.ImageFormat.YV12" class="hiddenlink" target="rightframe">YV12</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/fields_index_all.html b/docs/html/sdk/api_diff/9/changes/fields_index_all.html
index e3bf1ba..1048ed5 100644
--- a/docs/html/sdk/api_diff/9/changes/fields_index_all.html
+++ b/docs/html/sdk/api_diff/9/changes/fields_index_all.html
@@ -782,7 +782,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.graphics.ImageFormat.html#android.graphics.ImageFormat.YV12" class="hiddenlink" target="rightframe">YV12</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/fields_index_changes.html b/docs/html/sdk/api_diff/9/changes/fields_index_changes.html
index 272ff13..ec511e2 100644
--- a/docs/html/sdk/api_diff/9/changes/fields_index_changes.html
+++ b/docs/html/sdk/api_diff/9/changes/fields_index_changes.html
@@ -139,7 +139,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.provider.ContactsContract.CommonDataKinds.Nickname.html#android.provider.ContactsContract.CommonDataKinds.Nickname.TYPE_MAINDEN_NAME" class="hiddenlink" target="rightframe">TYPE_MAINDEN_NAME</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/fields_index_removals.html b/docs/html/sdk/api_diff/9/changes/fields_index_removals.html
index e29fe79..0b103a0 100644
--- a/docs/html/sdk/api_diff/9/changes/fields_index_removals.html
+++ b/docs/html/sdk/api_diff/9/changes/fields_index_removals.html
@@ -61,7 +61,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.WRITE_OWNER_DATA" class="hiddenlink" target="rightframe"><strike>WRITE_OWNER_DATA</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.awt.font.TextAttribute.html b/docs/html/sdk/api_diff/9/changes/java.awt.font.TextAttribute.html
index be7fea9..f1bb649 100644
--- a/docs/html/sdk/api_diff/9/changes/java.awt.font.TextAttribute.html
+++ b/docs/html/sdk/api_diff/9/changes/java.awt.font.TextAttribute.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.io.File.html b/docs/html/sdk/api_diff/9/changes/java.io.File.html
index cd9ca56..0f1bab4 100644
--- a/docs/html/sdk/api_diff/9/changes/java.io.File.html
+++ b/docs/html/sdk/api_diff/9/changes/java.io.File.html
@@ -189,7 +189,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.io.IOException.html b/docs/html/sdk/api_diff/9/changes/java.io.IOException.html
index 15c9640..f4ec2a7 100644
--- a/docs/html/sdk/api_diff/9/changes/java.io.IOException.html
+++ b/docs/html/sdk/api_diff/9/changes/java.io.IOException.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.io.ObjectStreamClass.html b/docs/html/sdk/api_diff/9/changes/java.io.ObjectStreamClass.html
index 23991c3..4266771 100644
--- a/docs/html/sdk/api_diff/9/changes/java.io.ObjectStreamClass.html
+++ b/docs/html/sdk/api_diff/9/changes/java.io.ObjectStreamClass.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.io.PipedInputStream.html b/docs/html/sdk/api_diff/9/changes/java.io.PipedInputStream.html
index 06eb810..b235256 100644
--- a/docs/html/sdk/api_diff/9/changes/java.io.PipedInputStream.html
+++ b/docs/html/sdk/api_diff/9/changes/java.io.PipedInputStream.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.io.PipedReader.html b/docs/html/sdk/api_diff/9/changes/java.io.PipedReader.html
index 55f3f1e..5250e13 100644
--- a/docs/html/sdk/api_diff/9/changes/java.io.PipedReader.html
+++ b/docs/html/sdk/api_diff/9/changes/java.io.PipedReader.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.io.PrintStream.html b/docs/html/sdk/api_diff/9/changes/java.io.PrintStream.html
index 85c54cf..9c74b03 100644
--- a/docs/html/sdk/api_diff/9/changes/java.io.PrintStream.html
+++ b/docs/html/sdk/api_diff/9/changes/java.io.PrintStream.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.io.PrintWriter.html b/docs/html/sdk/api_diff/9/changes/java.io.PrintWriter.html
index 9db39c3..e298bfc 100644
--- a/docs/html/sdk/api_diff/9/changes/java.io.PrintWriter.html
+++ b/docs/html/sdk/api_diff/9/changes/java.io.PrintWriter.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.lang.Class.html b/docs/html/sdk/api_diff/9/changes/java.lang.Class.html
index 4e7da699..2c85608 100644
--- a/docs/html/sdk/api_diff/9/changes/java.lang.Class.html
+++ b/docs/html/sdk/api_diff/9/changes/java.lang.Class.html
@@ -191,7 +191,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.lang.Double.html b/docs/html/sdk/api_diff/9/changes/java.lang.Double.html
index ebd6993..17b86f5 100644
--- a/docs/html/sdk/api_diff/9/changes/java.lang.Double.html
+++ b/docs/html/sdk/api_diff/9/changes/java.lang.Double.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.lang.Enum.html b/docs/html/sdk/api_diff/9/changes/java.lang.Enum.html
index 0486fba..a594ed1 100644
--- a/docs/html/sdk/api_diff/9/changes/java.lang.Enum.html
+++ b/docs/html/sdk/api_diff/9/changes/java.lang.Enum.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.lang.Float.html b/docs/html/sdk/api_diff/9/changes/java.lang.Float.html
index 06ef0f0..9473c11 100644
--- a/docs/html/sdk/api_diff/9/changes/java.lang.Float.html
+++ b/docs/html/sdk/api_diff/9/changes/java.lang.Float.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.lang.Math.html b/docs/html/sdk/api_diff/9/changes/java.lang.Math.html
index de20ad6..241d435 100644
--- a/docs/html/sdk/api_diff/9/changes/java.lang.Math.html
+++ b/docs/html/sdk/api_diff/9/changes/java.lang.Math.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.lang.Package.html b/docs/html/sdk/api_diff/9/changes/java.lang.Package.html
index 088560d..f22b9cb 100644
--- a/docs/html/sdk/api_diff/9/changes/java.lang.Package.html
+++ b/docs/html/sdk/api_diff/9/changes/java.lang.Package.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.lang.StrictMath.html b/docs/html/sdk/api_diff/9/changes/java.lang.StrictMath.html
index 3053c1e..a9bcb6c 100644
--- a/docs/html/sdk/api_diff/9/changes/java.lang.StrictMath.html
+++ b/docs/html/sdk/api_diff/9/changes/java.lang.StrictMath.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.lang.String.html b/docs/html/sdk/api_diff/9/changes/java.lang.String.html
index d02801d..4fc440b 100644
--- a/docs/html/sdk/api_diff/9/changes/java.lang.String.html
+++ b/docs/html/sdk/api_diff/9/changes/java.lang.String.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.lang.System.html b/docs/html/sdk/api_diff/9/changes/java.lang.System.html
index c760872..53207eee 100644
--- a/docs/html/sdk/api_diff/9/changes/java.lang.System.html
+++ b/docs/html/sdk/api_diff/9/changes/java.lang.System.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.lang.reflect.Array.html b/docs/html/sdk/api_diff/9/changes/java.lang.reflect.Array.html
index 3d90906..99853f7 100644
--- a/docs/html/sdk/api_diff/9/changes/java.lang.reflect.Array.html
+++ b/docs/html/sdk/api_diff/9/changes/java.lang.reflect.Array.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.lang.reflect.Member.html b/docs/html/sdk/api_diff/9/changes/java.lang.reflect.Member.html
index 04a0faf..accda5e 100644
--- a/docs/html/sdk/api_diff/9/changes/java.lang.reflect.Member.html
+++ b/docs/html/sdk/api_diff/9/changes/java.lang.reflect.Member.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.net.NetworkInterface.html b/docs/html/sdk/api_diff/9/changes/java.net.NetworkInterface.html
index f48d21e..c45b17c 100644
--- a/docs/html/sdk/api_diff/9/changes/java.net.NetworkInterface.html
+++ b/docs/html/sdk/api_diff/9/changes/java.net.NetworkInterface.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.net.SocketImpl.html b/docs/html/sdk/api_diff/9/changes/java.net.SocketImpl.html
index 71f23ac..a807ab5 100644
--- a/docs/html/sdk/api_diff/9/changes/java.net.SocketImpl.html
+++ b/docs/html/sdk/api_diff/9/changes/java.net.SocketImpl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.nio.Buffer.html b/docs/html/sdk/api_diff/9/changes/java.nio.Buffer.html
index 4aa54f3..1a16b1d 100644
--- a/docs/html/sdk/api_diff/9/changes/java.nio.Buffer.html
+++ b/docs/html/sdk/api_diff/9/changes/java.nio.Buffer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.security.AccessController.html b/docs/html/sdk/api_diff/9/changes/java.security.AccessController.html
index f1687e1..e5abf53 100644
--- a/docs/html/sdk/api_diff/9/changes/java.security.AccessController.html
+++ b/docs/html/sdk/api_diff/9/changes/java.security.AccessController.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.security.Policy.html b/docs/html/sdk/api_diff/9/changes/java.security.Policy.html
index 3a23bbb..d819ac7 100644
--- a/docs/html/sdk/api_diff/9/changes/java.security.Policy.html
+++ b/docs/html/sdk/api_diff/9/changes/java.security.Policy.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.security.UnrecoverableKeyException.html b/docs/html/sdk/api_diff/9/changes/java.security.UnrecoverableKeyException.html
index c536aea..a36b0a7 100644
--- a/docs/html/sdk/api_diff/9/changes/java.security.UnrecoverableKeyException.html
+++ b/docs/html/sdk/api_diff/9/changes/java.security.UnrecoverableKeyException.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.Array.html b/docs/html/sdk/api_diff/9/changes/java.sql.Array.html
index 1a395cd..f7e400f 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.Array.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.Array.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.BatchUpdateException.html b/docs/html/sdk/api_diff/9/changes/java.sql.BatchUpdateException.html
index 28917cd..73c60d9 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.BatchUpdateException.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.BatchUpdateException.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.Blob.html b/docs/html/sdk/api_diff/9/changes/java.sql.Blob.html
index 0a045cf..84f98c6 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.Blob.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.Blob.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.CallableStatement.html b/docs/html/sdk/api_diff/9/changes/java.sql.CallableStatement.html
index 1cd43cc..6868834 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.CallableStatement.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.CallableStatement.html
@@ -325,7 +325,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.Clob.html b/docs/html/sdk/api_diff/9/changes/java.sql.Clob.html
index 75adcf3..13f2c62 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.Clob.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.Clob.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.Connection.html b/docs/html/sdk/api_diff/9/changes/java.sql.Connection.html
index a22128e..4a27548 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.Connection.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.Connection.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.DataTruncation.html b/docs/html/sdk/api_diff/9/changes/java.sql.DataTruncation.html
index 4c75237..fc531bb 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.DataTruncation.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.DataTruncation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.DatabaseMetaData.html b/docs/html/sdk/api_diff/9/changes/java.sql.DatabaseMetaData.html
index 31bc0c4..02642aa 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.DatabaseMetaData.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.DatabaseMetaData.html
@@ -250,7 +250,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.ParameterMetaData.html b/docs/html/sdk/api_diff/9/changes/java.sql.ParameterMetaData.html
index 25abf80..51537c2d 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.ParameterMetaData.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.ParameterMetaData.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.PreparedStatement.html b/docs/html/sdk/api_diff/9/changes/java.sql.PreparedStatement.html
index 4e358e4..875f8b7 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.PreparedStatement.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.PreparedStatement.html
@@ -227,7 +227,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.ResultSet.html b/docs/html/sdk/api_diff/9/changes/java.sql.ResultSet.html
index a2a9b42..a3bd278 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.ResultSet.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.ResultSet.html
@@ -438,7 +438,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.ResultSetMetaData.html b/docs/html/sdk/api_diff/9/changes/java.sql.ResultSetMetaData.html
index 96e4c65..81fcfdb 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.ResultSetMetaData.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.ResultSetMetaData.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.SQLException.html b/docs/html/sdk/api_diff/9/changes/java.sql.SQLException.html
index 6d3dd0d..56fcb66 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.SQLException.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.SQLException.html
@@ -145,7 +145,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.SQLInput.html b/docs/html/sdk/api_diff/9/changes/java.sql.SQLInput.html
index 9e726d0..c729295 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.SQLInput.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.SQLInput.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.SQLOutput.html b/docs/html/sdk/api_diff/9/changes/java.sql.SQLOutput.html
index 493b133..944c3d6 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.SQLOutput.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.SQLOutput.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.SQLWarning.html b/docs/html/sdk/api_diff/9/changes/java.sql.SQLWarning.html
index 73ef5d7..d2c738e 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.SQLWarning.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.SQLWarning.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.Statement.html b/docs/html/sdk/api_diff/9/changes/java.sql.Statement.html
index ce2875d..d1f3c37 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.Statement.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.Statement.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.sql.Types.html b/docs/html/sdk/api_diff/9/changes/java.sql.Types.html
index 95844f7..7c1256b 100644
--- a/docs/html/sdk/api_diff/9/changes/java.sql.Types.html
+++ b/docs/html/sdk/api_diff/9/changes/java.sql.Types.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.text.BreakIterator.html b/docs/html/sdk/api_diff/9/changes/java.text.BreakIterator.html
index b8ff610..a4198ac 100644
--- a/docs/html/sdk/api_diff/9/changes/java.text.BreakIterator.html
+++ b/docs/html/sdk/api_diff/9/changes/java.text.BreakIterator.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.text.CollationKey.html b/docs/html/sdk/api_diff/9/changes/java.text.CollationKey.html
index 4eb7d0c..532ef55 100644
--- a/docs/html/sdk/api_diff/9/changes/java.text.CollationKey.html
+++ b/docs/html/sdk/api_diff/9/changes/java.text.CollationKey.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.text.DateFormatSymbols.html b/docs/html/sdk/api_diff/9/changes/java.text.DateFormatSymbols.html
index dcf91b5..46134a7 100644
--- a/docs/html/sdk/api_diff/9/changes/java.text.DateFormatSymbols.html
+++ b/docs/html/sdk/api_diff/9/changes/java.text.DateFormatSymbols.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.text.DecimalFormatSymbols.html b/docs/html/sdk/api_diff/9/changes/java.text.DecimalFormatSymbols.html
index bf9e9c0..2545984 100644
--- a/docs/html/sdk/api_diff/9/changes/java.text.DecimalFormatSymbols.html
+++ b/docs/html/sdk/api_diff/9/changes/java.text.DecimalFormatSymbols.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.text.Format.html b/docs/html/sdk/api_diff/9/changes/java.text.Format.html
index dd1b44ed..6d949a6 100644
--- a/docs/html/sdk/api_diff/9/changes/java.text.Format.html
+++ b/docs/html/sdk/api_diff/9/changes/java.text.Format.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.text.NumberFormat.html b/docs/html/sdk/api_diff/9/changes/java.text.NumberFormat.html
index f5e3048..52df1c4 100644
--- a/docs/html/sdk/api_diff/9/changes/java.text.NumberFormat.html
+++ b/docs/html/sdk/api_diff/9/changes/java.text.NumberFormat.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.Arrays.html b/docs/html/sdk/api_diff/9/changes/java.util.Arrays.html
index da28c78..d520255 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.Arrays.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.Arrays.html
@@ -304,7 +304,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.Calendar.html b/docs/html/sdk/api_diff/9/changes/java.util.Calendar.html
index 0a2ee73..8c36127 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.Calendar.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.Calendar.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.Collections.html b/docs/html/sdk/api_diff/9/changes/java.util.Collections.html
index 7644816..3942eec 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.Collections.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.Collections.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.LinkedList.html b/docs/html/sdk/api_diff/9/changes/java.util.LinkedList.html
index 7614a2c..5bb61d3 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.LinkedList.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.LinkedList.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.Locale.html b/docs/html/sdk/api_diff/9/changes/java.util.Locale.html
index 242df24..28f1f76 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.Locale.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.Locale.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.Properties.html b/docs/html/sdk/api_diff/9/changes/java.util.Properties.html
index 97bb0be..208c4f2 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.Properties.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.Properties.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.PropertyResourceBundle.html b/docs/html/sdk/api_diff/9/changes/java.util.PropertyResourceBundle.html
index a5d0902..749563b 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.PropertyResourceBundle.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.PropertyResourceBundle.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.ResourceBundle.html b/docs/html/sdk/api_diff/9/changes/java.util.ResourceBundle.html
index f5dfbb4..ef33b20 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.ResourceBundle.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.ResourceBundle.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.Scanner.html b/docs/html/sdk/api_diff/9/changes/java.util.Scanner.html
index ca9c480..a8f9222 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.Scanner.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.Scanner.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.TreeMap.html b/docs/html/sdk/api_diff/9/changes/java.util.TreeMap.html
index 1b37ea0..22f5b1b 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.TreeMap.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.TreeMap.html
@@ -228,7 +228,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.TreeSet.html b/docs/html/sdk/api_diff/9/changes/java.util.TreeSet.html
index f201c42..5db6e87 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.TreeSet.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.TreeSet.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.AbstractExecutorService.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.AbstractExecutorService.html
index d37f3df..056da50 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.AbstractExecutorService.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.AbstractExecutorService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ConcurrentHashMap.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ConcurrentHashMap.html
index 52c43f4..cd90473 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ConcurrentHashMap.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ConcurrentHashMap.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ExecutorService.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ExecutorService.html
index 18b74a9..553dd2c 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ExecutorService.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ExecutorService.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.Executors.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.Executors.html
index 11589c9..b5e427c 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.Executors.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.Executors.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.FutureTask.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.FutureTask.html
index d42f255..9860892 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.FutureTask.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.FutureTask.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ScheduledThreadPoolExecutor.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ScheduledThreadPoolExecutor.html
index f760d81..eb6ce8f 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ScheduledThreadPoolExecutor.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ScheduledThreadPoolExecutor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ThreadPoolExecutor.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ThreadPoolExecutor.html
index 752d1f7..3c3a1d6 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ThreadPoolExecutor.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.ThreadPoolExecutor.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.TimeUnit.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.TimeUnit.html
index e3ae536..c5dde7e 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.TimeUnit.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.TimeUnit.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicBoolean.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicBoolean.html
index 6a3ef17..c33e55f 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicBoolean.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicBoolean.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicInteger.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicInteger.html
index 38476cf..074265c 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicInteger.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicInteger.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerArray.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerArray.html
index 605bab1..68ae1a0 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerArray.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerArray.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerFieldUpdater.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerFieldUpdater.html
index 58406eb..c9af94e 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerFieldUpdater.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerFieldUpdater.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLong.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLong.html
index c94c2307..dbee783 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLong.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLong.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongArray.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongArray.html
index 4aa0d0c..2782bd6 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongArray.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongArray.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongFieldUpdater.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongFieldUpdater.html
index aeeb697..096b381 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongFieldUpdater.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongFieldUpdater.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReference.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReference.html
index a857d44..ba83b91 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReference.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReference.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceArray.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceArray.html
index 576b4b9..cd6a11c 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceArray.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceArray.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceFieldUpdater.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceFieldUpdater.html
index f87494e..257aa6b 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceFieldUpdater.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceFieldUpdater.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.AbstractOwnableSynchronizer.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.AbstractOwnableSynchronizer.html
index fad57f1..887c6bc 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.AbstractOwnableSynchronizer.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.AbstractOwnableSynchronizer.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.LockSupport.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.LockSupport.html
index 2330df5..3e950fd 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.LockSupport.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.LockSupport.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.html
index d2eb62b..f4a759e 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.html b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.html
index 3a44286..aad75c6 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/java.util.logging.Logger.html b/docs/html/sdk/api_diff/9/changes/java.util.logging.Logger.html
index a2761da..088773c 100644
--- a/docs/html/sdk/api_diff/9/changes/java.util.logging.Logger.html
+++ b/docs/html/sdk/api_diff/9/changes/java.util.logging.Logger.html
@@ -125,7 +125,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.HandshakeCompletedEvent.html b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.HandshakeCompletedEvent.html
index 0eb2f71..06e5edb 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.HandshakeCompletedEvent.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.HandshakeCompletedEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.KeyStoreBuilderParameters.html b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.KeyStoreBuilderParameters.html
index ad0433c..e9a6467 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.KeyStoreBuilderParameters.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.KeyStoreBuilderParameters.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLContext.html b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLContext.html
index 0953c7c..2fbf040 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLContext.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLContext.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLContextSpi.html b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLContextSpi.html
index 82af9fd..64926fc 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLContextSpi.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLContextSpi.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLEngine.html b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLEngine.html
index 22096d2..d862179 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLEngine.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLEngine.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionBindingEvent.html b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionBindingEvent.html
index 76072755..56b9511 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionBindingEvent.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionBindingEvent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionContext.html b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionContext.html
index 55f055b..8ab3a78 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionContext.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionContext.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSocket.html b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSocket.html
index 2e0f406..0cb41cd 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSocket.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.net.ssl.SSLSocket.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.security.auth.Subject.html b/docs/html/sdk/api_diff/9/changes/javax.security.auth.Subject.html
index c646720..ac02cdf 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.security.auth.Subject.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.security.auth.Subject.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.security.auth.x500.X500Principal.html b/docs/html/sdk/api_diff/9/changes/javax.security.auth.x500.X500Principal.html
index 4d6fb01..27075c7 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.security.auth.x500.X500Principal.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.security.auth.x500.X500Principal.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.sql.ConnectionPoolDataSource.html b/docs/html/sdk/api_diff/9/changes/javax.sql.ConnectionPoolDataSource.html
index 9019ff9..50f11b2 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.sql.ConnectionPoolDataSource.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.sql.ConnectionPoolDataSource.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.sql.DataSource.html b/docs/html/sdk/api_diff/9/changes/javax.sql.DataSource.html
index ec32499..430a12a 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.sql.DataSource.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.sql.DataSource.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.sql.PooledConnection.html b/docs/html/sdk/api_diff/9/changes/javax.sql.PooledConnection.html
index d2b640a..d574688 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.sql.PooledConnection.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.sql.PooledConnection.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.sql.RowSet.html b/docs/html/sdk/api_diff/9/changes/javax.sql.RowSet.html
index e0140ee..03db58f 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.sql.RowSet.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.sql.RowSet.html
@@ -500,7 +500,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.xml.datatype.DatatypeFactory.html b/docs/html/sdk/api_diff/9/changes/javax.xml.datatype.DatatypeFactory.html
index 38f78d4..d062c71 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.xml.datatype.DatatypeFactory.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.xml.datatype.DatatypeFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.xml.parsers.DocumentBuilderFactory.html b/docs/html/sdk/api_diff/9/changes/javax.xml.parsers.DocumentBuilderFactory.html
index dd69f54..1b518e6 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.xml.parsers.DocumentBuilderFactory.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.xml.parsers.DocumentBuilderFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.xml.parsers.SAXParserFactory.html b/docs/html/sdk/api_diff/9/changes/javax.xml.parsers.SAXParserFactory.html
index fb0248c..f45d08b 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.xml.parsers.SAXParserFactory.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.xml.parsers.SAXParserFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.xml.transform.TransformerFactory.html b/docs/html/sdk/api_diff/9/changes/javax.xml.transform.TransformerFactory.html
index ce71a52..bb3eee7 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.xml.transform.TransformerFactory.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.xml.transform.TransformerFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/javax.xml.validation.SchemaFactory.html b/docs/html/sdk/api_diff/9/changes/javax.xml.validation.SchemaFactory.html
index 695c13c..e1b133d 100644
--- a/docs/html/sdk/api_diff/9/changes/javax.xml.validation.SchemaFactory.html
+++ b/docs/html/sdk/api_diff/9/changes/javax.xml.validation.SchemaFactory.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/jdiff_help.html b/docs/html/sdk/api_diff/9/changes/jdiff_help.html
index c7b7623..e255cdd 100644
--- a/docs/html/sdk/api_diff/9/changes/jdiff_help.html
+++ b/docs/html/sdk/api_diff/9/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/9/changes/jdiff_statistics.html
index dcbb910..bd53b35 100644
--- a/docs/html/sdk/api_diff/9/changes/jdiff_statistics.html
+++ b/docs/html/sdk/api_diff/9/changes/jdiff_statistics.html
@@ -1205,7 +1205,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/9/changes/jdiff_topleftframe.html
index 36f9836..48ec27f 100644
--- a/docs/html/sdk/api_diff/9/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/api_diff/9/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/methods_index_additions.html b/docs/html/sdk/api_diff/9/changes/methods_index_additions.html
index 41c8371..3eaeefc 100644
--- a/docs/html/sdk/api_diff/9/changes/methods_index_additions.html
+++ b/docs/html/sdk/api_diff/9/changes/methods_index_additions.html
@@ -1898,7 +1898,7 @@
 (<code>RowId</code>)</A></nobr><br>
 <nobr><A HREF="java.sql.SQLOutput.html#java.sql.SQLOutput.writeSQLXML_added(java.sql.SQLXML)" class="hiddenlink" target="rightframe"><b>writeSQLXML</b>
 (<code>SQLXML</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/methods_index_all.html b/docs/html/sdk/api_diff/9/changes/methods_index_all.html
index 74b195c..4aa178b 100644
--- a/docs/html/sdk/api_diff/9/changes/methods_index_all.html
+++ b/docs/html/sdk/api_diff/9/changes/methods_index_all.html
@@ -2065,7 +2065,7 @@
 (<code>RowId</code>)</A></nobr><br>
 <nobr><A HREF="java.sql.SQLOutput.html#java.sql.SQLOutput.writeSQLXML_added(java.sql.SQLXML)" class="hiddenlink" target="rightframe"><b>writeSQLXML</b>
 (<code>SQLXML</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/methods_index_changes.html b/docs/html/sdk/api_diff/9/changes/methods_index_changes.html
index 9068580..543560f 100644
--- a/docs/html/sdk/api_diff/9/changes/methods_index_changes.html
+++ b/docs/html/sdk/api_diff/9/changes/methods_index_changes.html
@@ -217,7 +217,7 @@
 ()</A></nobr><br>
 <nobr><A HREF="java.io.File.html#java.io.File.toURL_changed()" class="hiddenlink" target="rightframe">toURL
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/methods_index_removals.html b/docs/html/sdk/api_diff/9/changes/methods_index_removals.html
index 46cf588..cfaa842 100644
--- a/docs/html/sdk/api_diff/9/changes/methods_index_removals.html
+++ b/docs/html/sdk/api_diff/9/changes/methods_index_removals.html
@@ -188,7 +188,7 @@
 </A></nobr><br>
 <nobr><A HREF="java.net.SocketImpl.html#java.net.SocketImpl.setOption_removed(int, java.lang.Object)" class="hiddenlink" target="rightframe"><strike>setOption</strike>
 (<code>int, Object</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/org.apache.http.protocol.HTTP.html b/docs/html/sdk/api_diff/9/changes/org.apache.http.protocol.HTTP.html
index 4840682..b0fffb5 100644
--- a/docs/html/sdk/api_diff/9/changes/org.apache.http.protocol.HTTP.html
+++ b/docs/html/sdk/api_diff/9/changes/org.apache.http.protocol.HTTP.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/packages_index_additions.html b/docs/html/sdk/api_diff/9/changes/packages_index_additions.html
index 408a3cd..ca847ac 100644
--- a/docs/html/sdk/api_diff/9/changes/packages_index_additions.html
+++ b/docs/html/sdk/api_diff/9/changes/packages_index_additions.html
@@ -54,7 +54,7 @@
 <A HREF="changes-summary.html#android.net.sip" class="hiddenlink" target="rightframe"><b>android.net.sip</b></A><br>
 <A HREF="changes-summary.html#android.nfc" class="hiddenlink" target="rightframe"><b>android.nfc</b></A><br>
 <A HREF="changes-summary.html#android.os.storage" class="hiddenlink" target="rightframe"><b>android.os.storage</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/packages_index_all.html b/docs/html/sdk/api_diff/9/changes/packages_index_all.html
index 79002f8..91c1ffd 100644
--- a/docs/html/sdk/api_diff/9/changes/packages_index_all.html
+++ b/docs/html/sdk/api_diff/9/changes/packages_index_all.html
@@ -107,7 +107,7 @@
 <A HREF="pkg_javax.xml.validation.html" class="hiddenlink" target="rightframe">javax.xml.validation</A><br>
 <A NAME="O"></A>
 <A HREF="pkg_org.apache.http.protocol.html" class="hiddenlink" target="rightframe">org.apache.http.protocol</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/packages_index_changes.html b/docs/html/sdk/api_diff/9/changes/packages_index_changes.html
index a02c6e1..28ca21e 100644
--- a/docs/html/sdk/api_diff/9/changes/packages_index_changes.html
+++ b/docs/html/sdk/api_diff/9/changes/packages_index_changes.html
@@ -103,7 +103,7 @@
 <A HREF="pkg_javax.xml.validation.html" class="hiddenlink" target="rightframe">javax.xml.validation</A><br>
 <A NAME="O"></A>
 <A HREF="pkg_org.apache.http.protocol.html" class="hiddenlink" target="rightframe">org.apache.http.protocol</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/packages_index_removals.html b/docs/html/sdk/api_diff/9/changes/packages_index_removals.html
index d0ffabc..5f37b27 100644
--- a/docs/html/sdk/api_diff/9/changes/packages_index_removals.html
+++ b/docs/html/sdk/api_diff/9/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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.app.admin.html b/docs/html/sdk/api_diff/9/changes/pkg_android.app.admin.html
index 86aadc6..09ad238 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.app.admin.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.app.admin.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.app.html b/docs/html/sdk/api_diff/9/changes/pkg_android.app.html
index c5297cc..7166605 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.app.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.app.html
@@ -155,7 +155,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.content.html b/docs/html/sdk/api_diff/9/changes/pkg_android.content.html
index 3913ff2..c55a092 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.content.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.content.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/9/changes/pkg_android.content.pm.html
index 0f0fc6d..4e34dd6 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.content.pm.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.content.pm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/9/changes/pkg_android.content.res.html
index b203f5d..ad652ef 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.content.res.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.content.res.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/9/changes/pkg_android.graphics.html
index e67cfef..ec07aea 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.graphics.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/9/changes/pkg_android.hardware.html
index c606352..66cda87 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.hardware.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.hardware.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.html b/docs/html/sdk/api_diff/9/changes/pkg_android.html
index 73b42c1..0cf3ae6 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.location.html b/docs/html/sdk/api_diff/9/changes/pkg_android.location.html
index 362433d..43d2b4d 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.location.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.location.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.media.html b/docs/html/sdk/api_diff/9/changes/pkg_android.media.html
index 50bcee5..d4d00ef 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.media.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.media.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.net.wifi.html b/docs/html/sdk/api_diff/9/changes/pkg_android.net.wifi.html
index 13b4e4c..01c0b89 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.net.wifi.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.net.wifi.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/9/changes/pkg_android.opengl.html
index 9c83cc1..3066e0e 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.opengl.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.opengl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.os.html b/docs/html/sdk/api_diff/9/changes/pkg_android.os.html
index dff8cfc..89621de 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.os.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.os.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/9/changes/pkg_android.provider.html
index 3142cea..9620d3d 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.provider.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.provider.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.service.wallpaper.html b/docs/html/sdk/api_diff/9/changes/pkg_android.service.wallpaper.html
index 15ba062..4dba5d1 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.service.wallpaper.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.service.wallpaper.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.telephony.gsm.html b/docs/html/sdk/api_diff/9/changes/pkg_android.telephony.gsm.html
index cb3b24e..6d082a2 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.telephony.gsm.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.telephony.gsm.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/9/changes/pkg_android.telephony.html
index 9453675..bee16c6 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.telephony.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.telephony.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/9/changes/pkg_android.test.mock.html
index 23cedb7..dd8a262 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.test.mock.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.test.mock.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.text.format.html b/docs/html/sdk/api_diff/9/changes/pkg_android.text.format.html
index 6147743..479b628 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.text.format.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.text.format.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.util.html b/docs/html/sdk/api_diff/9/changes/pkg_android.util.html
index 2f97134..f11d3e5 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.util.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.view.html b/docs/html/sdk/api_diff/9/changes/pkg_android.view.html
index 8c062bc..428280b 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.view.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.view.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.view.inputmethod.html b/docs/html/sdk/api_diff/9/changes/pkg_android.view.inputmethod.html
index c593696..ea55a54 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.view.inputmethod.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.view.inputmethod.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/9/changes/pkg_android.webkit.html
index 3716cd6a..283e8cd 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.webkit.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.webkit.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/9/changes/pkg_android.widget.html
index 682ceb1..d8551aa 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_android.widget.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_android.widget.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_dalvik.bytecode.html b/docs/html/sdk/api_diff/9/changes/pkg_dalvik.bytecode.html
index 4806813..c453f9f 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_dalvik.bytecode.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_dalvik.bytecode.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_dalvik.system.html b/docs/html/sdk/api_diff/9/changes/pkg_dalvik.system.html
index 755ec42..70cb0e6 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_dalvik.system.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_dalvik.system.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.awt.font.html b/docs/html/sdk/api_diff/9/changes/pkg_java.awt.font.html
index 1885a58..0dd989c 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.awt.font.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.awt.font.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.io.html b/docs/html/sdk/api_diff/9/changes/pkg_java.io.html
index c0fbd26..f1a84ce 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.io.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.io.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.lang.html b/docs/html/sdk/api_diff/9/changes/pkg_java.lang.html
index c0cb7bb..bf95c95 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.lang.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.lang.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.lang.reflect.html b/docs/html/sdk/api_diff/9/changes/pkg_java.lang.reflect.html
index 9b11ecd..1045fdf 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.lang.reflect.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.lang.reflect.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.net.html b/docs/html/sdk/api_diff/9/changes/pkg_java.net.html
index db373bc..3dcb57e 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.net.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.net.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.nio.html b/docs/html/sdk/api_diff/9/changes/pkg_java.nio.html
index f994f22..5bbc881 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.nio.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.nio.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.security.html b/docs/html/sdk/api_diff/9/changes/pkg_java.security.html
index 40a9586..880c956 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.security.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.security.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.sql.html b/docs/html/sdk/api_diff/9/changes/pkg_java.sql.html
index 274fed7..37b8952 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.sql.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.sql.html
@@ -365,7 +365,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.text.html b/docs/html/sdk/api_diff/9/changes/pkg_java.text.html
index b0042d2..df8ce85 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.text.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.text.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.atomic.html b/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.atomic.html
index d2101ec..b2b1945 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.atomic.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.atomic.html
@@ -168,7 +168,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.html b/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.html
index 076324ac..acab8cb5 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.locks.html b/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.locks.html
index acd018c..15bd5f7 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.locks.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.util.concurrent.locks.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.util.html b/docs/html/sdk/api_diff/9/changes/pkg_java.util.html
index 70686a7..35381c9 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.util.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.util.html
@@ -246,7 +246,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.util.logging.html b/docs/html/sdk/api_diff/9/changes/pkg_java.util.logging.html
index 6624582..e519f26 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.util.logging.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.util.logging.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_java.util.zip.html b/docs/html/sdk/api_diff/9/changes/pkg_java.util.zip.html
index 8d7eb81..c94edf5 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_java.util.zip.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_java.util.zip.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_javax.net.ssl.html b/docs/html/sdk/api_diff/9/changes/pkg_javax.net.ssl.html
index 97211a9..7dc0994 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_javax.net.ssl.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_javax.net.ssl.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_javax.security.auth.html b/docs/html/sdk/api_diff/9/changes/pkg_javax.security.auth.html
index c3ac79e..da9d97a 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_javax.security.auth.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_javax.security.auth.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_javax.security.auth.x500.html b/docs/html/sdk/api_diff/9/changes/pkg_javax.security.auth.x500.html
index fc892e3..f16238b 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_javax.security.auth.x500.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_javax.security.auth.x500.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_javax.sql.html b/docs/html/sdk/api_diff/9/changes/pkg_javax.sql.html
index e0e10c5..779ebae 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_javax.sql.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_javax.sql.html
@@ -155,7 +155,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.datatype.html b/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.datatype.html
index d616e93..e6ac06a 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.datatype.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.datatype.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.parsers.html b/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.parsers.html
index 58b5010..14dbefa 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.parsers.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.parsers.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.transform.html b/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.transform.html
index c5248b6..411d440 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.transform.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.transform.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.validation.html b/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.validation.html
index 53740f99..789ad38 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.validation.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_javax.xml.validation.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/api_diff/9/changes/pkg_org.apache.http.protocol.html b/docs/html/sdk/api_diff/9/changes/pkg_org.apache.http.protocol.html
index 11b8836..41c008d 100644
--- a/docs/html/sdk/api_diff/9/changes/pkg_org.apache.http.protocol.html
+++ b/docs/html/sdk/api_diff/9/changes/pkg_org.apache.http.protocol.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="//www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index 961afda..6307c69 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -1,44 +1,46 @@
 page.title=Android SDK
+page.template=sdk
 header.hide=1
 page.metaDescription=Download the official Android SDK to develop apps for Android-powered devices.
 
-sdk.win32_bundle_download=adt-bundle-windows-x86.zip
-sdk.win32_bundle_bytes=418030942
-sdk.win32_bundle_checksum=ce32861d8f7c93ff6ff6971bd99d228e
-
-sdk.win64_bundle_download=adt-bundle-windows-x86_64.zip
-sdk.win64_bundle_bytes=418155677
-sdk.win64_bundle_checksum=f09aa4557bd1dc2703fde95dcdd6b92e
-
-sdk.mac64_bundle_download=adt-bundle-mac-x86_64.zip
-sdk.mac64_bundle_bytes=383216991
-sdk.mac64_bundle_checksum=ea6c074ee30c426c503dab5c225a5076
 
 sdk.linux32_bundle_download=adt-bundle-linux-x86.zip
-sdk.linux32_bundle_bytes=411205048
-sdk.linux32_bundle_checksum=e64594cd339b8d9a400b9d16c616b3c3
+sdk.linux32_bundle_bytes=418614971
+sdk.linux32_bundle_checksum=24506708af221a887326c2a9ca9625dc
 
 sdk.linux64_bundle_download=adt-bundle-linux-x86_64.zip
-sdk.linux64_bundle_bytes=411478695
-sdk.linux64_bundle_checksum=582bfc9083ff4cbcfacc8223bd8c3be1
+sdk.linux64_bundle_bytes=418889835
+sdk.linux64_bundle_checksum=464c1fbe92ea293d6b2292c27af5066a
+
+sdk.mac64_bundle_download=adt-bundle-mac-x86_64.zip
+sdk.mac64_bundle_bytes=390649300
+sdk.mac64_bundle_checksum=f557bc61a4bff466633037839771bffb
+
+sdk.win32_bundle_download=adt-bundle-windows-x86.zip
+sdk.win32_bundle_bytes=425429957
+sdk.win32_bundle_checksum=cca97f12904774385a57d542e70a490f
+
+sdk.win64_bundle_download=adt-bundle-windows-x86_64.zip
+sdk.win64_bundle_bytes=425553759
+sdk.win64_bundle_checksum=c51679f4517e1c3ddefa1e662bbf17f6
 
 
 
-sdk.win_installer=installer_r21.0.1-windows.exe
-sdk.win_installer_bytes=76520869
-sdk.win_installer_checksum=e2012262471a2583d4a559b15fcf45ff
+sdk.linux_download=android-sdk_r21.1-linux.tgz
+sdk.linux_bytes=91617112
+sdk.linux_checksum=3369a439240cf3dbe165d6b4173900a8
 
-sdk.win_download=android-sdk_r21.0.1-windows.zip
-sdk.win_bytes=99107847
-sdk.win_checksum=613568d774c3bf25c5d24db16601af83
+sdk.mac_download=android-sdk_r21.1-macosx.zip
+sdk.mac_bytes=66077080
+sdk.mac_checksum=49903cf79e1f8e3fde54a95bd3666385
 
-sdk.mac_download=android-sdk_r21.0.1-macosx.zip
-sdk.mac_bytes=65804128
-sdk.mac_checksum=30401c43a014cd5d6ec9d0c62854a1d9
+sdk.win_download=android-sdk_r21.1-windows.zip
+sdk.win_bytes=99360755
+sdk.win_checksum=dbece8859da9b66a1e8e7cd47b1e647e
 
-sdk.linux_download=android-sdk_r21.0.1-linux.tgz
-sdk.linux_bytes=91394975
-sdk.linux_checksum=eaa5a8d76d692d1d027f2bbcee019644
+sdk.win_installer=installer_r21.1-windows.exe
+sdk.win_installer_bytes=77767013
+sdk.win_installer_checksum=594d8ff8e349db9e783a5f2229561353
 
 
 
diff --git a/docs/html/sdk/installing/installing-adt.jd b/docs/html/sdk/installing/installing-adt.jd
index 804030b..d956af2 100644
--- a/docs/html/sdk/installing/installing-adt.jd
+++ b/docs/html/sdk/installing/installing-adt.jd
@@ -1,8 +1,8 @@
 page.title=Installing the Eclipse Plugin
 adt.zip.version=21.0.1
-adt.zip.download=ADT-21.0.1.zip
-adt.zip.bytes=13569302
-adt.zip.checksum=acfb01bf3fd1240f1fc21488c3dd16bf
+adt.zip.download=ADT-21.1.0.zip
+adt.zip.bytes=13564671
+adt.zip.checksum=f1ae183891229784bb9c33bcc9c5ef1e
 
 @jd:body
 
diff --git a/docs/html/sitemap.txt b/docs/html/sitemap.txt
index 3248b7d..105f60d 100644
--- a/docs/html/sitemap.txt
+++ b/docs/html/sitemap.txt
@@ -2611,7 +2611,7 @@
 http://developer.android.com/reference/android/support/v4/view/PagerTabStrip.html
 http://developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html
 http://developer.android.com/reference/android/renderscript/RSSurfaceView.html
-http://developer.android.com/guide/topics/graphics/renderscript.html
+http://developer.android.com/guide/topics/renderscript/index.html
 http://developer.android.com/reference/android/renderscript/RSTextureView.html
 http://developer.android.com/reference/android/appwidget/AppWidgetHost.html
 http://developer.android.com/reference/javax/xml/XMLConstants.html
diff --git a/docs/html/tools/debugging/debugging-ui.jd b/docs/html/tools/debugging/debugging-ui.jd
index a5991ec..8ca5192 100644
--- a/docs/html/tools/debugging/debugging-ui.jd
+++ b/docs/html/tools/debugging/debugging-ui.jd
@@ -36,14 +36,14 @@
               <li>
 <iframe title="Hierarchyviewer" 
     width="210" height="160" 
-    src="http://www.youtube.com/embed/PAgE7saQUUY?rel=0&amp;hd=1" 
+    src="//www.youtube.com/embed/PAgE7saQUUY?rel=0&amp;hd=1" 
     frameborder="0" allowfullscreen>
 </iframe>
               </li>
               <li>
 <iframe title="Pixel Perfect" 
     width="210" height="160" 
-    src="http://www.youtube.com/embed/C45bMZGdN7Y?rel=0&amp;hd=1" 
+    src="//www.youtube.com/embed/C45bMZGdN7Y?rel=0&amp;hd=1" 
     frameborder="0" 
     allowfullscreen>
 </iframe>
diff --git a/docs/html/tools/device.jd b/docs/html/tools/device.jd
index 61cd08a..cf7b63f 100644
--- a/docs/html/tools/device.jd
+++ b/docs/html/tools/device.jd
@@ -111,7 +111,17 @@
   </li>
 </ol>
 
-<p>When plugged in over USB, can verify that your device is connected by executing <code>adb
+
+<p class="note"><strong>Note:</strong> When you connect a device running Android 4.2.2 or higher
+to your computer, the system shows a dialog asking whether to accept an RSA key that allows
+debugging through this computer. This security mechanism protects user devices because it ensures
+that USB debugging and other adb commands cannot be executed unless you're able to unlock the
+device and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with
+SDK Platform-tools r16.0.1 and higher) in order to debug on a device running Android 4.2.2 or
+higher.</p>
+
+
+<p>When plugged in over USB, you can verify that your device is connected by executing <code>adb
 devices</code> from your SDK {@code platform-tools/} directory. If connected,
 you'll see the device name listed as a "device."</p>
 
diff --git a/docs/html/tools/help/adb.jd b/docs/html/tools/help/adb.jd
index d44d54b..c8afca5 100644
--- a/docs/html/tools/help/adb.jd
+++ b/docs/html/tools/help/adb.jd
@@ -5,32 +5,27 @@
 
 <div id="qv-wrapper">
 <div id="qv">
-  <h2>ADB quickview</h2>
-  <ul>
-<li>Manage the state of an emulator or device</li>
-<li>Run shell commands on a device</li>
-<li>Manage port forwarding on an emulator or device</li>
-<li>Copy files to/from an emulator or device</li>
-  </ul>
-
   <h2>In this document</h2>
-  <ol>
-<li><a href="#issuingcommands">Issuing ADB Commands</a></li>
-<li><a href="#devicestatus">Querying for Emulator/Device Instances</a></li>
-<li><a href="#directingcommands">Directing Commands to a Specific Emulator/Device Instance</a></li>
-<li><a href="#move">Installing an Application</a></li>
-<li><a href="#forwardports">Forwarding Ports</a></li>
-<li><a href="#copyfiles">Copying Files to or from an Emulator/Device Instance</a></li>
-<li><a href="#commandsummary">Listing of adb Commands </a></li>
-<li><a href="#shellcommands">Issuing Shell Commands</a></li>
-<li><a href="#logcat">Enabling Logcat Logging</a></li>
-<li><a href="#stopping">Stopping the adb Server</a></li>
-  </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="emulator.html">Emulator</a></li>
-  </ol>
+<ol>
+  <li><a href="#issuingcommands">Syntax</a></li>
+  <li><a href="#commandsummary">Commands</a></li>
+  <li><a href="#devicestatus">Querying for Emulator/Device Instances</a></li>
+  <li><a href="#directingcommands">Directing Commands to a Specific Emulator/Device Instance</a></li>
+  <li><a href="#move">Installing an Application</a></li>
+  <li><a href="#forwardports">Forwarding Ports</a></li>
+  <li><a href="#copyfiles">Copying Files to or from an Emulator/Device Instance</a></li>
+  <li><a href="#shellcommands">Issuing Shell Commands</a>
+    <ol>
+      <li><a href="#am">Using activity manager (am)</a></li>
+      <li><a href="#pm">Using package manager (pm)</a></li>
+      <li><a href="#sqlite">Examining sqlite3 databases from a remote shell</a></li>
+      <li><a href="#monkey">UI/Application Exerciser Monkey</a></li>
+      <li><a href="#othershellcommands">Other shell commands</a></li>
+    </ol>
+  </li>
+  <li><a href="#logcat">Enabling logcat logging</a></li>
+  <li><a href="#stopping">Stopping the adb server</a></li>
+</ol>
 
 </div>
 </div>
@@ -40,14 +35,20 @@
 three components: </p>
 
 <ul>
-  <li>A client, which runs on your development machine. You can invoke a client from a shell by issuing an adb command. Other Android tools such as the ADT plugin and DDMS also create adb clients. </li>
-  <li>A server, which runs as a background process on your development machine. The server manages communication between the client and the adb daemon running on an emulator or device. </li>
+  <li>A client, which runs on your development machine. You can invoke a client from a shell
+by issuing an adb command. Other Android tools such as the ADT plugin and DDMS also create
+adb clients. </li>
+  <li>A server, which runs as a background process on your development machine. The server
+manages communication between the client and the adb daemon running on an emulator or device. </li>
   <li>A daemon, which runs as a background process on each emulator or device instance. </li>
 </ul>
 
 <p>You can find the {@code adb} tool in {@code &lt;sdk&gt;/platform-tools/}.</p>
 
-<p>When you start an adb client, the client first checks whether there is an adb server process already running. If there isn't, it starts the server process. When the server starts, it binds to local TCP port 5037 and listens for commands sent from adb clients&mdash;all adb clients use port 5037 to communicate with the adb server. </p>
+<p>When you start an adb client, the client first checks whether there is an adb server
+process already running. If there isn't, it starts the server process. When the server starts,
+it binds to local TCP port 5037 and listens for commands sent from adb clients&mdash;all adb
+clients use port 5037 to communicate with the adb server. </p>
 
 <p>The server then sets up connections to all running emulator/device instances. It locates emulator/device instances by scanning odd-numbered ports in the range 5555 to 5585, the range used by emulators/devices. Where the server finds an adb daemon, it sets up a connection to that port. Note that each emulator/device instance acquires a pair of sequential ports &mdash; an even-numbered port for console connections and an odd-numbered port for adb connections. For example: </p>
 
@@ -55,127 +56,49 @@
 Emulator 1, console: 5554<br/>
 Emulator 1, adb: 5555<br>
 Emulator 2, console: 5556<br>
-Emulator 2, adb: 5557 ...
+Emulator 2, adb: 5557<br>
+and so on...
 </p>
 
-<p>As shown, the emulator instance connected to adb on port 5555 is the same as the instance whose console listens on port 5554. </p>
+<p>As shown, the emulator instance connected to adb on port 5555 is the same as the instance
+whose console listens on port 5554. </p>
 
-<p>Once the server has set up connections to all emulator instances, you can use adb commands to control and access those instances. Because the server manages connections to emulator/device instances and handles commands from multiple adb clients, you can control any emulator/device instance from any client (or from a script).</p>
+<p>Once the server has set up connections to all emulator instances, you can use adb commands to
+access those instances. Because the server manages connections to emulator/device
+instances and handles commands from multiple adb clients, you can control any emulator/device
+instance from any client (or from a script).</p>
 
-<p>The sections below describe the commands that you can use to access adb capabilities and manage the state of an emulator/device. Note that if you are developing Android applications in Eclipse and have installed the ADT plugin, you do not need to access adb from the command line. The ADT plugin provides a transparent integration of adb into the Eclipse IDE. However, you can still use adb directly as necessary, such as for debugging.</p>
 
-<a name="issuingcommands"></a>
+<p class="note"><strong>Note:</strong> When you connect a device running Android 4.2.2 or higher
+to your computer, the system shows a dialog asking whether to accept an RSA key that allows
+debugging through this computer. This security mechanism protects user devices because it ensures
+that USB debugging and other adb commands cannot be executed unless you're able to unlock the
+device and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with
+SDK Platform-tools r16.0.1 and higher) in order to debug on a device running Android 4.2.2 or
+higher.</p>
 
-<h2>Issuing adb Commands</h2>
 
-<p>You can issue adb commands from a command line on your development machine or from a script. The usage is: </p>
+<h2 id="issuingcommands">Syntax</h2>
 
-    <pre>adb [-d|-e|-s &lt;serialNumber&gt;] &lt;command&gt; </pre>
+<p>You can issue adb commands from a command line on your development machine or from a script.
+The usage is: </p>
 
-<p>When you issue a command, the program invokes an adb client. The client is not specifically associated with any emulator instance, so if multiple emulators/devices are running, you need to use the <code>-d</code> option to specify the target instance to which the command should be directed. For more information about using this option, see <a href="#directingcommands">Directing Commands to a Specific Emulator/Device Instance</a>. </p>
+<pre class="no-pretty-print">
+adb [-d|-e|-s &lt;serialNumber&gt;] &lt;command&gt;
+</pre>
 
-<a name="devicestatus"></a>
-
-<h2>Querying for Emulator/Device Instances</h2>
-
-<p>Before issuing adb commands, it is helpful to know what emulator/device instances are connected to the adb server. You can generate a list of attached emulators/devices using the <code>devices</code> command: </p>
-
-	<pre>adb devices</pre>
-
-<p>In response, adb prints this status information for each instance:</p>
-
-<ul>
-	<li>Serial number &mdash; A string created by adb to uniquely identify an emulator/device instance by its 
-        console port number. The format of the serial number is <code>&lt;type&gt;-&lt;consolePort&gt;</code>. 
-        Here's an example serial number: <code>emulator-5554</code></li>
-	<li>State &mdash; The connection state of the instance may be one of the following:
-		<ul>
-		<li><code>offline</code> &mdash; the instance is not connected to adb or is not responding.</li>
-		<li><code>device</code> &mdash; the instance is now connected to the adb server. Note that this state does not 
-                    imply that the Android system is fully booted and operational, since the instance connects to adb 
-                    while the system is still booting. However, after boot-up, this is the normal operational state of 
-                    an emulator/device instance.</li>
-                <li><code>no device</code> &mdash; there is no emulator/device connected.
-		</ul>
-	</li>
-</ul>
-
-<p>The output for each instance is formatted like this: </p>
-
-	<pre>[serialNumber] [state]</pre>
-
-<p>Here's an example showing the <code>devices</code> command and its output:</p>
-
-	<pre>$ adb devices
-List of devices attached 
-emulator-5554&nbsp;&nbsp;device
-emulator-5556&nbsp;&nbsp;device
-emulator-5558&nbsp;&nbsp;device</pre>
+<p>If there's only one emulator running or only one device connected, the adb command is
+sent to that device by default. If multiple emulators are running and/or multiple devices are
+attached, you need to use the <code>-d</code>, <code>-e</code>, or <code>-s</code>
+option to specify the target device to which the command should be directed. </p>
 
 
 
-<a name="directingcommands"></a>
-
-<h2>Directing Commands to a Specific Emulator/Device Instance</h2>
-
-<p>If multiple emulator/device instances are running, you need to specify a target instance when issuing adb commands. To so so, use the <code>-s</code> option in the commands. The usage for the <code>-s</code> option is:</p>
-
-    <pre>adb -s &lt;serialNumber&gt; &lt;command&gt; </pre>
-	
-<p>As shown, you specify the target instance for a command using its adb-assigned serial number. You can use the <code>devices</code> command to obtain the serial numbers of running emulator/device instances. </p>
-
-<p>Here is an example: </p>
-
-	<pre>adb -s emulator-5556 install helloWorld.apk</pre>
-
-<p>Note that, if you issue a command without specifying a target emulator/device instance using <code>-s</code>, adb generates an error. 
-
-<a name="move"></a>
-
-<h2>Installing an Application</h2>
-<p>You can use adb to copy an application from your development computer and install it on an emulator/device instance. To do so, use the <code>install</code> command. With the command, you must specify the path to the .apk file that you want to install:</p>
-
-<pre>adb install &lt;path_to_apk&gt;</pre>
-
-<p>For more information about how to create an .apk file that you can install on an emulator/device
-instance, see <a href="{@docRoot}tools/building/index.html">Building and Running</a></p>
-
-<p>Note that, if you are using the Eclipse IDE and have the ADT plugin installed, you do not need to use adb (or aapt) directly to install your application on the emulator/device. Instead, the ADT plugin handles the packaging and installation of the application for you. </p>
-
-
-<a name="forwardports"></a>
-
-<h2>Forwarding Ports</h2>
-
-    <p>You can use the <code>forward</code> command to set up arbitrary port forwarding &mdash; forwarding of requests on a specific host port to a different port on an emulator/device instance. Here's how you would set up forwarding of host port 6100 to emulator/device port 7100:</p>
-<pre>adb forward tcp:6100 tcp:7100</pre>
-    <p>You can also use adb to set up forwarding to named abstract UNIX domain sockets, as illustrated here:</p>
-<pre>adb forward tcp:6100 local:logd </pre>
-
-<a name="copyfiles"></a>
-
-<h2>Copying Files to or from an Emulator/Device Instance</h2>
-
-<p>You can use the adb commands <code>pull</code> and <code>push</code> to copy files to and from an emulator/device instance's data file. Unlike the <code>install</code> command, which only copies an .apk file to a specific location, the <code>pull</code> and <code>push</code> commands let you copy arbitrary directories and files to any location in an emulator/device instance. </p>
-
-<p>To copy a file or directory (recursively) <em>from</em> the emulator or device, use</p>
-<pre>adb pull &lt;remote&gt; &lt;local&gt;</pre> 
-
-<p>To copy a file or directory (recursively) <em>to</em> the emulator or device, use</p>
-    <pre>adb push &lt;local&gt; &lt;remote&gt;</pre> 
-
-<p>In the commands, <code>&lt;local&gt;</code> and <code>&lt;remote&gt;</code> refer to the paths to the target files/directory on your development machine (local) and on the emulator/device instance (remote).</p>
-
-<p>Here's an example: </p>
-<pre>adb push foo.txt /sdcard/foo.txt</pre>
-
-<a name="commandsummary"></a>
-
-<h2>Listing of adb Commands</h2>
+<h2 id="commandsummary">Commands</h2>
 
 <p>The table below lists all of the supported adb commands and explains their meaning and usage. </p>
 
-
+<p class="table-caption"><strong>Table 1.</strong> Available adb commands</p>
 <table>
 <tr>
 	<th>Category</th>
@@ -185,7 +108,7 @@
 </tr>
 
 <tr>
-<td rowspan="3">Options</td>
+<td rowspan="3">Target Device</td>
 <td><code>-d</code></td>
 <td>Direct an adb command to the only attached USB device.</td>
 <td>Returns an error if more than one USB device is attached.</td>
@@ -200,7 +123,8 @@
 <tr>
 <td><code>-s&nbsp;&lt;serialNumber&gt;</code></td>
 <td>Direct an adb command a specific emulator/device instance, referred to by its adb-assigned serial number (such as "emulator-5556").</td>
-<td>If not specified, adb generates an error.</td>
+<td>See <a href="#directingcommands">Directing
+Commands to a Specific Emulator/Device Instance</a>.</td>
 </tr>
 
 <tr>
@@ -224,7 +148,7 @@
 
 <tr>
 <td rowspan="3">Debug</td>
-<td ><code>logcat&nbsp;[&lt;option&gt;] [&lt;filter-specs&gt;]</code></td>
+<td ><code>logcat&nbsp;[option] [filter-specs]</code></td>
 <td>Prints log data to the screen. </td>
 <td>&nbsp;</td>
 </tr>
@@ -247,7 +171,7 @@
 <tr>
 <td rowspan=3">Data</td>
 <td><code>install&nbsp;&lt;path-to-apk&gt;</code></td>
-<td>Pushes an Android application (specified as a full path to an .apk file) to the data file of an emulator/device. </td>
+<td>Pushes an Android application (specified as a full path to an .apk file) to an emulator/device. </td>
 <td>&nbsp;</td>
 </tr>
 
@@ -303,11 +227,11 @@
 <td><code>wait-for-device</code></td>
 <td>Blocks execution until the device is online &mdash; that is, until the instance state is <code>device</code>.</td>
 <td>You can prepend this command to other adb commands, in which case adb will wait until the emulator/device instance is connected before issuing the other commands. Here's an example: 
-<pre>adb wait-for-device shell getprop</pre>
+<pre class="no-pretty-print">adb wait-for-device shell getprop</pre>
 
 Note that this command does <em>not</em> cause adb to wait until the entire system is fully booted. For that reason, you should not prepend it to other commands that require a fully booted system. As an example, the <code>install</code> requires the Android package manager, which is available only after the system is fully booted. A command such as 
 
-<pre>adb wait-for-device install &lt;app&gt;.apk</pre>
+<pre class="no-pretty-print">adb wait-for-device install &lt;app&gt;.apk</pre>
 
 would issue the <code>install</code> command as soon as the emulator or device instance connected to the adb server, but before the Android system was fully booted, so it would result in an error. </td>
 </tr>
@@ -337,40 +261,841 @@
 </tr>
 
 <tr>
-<td><code>shell&nbsp;[&lt;shellCommand&gt;]</code></td>
+<td><code>shell&nbsp;[shellCommand]</code></td>
 <td>Issues a shell command in the target emulator/device instance and then exits the remote shell.</td>
 </tr>
 
 </table>
 
 
-<a name="shellcommands"></a>
 
-<h2>Issuing Shell Commands</h2>
 
-<p>Adb provides an ash shell that you can use to run a variety of commands on an emulator 
-or device. The command binaries are stored in the file system of the emulator or device, 
-in this location: </p>
 
-<pre>/system/bin/...</pre>
 
-<p>You can use the <code>shell</code> command to issue commands, with or without entering the adb remote shell on the emulator/device. </p>
 
-<p>To issue a single command without entering a remote shell, use the <code>shell</code> command like this: </p>
 
-	<pre>adb [-d|-e|-s {&lt;serialNumber&gt;}] shell &lt;shellCommand&gt;</pre>
+
+
+<h2 id="devicestatus">Querying for Emulator/Device Instances</h2>
+
+<p>Before issuing adb commands, it is helpful to know what emulator/device instances are connected to the adb server. You can generate a list of attached emulators/devices using the <code>devices</code> command: </p>
+
+	<pre class="no-pretty-print">adb devices</pre>
+
+<p>In response, adb prints this status information for each instance:</p>
+
+<ul>
+	<li>Serial number &mdash; A string created by adb to uniquely identify an emulator/device instance by its 
+        console port number. The format of the serial number is <code>&lt;type&gt;-&lt;consolePort&gt;</code>. 
+        Here's an example serial number: <code>emulator-5554</code></li>
+	<li>State &mdash; The connection state of the instance may be one of the following:
+		<ul>
+		<li><code>offline</code> &mdash; the instance is not connected to adb or is not responding.</li>
+		<li><code>device</code> &mdash; the instance is now connected to the adb server. Note that this state does not 
+                    imply that the Android system is fully booted and operational, since the instance connects to adb 
+                    while the system is still booting. However, after boot-up, this is the normal operational state of 
+                    an emulator/device instance.</li>
+                <li><code>no device</code> &mdash; there is no emulator/device connected.
+		</ul>
+	</li>
+</ul>
+
+<p>The output for each instance is formatted like this: </p>
+
+	<pre class="no-pretty-print">[serialNumber] [state]</pre>
+
+<p>Here's an example showing the <code>devices</code> command and its output:</p>
+
+	<pre class="no-pretty-print">adb devices
+List of devices attached 
+emulator-5554&nbsp;&nbsp;device
+emulator-5556&nbsp;&nbsp;device
+emulator-5558&nbsp;&nbsp;device</pre>
+
+
+
+
+
+
+<h2 id="directingcommands">Directing Commands to a Specific Emulator/Device Instance</h2>
+
+<p>If multiple emulator/device instances are running, you must specify a target instance
+when issuing adb commands. To do so, use the <code>-s</code> option in the commands. The usage
+for the <code>-s</code> option is:</p>
+
+    <pre class="no-pretty-print">adb -s &lt;serialNumber&gt; &lt;command&gt; </pre>
 	
-<p>To drop into a remote shell on a emulator/device instance, use the <code>shell</code> command like this:</p>
+<p>As shown, you specify the target instance for a command using its adb-assigned serial number.
+You can use the <code>devices</code> command to obtain the serial numbers of running
+emulator/device instances. For example: </p>
 
-	<pre>adb [-d|-e|-s {&lt;serialNumber&gt;}] shell</pre>
+	<pre class="no-pretty-print">adb -s emulator-5556 install helloWorld.apk</pre>
 
-<p>When you are ready to exit the remote shell, use <code>CTRL+D</code> or <code>exit</code> to end the shell session. </p>
+<p>Note that, if you issue a command without specifying a target emulator/device instance
+while multiple devices are available, adb generates an error.
 
-<p>The sections below provide more information about shell commands that you can use.</p>
-      
-<a name="sqlite" id="sqlite"></a>
+<p>If you have multiple devices available (hardware or emulated), but only one is an emulator,
+simply use the {@code -e} option to send commands to the emulator. Likewise if there's multiple
+devices but only one hardware device attached, use the {@code -d} option to send commands to
+the hardware device.
 
-<h3>Examining sqlite3 Databases from a Remote Shell</h3>
+
+
+
+<h2 id="move">Installing an Application</h2>
+<p>You can use adb to copy an application from your development computer and install it on an emulator/device instance. To do so, use the <code>install</code> command. With the command, you must specify the path to the .apk file that you want to install:</p>
+
+<pre class="no-pretty-print">adb install &lt;path_to_apk&gt;</pre>
+
+<p>For more information about how to create an .apk file that you can install on an emulator/device
+instance, see <a href="{@docRoot}tools/building/index.html">Building and Running</a></p>
+
+<p>Note that, if you are using the Eclipse IDE and have the ADT plugin installed, you do not need to use adb (or aapt) directly to install your application on the emulator/device. Instead, the ADT plugin handles the packaging and installation of the application for you. </p>
+
+
+
+
+
+
+<h2 id="forwardports">Forwarding Ports</h2>
+
+    <p>You can use the <code>forward</code> command to set up arbitrary port forwarding &mdash; forwarding of requests on a specific host port to a different port on an emulator/device instance. Here's how you would set up forwarding of host port 6100 to emulator/device port 7100:</p>
+<pre class="no-pretty-print">adb forward tcp:6100 tcp:7100</pre>
+    <p>You can also use adb to set up forwarding to named abstract UNIX domain sockets, as illustrated here:</p>
+<pre class="no-pretty-print">adb forward tcp:6100 local:logd </pre>
+
+
+
+
+
+<h2 id="copyfiles">Copying Files to or from an Emulator/Device Instance</h2>
+
+<p>You can use the adb commands <code>pull</code> and <code>push</code> to copy files to
+and from an emulator/device instance. Unlike the <code>install</code> command,
+which only copies an APK file to a specific location, the <code>pull</code> and <code>push</code>
+commands let you copy arbitrary directories and files to any location in an
+emulator/device instance. </p>
+
+<p>To copy a file or directory (and its sub-directories) <em>from</em> the emulator or device, use</p>
+<pre class="no-pretty-print">adb pull &lt;remote&gt; &lt;local&gt;</pre> 
+
+<p>To copy a file or directory (and its sub-directories) <em>to</em> the emulator or device, use</p>
+    <pre class="no-pretty-print">adb push &lt;local&gt; &lt;remote&gt;</pre> 
+
+<p>In the commands, <code>&lt;local&gt;</code> and <code>&lt;remote&gt;</code> refer to the
+paths to the target files/directory on your development machine (local) and on the
+emulator/device instance (remote). For example: </p>
+<pre class="no-pretty-print">adb push foo.txt /sdcard/foo.txt</pre>
+
+
+
+
+
+
+
+
+
+<h2 id="shellcommands">Issuing Shell Commands</h2>
+
+<p>Adb provides a Unix shell that you can use to run a variety of commands on an emulator 
+or connected device. The command binaries are stored in the file system of the emulator or device, 
+at <code>/system/bin/...</code>
+
+<p>Two of the most common command tools are <a href="#am">activity manager</a> ({@code am}) and
+<a href="#pm">package manager</a> ({@code pm}).</p>
+
+<p>You can use the <code>shell</code> command to issue commands, with or without entering
+the adb remote shell on the emulator/device. To issue a single command without entering a
+remote shell, use the <code>shell</code> command like this: </p>
+
+	<pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell &lt;shell_command&gt;</pre>
+	
+<p>Or enter a remote shell on an emulator/device like this:</p>
+
+	<pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell</pre>
+
+<p>When you are ready to exit the remote shell, press CTRL+D or type
+<code>exit</code>. </p>
+
+
+
+
+
+<h3 id="am">Using activity manager (am)</h3>
+
+<p>Within an adb shell, you can issue commands with the activity manager ({@code am}) tool to
+perform various system actions, such as start an activity, force-stop a process,
+broadcast an intent, modify the device screen properties, and more. While in a shell,
+the syntax is:</p>
+<pre class="no-pretty-print">
+am &lt;command>
+</pre>
+
+<p>You can also issue an activity manager command directly from adb
+without entering a remote shell. For example:</p>
+<pre class="no-pretty-print">
+adb shell am start -a android.intent.action.VIEW
+</pre>
+
+
+<p class="table-caption"><strong>Table 2.</strong> Available activity manager commands</p>
+<table>
+<tr>
+	<th>Command</th>
+	<th>Description</th>
+</tr>
+
+<tr>
+<td><code>
+start [options] &lt;INTENT>
+</code></td>
+<td>Start an {@link android.app.Activity} specified by {@code &lt;INTENT>}. <p>See the
+<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
+<p>Options are:
+<ul>
+    <li>{@code -D}: Enable debugging.
+    <li>{@code -W}: Wait for launch to complete.
+    <li>{@code --start-profiler &lt;FILE>}: Start profiler and send results to {@code &lt;FILE>}.
+    <li>{@code -P &lt;FILE>}: Like <code>--start-profiler</code>,
+        but profiling stops when the app goes idle.
+    <li>{@code -R}: Repeat the activity launch {@code &lt;COUNT>} times.  Prior to each repeat,
+        the top activity will be finished.
+    <li>{@code -S}: Force stop the target app before starting the activity.
+    <li>{@code --opengl-trace}: Enable tracing of OpenGL functions.
+    <li>{@code --user &lt;USER_ID> | current}: Specify which user to run as; if not
+        specified, then run as the current user.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+startservice [options] &lt;INTENT>
+</code></td>
+<td>Start the {@link android.app.Service} specified by {@code &lt;INTENT>}. <p>See the
+<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
+<p>Options are:
+<ul>
+    <li>{@code --user &lt;USER_ID> | current}: Specify which user to run as; if not
+        specified, then run as the current user.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+force-stop &lt;PACKAGE>
+</code></td>
+<td>Force stop everything associated with {@code &lt;PACKAGE>} (the app's package name).
+</td>
+</tr>
+
+<tr>
+<td><code>
+kill  [options] &lt;PACKAGE>
+</code></td>
+<td> Kill all processes associated with {@code &lt;PACKAGE>}
+  (the app's package name).  This command kills only
+  processes that are safe to kill and that will not impact the user
+  experience.
+  <p>Options are:
+  <ul>
+      <li>{@code --user &lt;USER_ID> | all | current}: Specify user whose processes to kill;
+        all users if not specified.
+  </ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+kill-all
+</code></td>
+<td>Kill all background processes.
+</td>
+</tr>
+
+<tr>
+<td><code>
+broadcast [options] &lt;INTENT>
+</code></td>
+<td>Issue a broadcast intent. <p>See the
+<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
+<p>Options are:
+<ul>
+    <li>{@code [--user &lt;USER_ID> | all | current]}: Specify which user to send to; if not
+        specified then send to all users.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+instrument [options] &lt;COMPONENT>
+</code></td>
+<td>Start monitoring with an {@link android.app.Instrumentation} instance.
+  Typically the target {@code &lt;COMPONENT>}
+  is the form {@code &lt;TEST_PACKAGE>/&lt;RUNNER_CLASS>}.  <p>Options are:
+<ul>
+    <li>{@code -r}: Print raw results (otherwise decode
+        {@code &lt;REPORT_KEY_STREAMRESULT>}).  Use with
+        {@code [-e perf true]} to generate raw output for performance measurements.
+
+    <li>{@code -e &lt;NAME> &lt;VALUE>}: Set argument {@code &lt;NAME>} to {@code &lt;VALUE>}.
+        For test runners a common form is {@code
+        -e &lt;testrunner_flag> &lt;value>[,&lt;value>...]}.
+
+    <li>{@code -p &lt;FILE>}: Write profiling data to {@code &lt;FILE>}.
+
+    <li>{@code -w}: Wait for instrumentation to finish before returning.  Required for
+        test runners.
+
+    <li>{@code --no-window-animation}: Turn off window animations while running.
+    <li>{@code --user &lt;USER_ID> | current}: Specify which user instrumentation runs in;
+        current user if not specified.
+</ul>
+
+</td>
+</tr>
+
+<tr>
+<td><code>
+profile start &lt;PROCESS> &lt;FILE>
+</code></td>
+<td>Start profiler on {@code &lt;PROCESS>}, write results to {@code &lt;FILE>}.
+</td>
+</tr>
+
+<tr>
+<td><code>
+profile stop &lt;PROCESS>
+</code></td>
+<td>Stop profiler on {@code &lt;PROCESS>}.
+</td>
+</tr>
+
+<tr>
+<td style="white-space:nowrap"><code>
+dumpheap [options] &lt;PROCESS> &lt;FILE>
+</code></td>
+<td>Dump the heap of {@code &lt;PROCESS>}, write to {@code &lt;FILE>}. <p>Options are:
+<ul>
+    <li>{@code --user [&lt;USER_ID>|current]}: When supplying a process name,
+        specify user of process to dump; uses current user if not specified.
+    <li>{@code -n}: Dump native heap instead of managed heap.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+set-debug-app [options] &lt;PACKAGE>
+</code></td>
+<td>Set application {@code &lt;PACKAGE>} to debug.  <p>Options are:
+<ul>
+    <li>{@code -w}: Wait for debugger when application starts.
+    <li>{@code --persistent}: Retain this value.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+clear-debug-app
+</code></td>
+<td>Clear the package previous set for debugging with {@code set-debug-app}.
+</td>
+</tr>
+
+<tr>
+<td><code>
+monitor [options]
+</code></td>
+<td>Start monitoring for crashes or ANRs.  <p>Options are:
+<ul>
+    <li>{@code --gdb}: Start gdbserv on the given port at crash/ANR.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+screen-compat [on|off] &lt;PACKAGE>
+</code></td>
+<td>Control <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen
+compatibility</a> mode of {@code &lt;PACKAGE>}.</p>
+</td>
+</tr>
+
+<tr>
+<td><code>
+display-size [reset|&lt;WxH>]
+</code></td>
+<td>Override emulator/device display size.
+This command is helpful for testing your app across different screen sizes by mimicking a small
+screen resolution using a device with a large screen, and vice versa.
+<p>Example:<br><code>am display-size 1280x800</code>
+</td>
+</tr>
+
+<tr>
+<td><code>
+display-density &lt;dpi>
+</code></td>
+<td>Override emulator/device display density. 
+This command is helpful for testing your app across different screen densities on high-density
+screen environment using a low density screen, and vice versa.
+<p>Example:<br><code>am display-density 480</code>
+</td>
+</tr>
+
+<tr>
+<td><code>
+to-uri &lt;INTENT>
+</code></td>
+<td>Print the given intent specification as a URI. <p>See the
+<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
+</td>
+</tr>
+
+<tr>
+<td><code>
+to-intent-uri &lt;INTENT>
+</code></td>
+<td>Print the given intent specification as an {@code intent:} URI. <p>See the
+<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>. 
+</td>
+</tr>
+</table>
+
+
+
+
+
+<h4 id="IntentSpec">
+  <a href="" class="expandable" onclick="toggleExpandable(this,'.intents');
+return false">Specification for &lt;INTENT> arguments</a></h4>
+
+<div class="intents" style="display:none">
+
+<p>For activity manager commands that take a {@code &lt;INTENT>} argument, you can
+specify the intent with the following options:</p>
+
+<dl>
+  <dt>{@code -a &lt;ACTION>}</dt>
+      <dd>Specify the intent action, such as "android.intent.action.VIEW".
+      You can declare this only once.
+
+  <dt>{@code -d &lt;DATA_URI>}</dt>
+      <dd>Specify the intent data URI, such as "content://contacts/people/1".
+      You can declare this only once.
+  
+  <dt>{@code -t &lt;MIME_TYPE>}</dt>
+      <dd>Specify the intent MIME type, such as "image/png".
+      You can declare this only once.
+
+  <dt>{@code -c &lt;CATEGORY>}</dt>
+      <dd>Specify an intent category, such as "android.intent.category.APP_CONTACTS".
+
+  <dt>{@code -n &lt;COMPONENT>}</dt>
+      <dd>Specify the component name with package name prefix to create an explicit intent, such
+      as "com.example.app/.ExampleActivity".
+
+  <dt>{@code -f &lt;FLAGS>}</dt>
+      <dd>Add flags to the intent, as supported by {@link
+        android.content.Intent#setFlags setFlags()}.
+
+  <dt>{@code --esn &lt;EXTRA_KEY>}</dt>
+      <dd>Add a null extra. This option is not supported for URI intents.
+
+  <dt>{@code -e|--es &lt;EXTRA_KEY> &lt;EXTRA_STRING_VALUE>}</dt>
+      <dd>Add string data as a key-value pair.
+
+  <dt>{@code --ez &lt;EXTRA_KEY> &lt;EXTRA_BOOLEAN_VALUE>}</dt>
+      <dd>Add boolean data as a key-value pair.
+
+  <dt>{@code --ei &lt;EXTRA_KEY> &lt;EXTRA_INT_VALUE>}</dt>
+      <dd>Add integer data as a key-value pair.
+
+  <dt>{@code --el &lt;EXTRA_KEY> &lt;EXTRA_LONG_VALUE>}</dt>
+      <dd>Add long data as a key-value pair.
+
+  <dt>{@code --ef &lt;EXTRA_KEY> &lt;EXTRA_FLOAT_VALUE>}</dt>
+      <dd>Add float data as a key-value pair.
+
+  <dt>{@code --eu &lt;EXTRA_KEY> &lt;EXTRA_URI_VALUE>}</dt>
+      <dd>Add URI data as a key-value pair.
+
+  <dt>{@code --ecn &lt;EXTRA_KEY> &lt;EXTRA_COMPONENT_NAME_VALUE>}</dt>
+      <dd>Add a component name, which is converted and passed as
+      a {@link android.content.ComponentName} object.
+
+  <dt>{@code --eia &lt;EXTRA_KEY> &lt;EXTRA_INT_VALUE>[,&lt;EXTRA_INT_VALUE...]}</dt>
+      <dd>Add an array of integers.
+
+  <dt>{@code --ela &lt;EXTRA_KEY> &lt;EXTRA_LONG_VALUE>[,&lt;EXTRA_LONG_VALUE...]}</dt>
+      <dd>Add an array of longs.
+
+  <dt>{@code --efa &lt;EXTRA_KEY> &lt;EXTRA_FLOAT_VALUE>[,&lt;EXTRA_FLOAT_VALUE...]}</dt>
+      <dd>Add an array of floats.
+
+  <dt>{@code --grant-read-uri-permission}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}.
+
+  <dt>{@code --grant-write-uri-permission}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}.
+
+  <dt>{@code --debug-log-resolution}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_DEBUG_LOG_RESOLUTION}.
+
+  <dt>{@code --exclude-stopped-packages}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_EXCLUDE_STOPPED_PACKAGES}.
+
+  <dt>{@code --include-stopped-packages}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_INCLUDE_STOPPED_PACKAGES}.
+
+  <dt>{@code --activity-brought-to-front}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT}.
+
+  <dt>{@code --activity-clear-top}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}.
+
+  <dt>{@code --activity-clear-when-task-reset}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}.
+
+  <dt>{@code --activity-exclude-from-recents}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS}.
+
+  <dt>{@code --activity-launched-from-history}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY}.
+
+  <dt>{@code --activity-multiple-task}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}.
+
+  <dt>{@code --activity-no-animation}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_ANIMATION}.
+
+  <dt>{@code --activity-no-history}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_HISTORY}.
+
+  <dt>{@code --activity-no-user-action}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_USER_ACTION}.
+
+  <dt>{@code --activity-previous-is-top}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_PREVIOUS_IS_TOP}.
+
+  <dt>{@code --activity-reorder-to-front}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_REORDER_TO_FRONT}.
+
+  <dt>{@code --activity-reset-task-if-needed}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_RESET_TASK_IF_NEEDED}.
+
+  <dt>{@code --activity-single-top}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}.
+
+  <dt>{@code --activity-clear-task}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK}.
+
+  <dt>{@code --activity-task-on-home}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_TASK_ON_HOME}.
+
+  <dt>{@code --receiver-registered-only}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REGISTERED_ONLY}.
+
+  <dt>{@code --receiver-replace-pending}</dt>
+      <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REPLACE_PENDING}.
+
+  <dt>{@code --selector}</dt>
+      <dd>Requires the use of {@code -d} and {@code -t} options to set the intent data and type.
+
+  <dt>{@code &lt;URI> &lt;COMPONENT> &lt;PACKAGE>}</dt>
+      <dd>You can directly specify a URI, package name, and component name when not qualified
+      by one of the above options. When an argument is unqualified, the tool assumes the argument
+      is a URI if it contains a ":" (colon); it assumes the argument is a component name if it
+      contains a "/" (forward-slash); otherwise it assumes the argument is a package name.
+
+</dl>
+</div><!-- end 'intents' -->
+<script>
+  $(window).hashchange( function(){
+    if ((location.hash == "#IntentSpec") && !($("#IntentSpec a").hasClass("expanded"))) {
+      $("#IntentSpec a").click();
+    }
+  });
+</script>
+
+
+
+<h3 id="pm">Using package manager (pm)</h3>
+
+<p>Within an adb shell, you can issue commands with the package manager ({@code pm}) tool to
+perform actions and queries on application packages installed on the device. While in a shell,
+the syntax is:</p>
+<pre class="no-pretty-print">
+pm &lt;command>
+</pre>
+
+<p>You can also issue a package manager command directly from adb
+without entering a remote shell. For example:</p>
+<pre class="no-pretty-print">
+adb shell pm uninstall com.example.MyApp
+</pre>
+
+<p class="table-caption"><strong>Table 3.</strong> Available package manager commands.</p>
+<table>
+<tr>
+	<th>Command</th>
+	<th>Description</th>
+</tr>
+
+<tr>
+<td><code>
+list packages [options] &lt;FILTER>
+</code></td>
+<td>Prints all packages, optionally only
+  those whose package name contains the text in {@code &lt;FILTER>}.  <p>Options:
+<ul>
+    <li>{@code -f}: See their associated file.
+    <li>{@code -d}: Filter to only show disabled packages.
+    <li>{@code -e}: Filter to only show enabled packages.
+    <li>{@code -s}: Filter to only show system packages.
+    <li>{@code -3}: Filter to only show third party packages.
+    <li>{@code -i}: See the installer for the packages.
+    <li>{@code -u}: Also include uninstalled packages.
+    <li>{@code --user &lt;USER_ID>}: The user space to query.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+list permission-groups
+</code></td>
+<td>Prints all known permission groups.
+</td>
+</tr>
+
+<tr>
+<td><code>
+list permissions [options] &lt;GROUP>
+</code></td>
+<td>Prints all known permissions, optionally only
+  those in {@code &lt;GROUP>}.  <p>Options:
+<ul>
+    <li>{@code -g}: Organize by group.
+    <li>{@code -f}: Print all information.
+    <li>{@code -s}: Short summary.
+    <li>{@code -d}: Only list dangerous permissions.
+    <li>{@code -u}: List only the permissions users will see.
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+list instrumentation
+</code></td>
+<td>List all test packages.  <p>Options:
+  <ul>
+    <li>{@code -f}: List the APK file for the test package.
+    <li>{@code &lt;TARGET_PACKAGE>}: List test packages for only this app.
+  </ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+list features
+</code></td>
+<td>Prints all features of the system.
+</td>
+</tr>
+
+<tr>
+<td><code>
+list libraries
+</code></td>
+<td>Prints all the libraries supported by the current device.
+</td>
+</tr>
+
+<tr>
+<td><code>
+list users
+</code></td>
+<td>Prints all users on the system.
+</td>
+</tr>
+
+<tr>
+<td><code>
+path &lt;PACKAGE>
+</code></td>
+<td>Print the path to the APK of the given {@code &lt;PACKAGE>}.
+</td>
+</tr>
+
+<tr>
+<td><code>
+install [options]  &lt;PATH>
+</code></td>
+<td>Installs a package (specified by {@code &lt;PATH>}) to the system.  <p>Options:
+  <ul>
+    <li>{@code -l}: Install the package with forward lock.
+    <li>{@code -r}: Reinstall an exisiting app, keeping its data.
+    <li>{@code -t}: Allow test APKs to be installed.
+    <li>{@code -i &lt;INSTALLER_PACKAGE_NAME>}: Specify the installer package name.
+    <li>{@code -s}: Install package on the shared mass storage (such as sdcard).
+    <li>{@code -f}: Install package on the internal system memory.
+    <li>{@code -d}: Allow version code downgrade.
+  </ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+uninstall [options] &lt;PACKAGE>
+</code></td>
+<td>Removes a package from the system. <p>Options:
+  <ul>
+    <li>{@code -k}: Keep the data and cache directories around after package removal.
+  </ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+clear &lt;PACKAGE>
+</code></td>
+<td>Deletes all data associated with a package.
+</td>
+</tr>
+
+<tr>
+<td><code>
+enable &lt;PACKAGE_OR_COMPONENT>
+</code></td>
+<td>Enable the given package or component (written as "package/class").
+</td>
+</tr>
+
+<tr>
+<td><code>
+disable &lt;PACKAGE_OR_COMPONENT>
+</code></td>
+<td>Disable the given package or component (written as "package/class").
+</td>
+</tr>
+
+<tr>
+<td style="white-space:nowrap"><code>
+disable-user [options] &lt;PACKAGE_OR_COMPONENT>
+</code></td>
+<td><p>Options:
+  <ul>
+    <li>{@code --user &lt;USER_ID>}: The user to disable.
+  </ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+grant &lt;PACKAGE_PERMISSION>
+</code></td>
+<td>Grant permissions
+  to applications.  Only optional permissions the application has
+  declared can be granted.
+</td>
+</tr>
+
+<tr>
+<td><code>
+revoke &lt;PACKAGE_PERMISSION>
+</code></td>
+<td>Revoke permissions
+  to applications.  Only optional permissions the application has
+  declared can be revoked.
+</td>
+</tr>
+
+<tr>
+<td><code>
+set-install-location &lt;LOCATION>
+</code></td>
+<td>Changes the default install location. Location values:
+<ul>
+    <li>{@code 0}: Auto&mdash;Let system decide the best location.
+    <li>{@code 1}: Internal&mdash;install on internal device storage.
+    <li>{@code 2}: External&mdash;install on external media.
+</ul>
+<p class="note"><strong>Note:</strong> This is only intended for debugging; using this can cause
+  applications to break and other undesireable behavior.</p>
+</td>
+</tr>
+
+<tr>
+<td><code>
+get-install-location
+</code></td>
+<td>Returns the current install location. Return values:
+<ul>
+  <li>{@code 0 [auto]}: Lets system decide the best location
+  <li>{@code 1 [internal]}: Installs on internal device storage
+  <li>{@code 2 [external]}: Installs on external media
+</ul>
+</td>
+</tr>
+
+<tr>
+<td><code>
+set-permission-enforced &lt;PERMISSION> [true|false]
+</code></td>
+<td>Specifies whether the given permission should be enforced.
+</td>
+</tr>
+
+<tr>
+<td><code>
+trim-caches &lt;DESIRED_FREE_SPACE>
+</code></td>
+<td>Trim cache files to reach the given free space.
+</td>
+</tr>
+
+<tr>
+<td><code>
+create-user &lt;USER_NAME>
+</code></td>
+<td>Create a new user with the given {@code &lt;USER_NAME>},
+  printing the new user identifier of the user.
+</td>
+</tr>
+
+<tr>
+<td><code>
+remove-user &lt;USER_ID>
+</code></td>
+<td>Remove the user with the given {@code &lt;USER_IDENTIFIER>},
+  deleting all data associated with that user
+</td>
+</tr>
+
+<tr>
+<td><code>
+get-max-users
+</code></td>
+<td>Prints the maximum number of users supported by the device.
+</td>
+</tr>
+
+</table>
+
+
+
+
+
+
+
+<h3 id="sqlite">Examining sqlite3 databases from a remote shell</h3>
 
 <p>From an adb remote shell, you can use the 
 <a href="http://www.sqlite.org/sqlite.html">sqlite3</a> command-line program to 
@@ -384,7 +1109,7 @@
 
 <p>Here's an example: </p>
 
-<pre>$ adb -s emulator-5554 shell
+<pre class="no-pretty-print">adb -s emulator-5554 shell
 # sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
 SQLite version 3.3.12
 Enter &quot;.help&quot; for instructions
@@ -394,34 +1119,40 @@
 <p>Once you've invoked <code>sqlite3</code>, you can issue <code>sqlite3</code> commands in the shell. To exit and return to the adb remote shell, use <code>exit</code> or <code>CTRL+D</code>.
 
 
-<a name="monkey"></a>
 
-<h3>UI/Application Exerciser Monkey</h3>
+
+
+
+<h3 id="monkey">UI/Application Exerciser Monkey</h3>
 
 <p>The Monkey is a program that runs on your emulator or device and generates pseudo-random
 streams of user events such as clicks, touches, or gestures, as well as a number of system-level 
 events.  You can use the Monkey to stress-test applications that you are developing,
 in a random yet repeatable manner.</p>
 
-<p>The simplest way to use the monkey is with the following command, which will launch your
-application and send 500 pseudo-random events to it.</p>
+<p>The simplest way to use the monkey is with the following command, which launches your
+application and sends 500 pseudo-random events to it.</p>
 
-<pre>$ adb shell monkey -v -p your.package.name 500</pre>
+<pre class="no-pretty-print">adb shell monkey -v -p your.package.name 500</pre>
 
 <p>For more information about command options for Monkey, see the complete 
 <a href="{@docRoot}tools/help/monkey.html" title="monkey">UI/Application Exerciser Monkey</a> documentation page.</p>
 
 
-<a name="othershellcommands"></a>
 
-<h3>Other Shell Commands</h3>
 
-<p>The table below lists several of the adb shell commands available. For a complete list of commands and programs, start an emulator instance and use the <code>adb -help</code> command. </p>
 
-<pre>adb shell ls /system/bin</pre>
+<h3 id="othershellcommands">Other shell commands</h3>
+
+<p>For a list of all the available shell programs, use the following command:</p>
+
+<pre class="no-pretty-print">adb shell ls /system/bin</pre>
 
 <p>Help is available for most of the commands. </p>
 
+<p>Table 4 lists some of the more common adb shell commands.</p>
+
+<p class="table-caption"><strong>Table 4.</strong> Some other adb shell commands</p>
 <table>
 <tr>
 	<th>Shell Command</th>
@@ -442,8 +1173,8 @@
 </tr>
 
 <tr>
-<td><code>logcat&nbsp;[&lt;option&gt;]...&nbsp;[&lt;filter-spec&gt;]...</code></td>
-<td>Enables radio logging and prints output to the screen. </td>
+<td><code>logcat&nbsp;[option]...&nbsp;[filter-spec]...</code></td>
+<td>Enables system and app logging and prints output to the screen. </td>
 </tr>
 
 <tr>
@@ -464,39 +1195,47 @@
 </tr>
 
 </table>
+
+
+
+
+
+
+
 <a name="stdout"></a>
 <a name="usinglogcat"></a>
 <a name="outputformat"></a>
 <a name="filteringoutput"></a>
 <a name="stdout"></a>
 <a name="logcatoptions"></a>
-<a name="logcat"></a>
 
-<h2>Enabling logcat Logging</h2>
+<h2 id="logcat">Enabling logcat logging</h2>
 
 <p>The Android logging system provides a mechanism for collecting and viewing system debug output. Logs from various applications and portions of the system are collected in a series of circular buffers, which then can be viewed and filtered by the <code>logcat</code> command.</p>
 
 <p>You can use the <code>logcat</code> command to view and follow the contents of the system's log buffers. The general usage is:</p>
 
-<pre>[adb] logcat [&lt;option&gt;] ... [&lt;filter-spec&gt;] ...</pre>
+<pre class="no-pretty-print">[adb] logcat [option] ... [filter-spec] ...</pre>
 
 <p>You can use the <code>logcat</code> command from your development computer  or from a remote adb shell in an emulator/device instance. To view log output in your development computer, you use</p>
 
-<pre>$ adb logcat</pre>
+<pre class="no-pretty-print">adb logcat</pre>
 
 <p>and from a remote adb shell you use</p>
 
-<pre># logcat</pre>
+<pre class="no-pretty-print">logcat</pre>
 
 <p>See <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a> for complete information about logcat commend options and filter specifications.</p>
 
 
-<a name="stopping"></a>
 
-<h2>Stopping the adb Server</h2>
+
+
+<h2 id="stopping">Stopping the adb server</h2>
 
 <p>In some cases, you might need to terminate the adb server process and then restart it. For example, if adb does not respond to a command, you can terminate the server and restart it and that may resolve the problem. </p>
 
-<p>To stop the adb server, use the <code>kill-server</code>. You can then restart the server by issuing any adb command. </p>
+<p>To stop the adb server, use the <code>kill-server</code> command.
+You can then restart the server by issuing any other adb command. </p>
 
 
diff --git a/docs/html/tools/help/uiautomator/index.jd b/docs/html/tools/help/uiautomator/index.jd
index 38ba177..e3899d6 100644
--- a/docs/html/tools/help/uiautomator/index.jd
+++ b/docs/html/tools/help/uiautomator/index.jd
@@ -76,11 +76,6 @@
 </tr>
 
 <tr>
-<td><nobr><code>-e runner [CLASS]</code></nobr></td>
-<td>Use the specified test runner class instead. If unspecified, the {@code uiautomator} framework’s  default runner will be used.</td>
-</tr>
-
-<tr>
 <td><code>dump</code></td>
 <td><code>[file]</code></td>
 <td>Generate an XML file with a dump of the current UI hierarchy. If a filepath is not specified, by default, the generated dump file is stored on the device in this location {@code /storage/sdcard0/window_dump.xml}.</td>
diff --git a/docs/html/tools/publishing/app-signing.jd b/docs/html/tools/publishing/app-signing.jd
index ac45242..608780e 100644
--- a/docs/html/tools/publishing/app-signing.jd
+++ b/docs/html/tools/publishing/app-signing.jd
@@ -96,8 +96,7 @@
 you don't have a private key, you can use the Keytool utility to create one for you. When you
 compile your application in release mode, the build tools use your private key along with the
 Jarsigner utility to sign your application's <code>.apk</code> file. Because the certificate and
-private key you use are your own, you will have to provide the password for the keystore and key
-alias.</p>
+private key you use are your own, you must provide the password for the keystore and key alias.</p>
 
 <p>The debug signing process happens automatically when you run or debug your application using
 Eclipse with the ADT plugin. Debug signing also happens automatically when you use the Ant build
@@ -117,13 +116,13 @@
 
 <ul>
 <li>Application upgrade &ndash; As you release updates to your application, you
-will want to continue to sign the updates with the same certificate or set of
-certificates, if you want users to upgrade seamlessly to the new version. When
+must continue to sign the updates with the same certificate or set of certificates,
+if you want users to be able to upgrade seamlessly to the new version. When
 the system is installing an update to an application, it compares the
 certificate(s) in the new version with those in the existing version. If the
 certificates match exactly, including both the certificate data and order, then
 the system allows the update. If you sign the new version without using matching
-certificates, you will also need to assign a different package name to the
+certificates, you must also assign a different package name to the
 application &mdash; in this case, the user installs the new version as a
 completely new application. </li>
 
@@ -314,6 +313,13 @@
 particular, when you are generating your key, you should select strong passwords
 for both the keystore and key.</p>
 
+<p class="warning"><strong>Warning:</strong> Keep the keystore file you generate with Keytool
+in a safe, secure place. You must use the same key to sign future versions of your application. If
+you republish your app with a new key, Google Play will consider it a new app. For more information
+on settings that must remain constant over the life of your app, see the Android Developer Blog post
+<a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Things
+That Cannot Change</a>.</p>
+
 <table>
 <tr>
 <th>Keytool Option</th>
@@ -597,6 +603,10 @@
 sign and distribute applications under your identity that attack other
 applications or the system itself, or corrupt or steal user data. </p>
 
+<p>Your private key is required for signing all future versions of your application. If you lose or
+misplace your key, you will not be able to publish updates to your existing application. You cannot
+regenerate a previously generated key.</p>
+
 <p>Your reputation as a developer entity depends on your securing your private
 key properly, at all times, until the key is expired. Here are some tips for
 keeping your key secure: </p>
@@ -612,7 +622,9 @@
 options at the command line. </li>
 <li>Do not give or lend anyone your private key, and do not let unauthorized
 persons know your keystore and key passwords.</li>
+<li>Keep the keystore file containing your private key that you <a href="#cert">generate with the
+Keytool</a> in a safe, secure place.</li>
 </ul>
 
 <p>In general, if you follow common-sense precautions when generating, using,
-and storing your key, it will remain secure. </p>
\ No newline at end of file
+and storing your key, it will remain secure. </p>
diff --git a/docs/html/tools/sdk/eclipse-adt.jd b/docs/html/tools/sdk/eclipse-adt.jd
index 243683c..4adb7b2 100644
--- a/docs/html/tools/sdk/eclipse-adt.jd
+++ b/docs/html/tools/sdk/eclipse-adt.jd
@@ -57,6 +57,63 @@
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+      alt=""/>ADT 21.1.0</a> <em>(February 2013)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+<dl>
+  <dt>Dependencies:</dt>
+
+  <dd>
+    <ul>
+      <li>Java 1.6 or higher is required for ADT 21.1.0.</li>
+      <li>Eclipse Helios (Version 3.6.2) or higher is required for ADT 21.1.0.</li>
+      <li>ADT 21.1.0 is designed for use with <a href="{@docRoot}tools/sdk/tools-notes.html">SDK
+      Tools r21.1.0</a>. If you haven't already installed SDK Tools r21.1.0 into your SDK, use the
+      Android SDK Manager to do so.</li>
+    </ul>
+  </dd>
+
+  <dt>General Notes:</dt>
+  <dd>
+    <ul>
+      <li>Added new <a href="{@docRoot}tools/projects/templates.html">code templates</a> for
+        notifications, blank fragments and list fragments.</li>
+      <li>Added support for resource rename refactoring. Renaming a resource XML file, drawable
+        icon, an {@code R.} field name or ID in the layout editor invokes a refactoring routine
+        to update all resource references.</li>
+      <li>Added more than 15 new Lint checks, including checks for overriding older APIs, XML
+        resource problems, graphic asset issues and manifest tags.
+      <li>Updated XML Editor to respond to refactoring shortcut keys such as <strong>Refactor
+        &gt; Rename</strong>.</li>
+      <li>Updated XML Editor to improve double click handling.</li>
+      <li>Added code completion improvements for custom views, theme references and class
+        references. For example, code completion in a {@code &lt;fragment android:name=””&gt;} tag
+        now suggests completion with a list of fragment classes. Similarly, code completion in the
+        manifest now offers implementations suitable for the given tag.</li>
+      <li>Updated the <strong>Project Import</strong> dialog so that it shows a table for all
+        imported projects where you can edit the name of the imported project.</li>
+      <li>Added support for layout aliases in the Layout Editor.</li>
+    </ul>
+  </dd>
+
+  <dt>Bug fixes:</dt>
+  <dd>
+    <ul>
+      <li>Fixed issued with refactoring support for renaming and moving classes and packages.
+      </li>
+    </ul>
+  </dd>
+
+</dl>
+</div>
+</div>
+
+
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
       alt=""/>ADT 21.0.1</a> <em>(December 2012)</em>
   </p>
 
diff --git a/docs/html/tools/sdk/images/2.0/camera-modes.png b/docs/html/tools/sdk/images/2.0/camera-modes.png
deleted file mode 100644
index ac4c1da..0000000
--- a/docs/html/tools/sdk/images/2.0/camera-modes.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.0/email-inbox.png b/docs/html/tools/sdk/images/2.0/email-inbox.png
deleted file mode 100644
index 50d1c19..0000000
--- a/docs/html/tools/sdk/images/2.0/email-inbox.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.0/mms-search.png b/docs/html/tools/sdk/images/2.0/mms-search.png
deleted file mode 100644
index 22c7dca..0000000
--- a/docs/html/tools/sdk/images/2.0/mms-search.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.0/multiple-accounts.png b/docs/html/tools/sdk/images/2.0/multiple-accounts.png
deleted file mode 100644
index aa4cb15..0000000
--- a/docs/html/tools/sdk/images/2.0/multiple-accounts.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.0/quick-connect.png b/docs/html/tools/sdk/images/2.0/quick-connect.png
deleted file mode 100644
index 0bbf7dd..0000000
--- a/docs/html/tools/sdk/images/2.0/quick-connect.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.2/22browser.png b/docs/html/tools/sdk/images/2.2/22browser.png
deleted file mode 100644
index 817439d..0000000
--- a/docs/html/tools/sdk/images/2.2/22browser.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.2/22exchange.png b/docs/html/tools/sdk/images/2.2/22exchange.png
deleted file mode 100644
index 1fa1f59..0000000
--- a/docs/html/tools/sdk/images/2.2/22exchange.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.2/22gallery.png b/docs/html/tools/sdk/images/2.2/22gallery.png
deleted file mode 100644
index 0cb74ad..0000000
--- a/docs/html/tools/sdk/images/2.2/22gallery.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.2/22home.png b/docs/html/tools/sdk/images/2.2/22home.png
deleted file mode 100644
index a11ea30..0000000
--- a/docs/html/tools/sdk/images/2.2/22home.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.2/22hotspot.png b/docs/html/tools/sdk/images/2.2/22hotspot.png
deleted file mode 100644
index 0951439..0000000
--- a/docs/html/tools/sdk/images/2.2/22hotspot.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.2/22keyboard.png b/docs/html/tools/sdk/images/2.2/22keyboard.png
deleted file mode 100644
index 69f95ca..0000000
--- a/docs/html/tools/sdk/images/2.2/22keyboard.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.2/jit-graph.png b/docs/html/tools/sdk/images/2.2/jit-graph.png
deleted file mode 100644
index 52b8d60..0000000
--- a/docs/html/tools/sdk/images/2.2/jit-graph.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.3/ffc.png b/docs/html/tools/sdk/images/2.3/ffc.png
deleted file mode 100644
index 136a395f..0000000
--- a/docs/html/tools/sdk/images/2.3/ffc.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.3/home-menu.png b/docs/html/tools/sdk/images/2.3/home-menu.png
deleted file mode 100644
index e9c8620..0000000
--- a/docs/html/tools/sdk/images/2.3/home-menu.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.3/home-plain.png b/docs/html/tools/sdk/images/2.3/home-plain.png
deleted file mode 100644
index a6255f6..0000000
--- a/docs/html/tools/sdk/images/2.3/home-plain.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.3/nfc.png b/docs/html/tools/sdk/images/2.3/nfc.png
deleted file mode 100644
index a21b6ab..0000000
--- a/docs/html/tools/sdk/images/2.3/nfc.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.3/onetouch.png b/docs/html/tools/sdk/images/2.3/onetouch.png
deleted file mode 100644
index 2789612..0000000
--- a/docs/html/tools/sdk/images/2.3/onetouch.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.3/power.png b/docs/html/tools/sdk/images/2.3/power.png
deleted file mode 100644
index 7b0785d..0000000
--- a/docs/html/tools/sdk/images/2.3/power.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.3/running.png b/docs/html/tools/sdk/images/2.3/running.png
deleted file mode 100644
index fe9a1a0..0000000
--- a/docs/html/tools/sdk/images/2.3/running.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.3/selection.png b/docs/html/tools/sdk/images/2.3/selection.png
deleted file mode 100644
index 46ff28c..0000000
--- a/docs/html/tools/sdk/images/2.3/selection.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/2.3/sipcall.png b/docs/html/tools/sdk/images/2.3/sipcall.png
deleted file mode 100644
index 48a5a1d..0000000
--- a/docs/html/tools/sdk/images/2.3/sipcall.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/browser.png b/docs/html/tools/sdk/images/3.0/browser.png
deleted file mode 100644
index 0f16b27..0000000
--- a/docs/html/tools/sdk/images/3.0/browser.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/browser_full.png b/docs/html/tools/sdk/images/3.0/browser_full.png
deleted file mode 100644
index 08a329d..0000000
--- a/docs/html/tools/sdk/images/3.0/browser_full.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/camera.png b/docs/html/tools/sdk/images/3.0/camera.png
deleted file mode 100644
index 7dabdfc..0000000
--- a/docs/html/tools/sdk/images/3.0/camera.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/camera_full.png b/docs/html/tools/sdk/images/3.0/camera_full.png
deleted file mode 100644
index 3ee95c9..0000000
--- a/docs/html/tools/sdk/images/3.0/camera_full.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/contacts.png b/docs/html/tools/sdk/images/3.0/contacts.png
deleted file mode 100644
index 9304701..0000000
--- a/docs/html/tools/sdk/images/3.0/contacts.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/contacts_full.png b/docs/html/tools/sdk/images/3.0/contacts_full.png
deleted file mode 100644
index b5eaf5b..0000000
--- a/docs/html/tools/sdk/images/3.0/contacts_full.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/copy.png b/docs/html/tools/sdk/images/3.0/copy.png
deleted file mode 100644
index d5a4c3e..0000000
--- a/docs/html/tools/sdk/images/3.0/copy.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/copy_full.png b/docs/html/tools/sdk/images/3.0/copy_full.png
deleted file mode 100644
index 124cf52..0000000
--- a/docs/html/tools/sdk/images/3.0/copy_full.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/home_hero1.png b/docs/html/tools/sdk/images/3.0/home_hero1.png
deleted file mode 100644
index c00391f..0000000
--- a/docs/html/tools/sdk/images/3.0/home_hero1.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/home_hero1_full.png b/docs/html/tools/sdk/images/3.0/home_hero1_full.png
deleted file mode 100644
index 1910ed2..0000000
--- a/docs/html/tools/sdk/images/3.0/home_hero1_full.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/homescreen_cust_port.png b/docs/html/tools/sdk/images/3.0/homescreen_cust_port.png
deleted file mode 100644
index b003a30..0000000
--- a/docs/html/tools/sdk/images/3.0/homescreen_cust_port.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/homescreen_cust_port_full.png b/docs/html/tools/sdk/images/3.0/homescreen_cust_port_full.png
deleted file mode 100644
index 9c64edd..0000000
--- a/docs/html/tools/sdk/images/3.0/homescreen_cust_port_full.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/mail_drag.png b/docs/html/tools/sdk/images/3.0/mail_drag.png
deleted file mode 100644
index 1f09a7a..0000000
--- a/docs/html/tools/sdk/images/3.0/mail_drag.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/mail_drag_full.png b/docs/html/tools/sdk/images/3.0/mail_drag_full.png
deleted file mode 100644
index be4472f..0000000
--- a/docs/html/tools/sdk/images/3.0/mail_drag_full.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/tasks.png b/docs/html/tools/sdk/images/3.0/tasks.png
deleted file mode 100644
index a4ba1ba..0000000
--- a/docs/html/tools/sdk/images/3.0/tasks.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/tasks_full.png b/docs/html/tools/sdk/images/3.0/tasks_full.png
deleted file mode 100644
index d2a2241..0000000
--- a/docs/html/tools/sdk/images/3.0/tasks_full.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.0/widgets.png b/docs/html/tools/sdk/images/3.0/widgets.png
deleted file mode 100644
index d847666..0000000
--- a/docs/html/tools/sdk/images/3.0/widgets.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.1/controls.png b/docs/html/tools/sdk/images/3.1/controls.png
deleted file mode 100644
index e0ca1f8..0000000
--- a/docs/html/tools/sdk/images/3.1/controls.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.1/home.png b/docs/html/tools/sdk/images/3.1/home.png
deleted file mode 100644
index ea0a75a..0000000
--- a/docs/html/tools/sdk/images/3.1/home.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.1/home_full.png b/docs/html/tools/sdk/images/3.1/home_full.png
deleted file mode 100644
index 2b8e85e..0000000
--- a/docs/html/tools/sdk/images/3.1/home_full.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.1/resizeable.png b/docs/html/tools/sdk/images/3.1/resizeable.png
deleted file mode 100644
index c9f5e8e..0000000
--- a/docs/html/tools/sdk/images/3.1/resizeable.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/3.1/tasks.png b/docs/html/tools/sdk/images/3.1/tasks.png
deleted file mode 100644
index 89d69e5..0000000
--- a/docs/html/tools/sdk/images/3.1/tasks.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/allapps-lg.png b/docs/html/tools/sdk/images/4.0/allapps-lg.png
deleted file mode 100644
index f5eba3c..0000000
--- a/docs/html/tools/sdk/images/4.0/allapps-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/allapps.png b/docs/html/tools/sdk/images/4.0/allapps.png
deleted file mode 100644
index 317a49a..0000000
--- a/docs/html/tools/sdk/images/4.0/allapps.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/bbench.png b/docs/html/tools/sdk/images/4.0/bbench.png
deleted file mode 100644
index f113092..0000000
--- a/docs/html/tools/sdk/images/4.0/bbench.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/beam-lg.png b/docs/html/tools/sdk/images/4.0/beam-lg.png
deleted file mode 100644
index 608fc94..0000000
--- a/docs/html/tools/sdk/images/4.0/beam-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/beam-maps-lg.png b/docs/html/tools/sdk/images/4.0/beam-maps-lg.png
deleted file mode 100644
index 96ac235..0000000
--- a/docs/html/tools/sdk/images/4.0/beam-maps-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/beam-maps.png b/docs/html/tools/sdk/images/4.0/beam-maps.png
deleted file mode 100644
index 63b6756..0000000
--- a/docs/html/tools/sdk/images/4.0/beam-maps.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/beam.png b/docs/html/tools/sdk/images/4.0/beam.png
deleted file mode 100644
index 0eb7d26..0000000
--- a/docs/html/tools/sdk/images/4.0/beam.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/browser-lg.png b/docs/html/tools/sdk/images/4.0/browser-lg.png
deleted file mode 100644
index fe3fe81..0000000
--- a/docs/html/tools/sdk/images/4.0/browser-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/browser-tabs-lg.png b/docs/html/tools/sdk/images/4.0/browser-tabs-lg.png
deleted file mode 100644
index 0ea8f10..0000000
--- a/docs/html/tools/sdk/images/4.0/browser-tabs-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/browser-tabs.png b/docs/html/tools/sdk/images/4.0/browser-tabs.png
deleted file mode 100644
index 413b0c6..0000000
--- a/docs/html/tools/sdk/images/4.0/browser-tabs.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/browser.png b/docs/html/tools/sdk/images/4.0/browser.png
deleted file mode 100644
index 4bc8179..0000000
--- a/docs/html/tools/sdk/images/4.0/browser.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/calendar-widget-lg.png b/docs/html/tools/sdk/images/4.0/calendar-widget-lg.png
deleted file mode 100644
index 39fc986..0000000
--- a/docs/html/tools/sdk/images/4.0/calendar-widget-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/calendar-widget.png b/docs/html/tools/sdk/images/4.0/calendar-widget.png
deleted file mode 100644
index 80a57f7..0000000
--- a/docs/html/tools/sdk/images/4.0/calendar-widget.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/camera-lg.png b/docs/html/tools/sdk/images/4.0/camera-lg.png
deleted file mode 100644
index 7d96a4f..0000000
--- a/docs/html/tools/sdk/images/4.0/camera-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/camera.png b/docs/html/tools/sdk/images/4.0/camera.png
deleted file mode 100644
index 7454549..0000000
--- a/docs/html/tools/sdk/images/4.0/camera.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/contact-call-lg.png b/docs/html/tools/sdk/images/4.0/contact-call-lg.png
deleted file mode 100644
index 40b1f40..0000000
--- a/docs/html/tools/sdk/images/4.0/contact-call-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/contact-call.png b/docs/html/tools/sdk/images/4.0/contact-call.png
deleted file mode 100644
index 5550b57..0000000
--- a/docs/html/tools/sdk/images/4.0/contact-call.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/contact-connect-lg.png b/docs/html/tools/sdk/images/4.0/contact-connect-lg.png
deleted file mode 100644
index ad0d04c..0000000
--- a/docs/html/tools/sdk/images/4.0/contact-connect-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/contact-connect.png b/docs/html/tools/sdk/images/4.0/contact-connect.png
deleted file mode 100644
index d958206..0000000
--- a/docs/html/tools/sdk/images/4.0/contact-connect.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/contact-email-lg.png b/docs/html/tools/sdk/images/4.0/contact-email-lg.png
deleted file mode 100644
index db75a46..0000000
--- a/docs/html/tools/sdk/images/4.0/contact-email-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/contact-email.png b/docs/html/tools/sdk/images/4.0/contact-email.png
deleted file mode 100644
index 9e5460d..0000000
--- a/docs/html/tools/sdk/images/4.0/contact-email.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/contact-faves-lg.png b/docs/html/tools/sdk/images/4.0/contact-faves-lg.png
deleted file mode 100644
index 1ec3fd0..0000000
--- a/docs/html/tools/sdk/images/4.0/contact-faves-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/contact-faves.png b/docs/html/tools/sdk/images/4.0/contact-faves.png
deleted file mode 100644
index 57e4ca6..0000000
--- a/docs/html/tools/sdk/images/4.0/contact-faves.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/face-unlock-lg.png b/docs/html/tools/sdk/images/4.0/face-unlock-lg.png
deleted file mode 100644
index 3fd1695..0000000
--- a/docs/html/tools/sdk/images/4.0/face-unlock-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/face-unlock.png b/docs/html/tools/sdk/images/4.0/face-unlock.png
deleted file mode 100644
index 00afb83..0000000
--- a/docs/html/tools/sdk/images/4.0/face-unlock.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/gallery-edit-lg.png b/docs/html/tools/sdk/images/4.0/gallery-edit-lg.png
deleted file mode 100644
index 3d6688f..0000000
--- a/docs/html/tools/sdk/images/4.0/gallery-edit-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/gallery-edit.png b/docs/html/tools/sdk/images/4.0/gallery-edit.png
deleted file mode 100644
index 69744ec..0000000
--- a/docs/html/tools/sdk/images/4.0/gallery-edit.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/gallery-share-lg.png b/docs/html/tools/sdk/images/4.0/gallery-share-lg.png
deleted file mode 100644
index 749f51e..0000000
--- a/docs/html/tools/sdk/images/4.0/gallery-share-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/gallery-share.png b/docs/html/tools/sdk/images/4.0/gallery-share.png
deleted file mode 100644
index 443a70c..0000000
--- a/docs/html/tools/sdk/images/4.0/gallery-share.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/gallery-widget.png b/docs/html/tools/sdk/images/4.0/gallery-widget.png
deleted file mode 100644
index e72fd0d..0000000
--- a/docs/html/tools/sdk/images/4.0/gallery-widget.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/home-lg.png b/docs/html/tools/sdk/images/4.0/home-lg.png
deleted file mode 100644
index 5b9021d..0000000
--- a/docs/html/tools/sdk/images/4.0/home-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/home.png b/docs/html/tools/sdk/images/4.0/home.png
deleted file mode 100644
index cd24732..0000000
--- a/docs/html/tools/sdk/images/4.0/home.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/live-effects.png b/docs/html/tools/sdk/images/4.0/live-effects.png
deleted file mode 100644
index 11a0122..0000000
--- a/docs/html/tools/sdk/images/4.0/live-effects.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/lock-camera-lg.png b/docs/html/tools/sdk/images/4.0/lock-camera-lg.png
deleted file mode 100644
index c82cec6..0000000
--- a/docs/html/tools/sdk/images/4.0/lock-camera-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/lock-camera.png b/docs/html/tools/sdk/images/4.0/lock-camera.png
deleted file mode 100644
index d3cc153..0000000
--- a/docs/html/tools/sdk/images/4.0/lock-camera.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/lock-lg.png b/docs/html/tools/sdk/images/4.0/lock-lg.png
deleted file mode 100644
index b859e11..0000000
--- a/docs/html/tools/sdk/images/4.0/lock-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/lock.png b/docs/html/tools/sdk/images/4.0/lock.png
deleted file mode 100644
index d168826..0000000
--- a/docs/html/tools/sdk/images/4.0/lock.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/quick-responses-lg.png b/docs/html/tools/sdk/images/4.0/quick-responses-lg.png
deleted file mode 100644
index 39cea9a..0000000
--- a/docs/html/tools/sdk/images/4.0/quick-responses-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/quick-responses.png b/docs/html/tools/sdk/images/4.0/quick-responses.png
deleted file mode 100644
index d43f348..0000000
--- a/docs/html/tools/sdk/images/4.0/quick-responses.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/screenshot-lg.png b/docs/html/tools/sdk/images/4.0/screenshot-lg.png
deleted file mode 100644
index 30ac339..0000000
--- a/docs/html/tools/sdk/images/4.0/screenshot-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/screenshot.png b/docs/html/tools/sdk/images/4.0/screenshot.png
deleted file mode 100644
index b23c913..0000000
--- a/docs/html/tools/sdk/images/4.0/screenshot.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/tasks-lg.png b/docs/html/tools/sdk/images/4.0/tasks-lg.png
deleted file mode 100644
index 58b5c5d..0000000
--- a/docs/html/tools/sdk/images/4.0/tasks-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/tasks.png b/docs/html/tools/sdk/images/4.0/tasks.png
deleted file mode 100644
index 34a9d4a..0000000
--- a/docs/html/tools/sdk/images/4.0/tasks.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/text-replace-lg.png b/docs/html/tools/sdk/images/4.0/text-replace-lg.png
deleted file mode 100644
index 047d802..0000000
--- a/docs/html/tools/sdk/images/4.0/text-replace-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/text-replace.png b/docs/html/tools/sdk/images/4.0/text-replace.png
deleted file mode 100644
index d2bda3e..0000000
--- a/docs/html/tools/sdk/images/4.0/text-replace.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/tts-lg.png b/docs/html/tools/sdk/images/4.0/tts-lg.png
deleted file mode 100644
index 2f49051..0000000
--- a/docs/html/tools/sdk/images/4.0/tts-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/tts.png b/docs/html/tools/sdk/images/4.0/tts.png
deleted file mode 100644
index 3eae634..0000000
--- a/docs/html/tools/sdk/images/4.0/tts.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/usage-all-lg.png b/docs/html/tools/sdk/images/4.0/usage-all-lg.png
deleted file mode 100644
index fd7eeba..0000000
--- a/docs/html/tools/sdk/images/4.0/usage-all-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/usage-all.png b/docs/html/tools/sdk/images/4.0/usage-all.png
deleted file mode 100644
index 048db83..0000000
--- a/docs/html/tools/sdk/images/4.0/usage-all.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/usage-maps-lg.png b/docs/html/tools/sdk/images/4.0/usage-maps-lg.png
deleted file mode 100644
index b144370..0000000
--- a/docs/html/tools/sdk/images/4.0/usage-maps-lg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/4.0/usage-maps.png b/docs/html/tools/sdk/images/4.0/usage-maps.png
deleted file mode 100644
index a6dcd21..0000000
--- a/docs/html/tools/sdk/images/4.0/usage-maps.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/battery.png b/docs/html/tools/sdk/images/battery.png
deleted file mode 100644
index 10fd16b..0000000
--- a/docs/html/tools/sdk/images/battery.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/camera.png b/docs/html/tools/sdk/images/camera.png
deleted file mode 100644
index 6078388..0000000
--- a/docs/html/tools/sdk/images/camera.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/donut_small_bg.png b/docs/html/tools/sdk/images/donut_small_bg.png
deleted file mode 100644
index f514b50..0000000
--- a/docs/html/tools/sdk/images/donut_small_bg.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/market.png b/docs/html/tools/sdk/images/market.png
deleted file mode 100644
index 8d11134..0000000
--- a/docs/html/tools/sdk/images/market.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/images/search.png b/docs/html/tools/sdk/images/search.png
deleted file mode 100644
index 10ab910..0000000
--- a/docs/html/tools/sdk/images/search.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/sdk/ndk/index.jd b/docs/html/tools/sdk/ndk/index.jd
index f3c9a44..cb4954b 100644
--- a/docs/html/tools/sdk/ndk/index.jd
+++ b/docs/html/tools/sdk/ndk/index.jd
@@ -1,4 +1,5 @@
 ndk=true
+page.template=sdk
 
 ndk.win_download=android-ndk-r8d-windows.zip
 ndk.win_bytes=327014028
diff --git a/docs/html/tools/sdk/preview/index.jd b/docs/html/tools/sdk/preview/index.jd
index ed8f7e0..d96df93 100644
--- a/docs/html/tools/sdk/preview/index.jd
+++ b/docs/html/tools/sdk/preview/index.jd
@@ -1,2 +1,3 @@
 sdk.redirect=true
+page.template=sdk
 @jd:body
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
index 9349a4e..a5b7eee 100644
--- a/docs/html/tools/sdk/tools-notes.jd
+++ b/docs/html/tools/sdk/tools-notes.jd
@@ -28,6 +28,41 @@
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+      alt=""/>SDK Tools, Revision 21.1.0</a> <em>(February 2013)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <dl>
+    <dt>Dependencies:</dt>
+    <dd>
+      <ul>
+        <li>Android SDK Platform-tools revision 16 or later.</li>
+        <li>If you are developing in Eclipse with ADT, note that the SDK Tools r21.1.0 is
+          designed for use with ADT 21.1.0 and later. If you haven't already, update your
+        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.1.0.</li>
+        <li>If you are developing outside Eclipse, you must have
+          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
+    </ul>
+    </dd>
+
+    <dt>General Notes:</dt>
+    <dd>
+      <ul>
+        <li>Improved error reporting in {@code dx} when dex merging fails in the build
+          system.</li>
+        <li>Added more than 15 new Lint checks, including checks for overriding older APIs, XML
+          resource problems, graphic asset issues and manifest tags.</li>
+        <li>Added new aapt feature to compile resources.</li>
+      </ul>
+    </dd>
+    </dl>
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 21.0.1</a> <em>(December 2012)</em>
   </p>
 
@@ -40,7 +75,7 @@
         <li>Android SDK Platform-tools revision 16 or later.</li>
         <li>If you are developing in Eclipse with ADT, note that the SDK Tools r21.0.1 is
           designed for use with ADT 21.0.1 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.0.0.</li>
+        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.0.1.</li>
         <li>If you are developing outside Eclipse, you must have
           <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
     </ul>
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
index 4baa9c3..91a018c 100644
--- a/docs/html/tools/tools_toc.cs
+++ b/docs/html/tools/tools_toc.cs
@@ -32,33 +32,33 @@
 
   <li class="nav-section">
     <div class="nav-section-header">
-        <a href="/tools/workflow/index.html"><span class="en">Workflow</span></a>
+        <a href="<?cs var:toroot ?>tools/workflow/index.html"><span class="en">Workflow</span></a>
     </div>
     <ul>
       <li class="nav-section">
-        <div class="nav-section-header"><a href="/tools/devices/index.html"><span class="en">Setting Up Virtual Devices</span></a></div>
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/devices/index.html"><span class="en">Setting Up Virtual Devices</span></a></div>
         <ul>
-          <li><a href="/tools/devices/managing-avds.html"><span class="en">With AVD Manager</span></a></li>
-          <li><a href="/tools/devices/managing-avds-cmdline.html"><span class="en">From the Command Line</span></a></li>
-          <li><a href="/tools/devices/emulator.html"><span class="en">Using the Android Emulator</span></a></li>
+          <li><a href="<?cs var:toroot ?>tools/devices/managing-avds.html"><span class="en">With AVD Manager</span></a></li>
+          <li><a href="<?cs var:toroot ?>tools/devices/managing-avds-cmdline.html"><span class="en">From the Command Line</span></a></li>
+          <li><a href="<?cs var:toroot ?>tools/devices/emulator.html"><span class="en">Using the Android Emulator</span></a></li>
         </ul>
       </li>
-      <li><a href="/tools/device.html"><span class="en">Using Hardware Devices</span></a></li>
+      <li><a href="<?cs var:toroot ?>tools/device.html"><span class="en">Using Hardware Devices</span></a></li>
       <li class="nav-section">
-        <div class="nav-section-header"><a href="/tools/projects/index.html"><span class="en">Setting Up Projects</span></a></div>
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/projects/index.html"><span class="en">Setting Up Projects</span></a></div>
         <ul>
-          <li><a href="/tools/projects/projects-eclipse.html"><span class="en">From Eclipse with ADT</span></a></li>
-          <li><a href="/tools/projects/projects-cmdline.html"><span class="en">From the Command Line</span></a></li>
-          <li><a href="/tools/projects/templates.html"><span class="en">Using Code Templates</span></a></li>
+          <li><a href="<?cs var:toroot ?>tools/projects/projects-eclipse.html"><span class="en">From Eclipse with ADT</span></a></li>
+          <li><a href="<?cs var:toroot ?>tools/projects/projects-cmdline.html"><span class="en">From the Command Line</span></a></li>
+          <li><a href="<?cs var:toroot ?>tools/projects/templates.html"><span class="en">Using Code Templates</span></a></li>
         </ul>
       </li>
 
 
       <li class="nav-section">
-        <div class="nav-section-header"><a href="/tools/building/index.html"><span class="en">Building and Running</span></a></div>
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/building/index.html"><span class="en">Building and Running</span></a></div>
         <ul>
-          <li><a href="/tools/building/building-eclipse.html"><span class="en">From Eclipse with ADT</span></a></li>
-          <li><a href="/tools/building/building-cmdline.html"><span class="en">From the Command Line</span></a></li>
+          <li><a href="<?cs var:toroot ?>tools/building/building-eclipse.html"><span class="en">From Eclipse with ADT</span></a></li>
+          <li><a href="<?cs var:toroot ?>tools/building/building-cmdline.html"><span class="en">From the Command Line</span></a></li>
         </ul>
       </li>
 
diff --git a/docs/html/tools/workflow/publishing/publishing.jd b/docs/html/tools/workflow/publishing/publishing.jd
index 400f56f..649e80d 100644
--- a/docs/html/tools/workflow/publishing/publishing.jd
+++ b/docs/html/tools/workflow/publishing/publishing.jd
@@ -58,11 +58,11 @@
 publish it on an application marketplace like Google Play. Publishing on Google Play is a
 straightforward process that you can do in just a few simple steps&mdash;register, configure,
 upload, and publish. Registration takes only a few minutes and needs to be done only once.
-The configuration and publishing steps can all be done through the Google Play Android Developer Console
+The configuration and publishing steps can all be done through the Google Play Developer Console
 after you register as a Google Play developer.</p>
 
 <p>To start publishing on Google Play, first read this topic and then go to the <a
-href="https://play.google.com/apps/publish">Google Play Android Developer Console</a> and register as
+href="https://play.google.com/apps/publish">Google Play Developer Console</a> and register as
 a Google Play developer.</p>
 
 
@@ -632,21 +632,21 @@
 
 <div class="button-row">
   <input type="radio" name="buttonStyle" value="get_it_on_play_logo_small" id="ns" checked="checked" />
-    <label for="ns"><img src="http://www.android.com/images/brand/get_it_on_play_logo_small.png"
+    <label for="ns"><img src="//www.android.com/images/brand/get_it_on_play_logo_small.png"
 alt="Get it on Google Play (small)" /></label>
     &nbsp;&nbsp;&nbsp;&nbsp;
   <input type="radio" name="buttonStyle" value="get_it_on_play_logo_large" id="nm" />
-    <label for="nm"><img src="http://www.android.com/images/brand/get_it_on_play_logo_large.png"
+    <label for="nm"><img src="//www.android.com/images/brand/get_it_on_play_logo_large.png"
 alt="Get it on Google Play (large)" /></label>
 </div>
 
 <div class="button-row">
   <input type="radio" name="buttonStyle" value="android_app_on_play_logo_small" id="ws" />
-    <label for="ws"><img src="http://www.android.com/images/brand/android_app_on_play_logo_small.png"
+    <label for="ws"><img src="//www.android.com/images/brand/android_app_on_play_logo_small.png"
 alt="Android app on Google Play (small)" /></label>
     &nbsp;&nbsp;&nbsp;&nbsp;
   <input type="radio" name="buttonStyle" value="android_app_on_play_logo_large" id="wm" />
-    <label for="wm"><img src="http://www.android.com/images/brand/android_app_on_play_logo_large.png"
+    <label for="wm"><img src="//www.android.com/images/brand/android_app_on_play_logo_large.png"
 alt="Android app on Google Play (large)" /></label>
 </div>
 
diff --git a/docs/html/training/gestures/scroll.jd b/docs/html/training/gestures/scroll.jd
index 955495a..8576948 100644
--- a/docs/html/training/gestures/scroll.jd
+++ b/docs/html/training/gestures/scroll.jd
@@ -45,13 +45,7 @@
 
 <p>You can use scrollers ({@link android.widget.Scroller} or {@link
 android.widget.OverScroller}) to collect the data you need to produce a
-scrolling animation in response to a touch event. {@link
-android.widget.Scroller} and {@link android.widget.OverScroller} are largely
-interchangeable&mdash;the difference is that {@link android.widget.OverScroller}
-allows temporarily scrolling beyond the minimum/maximum boundaries and springing
-back to the bounds. This is normally rendered using a "glow" effect, provided by
-the {@link android.widget.EdgeEffect} or {@link
-android.support.v4.widget.EdgeEffectCompat} classes. </p>
+scrolling animation in response to a touch event.</p>
 
 <p>A scroller is used  to animate scrolling over time, using platform-standard
 scrolling physics (friction, velocity, etc.). The scroller itself doesn't
@@ -157,5 +151,4 @@
 }</pre>
 
 <p>For another example of scroller usage, see the <a href="http://github.com/android/platform_frameworks_support/blob/master/v4/java/android/support/v4/view/ViewPager.java">source code</a> for the 
-{@link android.support.v4.view.ViewPager} class. It scrolls in response to flings, 
-and uses scrolling to implement the "snapping to page" animation.</p>
+{@link android.support.v4.view.ViewPager} class.</p>
diff --git a/graphics/java/android/graphics/BitmapFactory.java b/graphics/java/android/graphics/BitmapFactory.java
index 381e65b..905dc8e 100644
--- a/graphics/java/android/graphics/BitmapFactory.java
+++ b/graphics/java/android/graphics/BitmapFactory.java
@@ -49,12 +49,14 @@
          * If set, decode methods that take the Options object will attempt to
          * reuse this bitmap when loading content. If the decode operation cannot
          * use this bitmap, the decode method will return <code>null</code> and
-         * will throw an IllegalArgumentException. The
-         * current implementation necessitates that the reused bitmap be of the
-         * same size as the source content and in jpeg or png format (whether as a
-         * resource or as a stream). The {@link android.graphics.Bitmap.Config
+         * will throw an IllegalArgumentException. The current implementation
+         * necessitates that the reused bitmap be mutable and of the same size as the
+         * source content. The source content must be in jpeg or png format (whether as
+         * a resource or as a stream). The {@link android.graphics.Bitmap.Config
          * configuration} of the reused bitmap will override the setting of
-         * {@link #inPreferredConfig}, if set.
+         * {@link #inPreferredConfig}, if set. The reused bitmap will continue to
+         * remain mutable even when decoding a resource which would normally result
+         * in an immutable bitmap.
          *
          * <p>You should still always use the returned Bitmap of the decode
          * method and not assume that reusing the bitmap worked, due to the
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index 3949afd..8cbf299 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -62,18 +62,6 @@
     @SuppressWarnings({"UnusedDeclaration"})
     private int mSurfaceFormat;
 
-    /**
-     * Flag for drawTextRun indicating left-to-right run direction.
-     * @hide
-     */
-    public static final int DIRECTION_LTR = 0;
-    
-    /**
-     * Flag for drawTextRun indicating right-to-left run direction.
-     * @hide
-     */
-    public static final int DIRECTION_RTL = 1;
-
     // Maximum bitmap size as defined in Skia's native code
     // (see SkCanvas.cpp, SkDraw.cpp)
     private static final int MAXMIMUM_BITMAP_SIZE = 32766;
@@ -1328,8 +1316,7 @@
             (text.length - index - count)) < 0) {
             throw new IndexOutOfBoundsException();
         }
-        native_drawText(mNativeCanvas, text, index, count, x, y, paint.mBidiFlags,
-                paint.mNativePaint);
+        native_drawText(mNativeCanvas, text, index, count, x, y, paint.mNativePaint);
     }
 
     /**
@@ -1342,8 +1329,7 @@
      * @param paint The paint used for the text (e.g. color, size, style)
      */
     public void drawText(String text, float x, float y, Paint paint) {
-        native_drawText(mNativeCanvas, text, 0, text.length(), x, y, paint.mBidiFlags,
-                paint.mNativePaint);
+        native_drawText(mNativeCanvas, text, 0, text.length(), x, y, paint.mNativePaint);
     }
 
     /**
@@ -1361,8 +1347,7 @@
         if ((start | end | (end - start) | (text.length() - end)) < 0) {
             throw new IndexOutOfBoundsException();
         }
-        native_drawText(mNativeCanvas, text, start, end, x, y, paint.mBidiFlags,
-                paint.mNativePaint);
+        native_drawText(mNativeCanvas, text, start, end, x, y, paint.mNativePaint);
     }
 
     /**
@@ -1381,16 +1366,14 @@
     public void drawText(CharSequence text, int start, int end, float x, float y, Paint paint) {
         if (text instanceof String || text instanceof SpannedString ||
             text instanceof SpannableString) {
-            native_drawText(mNativeCanvas, text.toString(), start, end, x, y,
-                            paint.mBidiFlags, paint.mNativePaint);
+            native_drawText(mNativeCanvas, text.toString(), start, end, x, y, paint.mNativePaint);
         } else if (text instanceof GraphicsOperations) {
             ((GraphicsOperations) text).drawText(this, start, end, x, y,
                                                      paint);
         } else {
             char[] buf = TemporaryBuffer.obtain(end - start);
             TextUtils.getChars(text, start, end, buf, 0);
-            native_drawText(mNativeCanvas, buf, 0, end - start, x, y,
-                    paint.mBidiFlags, paint.mNativePaint);
+            native_drawText(mNativeCanvas, buf, 0, end - start, x, y, paint.mNativePaint);
             TemporaryBuffer.recycle(buf);
         }
     }
@@ -1411,13 +1394,11 @@
      *         + count.
      * @param x the x position at which to draw the text
      * @param y the y position at which to draw the text
-     * @param dir the run direction, either {@link #DIRECTION_LTR} or
-     *         {@link #DIRECTION_RTL}.
      * @param paint the paint
      * @hide
      */
     public void drawTextRun(char[] text, int index, int count, int contextIndex, int contextCount,
-            float x, float y, int dir, Paint paint) {
+            float x, float y, Paint paint) {
 
         if (text == null) {
             throw new NullPointerException("text is null");
@@ -1428,12 +1409,9 @@
         if ((index | count | text.length - index - count) < 0) {
             throw new IndexOutOfBoundsException();
         }
-        if (dir != DIRECTION_LTR && dir != DIRECTION_RTL) {
-            throw new IllegalArgumentException("unknown dir: " + dir);
-        }
 
         native_drawTextRun(mNativeCanvas, text, index, count,
-                contextIndex, contextCount, x, y, dir, paint.mNativePaint);
+                contextIndex, contextCount, x, y, paint.mNativePaint);
     }
 
     /**
@@ -1449,12 +1427,11 @@
      *            position can be used for shaping context.
      * @param x the x position at which to draw the text
      * @param y the y position at which to draw the text
-     * @param dir the run direction, either 0 for LTR or 1 for RTL.
      * @param paint the paint
      * @hide
      */
     public void drawTextRun(CharSequence text, int start, int end, int contextStart, int contextEnd,
-            float x, float y, int dir, Paint paint) {
+            float x, float y, Paint paint) {
 
         if (text == null) {
             throw new NullPointerException("text is null");
@@ -1466,22 +1443,20 @@
             throw new IndexOutOfBoundsException();
         }
 
-        int flags = dir == 0 ? 0 : 1;
-
         if (text instanceof String || text instanceof SpannedString ||
                 text instanceof SpannableString) {
             native_drawTextRun(mNativeCanvas, text.toString(), start, end,
-                    contextStart, contextEnd, x, y, flags, paint.mNativePaint);
+                    contextStart, contextEnd, x, y, paint.mNativePaint);
         } else if (text instanceof GraphicsOperations) {
             ((GraphicsOperations) text).drawTextRun(this, start, end,
-                    contextStart, contextEnd, x, y, flags, paint);
+                    contextStart, contextEnd, x, y, paint);
         } else {
             int contextLen = contextEnd - contextStart;
             int len = end - start;
             char[] buf = TemporaryBuffer.obtain(contextLen);
             TextUtils.getChars(text, contextStart, contextEnd, buf, 0);
             native_drawTextRun(mNativeCanvas, buf, start - contextStart, len,
-                    0, contextLen, x, y, flags, paint.mNativePaint);
+                    0, contextLen, x, y, paint.mNativePaint);
             TemporaryBuffer.recycle(buf);
         }
     }
@@ -1547,8 +1522,7 @@
             throw new ArrayIndexOutOfBoundsException();
         }
         native_drawTextOnPath(mNativeCanvas, text, index, count,
-                              path.ni(), hOffset, vOffset,
-                              paint.mBidiFlags, paint.mNativePaint);
+                              path.ni(), hOffset, vOffset, paint.mNativePaint);
     }
 
     /**
@@ -1567,7 +1541,7 @@
     public void drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) {
         if (text.length() > 0) {
             native_drawTextOnPath(mNativeCanvas, text, path.ni(), hOffset, vOffset,
-                    paint.mBidiFlags, paint.mNativePaint);
+                    paint.mNativePaint);
         }
     }
 
@@ -1728,18 +1702,18 @@
     
     private static native void native_drawText(int nativeCanvas, char[] text,
                                                int index, int count, float x,
-                                               float y, int flags, int paint);
+                                               float y, int paint);
     private static native void native_drawText(int nativeCanvas, String text,
                                                int start, int end, float x,
-                                               float y, int flags, int paint);
+                                               float y, int paint);
 
     private static native void native_drawTextRun(int nativeCanvas, String text,
             int start, int end, int contextStart, int contextEnd,
-            float x, float y, int flags, int paint);
+            float x, float y, int paint);
 
     private static native void native_drawTextRun(int nativeCanvas, char[] text,
             int start, int count, int contextStart, int contextCount,
-            float x, float y, int flags, int paint);
+            float x, float y, int paint);
 
     private static native void native_drawPosText(int nativeCanvas,
                                                   char[] text, int index,
@@ -1752,13 +1726,13 @@
                                                      char[] text, int index,
                                                      int count, int path,
                                                      float hOffset,
-                                                     float vOffset, int bidiFlags,
+                                                     float vOffset,
                                                      int paint);
     private static native void native_drawTextOnPath(int nativeCanvas,
                                                      String text, int path,
                                                      float hOffset, 
                                                      float vOffset, 
-                                                     int flags, int paint);
+                                                     int paint);
     private static native void native_drawPicture(int nativeCanvas,
                                                   int nativePicture);
     private static native void finalizer(int nativeCanvas);
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index 3285e51..3a83d12 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -69,11 +69,6 @@
      */
     public int shadowColor;
 
-    /**
-     * @hide
-     */
-    public  int         mBidiFlags = BIDI_DEFAULT_LTR;
-    
     static final Style[] sStyleArray = {
         Style.FILL, Style.STROKE, Style.FILL_AND_STROKE
     };
@@ -120,74 +115,6 @@
     public static final int HINTING_ON = 0x1;
 
     /**
-     * Bidi flag to set LTR paragraph direction.
-     * 
-     * @hide
-     */
-    public static final int BIDI_LTR = 0x0;
-
-    /**
-     * Bidi flag to set RTL paragraph direction.
-     * 
-     * @hide
-     */
-    public static final int BIDI_RTL = 0x1;
-
-    /**
-     * Bidi flag to detect paragraph direction via heuristics, defaulting to
-     * LTR.
-     * 
-     * @hide
-     */
-    public static final int BIDI_DEFAULT_LTR = 0x2;
-
-    /**
-     * Bidi flag to detect paragraph direction via heuristics, defaulting to
-     * RTL.
-     * 
-     * @hide
-     */
-    public static final int BIDI_DEFAULT_RTL = 0x3;
-
-    /**
-     * Bidi flag to override direction to all LTR (ignore bidi).
-     * 
-     * @hide
-     */
-    public static final int BIDI_FORCE_LTR = 0x4;
-
-    /**
-     * Bidi flag to override direction to all RTL (ignore bidi).
-     * 
-     * @hide
-     */
-    public static final int BIDI_FORCE_RTL = 0x5;
-
-    /**
-     * Maximum Bidi flag value.
-     * @hide
-     */
-    private static final int BIDI_MAX_FLAG_VALUE = BIDI_FORCE_RTL;
-
-    /**
-     * Mask for bidi flags.
-     * @hide
-     */
-    private static final int BIDI_FLAG_MASK = 0x7;
-
-    /**
-     * Flag for getTextRunAdvances indicating left-to-right run direction.
-     * @hide
-     */
-    public static final int DIRECTION_LTR = 0;
-
-    /**
-     * Flag for getTextRunAdvances indicating right-to-left run direction.
-     * @hide
-     */
-    public static final int DIRECTION_RTL = 1;
-
-    /**
      * Option for getTextRunCursor to compute the valid cursor after
      * offset or the limit of the context, whichever is less.
      * @hide
@@ -395,7 +322,6 @@
         shadowRadius = 0;
         shadowColor = 0;
 
-        mBidiFlags = BIDI_DEFAULT_LTR;
         setTextLocale(Locale.getDefault());
     }
     
@@ -435,7 +361,6 @@
         shadowRadius = paint.shadowRadius;
         shadowColor = paint.shadowColor;
 
-        mBidiFlags = paint.mBidiFlags;
         mLocale = paint.mLocale;
     }
 
@@ -452,29 +377,6 @@
     }
 
     /**
-     * Return the bidi flags on the paint.
-     * 
-     * @return the bidi flags on the paint
-     * @hide
-     */
-    public int getBidiFlags() {
-        return mBidiFlags;
-    }
-
-    /**
-     * Set the bidi flags on the paint.
-     * @hide
-     */
-    public void setBidiFlags(int flags) {
-        // only flag value is the 3-bit BIDI control setting
-        flags &= BIDI_FLAG_MASK;
-        if (flags > BIDI_MAX_FLAG_VALUE) {
-            throw new IllegalArgumentException("unknown bidi flag: " + flags);
-        }
-        mBidiFlags = flags;
-    }
-
-    /**
      * Return the paint's flags. Use the Flag enum to test flag values.
      * 
      * @return the paint's flags (see enums ending in _Flag for bit masks)
@@ -1666,76 +1568,19 @@
     }
 
     /**
-     * Return the glyph Ids for the characters in the string.
-     *
-     * @param text   The text to measure
-     * @param start  The index of the first char to to measure
-     * @param end    The end of the text slice to measure
-     * @param contextStart the index of the first character to use for shaping context,
-     * must be <= start
-     * @param contextEnd the index past the last character to use for shaping context,
-     * must be >= end
-     * @param flags the flags to control the advances, either {@link #DIRECTION_LTR}
-     * or {@link #DIRECTION_RTL}
-     * @param glyphs array to receive the glyph Ids of the characters.
-     *               Must be at least a large as the text.
-     * @return       the number of glyphs in the returned array
-     *
-     * @hide
-     *
-     * Used only for BiDi / RTL Tests
-     */
-    public int getTextGlyphs(String text, int start, int end, int contextStart, int contextEnd,
-            int flags, char[] glyphs) {
-        if (text == null) {
-            throw new IllegalArgumentException("text cannot be null");
-        }
-        if (flags != DIRECTION_LTR && flags != DIRECTION_RTL) {
-            throw new IllegalArgumentException("unknown flags value: " + flags);
-        }
-        if ((start | end | contextStart | contextEnd | (end - start)
-                | (start - contextStart) | (contextEnd - end) | (text.length() - end)
-                | (text.length() - contextEnd)) < 0) {
-            throw new IndexOutOfBoundsException();
-        }
-        if (end - start > glyphs.length) {
-            throw new ArrayIndexOutOfBoundsException();
-        }
-        return native_getTextGlyphs(mNativePaint, text, start, end, contextStart, contextEnd,
-                flags, glyphs);
-    }
-
-    /**
      * Convenience overload that takes a char array instead of a
      * String.
      *
-     * @see #getTextRunAdvances(String, int, int, int, int, int, float[], int)
+     * @see #getTextRunAdvances(String, int, int, int, int, float[], int)
      * @hide
      */
     public float getTextRunAdvances(char[] chars, int index, int count,
-            int contextIndex, int contextCount, int flags, float[] advances,
+            int contextIndex, int contextCount, float[] advances,
             int advancesIndex) {
-        return getTextRunAdvances(chars, index, count, contextIndex, contextCount, flags,
-                advances, advancesIndex, 0 /* use Harfbuzz*/);
-    }
-
-    /**
-     * Convenience overload that takes a char array instead of a
-     * String.
-     *
-     * @see #getTextRunAdvances(String, int, int, int, int, int, float[], int, int)
-     * @hide
-     */
-    public float getTextRunAdvances(char[] chars, int index, int count,
-            int contextIndex, int contextCount, int flags, float[] advances,
-            int advancesIndex, int reserved) {
 
         if (chars == null) {
             throw new IllegalArgumentException("text cannot be null");
         }
-        if (flags != DIRECTION_LTR && flags != DIRECTION_RTL) {
-            throw new IllegalArgumentException("unknown flags value: " + flags);
-        }
         if ((index | count | contextIndex | contextCount | advancesIndex
                 | (index - contextIndex) | (contextCount - count)
                 | ((contextIndex + contextCount) - (index + count))
@@ -1750,13 +1595,13 @@
         }
         if (!mHasCompatScaling) {
             return native_getTextRunAdvances(mNativePaint, chars, index, count,
-                    contextIndex, contextCount, flags, advances, advancesIndex, reserved);
+                    contextIndex, contextCount, advances, advancesIndex);
         }
 
         final float oldSize = getTextSize();
         setTextSize(oldSize * mCompatScaling);
         float res = native_getTextRunAdvances(mNativePaint, chars, index, count,
-                contextIndex, contextCount, flags, advances, advancesIndex, reserved);
+                contextIndex, contextCount, advances, advancesIndex);
         setTextSize(oldSize);
 
         if (advances != null) {
@@ -1771,26 +1616,12 @@
      * Convenience overload that takes a CharSequence instead of a
      * String.
      *
-     * @see #getTextRunAdvances(String, int, int, int, int, int, float[], int)
+     * @see #getTextRunAdvances(String, int, int, int, int, float[], int)
      * @hide
      */
     public float getTextRunAdvances(CharSequence text, int start, int end,
-            int contextStart, int contextEnd, int flags, float[] advances,
+            int contextStart, int contextEnd, float[] advances,
             int advancesIndex) {
-        return getTextRunAdvances(text, start, end, contextStart, contextEnd, flags,
-                advances, advancesIndex, 0 /* use Harfbuzz */);
-    }
-
-    /**
-     * Convenience overload that takes a CharSequence instead of a
-     * String.
-     *
-     * @see #getTextRunAdvances(String, int, int, int, int, int, float[], int)
-     * @hide
-     */
-    public float getTextRunAdvances(CharSequence text, int start, int end,
-            int contextStart, int contextEnd, int flags, float[] advances,
-            int advancesIndex, int reserved) {
 
         if (text == null) {
             throw new IllegalArgumentException("text cannot be null");
@@ -1805,16 +1636,16 @@
 
         if (text instanceof String) {
             return getTextRunAdvances((String) text, start, end,
-                    contextStart, contextEnd, flags, advances, advancesIndex, reserved);
+                    contextStart, contextEnd, advances, advancesIndex);
         }
         if (text instanceof SpannedString ||
             text instanceof SpannableString) {
             return getTextRunAdvances(text.toString(), start, end,
-                    contextStart, contextEnd, flags, advances, advancesIndex, reserved);
+                    contextStart, contextEnd, advances, advancesIndex);
         }
         if (text instanceof GraphicsOperations) {
             return ((GraphicsOperations) text).getTextRunAdvances(start, end,
-                    contextStart, contextEnd, flags, advances, advancesIndex, this);
+                    contextStart, contextEnd, advances, advancesIndex, this);
         }
         if (text.length() == 0 || end == start) {
             return 0f;
@@ -1825,7 +1656,7 @@
         char[] buf = TemporaryBuffer.obtain(contextLen);
         TextUtils.getChars(text, contextStart, contextEnd, buf, 0);
         float result = getTextRunAdvances(buf, start - contextStart, len,
-                0, contextLen, flags, advances, advancesIndex, reserved);
+                0, contextLen, advances, advancesIndex);
         TemporaryBuffer.recycle(buf);
         return result;
     }
@@ -1862,8 +1693,6 @@
      * must be <= start
      * @param contextEnd the index past the last character to use for shaping context,
      * must be >= end
-     * @param flags the flags to control the advances, either {@link #DIRECTION_LTR}
-     * or {@link #DIRECTION_RTL}
      * @param advances array to receive the advances, must have room for all advances,
      * can be null if only total advance is needed
      * @param advancesIndex the position in advances at which to put the
@@ -1873,63 +1702,11 @@
      * @hide
      */
     public float getTextRunAdvances(String text, int start, int end, int contextStart,
-            int contextEnd, int flags, float[] advances, int advancesIndex) {
-        return getTextRunAdvances(text, start, end, contextStart, contextEnd, flags,
-                advances, advancesIndex, 0 /* use Harfbuzz*/);
-    }
-
-    /**
-     * Returns the total advance width for the characters in the run
-     * between start and end, and if advances is not null, the advance
-     * assigned to each of these characters (java chars).
-     *
-     * <p>The trailing surrogate in a valid surrogate pair is assigned
-     * an advance of 0.  Thus the number of returned advances is
-     * always equal to count, not to the number of unicode codepoints
-     * represented by the run.
-     *
-     * <p>In the case of conjuncts or combining marks, the total
-     * advance is assigned to the first logical character, and the
-     * following characters are assigned an advance of 0.
-     *
-     * <p>This generates the sum of the advances of glyphs for
-     * characters in a reordered cluster as the width of the first
-     * logical character in the cluster, and 0 for the widths of all
-     * other characters in the cluster.  In effect, such clusters are
-     * treated like conjuncts.
-     *
-     * <p>The shaping bounds limit the amount of context available
-     * outside start and end that can be used for shaping analysis.
-     * These bounds typically reflect changes in bidi level or font
-     * metrics across which shaping does not occur.
-     *
-     * @param text the text to measure. Cannot be null.
-     * @param start the index of the first character to measure
-     * @param end the index past the last character to measure
-     * @param contextStart the index of the first character to use for shaping context,
-     * must be <= start
-     * @param contextEnd the index past the last character to use for shaping context,
-     * must be >= end
-     * @param flags the flags to control the advances, either {@link #DIRECTION_LTR}
-     * or {@link #DIRECTION_RTL}
-     * @param advances array to receive the advances, must have room for all advances,
-     * can be null if only total advance is needed
-     * @param advancesIndex the position in advances at which to put the
-     * advance corresponding to the character at start
-     * @param reserved int reserved value
-     * @return the total advance
-     *
-     * @hide
-     */
-    public float getTextRunAdvances(String text, int start, int end, int contextStart,
-            int contextEnd, int flags, float[] advances, int advancesIndex, int reserved) {
+            int contextEnd, float[] advances, int advancesIndex) {
 
         if (text == null) {
             throw new IllegalArgumentException("text cannot be null");
         }
-        if (flags != DIRECTION_LTR && flags != DIRECTION_RTL) {
-            throw new IllegalArgumentException("unknown flags value: " + flags);
-        }
         if ((start | end | contextStart | contextEnd | advancesIndex | (end - start)
                 | (start - contextStart) | (contextEnd - end)
                 | (text.length() - contextEnd)
@@ -1944,13 +1721,13 @@
 
         if (!mHasCompatScaling) {
             return native_getTextRunAdvances(mNativePaint, text, start, end,
-                    contextStart, contextEnd, flags, advances, advancesIndex, reserved);
+                    contextStart, contextEnd, advances, advancesIndex);
         }
 
         final float oldSize = getTextSize();
         setTextSize(oldSize * mCompatScaling);
         float totalAdvance = native_getTextRunAdvances(mNativePaint, text, start, end,
-                contextStart, contextEnd, flags, advances, advancesIndex, reserved);
+                contextStart, contextEnd, advances, advancesIndex);
         setTextSize(oldSize);
 
         if (advances != null) {
@@ -1979,7 +1756,6 @@
      * @param text the text
      * @param contextStart the start of the context
      * @param contextLength the length of the context
-     * @param flags either {@link #DIRECTION_RTL} or {@link #DIRECTION_LTR}
      * @param offset the cursor position to move from
      * @param cursorOpt how to move the cursor, one of {@link #CURSOR_AFTER},
      * {@link #CURSOR_AT_OR_AFTER}, {@link #CURSOR_BEFORE},
@@ -1988,7 +1764,7 @@
      * @hide
      */
     public int getTextRunCursor(char[] text, int contextStart, int contextLength,
-            int flags, int offset, int cursorOpt) {
+            int offset, int cursorOpt) {
         int contextEnd = contextStart + contextLength;
         if (((contextStart | contextEnd | offset | (contextEnd - contextStart)
                 | (offset - contextStart) | (contextEnd - offset)
@@ -1998,7 +1774,7 @@
         }
 
         return native_getTextRunCursor(mNativePaint, text,
-                contextStart, contextLength, flags, offset, cursorOpt);
+                contextStart, contextLength, offset, cursorOpt);
     }
 
     /**
@@ -2019,7 +1795,6 @@
      * @param text the text
      * @param contextStart the start of the context
      * @param contextEnd the end of the context
-     * @param flags either {@link #DIRECTION_RTL} or {@link #DIRECTION_LTR}
      * @param offset the cursor position to move from
      * @param cursorOpt how to move the cursor, one of {@link #CURSOR_AFTER},
      * {@link #CURSOR_AT_OR_AFTER}, {@link #CURSOR_BEFORE},
@@ -2028,22 +1803,22 @@
      * @hide
      */
     public int getTextRunCursor(CharSequence text, int contextStart,
-           int contextEnd, int flags, int offset, int cursorOpt) {
+           int contextEnd, int offset, int cursorOpt) {
 
         if (text instanceof String || text instanceof SpannedString ||
                 text instanceof SpannableString) {
             return getTextRunCursor(text.toString(), contextStart, contextEnd,
-                    flags, offset, cursorOpt);
+                    offset, cursorOpt);
         }
         if (text instanceof GraphicsOperations) {
             return ((GraphicsOperations) text).getTextRunCursor(
-                    contextStart, contextEnd, flags, offset, cursorOpt, this);
+                    contextStart, contextEnd, offset, cursorOpt, this);
         }
 
         int contextLen = contextEnd - contextStart;
         char[] buf = TemporaryBuffer.obtain(contextLen);
         TextUtils.getChars(text, contextStart, contextEnd, buf, 0);
-        int result = getTextRunCursor(buf, 0, contextLen, flags, offset - contextStart, cursorOpt);
+        int result = getTextRunCursor(buf, 0, contextLen, offset - contextStart, cursorOpt);
         TemporaryBuffer.recycle(buf);
         return result;
     }
@@ -2066,7 +1841,6 @@
      * @param text the text
      * @param contextStart the start of the context
      * @param contextEnd the end of the context
-     * @param flags either {@link #DIRECTION_RTL} or {@link #DIRECTION_LTR}
      * @param offset the cursor position to move from
      * @param cursorOpt how to move the cursor, one of {@link #CURSOR_AFTER},
      * {@link #CURSOR_AT_OR_AFTER}, {@link #CURSOR_BEFORE},
@@ -2084,7 +1858,7 @@
         }
 
         return native_getTextRunCursor(mNativePaint, text,
-                contextStart, contextEnd, flags, offset, cursorOpt);
+                contextStart, contextEnd, offset, cursorOpt);
     }
 
     /**
@@ -2105,7 +1879,7 @@
         if ((index | count) < 0 || index + count > text.length) {
             throw new ArrayIndexOutOfBoundsException();
         }
-        native_getTextPath(mNativePaint, mBidiFlags, text, index, count, x, y, 
+        native_getTextPath(mNativePaint, text, index, count, x, y,
                 path.ni());
     }
 
@@ -2127,7 +1901,7 @@
         if ((start | end | (end - start) | (text.length() - end)) < 0) {
             throw new IndexOutOfBoundsException();
         }
-        native_getTextPath(mNativePaint, mBidiFlags, text, start, end, x, y, 
+        native_getTextPath(mNativePaint, text, start, end, x, y,
                 path.ni());
     }
     
@@ -2219,26 +1993,22 @@
     private static native int native_getTextWidths(int native_object,
                             String text, int start, int end, float[] widths);
 
-    private static native int native_getTextGlyphs(int native_object,
-            String text, int start, int end, int contextStart, int contextEnd,
-            int flags, char[] glyphs);
-
     private static native float native_getTextRunAdvances(int native_object,
             char[] text, int index, int count, int contextIndex, int contextCount,
-            int flags, float[] advances, int advancesIndex, int reserved);
+            float[] advances, int advancesIndex);
     private static native float native_getTextRunAdvances(int native_object,
             String text, int start, int end, int contextStart, int contextEnd,
-            int flags, float[] advances, int advancesIndex, int reserved);
+            float[] advances, int advancesIndex);
 
     private native int native_getTextRunCursor(int native_object, char[] text,
-            int contextStart, int contextLength, int flags, int offset, int cursorOpt);
+            int contextStart, int contextLength, int offset, int cursorOpt);
     private native int native_getTextRunCursor(int native_object, String text,
-            int contextStart, int contextEnd, int flags, int offset, int cursorOpt);
+            int contextStart, int contextEnd, int offset, int cursorOpt);
 
-    private static native void native_getTextPath(int native_object, int bidiFlags,
-                char[] text, int index, int count, float x, float y, int path);
-    private static native void native_getTextPath(int native_object, int bidiFlags,
-                String text, int start, int end, float x, float y, int path);
+    private static native void native_getTextPath(int native_object, char[] text,
+            int index, int count, float x, float y, int path);
+    private static native void native_getTextPath(int native_object, String text,
+            int start, int end, float x, float y, int path);
     private static native void nativeGetStringBounds(int nativePaint,
                                 String text, int start, int end, Rect bounds);
     private static native void nativeGetCharArrayBounds(int nativePaint,
diff --git a/graphics/java/android/graphics/Region.java b/graphics/java/android/graphics/Region.java
index 9773039..72d0c43 100644
--- a/graphics/java/android/graphics/Region.java
+++ b/graphics/java/android/graphics/Region.java
@@ -87,7 +87,8 @@
     /** Set the region to the specified region.
     */
     public boolean set(Region region) {
-        return nativeSetRegion(mNativeRegion, region.mNativeRegion);
+        nativeSetRegion(mNativeRegion, region.mNativeRegion);
+        return true;
     }
 
     /** Set the region to the specified rectangle
@@ -406,8 +407,7 @@
     private static native int nativeConstructor();
     private static native void nativeDestructor(int native_region);
 
-    private static native boolean nativeSetRegion(int native_dst,
-                                                  int native_src);
+    private static native void nativeSetRegion(int native_dst, int native_src);
     private static native boolean nativeSetRect(int native_dst, int left,
                                                 int top, int right, int bottom);
     private static native boolean nativeSetPath(int native_dst, int native_path,
diff --git a/graphics/java/android/graphics/drawable/BitmapDrawable.java b/graphics/java/android/graphics/drawable/BitmapDrawable.java
index 6e41d34..675c4b6 100644
--- a/graphics/java/android/graphics/drawable/BitmapDrawable.java
+++ b/graphics/java/android/graphics/drawable/BitmapDrawable.java
@@ -74,8 +74,8 @@
     
     /**
      * Create an empty drawable, not dealing with density.
-     * @deprecated Use {@link #BitmapDrawable(Resources)} to ensure
-     * that the drawable has correctly set its target density.
+     * @deprecated Use {@link #BitmapDrawable(android.content.res.Resources, android.graphics.Bitmap)}
+     * instead to specify a bitmap to draw with and ensure the correct density is set.
      */
     @Deprecated
     public BitmapDrawable() {
@@ -85,7 +85,10 @@
     /**
      * Create an empty drawable, setting initial target density based on
      * the display metrics of the resources.
+     * @deprecated Use {@link #BitmapDrawable(android.content.res.Resources, android.graphics.Bitmap)}
+     * instead to specify a bitmap to draw with.
      */
+    @Deprecated
     @SuppressWarnings({"UnusedParameters"})
     public BitmapDrawable(Resources res) {
         mBitmapState = new BitmapState((Bitmap) null);
diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java
index 54d1bf5..37f2250 100644
--- a/graphics/java/android/graphics/drawable/Drawable.java
+++ b/graphics/java/android/graphics/drawable/Drawable.java
@@ -868,6 +868,7 @@
         } else if (name.equals("inset")) {
             drawable = new InsetDrawable();
         } else if (name.equals("bitmap")) {
+            //noinspection deprecation
             drawable = new BitmapDrawable(r);
             if (r != null) {
                ((BitmapDrawable) drawable).setTargetDensity(r.getDisplayMetrics());
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java
index 5e9872f..1c83c51 100644
--- a/graphics/java/android/renderscript/Allocation.java
+++ b/graphics/java/android/renderscript/Allocation.java
@@ -67,7 +67,7 @@
  * <div class="special reference">
  * <h3>Developer Guides</h3>
  * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/graphics/renderscript.html">Renderscript</a> developer guide.</p>
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
  * </div>
  **/
 public class Allocation extends BaseObj {
@@ -488,7 +488,11 @@
      */
     public void copyFromUnchecked(int[] d) {
         mRS.validate();
-        copy1DRangeFromUnchecked(0, mCurrentCount, d);
+        if (mCurrentDimY > 0) {
+            copy2DRangeFromUnchecked(0, 0, mCurrentDimX, mCurrentDimY, d);
+        } else {
+            copy1DRangeFromUnchecked(0, mCurrentCount, d);
+        }
     }
     /**
      * Copy an allocation from an array.  This variant is not type
@@ -499,7 +503,11 @@
      */
     public void copyFromUnchecked(short[] d) {
         mRS.validate();
-        copy1DRangeFromUnchecked(0, mCurrentCount, d);
+        if (mCurrentDimY > 0) {
+            copy2DRangeFromUnchecked(0, 0, mCurrentDimX, mCurrentDimY, d);
+        } else {
+            copy1DRangeFromUnchecked(0, mCurrentCount, d);
+        }
     }
     /**
      * Copy an allocation from an array.  This variant is not type
@@ -510,7 +518,11 @@
      */
     public void copyFromUnchecked(byte[] d) {
         mRS.validate();
-        copy1DRangeFromUnchecked(0, mCurrentCount, d);
+        if (mCurrentDimY > 0) {
+            copy2DRangeFromUnchecked(0, 0, mCurrentDimX, mCurrentDimY, d);
+        } else {
+            copy1DRangeFromUnchecked(0, mCurrentCount, d);
+        }
     }
     /**
      * Copy an allocation from an array.  This variant is not type
@@ -521,7 +533,11 @@
      */
     public void copyFromUnchecked(float[] d) {
         mRS.validate();
-        copy1DRangeFromUnchecked(0, mCurrentCount, d);
+        if (mCurrentDimY > 0) {
+            copy2DRangeFromUnchecked(0, 0, mCurrentDimX, mCurrentDimY, d);
+        } else {
+            copy1DRangeFromUnchecked(0, mCurrentCount, d);
+        }
     }
 
     /**
@@ -533,7 +549,11 @@
      */
     public void copyFrom(int[] d) {
         mRS.validate();
-        copy1DRangeFrom(0, mCurrentCount, d);
+        if (mCurrentDimY > 0) {
+            copy2DRangeFrom(0, 0, mCurrentDimX, mCurrentDimY, d);
+        } else {
+            copy1DRangeFrom(0, mCurrentCount, d);
+        }
     }
 
     /**
@@ -545,7 +565,11 @@
      */
     public void copyFrom(short[] d) {
         mRS.validate();
-        copy1DRangeFrom(0, mCurrentCount, d);
+        if (mCurrentDimY > 0) {
+            copy2DRangeFrom(0, 0, mCurrentDimX, mCurrentDimY, d);
+        } else {
+            copy1DRangeFrom(0, mCurrentCount, d);
+        }
     }
 
     /**
@@ -557,7 +581,11 @@
      */
     public void copyFrom(byte[] d) {
         mRS.validate();
-        copy1DRangeFrom(0, mCurrentCount, d);
+        if (mCurrentDimY > 0) {
+            copy2DRangeFrom(0, 0, mCurrentDimX, mCurrentDimY, d);
+        } else {
+            copy1DRangeFrom(0, mCurrentCount, d);
+        }
     }
 
     /**
@@ -569,7 +597,11 @@
      */
     public void copyFrom(float[] d) {
         mRS.validate();
-        copy1DRangeFrom(0, mCurrentCount, d);
+        if (mCurrentDimY > 0) {
+            copy2DRangeFrom(0, 0, mCurrentDimX, mCurrentDimY, d);
+        } else {
+            copy1DRangeFrom(0, mCurrentCount, d);
+        }
     }
 
     /**
@@ -827,6 +859,35 @@
         }
     }
 
+    void copy2DRangeFromUnchecked(int xoff, int yoff, int w, int h, byte[] data) {
+        mRS.validate();
+        validate2DRange(xoff, yoff, w, h);
+        mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID,
+                              w, h, data, data.length);
+    }
+
+    void copy2DRangeFromUnchecked(int xoff, int yoff, int w, int h, short[] data) {
+        mRS.validate();
+        validate2DRange(xoff, yoff, w, h);
+        mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID,
+                              w, h, data, data.length * 2);
+    }
+
+    void copy2DRangeFromUnchecked(int xoff, int yoff, int w, int h, int[] data) {
+        mRS.validate();
+        validate2DRange(xoff, yoff, w, h);
+        mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID,
+                              w, h, data, data.length * 4);
+    }
+
+    void copy2DRangeFromUnchecked(int xoff, int yoff, int w, int h, float[] data) {
+        mRS.validate();
+        validate2DRange(xoff, yoff, w, h);
+        mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID,
+                              w, h, data, data.length * 4);
+    }
+
+
     /**
      * Copy a rectangular region from the array into the allocation.
      * The incoming array is assumed to be tightly packed.
@@ -838,31 +899,23 @@
      * @param data to be placed into the allocation
      */
     public void copy2DRangeFrom(int xoff, int yoff, int w, int h, byte[] data) {
-        mRS.validate();
-        validate2DRange(xoff, yoff, w, h);
-        mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID,
-                              w, h, data, data.length);
+        validateIsInt8();
+        copy2DRangeFromUnchecked(xoff, yoff, w, h, data);
     }
 
     public void copy2DRangeFrom(int xoff, int yoff, int w, int h, short[] data) {
-        mRS.validate();
-        validate2DRange(xoff, yoff, w, h);
-        mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID,
-                              w, h, data, data.length * 2);
+        validateIsInt16();
+        copy2DRangeFromUnchecked(xoff, yoff, w, h, data);
     }
 
     public void copy2DRangeFrom(int xoff, int yoff, int w, int h, int[] data) {
-        mRS.validate();
-        validate2DRange(xoff, yoff, w, h);
-        mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID,
-                              w, h, data, data.length * 4);
+        validateIsInt32();
+        copy2DRangeFromUnchecked(xoff, yoff, w, h, data);
     }
 
     public void copy2DRangeFrom(int xoff, int yoff, int w, int h, float[] data) {
-        mRS.validate();
-        validate2DRange(xoff, yoff, w, h);
-        mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID,
-                              w, h, data, data.length * 4);
+        validateIsFloat32();
+        copy2DRangeFromUnchecked(xoff, yoff, w, h, data);
     }
 
     /**
@@ -1466,6 +1519,10 @@
      * Creates a non-mipmapped renderscript allocation to use as a
      * graphics texture from the bitmap referenced by resource id
      *
+     * With target API version 18 or greater, this allocation will be
+     * created with USAGE_SHARED. With target API version 17 or lower,
+     * this allocation will be created with USAGE_GRAPHICS_TEXTURE.
+     *
      * @param rs Context to which the allocation will belong.
      * @param res application resources
      * @param id resource id to load the data from
@@ -1476,6 +1533,11 @@
     static public Allocation createFromBitmapResource(RenderScript rs,
                                                       Resources res,
                                                       int id) {
+        if (rs.getApplicationContext().getApplicationInfo().targetSdkVersion >= 18) {
+            return createFromBitmapResource(rs, res, id,
+                                            MipmapControl.MIPMAP_NONE,
+                                            USAGE_SHARED | USAGE_SCRIPT);
+        }
         return createFromBitmapResource(rs, res, id,
                                         MipmapControl.MIPMAP_NONE,
                                         USAGE_GRAPHICS_TEXTURE);
diff --git a/graphics/java/android/renderscript/Element.java b/graphics/java/android/renderscript/Element.java
index 20e716c..a79ce17 100644
--- a/graphics/java/android/renderscript/Element.java
+++ b/graphics/java/android/renderscript/Element.java
@@ -44,7 +44,7 @@
  * <div class="special reference">
  * <h3>Developer Guides</h3>
  * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/graphics/renderscript.html">Renderscript</a> developer guide.</p>
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
  * </div>
  **/
 public class Element extends BaseObj {
diff --git a/graphics/java/android/renderscript/FieldPacker.java b/graphics/java/android/renderscript/FieldPacker.java
index a215a57..0a7e882 100644
--- a/graphics/java/android/renderscript/FieldPacker.java
+++ b/graphics/java/android/renderscript/FieldPacker.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * 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.
@@ -29,6 +29,12 @@
         mData = new byte[len];
     }
 
+    public FieldPacker(byte[] data) {
+        mPos = 0;
+        mLen = data.length;
+        mData = data;
+    }
+
     public void align(int v) {
         if ((v <= 0) || ((v & (v - 1)) != 0)) {
             throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v);
diff --git a/graphics/java/android/renderscript/RSSurfaceView.java b/graphics/java/android/renderscript/RSSurfaceView.java
index 506f1af..82ed95c 100644
--- a/graphics/java/android/renderscript/RSSurfaceView.java
+++ b/graphics/java/android/renderscript/RSSurfaceView.java
@@ -36,7 +36,7 @@
  * <div class="special reference">
  * <h3>Developer Guides</h3>
  * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/graphics/renderscript.html">Renderscript</a> developer guide.</p>
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
  * </div>
  */
 public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index fa115ff..c3ddd32 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -41,7 +41,7 @@
  * <div class="special reference">
  * <h3>Developer Guides</h3>
  * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/graphics/renderscript.html">Renderscript</a> developer guide.</p>
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
  * </div>
  **/
 public class RenderScript {
@@ -157,6 +157,12 @@
         rsnContextFinish(mContext);
     }
 
+    native void rsnContextSendMessage(int con, int id, int[] data);
+    synchronized void nContextSendMessage(int id, int[] data) {
+        validate();
+        rsnContextSendMessage(mContext, id, data);
+    }
+
     native void rsnContextBindRootScript(int con, int script);
     synchronized void nContextBindRootScript(int script) {
         validate();
@@ -511,6 +517,10 @@
     }
     native void rsnScriptForEach(int con, int id, int slot, int ain, int aout, byte[] params);
     native void rsnScriptForEach(int con, int id, int slot, int ain, int aout);
+    native void rsnScriptForEachClipped(int con, int id, int slot, int ain, int aout, byte[] params,
+                                        int xstart, int xend, int ystart, int yend, int zstart, int zend);
+    native void rsnScriptForEachClipped(int con, int id, int slot, int ain, int aout,
+                                        int xstart, int xend, int ystart, int yend, int zstart, int zend);
     synchronized void nScriptForEach(int id, int slot, int ain, int aout, byte[] params) {
         validate();
         if (params == null) {
@@ -519,6 +529,17 @@
             rsnScriptForEach(mContext, id, slot, ain, aout, params);
         }
     }
+
+    synchronized void nScriptForEachClipped(int id, int slot, int ain, int aout, byte[] params,
+                                            int xstart, int xend, int ystart, int yend, int zstart, int zend) {
+        validate();
+        if (params == null) {
+            rsnScriptForEachClipped(mContext, id, slot, ain, aout, xstart, xend, ystart, yend, zstart, zend);
+        } else {
+            rsnScriptForEachClipped(mContext, id, slot, ain, aout, params, xstart, xend, ystart, yend, zstart, zend);
+        }
+    }
+
     native void rsnScriptInvokeV(int con, int id, int slot, byte[] params);
     synchronized void nScriptInvokeV(int id, int slot, byte[] params) {
         validate();
@@ -824,6 +845,16 @@
     }
 
     /**
+     * @hide
+     *
+     * @param id
+     * @param data
+     */
+    public void sendMessage(int id, int[] data) {
+        nContextSendMessage(id, data);
+    }
+
+    /**
      * Runtime error base class.  An application should derive from this class
      * if it wishes to install an error handler.  When errors occur at runtime
      * the fields in this class will be filled and the run method called.
@@ -947,6 +978,7 @@
                         mRS.mErrorCallback.mErrorNum = subID;
                         mRS.mErrorCallback.run();
                     } else {
+                        android.util.Log.e(LOG_TAG, "non fatal RS error, " + e);
                         // Do not throw here. In these cases, we do not have
                         // a fatal error.
                     }
diff --git a/graphics/java/android/renderscript/RenderScriptGL.java b/graphics/java/android/renderscript/RenderScriptGL.java
index 12c8102..5269405 100644
--- a/graphics/java/android/renderscript/RenderScriptGL.java
+++ b/graphics/java/android/renderscript/RenderScriptGL.java
@@ -39,7 +39,7 @@
  * <div class="special reference">
  * <h3>Developer Guides</h3>
  * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/graphics/renderscript.html">Renderscript</a> developer guide.</p>
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
  * </div>
  **/
 public class RenderScriptGL extends RenderScript {
diff --git a/graphics/java/android/renderscript/Script.java b/graphics/java/android/renderscript/Script.java
index fe80967..b405588 100644
--- a/graphics/java/android/renderscript/Script.java
+++ b/graphics/java/android/renderscript/Script.java
@@ -166,6 +166,30 @@
         mRS.nScriptForEach(getID(mRS), slot, in_id, out_id, params);
     }
 
+    protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v, LaunchOptions sc) {
+        if (ain == null && aout == null) {
+            throw new RSIllegalArgumentException(
+                "At least one of ain or aout is required to be non-null.");
+        }
+
+        if (sc == null) {
+            forEach(slot, ain, aout, v);
+            return;
+        }
+        int in_id = 0;
+        if (ain != null) {
+            in_id = ain.getID(mRS);
+        }
+        int out_id = 0;
+        if (aout != null) {
+            out_id = aout.getID(mRS);
+        }
+        byte[] params = null;
+        if (v != null) {
+            params = v.getData();
+        }
+        mRS.nScriptForEachClipped(getID(mRS), slot, in_id, out_id, params, sc.xstart, sc.xend, sc.ystart, sc.yend, sc.zstart, sc.zend);
+    }
 
     Script(int id, RenderScript rs) {
         super(id, rs);
@@ -320,29 +344,43 @@
     }
 
     public static final class LaunchOptions {
-        protected int xstart = -1;
-        protected int ystart = -1;
-        protected int xend = -1 ;
-        protected int yend = -1;
+        protected int xstart = 0;
+        protected int ystart = 0;
+        protected int xend = 0;
+        protected int yend = 0;
+        protected int zstart = 0;
+        protected int zend = 0;
 
         protected int strategy;
 
-        public void setX(int xstartArg, int xendArg) {
+        public LaunchOptions setX(int xstartArg, int xendArg) {
             if (xstartArg < 0 || xendArg <= xstartArg) {
                 throw new RSIllegalArgumentException("Invalid dimensions");
             }
             xstart = xstartArg;
             xend = xendArg;
+            return this;
         }
 
-        public void setY(int ystartArg, int yendArg) {
+        public LaunchOptions setY(int ystartArg, int yendArg) {
             if (ystartArg < 0 || yendArg <= ystartArg) {
                 throw new RSIllegalArgumentException("Invalid dimensions");
             }
             ystart = ystartArg;
             yend = yendArg;
+            return this;
         }
 
+        public LaunchOptions setZ(int zstartArg, int zendArg) {
+            if (zstartArg < 0 || zendArg <= zstartArg) {
+                throw new RSIllegalArgumentException("Invalid dimensions");
+            }
+            zstart = zstartArg;
+            zend = zendArg;
+            return this;
+        }
+
+
         public int getXStart() {
             return xstart;
         }
@@ -355,6 +393,12 @@
         public int getYEnd() {
             return yend;
         }
+        public int getZStart() {
+            return zstart;
+        }
+        public int getZEnd() {
+            return zend;
+        }
 
     }
 }
diff --git a/graphics/java/android/renderscript/Type.java b/graphics/java/android/renderscript/Type.java
index cb12594..d1446f6 100644
--- a/graphics/java/android/renderscript/Type.java
+++ b/graphics/java/android/renderscript/Type.java
@@ -40,7 +40,7 @@
  * <div class="special reference">
  * <h3>Developer Guides</h3>
  * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/graphics/renderscript.html">Renderscript</a> developer guide.</p>
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
  * </div>
  **/
 public class Type extends BaseObj {
diff --git a/graphics/java/android/renderscript/package.html b/graphics/java/android/renderscript/package.html
index 775645f..5eab23c 100644
--- a/graphics/java/android/renderscript/package.html
+++ b/graphics/java/android/renderscript/package.html
@@ -4,7 +4,7 @@
 carrying out mathematical calculations and 3D graphics rendering.</p>
 
 <p>For more information, see the
-<a href="{@docRoot}guide/topics/graphics/renderscript.html">Renderscript</a> developer guide.</p>
+<a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
 {@more}
 
 <p>An example of Renderscript in applications include the 3D carousel view that is present in
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 54413b4..8830685 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -346,6 +346,23 @@
     rsContextDeinitToClient(con);
 }
 
+static void
+nContextSendMessage(JNIEnv *_env, jobject _this, RsContext con, jint id, jintArray data)
+{
+    jint *ptr = NULL;
+    jint len = 0;
+    if (data) {
+        len = _env->GetArrayLength(data);
+        jint *ptr = _env->GetIntArrayElements(data, NULL);
+    }
+    LOG_API("nContextSendMessage, con(%p), id(%i), len(%i)", con, id, len);
+    rsContextSendMessage(con, id, (const uint8_t *)ptr, len * sizeof(int));
+    if (data) {
+        _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT);
+    }
+}
+
+
 
 static jint
 nElementCreate(JNIEnv *_env, jobject _this, RsContext con, jint type, jint kind, jboolean norm, jint size)
@@ -1022,7 +1039,7 @@
                jint script, jint slot, jint ain, jint aout)
 {
     LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
-    rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0);
+    rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0, NULL, 0);
 }
 static void
 nScriptForEachV(JNIEnv *_env, jobject _this, RsContext con,
@@ -1031,10 +1048,52 @@
     LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
     jint len = _env->GetArrayLength(params);
     jbyte *ptr = _env->GetByteArrayElements(params, NULL);
-    rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len);
+    rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len, NULL, 0);
     _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT);
 }
 
+static void
+nScriptForEachClipped(JNIEnv *_env, jobject _this, RsContext con,
+                      jint script, jint slot, jint ain, jint aout,
+                      jint xstart, jint xend,
+                      jint ystart, jint yend, jint zstart, jint zend)
+{
+    LOG_API("nScriptForEachClipped, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
+    RsScriptCall sc;
+    sc.xStart = xstart;
+    sc.xEnd = xend;
+    sc.yStart = ystart;
+    sc.yEnd = yend;
+    sc.zStart = zstart;
+    sc.zEnd = zend;
+    sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE;
+    sc.arrayStart = 0;
+    sc.arrayEnd = 0;
+    rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0, &sc, sizeof(sc));
+}
+
+static void
+nScriptForEachClippedV(JNIEnv *_env, jobject _this, RsContext con,
+                       jint script, jint slot, jint ain, jint aout,
+                       jbyteArray params, jint xstart, jint xend,
+                       jint ystart, jint yend, jint zstart, jint zend)
+{
+    LOG_API("nScriptForEachClipped, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
+    jint len = _env->GetArrayLength(params);
+    jbyte *ptr = _env->GetByteArrayElements(params, NULL);
+    RsScriptCall sc;
+    sc.xStart = xstart;
+    sc.xEnd = xend;
+    sc.yStart = ystart;
+    sc.yEnd = yend;
+    sc.zStart = zstart;
+    sc.zEnd = zend;
+    sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE;
+    sc.arrayStart = 0;
+    sc.arrayEnd = 0;
+    rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len, &sc, sizeof(sc));
+    _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT);
+}
 
 // -----------------------------------
 
@@ -1434,6 +1493,7 @@
 {"rsnContextDump",                   "(II)V",                                 (void*)nContextDump },
 {"rsnContextPause",                  "(I)V",                                  (void*)nContextPause },
 {"rsnContextResume",                 "(I)V",                                  (void*)nContextResume },
+{"rsnContextSendMessage",            "(II[I)V",                               (void*)nContextSendMessage },
 {"rsnAssignName",                    "(II[B)V",                               (void*)nAssignName },
 {"rsnGetName",                       "(II)Ljava/lang/String;",                (void*)nGetName },
 {"rsnObjDestroy",                    "(II)V",                                 (void*)nObjDestroy },
@@ -1496,6 +1556,8 @@
 {"rsnScriptInvokeV",                 "(III[B)V",                              (void*)nScriptInvokeV },
 {"rsnScriptForEach",                 "(IIIII)V",                              (void*)nScriptForEach },
 {"rsnScriptForEach",                 "(IIIII[B)V",                            (void*)nScriptForEachV },
+{"rsnScriptForEachClipped",          "(IIIIIIIIIII)V",                        (void*)nScriptForEachClipped },
+{"rsnScriptForEachClipped",          "(IIIII[BIIIIII)V",                      (void*)nScriptForEachClippedV },
 {"rsnScriptSetVarI",                 "(IIII)V",                               (void*)nScriptSetVarI },
 {"rsnScriptSetVarJ",                 "(IIIJ)V",                               (void*)nScriptSetVarJ },
 {"rsnScriptSetVarF",                 "(IIIF)V",                               (void*)nScriptSetVarF },
diff --git a/icu4j/java/android/icu/text/ArabicShaping.java b/icu4j/java/android/icu/text/ArabicShaping.java
deleted file mode 100644
index 13e2175..0000000
--- a/icu4j/java/android/icu/text/ArabicShaping.java
+++ /dev/null
@@ -1,1947 +0,0 @@
-/*
-*******************************************************************************
-*   Copyright (C) 2001-2009, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*******************************************************************************
-*/
-
-/*
- * Ported with minor modifications from ICU4J 4.2's
- * com.ibm.icu.text.ArabicShaping class.
- */
-
-package android.icu.text;
-
-
-/**
- * Shape Arabic text on a character basis.
- *
- * <p>ArabicShaping performs basic operations for "shaping" Arabic text. It is most
- * useful for use with legacy data formats and legacy display technology
- * (simple terminals). All operations are performed on Unicode characters.</p>
- *
- * <p>Text-based shaping means that some character code points in the text are
- * replaced by others depending on the context. It transforms one kind of text
- * into another. In comparison, modern displays for Arabic text select
- * appropriate, context-dependent font glyphs for each text element, which means
- * that they transform text into a glyph vector.</p>
- *
- * <p>Text transformations are necessary when modern display technology is not
- * available or when text needs to be transformed to or from legacy formats that
- * use "shaped" characters. Since the Arabic script is cursive, connecting
- * adjacent letters to each other, computers select images for each letter based
- * on the surrounding letters. This usually results in four images per Arabic
- * letter: initial, middle, final, and isolated forms. In Unicode, on the other
- * hand, letters are normally stored abstract, and a display system is expected
- * to select the necessary glyphs. (This makes searching and other text
- * processing easier because the same letter has only one code.) It is possible
- * to mimic this with text transformations because there are characters in
- * Unicode that are rendered as letters with a specific shape
- * (or cursive connectivity). They were included for interoperability with
- * legacy systems and codepages, and for unsophisticated display systems.</p>
- *
- * <p>A second kind of text transformations is supported for Arabic digits:
- * For compatibility with legacy codepages that only include European digits,
- * it is possible to replace one set of digits by another, changing the
- * character code points. These operations can be performed for either
- * Arabic-Indic Digits (U+0660...U+0669) or Eastern (Extended) Arabic-Indic
- * digits (U+06f0...U+06f9).</p>
- *
- * <p>Some replacements may result in more or fewer characters (code points).
- * By default, this means that the destination buffer may receive text with a
- * length different from the source length. Some legacy systems rely on the
- * length of the text to be constant. They expect extra spaces to be added
- * or consumed either next to the affected character or at the end of the
- * text.</p>
- * @stable ICU 2.0
- *
- * @hide
- */
-public class ArabicShaping {
-    private final int options;
-    private boolean isLogical; // convenience
-    private boolean spacesRelativeToTextBeginEnd;
-    private char tailChar;
-
-    public static final ArabicShaping SHAPER = new ArabicShaping(
-            ArabicShaping.TEXT_DIRECTION_LOGICAL |
-            ArabicShaping.LENGTH_FIXED_SPACES_NEAR |
-            ArabicShaping.LETTERS_SHAPE |
-            ArabicShaping.DIGITS_NOOP);
-
-    /**
-     * Convert a range of text in the source array, putting the result
-     * into a range of text in the destination array, and return the number
-     * of characters written.
-     *
-     * @param source An array containing the input text
-     * @param sourceStart The start of the range of text to convert
-     * @param sourceLength The length of the range of text to convert
-     * @param dest The destination array that will receive the result.
-     *   It may be <code>NULL</code> only if  <code>destSize</code> is 0.
-     * @param destStart The start of the range of the destination buffer to use.
-     * @param destSize The size (capacity) of the destination buffer.
-     *   If <code>destSize</code> is 0, then no output is produced,
-     *   but the necessary buffer size is returned ("preflighting").  This
-     *   does not validate the text against the options, for example,
-     *   if letters are being unshaped, and spaces are being consumed
-     *   following lamalef, this will not detect a lamalef without a
-     *   corresponding space.  An error will be thrown when the actual
-     *   conversion is attempted.
-     * @return The number of chars written to the destination buffer.
-     *   If an error occurs, then no output was written, or it may be
-     *   incomplete.
-     * @throws ArabicShapingException if the text cannot be converted according to the options.
-     * @stable ICU 2.0
-     */
-    public int shape(char[] source, int sourceStart, int sourceLength,
-                     char[] dest, int destStart, int destSize) throws ArabicShapingException {
-        if (source == null) {
-            throw new IllegalArgumentException("source can not be null");
-        }
-        if (sourceStart < 0 || sourceLength < 0 || sourceStart + sourceLength > source.length) {
-            throw new IllegalArgumentException("bad source start (" + sourceStart +
-                                               ") or length (" + sourceLength +
-                                               ") for buffer of length " + source.length);
-        }
-        if (dest == null && destSize != 0) {
-            throw new IllegalArgumentException("null dest requires destSize == 0");
-        }
-        if ((destSize != 0) &&
-            (destStart < 0 || destSize < 0 || destStart + destSize > dest.length)) {
-            throw new IllegalArgumentException("bad dest start (" + destStart +
-                                               ") or size (" + destSize +
-                                               ") for buffer of length " + dest.length);
-        }
-        /* Validate input options */
-        if ( ((options&TASHKEEL_MASK) > 0) &&
-             !(((options & TASHKEEL_MASK)==TASHKEEL_BEGIN)  ||
-               ((options & TASHKEEL_MASK)==TASHKEEL_END )   ||
-               ((options & TASHKEEL_MASK)==TASHKEEL_RESIZE )||
-               ((options & TASHKEEL_MASK)==TASHKEEL_REPLACE_BY_TATWEEL)) ){
-            throw new IllegalArgumentException("Wrong Tashkeel argument");
-        }
-
-       ///CLOVER:OFF
-       //According to Steven Loomis, the code is unreachable when you OR all the constants within the if statements
-       if(((options&LAMALEF_MASK) > 0)&&
-              !(((options & LAMALEF_MASK)==LAMALEF_BEGIN)  ||
-                ((options & LAMALEF_MASK)==LAMALEF_END )   ||
-                ((options & LAMALEF_MASK)==LAMALEF_RESIZE )||
-                 ((options & LAMALEF_MASK)==LAMALEF_AUTO)  ||
-                 ((options & LAMALEF_MASK)==LAMALEF_NEAR))){
-           throw new IllegalArgumentException("Wrong Lam Alef argument");
-       }
-       ///CLOVER:ON
-
-       /* Validate Tashkeel (Tashkeel replacement options should be enabled in shaping mode only)*/
-       if(((options&TASHKEEL_MASK) > 0) && (options&LETTERS_MASK) == LETTERS_UNSHAPE) {
-            throw new IllegalArgumentException("Tashkeel replacement should not be enabled in deshaping mode ");
-       }
-       return internalShape(source, sourceStart, sourceLength, dest, destStart, destSize);
-    }
-
-    /**
-     * Convert a range of text in place.  This may only be used if the Length option
-     * does not grow or shrink the text.
-     *
-     * @param source An array containing the input text
-     * @param start The start of the range of text to convert
-     * @param length The length of the range of text to convert
-     * @throws ArabicShapingException if the text cannot be converted according to the options.
-     * @stable ICU 2.0
-     */
-    public void shape(char[] source, int start, int length) throws ArabicShapingException {
-        if ((options & LAMALEF_MASK) == LAMALEF_RESIZE) {
-            throw new ArabicShapingException("Cannot shape in place with length option resize.");
-        }
-        shape(source, start, length, source, start, length);
-    }
-
-    /**
-     * Convert a string, returning the new string.
-     *
-     * @param text the string to convert
-     * @return the converted string
-     * @throws ArabicShapingException if the string cannot be converted according to the options.
-     * @stable ICU 2.0
-     */
-    public String shape(String text) throws ArabicShapingException {
-        char[] src = text.toCharArray();
-        char[] dest = src;
-        if (((options & LAMALEF_MASK) == LAMALEF_RESIZE) &&
-            ((options & LETTERS_MASK) == LETTERS_UNSHAPE)) {
-
-            dest = new char[src.length * 2]; // max
-        }
-        int len = shape(src, 0, src.length, dest, 0, dest.length);
-
-        return new String(dest, 0, len);
-    }
-
-    /**
-     * Construct ArabicShaping using the options flags.
-     * The flags are as follows:<br>
-     * 'LENGTH' flags control whether the text can change size, and if not,
-     * how to maintain the size of the text when LamAlef ligatures are
-     * formed or broken.<br>
-     * 'TEXT_DIRECTION' flags control whether the text is read and written
-     * in visual order or in logical order.<br>
-     * 'LETTERS_SHAPE' flags control whether conversion is to or from
-     * presentation forms.<br>
-     * 'DIGITS' flags control whether digits are shaped, and whether from
-     * European to Arabic-Indic or vice-versa.<br>
-     * 'DIGIT_TYPE' flags control whether standard or extended Arabic-Indic
-     * digits are used when performing digit conversion.
-     * @stable ICU 2.0
-     */
-    public ArabicShaping(int options) {
-        this.options = options;
-        if ((options & DIGITS_MASK) > 0x80) {
-            throw new IllegalArgumentException("bad DIGITS options");
-        }
-
-        isLogical = ( (options & TEXT_DIRECTION_MASK) == TEXT_DIRECTION_LOGICAL );
-        /* Validate options */
-        spacesRelativeToTextBeginEnd = ( (options & SPACES_RELATIVE_TO_TEXT_MASK) == SPACES_RELATIVE_TO_TEXT_BEGIN_END );
-        if ( (options&SHAPE_TAIL_TYPE_MASK) == SHAPE_TAIL_NEW_UNICODE){
-            tailChar = NEW_TAIL_CHAR;
-        } else {
-            tailChar = OLD_TAIL_CHAR;
-        }
-    }
-
-    /* Seen Tail options */
-    /**
-     * Memory option: the result must have the same length as the source.
-     * Shaping mode: The SEEN family character will expand into two characters using space near
-     *               the SEEN family character(i.e. the space after the character).
-     *               if there are no spaces found, ArabicShapingException will be thrown
-     *
-     * De-shaping mode: Any Seen character followed by Tail character will be
-     *                  replaced by one cell Seen and a space will replace the Tail.
-     * Affects: Seen options
-     */
-    public static final int SEEN_TWOCELL_NEAR = 0x200000;
-
-    /** Bit mask for Seen memory options. */
-    public static final int SEEN_MASK = 0x700000;
-
-    /* YehHamza options */
-    /**
-     * Memory option: the result must have the same length as the source.
-     * Shaping mode: The YEHHAMZA character will expand into two characters using space near it
-     *              (i.e. the space after the character)
-     *               if there are no spaces found, ArabicShapingException will be thrown
-     *
-     * De-shaping mode: Any Yeh (final or isolated) character followed by Hamza character will be
-     *                  replaced by one cell YehHamza and space will replace the Hamza.
-     * Affects: YehHamza options
-     */
-    public static final int YEHHAMZA_TWOCELL_NEAR  = 0x1000000;
-
-
-    /** Bit mask for YehHamza memory options. */
-    public static final int YEHHAMZA_MASK = 0x3800000;
-
-    /* New Tashkeel options */
-    /**
-     * Memory option: the result must have the same length as the source.
-     * Shaping mode: Tashkeel characters will be replaced by spaces.
-     *               Spaces will be placed at beginning of the buffer
-     *
-     * De-shaping mode: N/A
-     * Affects: Tashkeel options
-     */
-    public static final int TASHKEEL_BEGIN = 0x40000;
-
-    /**
-     * Memory option: the result must have the same length as the source.
-     * Shaping mode: Tashkeel characters will be replaced by spaces.
-     *               Spaces will be placed at end of the buffer
-     *
-     * De-shaping mode: N/A
-     * Affects: Tashkeel options
-     */
-    public static final int TASHKEEL_END = 0x60000;
-
-    /**
-     * Memory option: allow the result to have a different length than the source.
-     * Shaping mode: Tashkeel characters will be removed, buffer length will shrink.
-     * De-shaping mode: N/A
-     *
-     * Affects: Tashkeel options
-     */
-    public static final int TASHKEEL_RESIZE = 0x80000;
-
-    /**
-     * Memory option: the result must have the same length as the source.
-     * Shaping mode: Tashkeel characters will be replaced by Tatweel if it is connected to adjacent
-     *               characters (i.e. shaped on Tatweel) or replaced by space if it is not connected.
-     *
-     * De-shaping mode: N/A
-     * Affects: YehHamza options
-     */
-    public static final int TASHKEEL_REPLACE_BY_TATWEEL = 0xC0000;
-
-    /** Bit mask for Tashkeel replacement with Space or Tatweel memory options. */
-    public static final int TASHKEEL_MASK  = 0xE0000;
-
-    /* Space location Control options */
-    /**
-     * This option effects the meaning of BEGIN and END options. if this option is not used the default
-     * for BEGIN and END will be as following:
-     * The Default (for both Visual LTR, Visual RTL and Logical Text)
-     *           1. BEGIN always refers to the start address of physical memory.
-     *           2. END always refers to the end address of physical memory.
-     *
-     * If this option is used it will swap the meaning of BEGIN and END only for Visual LTR text.
-     *
-     * The affect on BEGIN and END Memory Options will be as following:
-     *    A. BEGIN For Visual LTR text: This will be the beginning (right side) of the visual text
-     *       (corresponding to the physical memory address end, same as END in default behavior)
-     *    B. BEGIN For Logical text: Same as BEGIN in default behavior.
-     *    C. END For Visual LTR text: This will be the end (left side) of the visual text. (corresponding to
-     *      the physical memory address beginning, same as BEGIN in default behavior)
-     *    D. END For Logical text: Same as END in default behavior.
-     * Affects: All LamAlef BEGIN, END and AUTO options.
-     */
-    public static final int SPACES_RELATIVE_TO_TEXT_BEGIN_END = 0x4000000;
-
-    /** Bit mask for swapping BEGIN and END for Visual LTR text */
-    public static final int SPACES_RELATIVE_TO_TEXT_MASK = 0x4000000;
-
-    /**
-     * If this option is used, shaping will use the new Unicode code point for TAIL (i.e. 0xFE73).
-     * If this option is not specified (Default), old unofficial Unicode TAIL code point is used (i.e. 0x200B)
-     * De-shaping will not use this option as it will always search for both the new Unicode code point for the
-     * TAIL (i.e. 0xFE73) or the old unofficial Unicode TAIL code point (i.e. 0x200B) and de-shape the
-     * Seen-Family letter accordingly.
-     *
-     * Shaping Mode: Only shaping.
-     * De-shaping Mode: N/A.
-     * Affects: All Seen options
-     */
-    public static final int SHAPE_TAIL_NEW_UNICODE = 0x8000000;
-
-    /** Bit mask for new Unicode Tail option */
-    public static final int SHAPE_TAIL_TYPE_MASK = 0x8000000;
-
-    /**
-     * Memory option: allow the result to have a different length than the source.
-     * @stable ICU 2.0
-     */
-    public static final int LENGTH_GROW_SHRINK = 0;
-
-    /**
-     * Memory option: allow the result to have a different length than the source.
-     * Affects: LamAlef options
-     * This option is an alias to LENGTH_GROW_SHRINK
-     */
-    public static final int LAMALEF_RESIZE   = 0;
-
-    /**
-     * Memory option: the result must have the same length as the source.
-     * If more room is necessary, then try to consume spaces next to modified characters.
-     * @stable ICU 2.0
-     */
-    public static final int LENGTH_FIXED_SPACES_NEAR = 1;
-
-    /**
-     * Memory option: the result must have the same length as the source.
-     * If more room is necessary, then try to consume spaces next to modified characters.
-     * Affects: LamAlef options
-     * This option is an alias to LENGTH_FIXED_SPACES_NEAR
-     */
-    public static final int LAMALEF_NEAR = 1 ;
-
-    /**
-     * Memory option: the result must have the same length as the source.
-     * If more room is necessary, then try to consume spaces at the end of the text.
-     * @stable ICU 2.0
-     */
-    public static final int LENGTH_FIXED_SPACES_AT_END = 2;
-
-
-    /**
-     * Memory option: the result must have the same length as the source.
-     * If more room is necessary, then try to consume spaces at the end of the text.
-     * Affects: LamAlef options
-     * This option is an alias to LENGTH_FIXED_SPACES_AT_END
-     */
-    public static final int LAMALEF_END = 2;
-
-    /**
-     * Memory option: the result must have the same length as the source.
-     * If more room is necessary, then try to consume spaces at the beginning of the text.
-     * @stable ICU 2.0
-     */
-    public static final int LENGTH_FIXED_SPACES_AT_BEGINNING = 3;
-
-    /**
-     * Memory option: the result must have the same length as the source.
-     * If more room is necessary, then try to consume spaces at the beginning of the text.
-     * Affects: LamAlef options
-     * This option is an alias to LENGTH_FIXED_SPACES_AT_BEGINNING
-     */
-    public static final int LAMALEF_BEGIN = 3;
-
-    /**
-     * Memory option: the result must have the same length as the source.
-     * Shaping Mode: For each LAMALEF character found, expand LAMALEF using space at end.
-     *               If there is no space at end, use spaces at beginning of the buffer. If there
-     *               is no space at beginning of the buffer, use spaces at the near (i.e. the space
-     *               after the LAMALEF character).
-     *
-     * Deshaping Mode: Perform the same function as the flag equals LAMALEF_END.
-     * Affects: LamAlef options
-     */
-    public static final int LAMALEF_AUTO  = 0x10000;
-
-    /**
-     * Bit mask for memory options.
-     * @stable ICU 2.0
-     */
-    public static final int LENGTH_MASK = 0x10003;
-
-    /** Bit mask for LamAlef memory options. */
-
-    public static final int LAMALEF_MASK  = 0x10003;
-
-    /**
-     * Direction indicator: the source is in logical (keyboard) order.
-     * @stable ICU 2.0
-     */
-    public static final int TEXT_DIRECTION_LOGICAL = 0;
-
-    /**
-     * Direction indicator:the source is in visual RTL order,
-     * the rightmost displayed character stored first.
-     * This option is an alias to U_SHAPE_TEXT_DIRECTION_LOGICAL
-     */
-    public static final int TEXT_DIRECTION_VISUAL_RTL = 0;
-
-    /**
-     * Direction indicator: the source is in visual (display) order, that is,
-     * the leftmost displayed character is stored first.
-     * @stable ICU 2.0
-     */
-    public static final int TEXT_DIRECTION_VISUAL_LTR = 4;
-
-    /**
-     * Bit mask for direction indicators.
-     * @stable ICU 2.0
-     */
-    public static final int TEXT_DIRECTION_MASK = 4;
-
-
-    /**
-     * Letter shaping option: do not perform letter shaping.
-     * @stable ICU 2.0
-     */
-    public static final int LETTERS_NOOP = 0;
-
-    /**
-     * Letter shaping option: replace normative letter characters in the U+0600 (Arabic) block,
-     * by shaped ones in the U+FE70 (Presentation Forms B) block. Performs Lam-Alef ligature
-     * substitution.
-     * @stable ICU 2.0
-     */
-    public static final int LETTERS_SHAPE = 8;
-
-    /**
-     * Letter shaping option: replace shaped letter characters in the U+FE70 (Presentation Forms B) block
-     * by normative ones in the U+0600 (Arabic) block.  Converts Lam-Alef ligatures to pairs of Lam and
-     * Alef characters, consuming spaces if required.
-     * @stable ICU 2.0
-     */
-    public static final int LETTERS_UNSHAPE = 0x10;
-
-    /**
-     * Letter shaping option: replace normative letter characters in the U+0600 (Arabic) block,
-     * except for the TASHKEEL characters at U+064B...U+0652, by shaped ones in the U+Fe70
-     * (Presentation Forms B) block.  The TASHKEEL characters will always be converted to
-     * the isolated forms rather than to their correct shape.
-     * @stable ICU 2.0
-     */
-    public static final int LETTERS_SHAPE_TASHKEEL_ISOLATED = 0x18;
-
-    /**
-     * Bit mask for letter shaping options.
-     * @stable ICU 2.0
-     */
-    public static final int LETTERS_MASK = 0x18;
-
-
-    /**
-     * Digit shaping option: do not perform digit shaping.
-     * @stable ICU 2.0
-     */
-    public static final int DIGITS_NOOP = 0;
-
-    /**
-     * Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits.
-     * @stable ICU 2.0
-     */
-    public static final int DIGITS_EN2AN = 0x20;
-
-    /**
-     * Digit shaping option: Replace Arabic-Indic digits by European digits (U+0030...U+0039).
-     * @stable ICU 2.0
-     */
-    public static final int DIGITS_AN2EN = 0x40;
-
-    /**
-     * Digit shaping option:
-     * Replace European digits (U+0030...U+0039) by Arabic-Indic digits
-     * if the most recent strongly directional character
-     * is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC).
-     * The initial state at the start of the text is assumed to be not an Arabic,
-     * letter, so European digits at the start of the text will not change.
-     * Compare to DIGITS_ALEN2AN_INIT_AL.
-     * @stable ICU 2.0
-     */
-    public static final int DIGITS_EN2AN_INIT_LR = 0x60;
-
-    /**
-     * Digit shaping option:
-     * Replace European digits (U+0030...U+0039) by Arabic-Indic digits
-     * if the most recent strongly directional character
-     * is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC).
-     * The initial state at the start of the text is assumed to be an Arabic,
-     * letter, so European digits at the start of the text will change.
-     * Compare to DIGITS_ALEN2AN_INT_LR.
-     * @stable ICU 2.0
-     */
-    public static final int DIGITS_EN2AN_INIT_AL = 0x80;
-
-    /** Not a valid option value. */
-    //private static final int DIGITS_RESERVED = 0xa0;
-
-    /**
-     * Bit mask for digit shaping options.
-     * @stable ICU 2.0
-     */
-    public static final int DIGITS_MASK = 0xe0;
-
-    /**
-     * Digit type option: Use Arabic-Indic digits (U+0660...U+0669).
-     * @stable ICU 2.0
-     */
-    public static final int DIGIT_TYPE_AN = 0;
-
-    /**
-     * Digit type option: Use Eastern (Extended) Arabic-Indic digits (U+06f0...U+06f9).
-     * @stable ICU 2.0
-     */
-    public static final int DIGIT_TYPE_AN_EXTENDED = 0x100;
-
-    /**
-     * Bit mask for digit type options.
-     * @stable ICU 2.0
-     */
-    public static final int DIGIT_TYPE_MASK = 0x0100; // 0x3f00?
-
-    /**
-     * some constants
-     */
-    private static final char HAMZAFE_CHAR       = '\ufe80';
-    private static final char HAMZA06_CHAR       = '\u0621';
-    private static final char YEH_HAMZA_CHAR     = '\u0626';
-    private static final char YEH_HAMZAFE_CHAR   = '\uFE89';
-    private static final char LAMALEF_SPACE_SUB  = '\uffff';
-    private static final char TASHKEEL_SPACE_SUB = '\ufffe';
-    private static final char LAM_CHAR      = '\u0644';
-    private static final char SPACE_CHAR    = '\u0020';
-    private static final char SPACE_CHAR_FOR_LAMALEF = '\ufeff'; // XXX: tweak for TextLine use
-    private static final char SHADDA_CHAR   = '\uFE7C';
-    private static final char TATWEEL_CHAR  = '\u0640';
-    private static final char SHADDA_TATWEEL_CHAR = '\uFE7D';
-    private static final char NEW_TAIL_CHAR = '\uFE73';
-    private static final char OLD_TAIL_CHAR = '\u200B';
-    private static final int SHAPE_MODE      = 0;
-    private static final int DESHAPE_MODE    = 1;
-
-    /**
-     * @stable ICU 2.0
-     */
-    public boolean equals(Object rhs) {
-        return rhs != null &&
-            rhs.getClass() == ArabicShaping.class &&
-            options == ((ArabicShaping)rhs).options;
-    }
-
-    /**
-     * @stable ICU 2.0
-     */
-     ///CLOVER:OFF
-    public int hashCode() {
-        return options;
-    }
-
-    /**
-     * @stable ICU 2.0
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer(super.toString());
-        buf.append('[');
-
-        switch (options & LAMALEF_MASK) {
-        case LAMALEF_RESIZE: buf.append("LamAlef resize"); break;
-        case LAMALEF_NEAR: buf.append("LamAlef spaces at near"); break;
-        case LAMALEF_BEGIN: buf.append("LamAlef spaces at begin"); break;
-        case LAMALEF_END: buf.append("LamAlef spaces at end"); break;
-        case LAMALEF_AUTO: buf.append("lamAlef auto"); break;
-        }
-        switch (options & TEXT_DIRECTION_MASK) {
-        case TEXT_DIRECTION_LOGICAL: buf.append(", logical"); break;
-        case TEXT_DIRECTION_VISUAL_LTR: buf.append(", visual"); break;
-        }
-        switch (options & LETTERS_MASK) {
-        case LETTERS_NOOP: buf.append(", no letter shaping"); break;
-        case LETTERS_SHAPE: buf.append(", shape letters"); break;
-        case LETTERS_SHAPE_TASHKEEL_ISOLATED: buf.append(", shape letters tashkeel isolated"); break;
-        case LETTERS_UNSHAPE: buf.append(", unshape letters"); break;
-        }
-        switch (options & SEEN_MASK) {
-        case SEEN_TWOCELL_NEAR: buf.append(", Seen at near"); break;
-        }
-        switch (options & YEHHAMZA_MASK) {
-        case YEHHAMZA_TWOCELL_NEAR: buf.append(", Yeh Hamza at near"); break;
-        }
-        switch (options & TASHKEEL_MASK) {
-        case TASHKEEL_BEGIN: buf.append(", Tashkeel at begin"); break;
-        case TASHKEEL_END: buf.append(", Tashkeel at end"); break;
-        case TASHKEEL_REPLACE_BY_TATWEEL: buf.append(", Tashkeel replace with tatweel"); break;
-        case TASHKEEL_RESIZE: buf.append(", Tashkeel resize"); break;
-        }
-
-        switch (options & DIGITS_MASK) {
-        case DIGITS_NOOP: buf.append(", no digit shaping"); break;
-        case DIGITS_EN2AN: buf.append(", shape digits to AN"); break;
-        case DIGITS_AN2EN: buf.append(", shape digits to EN"); break;
-        case DIGITS_EN2AN_INIT_LR: buf.append(", shape digits to AN contextually: default EN"); break;
-        case DIGITS_EN2AN_INIT_AL: buf.append(", shape digits to AN contextually: default AL"); break;
-        }
-        switch (options & DIGIT_TYPE_MASK) {
-        case DIGIT_TYPE_AN: buf.append(", standard Arabic-Indic digits"); break;
-        case DIGIT_TYPE_AN_EXTENDED: buf.append(", extended Arabic-Indic digits"); break;
-        }
-        buf.append("]");
-
-        return buf.toString();
-    }
-    ///CLOVER:ON
-
-    //
-    // ported api
-    //
-
-    private static final int IRRELEVANT = 4;
-    private static final int LAMTYPE = 16;
-    private static final int ALEFTYPE = 32;
-
-    private static final int LINKR = 1;
-    private static final int LINKL = 2;
-    private static final int LINK_MASK = 3;
-
-    private static final int irrelevantPos[] = {
-        0x0, 0x2, 0x4, 0x6, 0x8, 0xA, 0xC, 0xE
-    };
-
-/*
-    private static final char convertLamAlef[] =  {
-        '\u0622', // FEF5
-        '\u0622', // FEF6
-        '\u0623', // FEF7
-        '\u0623', // FEF8
-        '\u0625', // FEF9
-        '\u0625', // FEFA
-        '\u0627', // FEFB
-        '\u0627'  // FEFC
-    };
-*/
-
-    private static final int tailFamilyIsolatedFinal[] = {
-        /* FEB1 */ 1,
-        /* FEB2 */ 1,
-        /* FEB3 */ 0,
-        /* FEB4 */ 0,
-        /* FEB5 */ 1,
-        /* FEB6 */ 1,
-        /* FEB7 */ 0,
-        /* FEB8 */ 0,
-        /* FEB9 */ 1,
-        /* FEBA */ 1,
-        /* FEBB */ 0,
-        /* FEBC */ 0,
-        /* FEBD */ 1,
-        /* FEBE */ 1
-    };
-
-    private static final int tashkeelMedial[] = {
-        /* FE70 */ 0,
-        /* FE71 */ 1,
-        /* FE72 */ 0,
-        /* FE73 */ 0,
-        /* FE74 */ 0,
-        /* FE75 */ 0,
-        /* FE76 */ 0,
-        /* FE77 */ 1,
-        /* FE78 */ 0,
-        /* FE79 */ 1,
-        /* FE7A */ 0,
-        /* FE7B */ 1,
-        /* FE7C */ 0,
-        /* FE7D */ 1,
-        /* FE7E */ 0,
-        /* FE7F */ 1
-    };
-
-    private static final char yehHamzaToYeh[] =
-    {
-    /* isolated*/ 0xFEEF,
-    /* final   */ 0xFEF0
-    };
-
-    private static final char convertNormalizedLamAlef[] = {
-        '\u0622', // 065C
-        '\u0623', // 065D
-        '\u0625', // 065E
-        '\u0627', // 065F
-    };
-
-    private static final int[] araLink = {
-        1           + 32 + 256 * 0x11,  /*0x0622*/
-        1           + 32 + 256 * 0x13,  /*0x0623*/
-        1                + 256 * 0x15,  /*0x0624*/
-        1           + 32 + 256 * 0x17,  /*0x0625*/
-        1 + 2            + 256 * 0x19,  /*0x0626*/
-        1           + 32 + 256 * 0x1D,  /*0x0627*/
-        1 + 2            + 256 * 0x1F,  /*0x0628*/
-        1                + 256 * 0x23,  /*0x0629*/
-        1 + 2            + 256 * 0x25,  /*0x062A*/
-        1 + 2            + 256 * 0x29,  /*0x062B*/
-        1 + 2            + 256 * 0x2D,  /*0x062C*/
-        1 + 2            + 256 * 0x31,  /*0x062D*/
-        1 + 2            + 256 * 0x35,  /*0x062E*/
-        1                + 256 * 0x39,  /*0x062F*/
-        1                + 256 * 0x3B,  /*0x0630*/
-        1                + 256 * 0x3D,  /*0x0631*/
-        1                + 256 * 0x3F,  /*0x0632*/
-        1 + 2            + 256 * 0x41,  /*0x0633*/
-        1 + 2            + 256 * 0x45,  /*0x0634*/
-        1 + 2            + 256 * 0x49,  /*0x0635*/
-        1 + 2            + 256 * 0x4D,  /*0x0636*/
-        1 + 2            + 256 * 0x51,  /*0x0637*/
-        1 + 2            + 256 * 0x55,  /*0x0638*/
-        1 + 2            + 256 * 0x59,  /*0x0639*/
-        1 + 2            + 256 * 0x5D,  /*0x063A*/
-        0, 0, 0, 0, 0,                  /*0x063B-0x063F*/
-        1 + 2,                          /*0x0640*/
-        1 + 2            + 256 * 0x61,  /*0x0641*/
-        1 + 2            + 256 * 0x65,  /*0x0642*/
-        1 + 2            + 256 * 0x69,  /*0x0643*/
-        1 + 2       + 16 + 256 * 0x6D,  /*0x0644*/
-        1 + 2            + 256 * 0x71,  /*0x0645*/
-        1 + 2            + 256 * 0x75,  /*0x0646*/
-        1 + 2            + 256 * 0x79,  /*0x0647*/
-        1                + 256 * 0x7D,  /*0x0648*/
-        1                + 256 * 0x7F,  /*0x0649*/
-        1 + 2            + 256 * 0x81,  /*0x064A*/
-        4, 4, 4, 4,                     /*0x064B-0x064E*/
-        4, 4, 4, 4,                     /*0x064F-0x0652*/
-        4, 4, 4, 0, 0,                  /*0x0653-0x0657*/
-        0, 0, 0, 0,                     /*0x0658-0x065B*/
-        1                + 256 * 0x85,  /*0x065C*/
-        1                + 256 * 0x87,  /*0x065D*/
-        1                + 256 * 0x89,  /*0x065E*/
-        1                + 256 * 0x8B,  /*0x065F*/
-        0, 0, 0, 0, 0,                  /*0x0660-0x0664*/
-        0, 0, 0, 0, 0,                  /*0x0665-0x0669*/
-        0, 0, 0, 0, 0, 0,               /*0x066A-0x066F*/
-        4,                              /*0x0670*/
-        0,                              /*0x0671*/
-        1           + 32,               /*0x0672*/
-        1           + 32,               /*0x0673*/
-        0,                              /*0x0674*/
-        1           + 32,               /*0x0675*/
-        1, 1,                           /*0x0676-0x0677*/
-        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x0678-0x067D*/
-        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x067E-0x0683*/
-        1+2, 1+2, 1+2, 1+2,             /*0x0684-0x0687*/
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,   /*0x0688-0x0691*/
-        1, 1, 1, 1, 1, 1, 1, 1,         /*0x0692-0x0699*/
-        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x069A-0x06A3*/
-        1+2, 1+2, 1+2, 1+2,             /*0x069A-0x06A3*/
-        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06A4-0x06AD*/
-        1+2, 1+2, 1+2, 1+2,             /*0x06A4-0x06AD*/
-        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06AE-0x06B7*/
-        1+2, 1+2, 1+2, 1+2,             /*0x06AE-0x06B7*/
-        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06B8-0x06BF*/
-        1+2, 1+2,                       /*0x06B8-0x06BF*/
-        1,                              /*0x06C0*/
-        1+2,                            /*0x06C1*/
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,   /*0x06C2-0x06CB*/
-        1+2,                            /*0x06CC*/
-        1,                              /*0x06CD*/
-        1+2, 1+2, 1+2, 1+2,             /*0x06CE-0x06D1*/
-        1, 1                            /*0x06D2-0x06D3*/
-    };
-
-    private static final int[] presLink = {
-        1 + 2,                        /*0xFE70*/
-        1 + 2,                        /*0xFE71*/
-        1 + 2, 0, 1+ 2, 0, 1+ 2,      /*0xFE72-0xFE76*/
-        1 + 2,                        /*0xFE77*/
-        1+ 2, 1 + 2, 1+2, 1 + 2,      /*0xFE78-0xFE81*/
-        1+ 2, 1 + 2, 1+2, 1 + 2,      /*0xFE82-0xFE85*/
-        0, 0 + 32, 1 + 32, 0 + 32,    /*0xFE86-0xFE89*/
-        1 + 32, 0, 1,  0 + 32,        /*0xFE8A-0xFE8D*/
-        1 + 32, 0, 2,  1 + 2,         /*0xFE8E-0xFE91*/
-        1, 0 + 32, 1 + 32, 0,         /*0xFE92-0xFE95*/
-        2, 1 + 2, 1, 0,               /*0xFE96-0xFE99*/
-        1, 0, 2, 1 + 2,               /*0xFE9A-0xFE9D*/
-        1, 0, 2, 1 + 2,               /*0xFE9E-0xFEA1*/
-        1, 0, 2, 1 + 2,               /*0xFEA2-0xFEA5*/
-        1, 0, 2, 1 + 2,               /*0xFEA6-0xFEA9*/
-        1, 0, 2, 1 + 2,               /*0xFEAA-0xFEAD*/
-        1, 0, 1, 0,                   /*0xFEAE-0xFEB1*/
-        1, 0, 1, 0,                   /*0xFEB2-0xFEB5*/
-        1, 0, 2, 1+2,                 /*0xFEB6-0xFEB9*/
-        1, 0, 2, 1+2,                 /*0xFEBA-0xFEBD*/
-        1, 0, 2, 1+2,                 /*0xFEBE-0xFEC1*/
-        1, 0, 2, 1+2,                 /*0xFEC2-0xFEC5*/
-        1, 0, 2, 1+2,                 /*0xFEC6-0xFEC9*/
-        1, 0, 2, 1+2,                 /*0xFECA-0xFECD*/
-        1, 0, 2, 1+2,                 /*0xFECE-0xFED1*/
-        1, 0, 2, 1+2,                 /*0xFED2-0xFED5*/
-        1, 0, 2, 1+2,                 /*0xFED6-0xFED9*/
-        1, 0, 2, 1+2,                 /*0xFEDA-0xFEDD*/
-        1, 0, 2, 1+2,                 /*0xFEDE-0xFEE1*/
-        1, 0 + 16, 2 + 16, 1 + 2 +16, /*0xFEE2-0xFEE5*/
-        1 + 16, 0, 2, 1+2,            /*0xFEE6-0xFEE9*/
-        1, 0, 2, 1+2,                 /*0xFEEA-0xFEED*/
-        1, 0, 2, 1+2,                 /*0xFEEE-0xFEF1*/
-        1, 0, 1, 0,                   /*0xFEF2-0xFEF5*/
-        1, 0, 2, 1+2,                 /*0xFEF6-0xFEF9*/
-        1, 0, 1, 0,                   /*0xFEFA-0xFEFD*/
-        1, 0, 1, 0,
-        1
-    };
-
-    private static int[] convertFEto06 = {
-        /***********0******1******2******3******4******5******6******7******8******9******A******B******C******D******E******F***/
-        /*FE7*/   0x64B, 0x64B, 0x64C, 0x64C, 0x64D, 0x64D, 0x64E, 0x64E, 0x64F, 0x64F, 0x650, 0x650, 0x651, 0x651, 0x652, 0x652,
-        /*FE8*/   0x621, 0x622, 0x622, 0x623, 0x623, 0x624, 0x624, 0x625, 0x625, 0x626, 0x626, 0x626, 0x626, 0x627, 0x627, 0x628,
-        /*FE9*/   0x628, 0x628, 0x628, 0x629, 0x629, 0x62A, 0x62A, 0x62A, 0x62A, 0x62B, 0x62B, 0x62B, 0x62B, 0x62C, 0x62C, 0x62C,
-        /*FEA*/   0x62C, 0x62D, 0x62D, 0x62D, 0x62D, 0x62E, 0x62E, 0x62E, 0x62E, 0x62F, 0x62F, 0x630, 0x630, 0x631, 0x631, 0x632,
-        /*FEB*/   0x632, 0x633, 0x633, 0x633, 0x633, 0x634, 0x634, 0x634, 0x634, 0x635, 0x635, 0x635, 0x635, 0x636, 0x636, 0x636,
-        /*FEC*/   0x636, 0x637, 0x637, 0x637, 0x637, 0x638, 0x638, 0x638, 0x638, 0x639, 0x639, 0x639, 0x639, 0x63A, 0x63A, 0x63A,
-        /*FED*/   0x63A, 0x641, 0x641, 0x641, 0x641, 0x642, 0x642, 0x642, 0x642, 0x643, 0x643, 0x643, 0x643, 0x644, 0x644, 0x644,
-        /*FEE*/   0x644, 0x645, 0x645, 0x645, 0x645, 0x646, 0x646, 0x646, 0x646, 0x647, 0x647, 0x647, 0x647, 0x648, 0x648, 0x649,
-        /*FEF*/   0x649, 0x64A, 0x64A, 0x64A, 0x64A, 0x65C, 0x65C, 0x65D, 0x65D, 0x65E, 0x65E, 0x65F, 0x65F
-    };
-
-    private static final int shapeTable[][][] = {
-        { {0,0,0,0}, {0,0,0,0}, {0,1,0,3}, {0,1,0,1} },
-        { {0,0,2,2}, {0,0,1,2}, {0,1,1,2}, {0,1,1,3} },
-        { {0,0,0,0}, {0,0,0,0}, {0,1,0,3}, {0,1,0,3} },
-        { {0,0,1,2}, {0,0,1,2}, {0,1,1,2}, {0,1,1,3} }
-    };
-
-    /*
-     * This function shapes European digits to Arabic-Indic digits
-     * in-place, writing over the input characters.  Data is in visual
-     * order.
-     */
-    private void shapeToArabicDigitsWithContext(char[] dest,
-                                                int start,
-                                                int length,
-                                                char digitBase,
-                                                boolean lastStrongWasAL) {
-        digitBase -= '0'; // move common adjustment out of loop
-
-        for(int i = start + length; --i >= start;) {
-            char ch = dest[i];
-            switch (Character.getDirectionality(ch)) {
-            case Character.DIRECTIONALITY_LEFT_TO_RIGHT:
-            case Character.DIRECTIONALITY_RIGHT_TO_LEFT:
-                lastStrongWasAL = false;
-                break;
-            case Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC:
-                lastStrongWasAL = true;
-                break;
-            case Character.DIRECTIONALITY_EUROPEAN_NUMBER:
-                if (lastStrongWasAL && ch <= '\u0039') {
-                    dest[i] = (char)(ch + digitBase);
-                }
-                break;
-            default:
-                break;
-            }
-        }
-    }
-
-    /*
-     * Name    : invertBuffer
-     * Function: This function inverts the buffer, it's used
-     *           in case the user specifies the buffer to be
-     *           TEXT_DIRECTION_LOGICAL
-     */
-    private static void invertBuffer(char[] buffer,
-                                     int start,
-                                     int length) {
-
-        for(int i = start, j = start + length - 1; i < j; i++, --j) {
-            char temp = buffer[i];
-            buffer[i] = buffer[j];
-            buffer[j] = temp;
-        }
-    }
-
-    /*
-     * Name    : changeLamAlef
-     * Function: Converts the Alef characters into an equivalent
-     *           LamAlef location in the 0x06xx Range, this is an
-     *           intermediate stage in the operation of the program
-     *           later it'll be converted into the 0xFExx LamAlefs
-     *           in the shaping function.
-     */
-    private static char changeLamAlef(char ch) {
-        switch(ch) {
-        case '\u0622': return '\u065C';
-        case '\u0623': return '\u065D';
-        case '\u0625': return '\u065E';
-        case '\u0627': return '\u065F';
-        default:  return '\u0000'; // not a lamalef
-        }
-    }
-
-    /*
-     * Name    : specialChar
-     * Function: Special Arabic characters need special handling in the shapeUnicode
-     *           function, this function returns 1 or 2 for these special characters
-     */
-    private static int specialChar(char ch) {
-        if ((ch > '\u0621' && ch < '\u0626') ||
-            (ch == '\u0627') ||
-            (ch > '\u062E' && ch < '\u0633') ||
-            (ch > '\u0647' && ch < '\u064A') ||
-            (ch == '\u0629')) {
-            return 1;
-        } else if (ch >= '\u064B' && ch<= '\u0652') {
-            return 2;
-        } else if (ch >= 0x0653 && ch <= 0x0655 ||
-                   ch == 0x0670 ||
-                   ch >= 0xFE70 && ch <= 0xFE7F) {
-            return 3;
-        } else {
-            return 0;
-        }
-    }
-
-    /*
-     * Name    : getLink
-     * Function: Resolves the link between the characters as
-     *           Arabic characters have four forms :
-     *           Isolated, Initial, Middle and Final Form
-     */
-    private static int getLink(char ch) {
-        if (ch >= '\u0622' && ch <= '\u06D3') {
-            return araLink[ch - '\u0622'];
-        } else if (ch == '\u200D') {
-            return 3;
-        } else if (ch >= '\u206D' && ch <= '\u206F') {
-            return 4;
-        } else if (ch >= '\uFE70' && ch <= '\uFEFC') {
-            return presLink[ch - '\uFE70'];
-        } else {
-            return 0;
-        }
-    }
-
-    /*
-     * Name    : countSpaces
-     * Function: Counts the number of spaces
-     *           at each end of the logical buffer
-     */
-    private static int countSpacesLeft(char[] dest,
-                                       int start,
-                                       int count) {
-        for (int i = start, e = start + count; i < e; ++i) {
-            if (dest[i] != SPACE_CHAR) {
-                return i - start;
-            }
-        }
-        return count;
-    }
-
-    private static int countSpacesRight(char[] dest,
-                                        int start,
-                                        int count) {
-
-        for (int i = start + count; --i >= start;) {
-            if (dest[i] != SPACE_CHAR) {
-                return start + count - 1 - i;
-            }
-        }
-        return count;
-    }
-
-    /*
-     * Name    : isTashkeelChar
-     * Function: Returns true for Tashkeel characters else return false
-     */
-    private static boolean isTashkeelChar(char ch) {
-        return ( ch >='\u064B' && ch <= '\u0652' );
-    }
-
-    /*
-     *Name     : isSeenTailFamilyChar
-     *Function : returns 1 if the character is a seen family isolated character
-     *           in the FE range otherwise returns 0
-     */
-
-    private static int isSeenTailFamilyChar(char ch) {
-        if (ch >= 0xfeb1 && ch < 0xfebf){
-             return tailFamilyIsolatedFinal [ch - 0xFEB1];
-        } else {
-             return 0;
-        }
-    }
-
-     /* Name     : isSeenFamilyChar
-      * Function : returns 1 if the character is a seen family character in the Unicode
-      *            06 range otherwise returns 0
-     */
-
-    private static int isSeenFamilyChar(char  ch){
-        if (ch >= 0x633 && ch <= 0x636){
-            return 1;
-        }else {
-            return 0;
-        }
-    }
-
-    /*
-     *Name     : isTailChar
-     *Function : returns true if the character matches one of the tail characters
-     *           (0xfe73 or 0x200b) otherwise returns false
-     */
-
-    private static boolean isTailChar(char ch) {
-        if(ch == OLD_TAIL_CHAR || ch == NEW_TAIL_CHAR){
-                return true;
-        }else{
-                return false;
-        }
-    }
-
-    /*
-     *Name     : isAlefMaksouraChar
-     *Function : returns true if the character is a Alef Maksoura Final or isolated
-     *           otherwise returns false
-     */
-    private static boolean isAlefMaksouraChar(char ch) {
-        return ( (ch == 0xFEEF) || ( ch == 0xFEF0) || (ch == 0x0649));
-    }
-
-    /*
-     * Name     : isYehHamzaChar
-     * Function : returns true if the character is a yehHamza isolated or yehhamza
-     *            final is found otherwise returns false
-     */
-    private static boolean isYehHamzaChar(char ch) {
-        if((ch==0xFE89)||(ch==0xFE8A)){
-            return true;
-        }else{
-            return false;
-        }
-    }
-
-    /*
-     *Name     : isTashkeelCharFE
-     *Function : Returns true for Tashkeel characters in FE range else return false
-     */
-
-    private static boolean isTashkeelCharFE(char ch) {
-        return ( ch!=0xFE75 &&(ch>=0xFE70 && ch<= 0xFE7F) );
-    }
-
-    /*
-     * Name: isTashkeelOnTatweelChar
-     * Function: Checks if the Tashkeel Character is on Tatweel or not,if the
-     *           Tashkeel on tatweel (FE range), it returns 1 else if the
-     *           Tashkeel with shadda on tatweel (FC range)return 2 otherwise
-     *           returns 0
-     */
-    private static int isTashkeelOnTatweelChar(char ch){
-        if (ch >= 0xfe70 && ch <= 0xfe7f && ch != NEW_TAIL_CHAR && ch != 0xFE75 && ch != SHADDA_TATWEEL_CHAR)
-        {
-            return tashkeelMedial [ch - 0xFE70];
-        } else if( (ch >= 0xfcf2 && ch <= 0xfcf4) || (ch == SHADDA_TATWEEL_CHAR)) {
-            return 2;
-        } else {
-            return 0;
-        }
-    }
-
-    /*
-     * Name: isIsolatedTashkeelChar
-     * Function: Checks if the Tashkeel Character is in the isolated form
-     *           (i.e. Unicode FE range) returns 1 else if the Tashkeel
-     *           with shadda is in the isolated form (i.e. Unicode FC range)
-     *           returns 1 otherwise returns 0
-     */
-    private static int isIsolatedTashkeelChar(char ch){
-        if (ch >= 0xfe70 && ch <= 0xfe7f && ch != NEW_TAIL_CHAR && ch != 0xFE75){
-            return (1 - tashkeelMedial [ch - 0xFE70]);
-        } else if(ch >= 0xfc5e && ch <= 0xfc63){
-            return 1;
-        } else{
-            return 0;
-        }
-    }
-
-    /*
-     * Name    : isAlefChar
-     * Function: Returns 1 for Alef characters else return 0
-     */
-    private static boolean isAlefChar(char ch) {
-        return ch == '\u0622' || ch == '\u0623' || ch == '\u0625' || ch == '\u0627';
-    }
-
-    /*
-     * Name    : isLamAlefChar
-     * Function: Returns true for LamAlef characters else return false
-     */
-    private static boolean isLamAlefChar(char ch) {
-        return ch >= '\uFEF5' && ch <= '\uFEFC';
-    }
-
-    private static boolean isNormalizedLamAlefChar(char ch) {
-        return ch >= '\u065C' && ch <= '\u065F';
-    }
-
-    /*
-     * Name    : calculateSize
-     * Function: This function calculates the destSize to be used in preflighting
-     *           when the destSize is equal to 0
-     */
-    private int calculateSize(char[] source,
-                              int sourceStart,
-                              int sourceLength) {
-
-        int destSize = sourceLength;
-
-        switch (options & LETTERS_MASK) {
-        case LETTERS_SHAPE:
-        case LETTERS_SHAPE_TASHKEEL_ISOLATED:
-            if (isLogical) {
-                for (int i = sourceStart, e = sourceStart + sourceLength - 1; i < e; ++i) {
-                    if ((source[i] == LAM_CHAR && isAlefChar(source[i+1])) || isTashkeelCharFE(source[i])){
-                        --destSize;
-                    }
-                }
-            } else { // visual
-                for(int i = sourceStart + 1, e = sourceStart + sourceLength; i < e; ++i) {
-                    if ((source[i] == LAM_CHAR && isAlefChar(source[i-1])) || isTashkeelCharFE(source[i])) {
-                        --destSize;
-                    }
-                }
-            }
-            break;
-
-        case LETTERS_UNSHAPE:
-            for(int i = sourceStart, e = sourceStart + sourceLength; i < e; ++i) {
-                if (isLamAlefChar(source[i])) {
-                    destSize++;
-                }
-            }
-            break;
-
-        default:
-            break;
-        }
-
-        return destSize;
-    }
-
-
-    /*
-     * Name    : countSpaceSub
-     * Function: Counts number of times the subChar appears in the array
-     */
-    public static int countSpaceSub(char [] dest,int length, char subChar){
-        int i = 0;
-        int count = 0;
-        while (i < length) {
-          if (dest[i] == subChar) {
-              count++;
-              }
-          i++;
-        }
-        return count;
-    }
-
-    /*
-     * Name    : shiftArray
-     * Function: Shifts characters to replace space sub characters
-     */
-    public static void shiftArray(char [] dest,int start, int e, char subChar){
-        int w = e;
-        int r = e;
-        while (--r >= start) {
-          char ch = dest[r];
-          if (ch != subChar) {
-            --w;
-            if (w != r) {
-              dest[w] = ch;
-            }
-          }
-        }
-   }
-
-    /*
-     * Name    : flipArray
-     * Function: inverts array, so that start becomes end and vice versa
-     */
-      public static int flipArray(char [] dest, int start, int e, int w){
-        int r;
-        if (w > start) {
-        // shift, assume small buffer size so don't use arraycopy
-          r = w;
-          w = start;
-          while (r < e) {
-            dest[w++] = dest[r++];
-           }
-         } else {
-             w = e;
-         }
-        return w;
-      }
-
-    /*
-     * Name     : handleTashkeelWithTatweel
-     * Function : Replaces Tashkeel as following:
-     *            Case 1 :if the Tashkeel on tatweel, replace it with Tatweel.
-     *            Case 2 :if the Tashkeel aggregated with Shadda on Tatweel, replace
-     *                   it with Shadda on Tatweel.
-     *            Case 3: if the Tashkeel is isolated replace it with Space.
-     *
-     */
-    private static int handleTashkeelWithTatweel(char[] dest, int sourceLength) {
-                     int i;
-                     for(i = 0; i < sourceLength; i++){
-                         if((isTashkeelOnTatweelChar(dest[i]) == 1)){
-                             dest[i] = TATWEEL_CHAR;
-                        }else if((isTashkeelOnTatweelChar(dest[i]) == 2)){
-                             dest[i] = SHADDA_TATWEEL_CHAR;
-                        }else if((isIsolatedTashkeelChar(dest[i])==1) && dest[i] != SHADDA_CHAR){
-                             dest[i] = SPACE_CHAR;
-                        }
-                     }
-                     return sourceLength;
-    }
-
-    /*
-     *Name     : handleGeneratedSpaces
-     *Function : The shapeUnicode function converts Lam + Alef into LamAlef + space,
-     *           and Tashkeel to space.
-     *           handleGeneratedSpaces function puts these generated spaces
-     *           according to the options the user specifies. LamAlef and Tashkeel
-     *           spaces can be replaced at begin, at end, at near or decrease the
-     *           buffer size.
-     *
-     *           There is also Auto option for LamAlef and tashkeel, which will put
-     *           the spaces at end of the buffer (or end of text if the user used
-     *           the option SPACES_RELATIVE_TO_TEXT_BEGIN_END).
-     *
-     *           If the text type was visual_LTR and the option
-     *           SPACES_RELATIVE_TO_TEXT_BEGIN_END was selected the END
-     *           option will place the space at the beginning of the buffer and
-     *           BEGIN will place the space at the end of the buffer.
-     */
-  private int handleGeneratedSpaces(char[] dest,
-            int start,
-            int length) {
-
-      int lenOptionsLamAlef = options & LAMALEF_MASK;
-      int lenOptionsTashkeel = options & TASHKEEL_MASK;
-      boolean lamAlefOn = false;
-      boolean tashkeelOn = false;
-
-      if (!isLogical & !spacesRelativeToTextBeginEnd) {
-          switch (lenOptionsLamAlef) {
-          case LAMALEF_BEGIN: lenOptionsLamAlef = LAMALEF_END; break;
-          case LAMALEF_END: lenOptionsLamAlef = LAMALEF_BEGIN; break;
-          default: break;
-         }
-          switch (lenOptionsTashkeel){
-          case TASHKEEL_BEGIN: lenOptionsTashkeel = TASHKEEL_END; break;
-          case TASHKEEL_END: lenOptionsTashkeel = TASHKEEL_BEGIN; break;
-          default: break;
-          }
-        }
-
-
-      if (lenOptionsLamAlef == LAMALEF_NEAR) {
-          for (int i = start, e = i + length; i < e; ++i) {
-              if (dest[i] == LAMALEF_SPACE_SUB) {
-                  dest[i] = SPACE_CHAR_FOR_LAMALEF;
-              }
-          }
-
-      } else {
-
-          final int e = start + length;
-          int wL = countSpaceSub(dest, length, LAMALEF_SPACE_SUB);
-          int wT = countSpaceSub(dest, length, TASHKEEL_SPACE_SUB);
-
-          if (lenOptionsLamAlef == LAMALEF_END){
-            lamAlefOn = true;
-          }
-          if (lenOptionsTashkeel == TASHKEEL_END){
-            tashkeelOn = true;
-          }
-
-
-          if (lamAlefOn && (lenOptionsLamAlef == LAMALEF_END)) {
-            shiftArray(dest, start, e, LAMALEF_SPACE_SUB);
-            while (wL > start) {
-                dest[--wL] = SPACE_CHAR;
-            }
-          }
-
-          if (tashkeelOn && (lenOptionsTashkeel == TASHKEEL_END)){
-            shiftArray(dest, start, e, TASHKEEL_SPACE_SUB);
-            while (wT > start) {
-                 dest[--wT] = SPACE_CHAR;
-            }
-          }
-
-          lamAlefOn = false;
-          tashkeelOn = false;
-
-          if (lenOptionsLamAlef == LAMALEF_RESIZE){
-            lamAlefOn = true;
-          }
-          if (lenOptionsTashkeel == TASHKEEL_RESIZE){
-            tashkeelOn = true;
-          }
-
-          if (lamAlefOn && (lenOptionsLamAlef == LAMALEF_RESIZE)){
-              shiftArray(dest, start, e, LAMALEF_SPACE_SUB);
-              wL = flipArray(dest,start,e, wL);
-              length = wL - start;
-          }
-          if (tashkeelOn && (lenOptionsTashkeel == TASHKEEL_RESIZE)) {
-              shiftArray(dest, start, e, TASHKEEL_SPACE_SUB);
-              wT = flipArray(dest,start,e, wT);
-              length = wT - start;
-          }
-
-          lamAlefOn = false;
-          tashkeelOn = false;
-
-          if ((lenOptionsLamAlef == LAMALEF_BEGIN) ||
-              (lenOptionsLamAlef == LAMALEF_AUTO)){
-                lamAlefOn = true;
-          }
-          if (lenOptionsTashkeel == TASHKEEL_BEGIN){
-                tashkeelOn = true;
-          }
-
-          if (lamAlefOn && ((lenOptionsLamAlef == LAMALEF_BEGIN)||
-                            (lenOptionsLamAlef == LAMALEF_AUTO))) { // spaces at beginning
-              shiftArray(dest, start, e, LAMALEF_SPACE_SUB);
-               wL = flipArray(dest,start,e, wL);
-                  while (wL < e) {
-                      dest[wL++] = SPACE_CHAR;
-                  }
-              }
-              if(tashkeelOn && (lenOptionsTashkeel == TASHKEEL_BEGIN)){
-               shiftArray(dest, start, e, TASHKEEL_SPACE_SUB);
-               wT = flipArray(dest,start,e, wT);
-                  while (wT < e) {
-                      dest[wT++] = SPACE_CHAR;
-                  }
-              }
-           }
-
-      return length;
-  }
-
-
-  /*
-   *Name     :expandCompositCharAtBegin
-   *Function :Expands the LamAlef character to Lam and Alef consuming the required
-   *         space from beginning of the buffer. If the text type was visual_LTR
-   *         and the option SPACES_RELATIVE_TO_TEXT_BEGIN_END was selected
-   *         the spaces will be located at end of buffer.
-   *         If there are no spaces to expand the LamAlef, an exception is thrown.
-*/
- private boolean expandCompositCharAtBegin(char[] dest,int start, int length,
-                            int lacount) {
-     boolean spaceNotFound = false;
-
-     if (lacount > countSpacesRight(dest, start, length)) {
-         spaceNotFound = true;
-         return spaceNotFound;
-     }
-     for (int r = start + length - lacount, w = start + length; --r >= start;) {
-         char ch = dest[r];
-         if (isNormalizedLamAlefChar(ch)) {
-             dest[--w] = LAM_CHAR;
-             dest[--w] = convertNormalizedLamAlef[ch - '\u065C'];
-         } else {
-             dest[--w] = ch;
-         }
-     }
-     return spaceNotFound;
-
-  }
-
-  /*
-   *Name     : expandCompositCharAtEnd
-   *Function : Expands the LamAlef character to Lam and Alef consuming the
-   *           required space from end of the buffer. If the text type was
-   *           Visual LTR and the option SPACES_RELATIVE_TO_TEXT_BEGIN_END
-   *           was used, the spaces will be consumed from begin of buffer. If
-   *           there are no spaces to expand the LamAlef, an exception is thrown.
-   */
-
-  private boolean  expandCompositCharAtEnd(char[] dest,int start, int length,
-                          int lacount){
-      boolean spaceNotFound = false;
-
-      if (lacount > countSpacesLeft(dest, start, length)) {
-          spaceNotFound = true;
-          return spaceNotFound;
-      }
-      for (int r = start + lacount, w = start, e = start + length; r < e; ++r) {
-          char ch = dest[r];
-          if (isNormalizedLamAlefChar(ch)) {
-              dest[w++] = convertNormalizedLamAlef[ch - '\u065C'];
-              dest[w++] = LAM_CHAR;
-          } else {
-              dest[w++] = ch;
-          }
-      }
-      return spaceNotFound;
-  }
-
-  /*
-   *Name     : expandCompositCharAtNear
-   *Function : Expands the LamAlef character into Lam + Alef, YehHamza character
-   *           into Yeh + Hamza, SeenFamily character into SeenFamily character
-   *           + Tail, while consuming the space next to the character.
-   */
-
-  private boolean expandCompositCharAtNear(char[] dest,int start, int length,
-                                       int yehHamzaOption, int seenTailOption, int lamAlefOption){
-
-      boolean spaceNotFound = false;
-
-
-
-      if (isNormalizedLamAlefChar(dest[start])) {
-          spaceNotFound = true;
-          return spaceNotFound;
-      }
-      for (int i = start + length; --i >=start;) {
-          char ch = dest[i];
-          if (lamAlefOption == 1 && isNormalizedLamAlefChar(ch)) {
-              if (i>start &&dest[i-1] == SPACE_CHAR) {
-                  dest[i] = LAM_CHAR;
-                  dest[--i] = convertNormalizedLamAlef[ch - '\u065C'];
-              } else {
-                  spaceNotFound = true;
-                  return spaceNotFound;
-              }
-          }else if(seenTailOption == 1 && isSeenTailFamilyChar(ch) == 1){
-              if(i>start &&dest[i-1] == SPACE_CHAR){
-                  dest[i-1] = tailChar;
-              } else{
-                  spaceNotFound = true;
-                  return spaceNotFound;
-              }
-          }else if(yehHamzaOption == 1 && isYehHamzaChar(ch)){
-
-               if(i>start &&dest[i-1] == SPACE_CHAR){
-                  dest[i] = yehHamzaToYeh[ch - YEH_HAMZAFE_CHAR];
-                  dest[i-1] = HAMZAFE_CHAR;
-              }else{
-                  spaceNotFound = true;
-                  return spaceNotFound;
-                }
-
-
-          }
-      }
-      return false;
-
-  }
-
-    /*
-     * Name    : expandCompositChar
-     * Function: LamAlef needs special handling as the LamAlef is
-     *           one character while expanding it will give two
-     *           characters Lam + Alef, so we need to expand the LamAlef
-     *           in near or far spaces according to the options the user
-     *           specifies or increase the buffer size.
-     *           Dest has enough room for the expansion if we are growing.
-     *           lamalef are normalized to the 'special characters'
-     */
-    private int expandCompositChar(char[] dest,
-                              int start,
-                              int length,
-                              int lacount,
-                              int shapingMode) throws ArabicShapingException {
-
-        int lenOptionsLamAlef = options & LAMALEF_MASK;
-        int lenOptionsSeen = options & SEEN_MASK;
-        int lenOptionsYehHamza = options & YEHHAMZA_MASK;
-        boolean spaceNotFound = false;
-
-        if (!isLogical && !spacesRelativeToTextBeginEnd) {
-            switch (lenOptionsLamAlef) {
-            case LAMALEF_BEGIN: lenOptionsLamAlef = LAMALEF_END; break;
-            case LAMALEF_END: lenOptionsLamAlef = LAMALEF_BEGIN; break;
-            default: break;
-            }
-        }
-
-        if(shapingMode == 1){
-            if(lenOptionsLamAlef == LAMALEF_AUTO){
-                if(isLogical){
-                    spaceNotFound = expandCompositCharAtEnd(dest, start, length, lacount);
-                    if(spaceNotFound){
-                        spaceNotFound = expandCompositCharAtBegin(dest, start, length, lacount);
-                    }
-                    if(spaceNotFound){
-                        spaceNotFound = expandCompositCharAtNear(dest, start, length,0,0,1);
-                    }
-                    if(spaceNotFound){
-                        throw new ArabicShapingException("No spacefor lamalef");
-                    }
-                }else{
-                    spaceNotFound = expandCompositCharAtBegin(dest, start, length, lacount);
-                    if(spaceNotFound){
-                        spaceNotFound = expandCompositCharAtEnd(dest, start, length, lacount);
-                    }
-                    if(spaceNotFound){
-                        spaceNotFound = expandCompositCharAtNear(dest, start, length,0,0,1);
-                    }
-                    if(spaceNotFound){
-                        throw new ArabicShapingException("No spacefor lamalef");
-                    }
-                }
-            }else if(lenOptionsLamAlef == LAMALEF_END){
-                spaceNotFound = expandCompositCharAtEnd(dest, start, length, lacount);
-                if(spaceNotFound){
-                    throw new ArabicShapingException("No spacefor lamalef");
-                }
-            }else if(lenOptionsLamAlef == LAMALEF_BEGIN){
-                spaceNotFound = expandCompositCharAtBegin(dest, start, length, lacount);
-                if(spaceNotFound){
-                    throw new ArabicShapingException("No spacefor lamalef");
-                }
-            }else if(lenOptionsLamAlef == LAMALEF_NEAR){
-                spaceNotFound = expandCompositCharAtNear(dest, start, length,0,0,1);
-                if(spaceNotFound){
-                    throw new ArabicShapingException("No spacefor lamalef");
-            }
-            }else if(lenOptionsLamAlef == LAMALEF_RESIZE){
-                for (int r = start + length, w = r + lacount; --r >= start;) {
-                    char ch = dest[r];
-                    if (isNormalizedLamAlefChar(ch)) {
-                        dest[--w] = '\u0644';
-                        dest[--w] = convertNormalizedLamAlef[ch - '\u065C'];
-                    } else {
-                        dest[--w] = ch;
-                    }
-                }
-                length += lacount;
-            }
-            }else{
-                if(lenOptionsSeen == SEEN_TWOCELL_NEAR){
-                spaceNotFound = expandCompositCharAtNear(dest, start, length,0,1,0);
-                if(spaceNotFound){
-                    throw new ArabicShapingException("No space for Seen tail expansion");
-                }
-            }
-            if(lenOptionsYehHamza == YEHHAMZA_TWOCELL_NEAR){
-                spaceNotFound = expandCompositCharAtNear(dest, start, length,1,0,0);
-                if(spaceNotFound){
-                    throw new ArabicShapingException("No space for YehHamza expansion");
-                }
-            }
-            }
-        return length;
-    }
-
-
-    /* Convert the input buffer from FExx Range into 06xx Range
-     * to put all characters into the 06xx range
-     * even the lamalef is converted to the special region in
-     * the 06xx range.  Return the number of lamalef chars found.
-     */
-    private int normalize(char[] dest, int start, int length) {
-        int lacount = 0;
-        for (int i = start, e = i + length; i < e; ++i) {
-            char ch = dest[i];
-            if (ch >= '\uFE70' && ch <= '\uFEFC') {
-                if (isLamAlefChar(ch)) {
-                    ++lacount;
-                }
-                dest[i] = (char)convertFEto06[ch - '\uFE70'];
-            }
-        }
-        return lacount;
-    }
-
-    /*
-     * Name    : deshapeNormalize
-     * Function: Convert the input buffer from FExx Range into 06xx Range
-     *           even the lamalef is converted to the special region in the 06xx range.
-     *           According to the options the user enters, all seen family characters
-     *           followed by a tail character are merged to seen tail family character and
-     *           any yeh followed by a hamza character are merged to yehhamza character.
-     *           Method returns the number of lamalef chars found.
-     */
-    private int deshapeNormalize(char[] dest, int start, int length) {
-        int lacount = 0;
-        int yehHamzaComposeEnabled = 0;
-        int seenComposeEnabled = 0;
-
-        yehHamzaComposeEnabled = ((options&YEHHAMZA_MASK) == YEHHAMZA_TWOCELL_NEAR) ? 1 : 0;
-        seenComposeEnabled = ((options&SEEN_MASK) == SEEN_TWOCELL_NEAR)? 1 : 0;
-
-        for (int i = start, e = i + length; i < e; ++i) {
-            char ch = dest[i];
-
-        if( (yehHamzaComposeEnabled == 1) && ((ch == HAMZA06_CHAR) || (ch == HAMZAFE_CHAR))
-               && (i < (length - 1)) && isAlefMaksouraChar(dest[i+1] )) {
-                dest[i] = SPACE_CHAR;
-                dest[i+1] = YEH_HAMZA_CHAR;
-       } else if ( (seenComposeEnabled == 1) && (isTailChar(ch)) && (i< (length - 1))
-                       && (isSeenTailFamilyChar(dest[i+1])==1) ) {
-               dest[i] = SPACE_CHAR;
-       }
-       else if (ch >= '\uFE70' && ch <= '\uFEFC') {
-                if (isLamAlefChar(ch)) {
-                    ++lacount;
-                }
-                dest[i] = (char)convertFEto06[ch - '\uFE70'];
-            }
-        }
-        return lacount;
-    }
-
-    /*
-     * Name    : shapeUnicode
-     * Function: Converts an Arabic Unicode buffer in 06xx Range into a shaped
-     *           arabic Unicode buffer in FExx Range
-     */
-    private int shapeUnicode(char[] dest,
-                             int start,
-                             int length,
-                             int destSize,
-                             int tashkeelFlag)throws ArabicShapingException {
-
-        int lamalef_count = normalize(dest, start, length);
-
-        // resolve the link between the characters.
-        // Arabic characters have four forms: Isolated, Initial, Medial and Final.
-        // Tashkeel characters have two, isolated or medial, and sometimes only isolated.
-        // tashkeelFlag == 0: shape normally, 1: shape isolated, 2: don't shape
-
-        boolean lamalef_found = false, seenfam_found = false;
-        boolean yehhamza_found = false, tashkeel_found = false;
-        int i = start + length - 1;
-        int currLink = getLink(dest[i]);
-        int nextLink = 0;
-        int prevLink = 0;
-        int lastLink = 0;
-        //int prevPos = i;
-        int lastPos = i;
-        int nx = -2;
-        int nw = 0;
-
-        while (i >= 0) {
-            // If high byte of currLink > 0 then there might be more than one shape
-            if ((currLink & '\uFF00') > 0 || isTashkeelChar(dest[i])) {
-                nw = i - 1;
-                nx = -2;
-                while (nx < 0) { // we need to know about next char
-                    if (nw == -1) {
-                        nextLink = 0;
-                        nx = Integer.MAX_VALUE;
-                    } else {
-                        nextLink = getLink(dest[nw]);
-                        if ((nextLink & IRRELEVANT) == 0) {
-                            nx = nw;
-                        } else {
-                            --nw;
-                        }
-                    }
-                }
-
-                if (((currLink & ALEFTYPE) > 0) && ((lastLink & LAMTYPE) > 0)) {
-                    lamalef_found = true;
-                    char wLamalef = changeLamAlef(dest[i]); // get from 0x065C-0x065f
-                    if (wLamalef != '\u0000') {
-                        // replace alef by marker, it will be removed later
-                        dest[i] = '\uffff';
-                        dest[lastPos] = wLamalef;
-                        i = lastPos;
-                    }
-
-                    lastLink = prevLink;
-                    currLink = getLink(wLamalef); // requires '\u0000', unfortunately
-                }
-                if ((i > 0) && (dest[i-1] == SPACE_CHAR))
-                {
-                    if ( isSeenFamilyChar(dest[i]) == 1){
-                        seenfam_found = true;
-                    } else if (dest[i] == YEH_HAMZA_CHAR) {
-                        yehhamza_found = true;
-                    }
-                }
-                else if(i==0){
-                    if ( isSeenFamilyChar(dest[i]) == 1){
-                        seenfam_found = true;
-                    } else if (dest[i] == YEH_HAMZA_CHAR) {
-                        yehhamza_found = true;
-                    }
-                }
-
-
-                // get the proper shape according to link ability of neighbors
-                // and of character; depends on the order of the shapes
-                // (isolated, initial, middle, final) in the compatibility area
-
-                int flag = specialChar(dest[i]);
-
-                int shape = shapeTable[nextLink & LINK_MASK]
-                    [lastLink & LINK_MASK]
-                    [currLink & LINK_MASK];
-
-                if (flag == 1) {
-                    shape &= 0x1;
-                } else if (flag == 2) {
-                    if (tashkeelFlag == 0 &&
-                        ((lastLink & LINKL) != 0) &&
-                        ((nextLink & LINKR) != 0) &&
-                        dest[i] != '\u064C' &&
-                        dest[i] != '\u064D' &&
-                        !((nextLink & ALEFTYPE) == ALEFTYPE &&
-                          (lastLink & LAMTYPE) == LAMTYPE)) {
-
-                        shape = 1;
-                    } else {
-                        shape = 0;
-                    }
-                }
-                if (flag == 2) {
-                    if (tashkeelFlag == 2) {
-                        dest[i] = TASHKEEL_SPACE_SUB;
-                        tashkeel_found = true;
-                    }
-                    else{
-                        dest[i] = (char)('\uFE70' + irrelevantPos[dest[i] - '\u064B'] + shape);
-                    }
-                    // else leave tashkeel alone
-                } else {
-                    dest[i] = (char)('\uFE70' + (currLink >> 8) + shape);
-                }
-            }
-
-            // move one notch forward
-            if ((currLink & IRRELEVANT) == 0) {
-                prevLink = lastLink;
-                lastLink = currLink;
-                //prevPos = lastPos;
-                lastPos = i;
-            }
-
-            --i;
-            if (i == nx) {
-                currLink = nextLink;
-                nx = -2;
-            } else if (i != -1) {
-                currLink = getLink(dest[i]);
-            }
-        }
-
-        // If we found a lam/alef pair in the buffer
-        // call handleGeneratedSpaces to remove the spaces that were added
-
-        destSize = length;
-        if (lamalef_found || tashkeel_found) {
-            destSize = handleGeneratedSpaces(dest, start, length);
-        }
-        if (seenfam_found || yehhamza_found){
-            destSize = expandCompositChar(dest, start, destSize, lamalef_count, SHAPE_MODE);
-        }
-        return destSize;
-    }
-
-    /*
-     * Name    : deShapeUnicode
-     * Function: Converts an Arabic Unicode buffer in FExx Range into unshaped
-     *           arabic Unicode buffer in 06xx Range
-     */
-    private int deShapeUnicode(char[] dest,
-                               int start,
-                               int length,
-                               int destSize) throws ArabicShapingException {
-
-        int lamalef_count = deshapeNormalize(dest, start, length);
-
-        // If there was a lamalef in the buffer call expandLamAlef
-        if (lamalef_count != 0) {
-            // need to adjust dest to fit expanded buffer... !!!
-            destSize = expandCompositChar(dest, start, length, lamalef_count,DESHAPE_MODE);
-        } else {
-            destSize = length;
-        }
-
-        return destSize;
-    }
-
-    private int internalShape(char[] source,
-                              int sourceStart,
-                              int sourceLength,
-                              char[] dest,
-                              int destStart,
-                              int destSize) throws ArabicShapingException {
-
-        if (sourceLength == 0) {
-            return 0;
-        }
-
-        if (destSize == 0) {
-            if (((options & LETTERS_MASK) != LETTERS_NOOP) &&
-                ((options & LAMALEF_MASK) == LAMALEF_RESIZE)) {
-
-                return calculateSize(source, sourceStart, sourceLength);
-            } else {
-                return sourceLength; // by definition
-            }
-        }
-
-        // always use temp buffer
-        char[] temp = new char[sourceLength * 2]; // all lamalefs requiring expansion
-        System.arraycopy(source, sourceStart, temp, 0, sourceLength);
-
-        if (isLogical) {
-            invertBuffer(temp, 0, sourceLength);
-        }
-
-        int outputSize = sourceLength;
-
-        switch (options & LETTERS_MASK) {
-        case LETTERS_SHAPE_TASHKEEL_ISOLATED:
-            outputSize = shapeUnicode(temp, 0, sourceLength, destSize, 1);
-            break;
-
-        case LETTERS_SHAPE:
-            if( ((options&TASHKEEL_MASK)> 0) &&
-                ((options&TASHKEEL_MASK) !=TASHKEEL_REPLACE_BY_TATWEEL)) {
-                   /* Call the shaping function with tashkeel flag == 2 for removal of tashkeel */
-                outputSize = shapeUnicode(temp, 0, sourceLength, destSize, 2);
-                }else {
-                   //default Call the shaping function with tashkeel flag == 1 */
-                    outputSize = shapeUnicode(temp, 0, sourceLength, destSize, 0);
-
-                   /*After shaping text check if user wants to remove tashkeel and replace it with tatweel*/
-                   if( (options&TASHKEEL_MASK) == TASHKEEL_REPLACE_BY_TATWEEL){
-                       outputSize = handleTashkeelWithTatweel(temp,sourceLength);
-                   }
-               }
-            break;
-
-        case LETTERS_UNSHAPE:
-            outputSize = deShapeUnicode(temp, 0, sourceLength, destSize);
-            break;
-
-        default:
-            break;
-        }
-
-        if (outputSize > destSize) {
-            throw new ArabicShapingException("not enough room for result data");
-        }
-
-        if ((options & DIGITS_MASK) != DIGITS_NOOP) {
-            char digitBase = '\u0030'; // European digits
-            switch (options & DIGIT_TYPE_MASK) {
-            case DIGIT_TYPE_AN:
-                digitBase = '\u0660';  // Arabic-Indic digits
-                break;
-
-            case DIGIT_TYPE_AN_EXTENDED:
-                digitBase = '\u06f0';  // Eastern Arabic-Indic digits (Persian and Urdu)
-                break;
-
-            default:
-                break;
-            }
-
-            switch (options & DIGITS_MASK) {
-            case DIGITS_EN2AN:
-                {
-                    int digitDelta = digitBase - '\u0030';
-                    for (int i = 0; i < outputSize; ++i) {
-                        char ch = temp[i];
-                        if (ch <= '\u0039' && ch >= '\u0030') {
-                            temp[i] += digitDelta;
-                        }
-                    }
-                }
-                break;
-
-            case DIGITS_AN2EN:
-                {
-                    char digitTop = (char)(digitBase + 9);
-                    int digitDelta = '\u0030' - digitBase;
-                    for (int i = 0; i < outputSize; ++i) {
-                        char ch = temp[i];
-                        if (ch <= digitTop && ch >= digitBase) {
-                            temp[i] += digitDelta;
-                        }
-                    }
-                }
-                break;
-
-            case DIGITS_EN2AN_INIT_LR:
-                shapeToArabicDigitsWithContext(temp, 0, outputSize, digitBase, false);
-                break;
-
-            case DIGITS_EN2AN_INIT_AL:
-                shapeToArabicDigitsWithContext(temp, 0, outputSize, digitBase, true);
-                break;
-
-            default:
-                break;
-            }
-        }
-
-        if (isLogical) {
-            invertBuffer(temp, 0, outputSize);
-        }
-
-        System.arraycopy(temp, 0, dest, destStart, outputSize);
-
-        return outputSize;
-    }
-
-    private static class ArabicShapingException extends RuntimeException {
-        ArabicShapingException(String msg) {
-            super(msg);
-        }
-    }
-}
diff --git a/icu4j/license.html b/icu4j/license.html
deleted file mode 100644
index b905ddf..0000000
--- a/icu4j/license.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></meta>
-<title>ICU License - ICU 1.8.1 and later</title>
-</head>
-
-<body BGCOLOR="#ffffff">
-<h2>ICU License - ICU 1.8.1 and later</h2>
-
-<p>COPYRIGHT AND PERMISSION NOTICE</p>
-
-<p>
-Copyright (c) 1995-2006 International Business Machines Corporation and others
-</p>
-<p>
-All rights reserved.
-</p>
-<p>
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, and/or sell
-copies of the Software, and to permit persons
-to whom the Software is furnished to do so, provided that the above
-copyright notice(s) and this permission notice appear in all copies
-of the Software and that both the above copyright notice(s) and this
-permission notice appear in supporting documentation.
-</p>
-<p>
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
-INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL
-THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM,
-OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
-RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
-USE OR PERFORMANCE OF THIS SOFTWARE.
-</p>
-<p>
-Except as contained in this notice, the name of a copyright holder shall not be
-used in advertising or otherwise to promote the sale, use or other dealings in
-this Software without prior written authorization of the copyright holder.
-</p>
-
-<hr>
-<p><small>
-All trademarks and registered trademarks mentioned herein are the property of their respective owners.
-</small></p>
-</body>
-</html>
diff --git a/include/androidfw/ResourceTypes.h b/include/androidfw/ResourceTypes.h
index 48f5bf3..5b45d70 100644
--- a/include/androidfw/ResourceTypes.h
+++ b/include/androidfw/ResourceTypes.h
@@ -855,6 +855,7 @@
         DENSITY_HIGH = ACONFIGURATION_DENSITY_HIGH,
         DENSITY_XHIGH = ACONFIGURATION_DENSITY_XHIGH,
         DENSITY_XXHIGH = ACONFIGURATION_DENSITY_XXHIGH,
+        DENSITY_XXXHIGH = ACONFIGURATION_DENSITY_XXXHIGH,
         DENSITY_NONE = ACONFIGURATION_DENSITY_NONE
     };
     
diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java
index 31c38d5..d7119fff 100644
--- a/keystore/java/android/security/KeyChain.java
+++ b/keystore/java/android/security/KeyChain.java
@@ -336,7 +336,12 @@
         KeyChainConnection keyChainConnection = bind(context);
         try {
             IKeyChainService keyChainService = keyChainConnection.getService();
-            byte[] certificateBytes = keyChainService.getCertificate(alias);
+
+            final byte[] certificateBytes = keyChainService.getCertificate(alias);
+            if (certificateBytes == null) {
+                return null;
+            }
+
             TrustedCertificateStore store = new TrustedCertificateStore();
             List<X509Certificate> chain = store
                     .getCertificateChain(toCertificate(certificateBytes));
diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java
index 44be804..9dd2b0d 100644
--- a/keystore/java/android/security/KeyStore.java
+++ b/keystore/java/android/security/KeyStore.java
@@ -85,7 +85,7 @@
 
     public boolean put(String key, byte[] value) {
         try {
-            return mBinder.insert(key, value) == NO_ERROR;
+            return mBinder.insert(key, value, -1) == NO_ERROR;
         } catch (RemoteException e) {
             Log.w(TAG, "Cannot connect to keystore", e);
             return false;
@@ -94,7 +94,7 @@
 
     public boolean delete(String key) {
         try {
-            return mBinder.del(key) == NO_ERROR;
+            return mBinder.del(key, -1) == NO_ERROR;
         } catch (RemoteException e) {
             Log.w(TAG, "Cannot connect to keystore", e);
             return false;
@@ -103,7 +103,7 @@
 
     public boolean contains(String key) {
         try {
-            return mBinder.exist(key) == NO_ERROR;
+            return mBinder.exist(key, -1) == NO_ERROR;
         } catch (RemoteException e) {
             Log.w(TAG, "Cannot connect to keystore", e);
             return false;
@@ -112,7 +112,7 @@
 
     public String[] saw(String prefix) {
         try {
-            return mBinder.saw(prefix);
+            return mBinder.saw(prefix, -1);
         } catch (RemoteException e) {
             Log.w(TAG, "Cannot connect to keystore", e);
             return null;
@@ -167,7 +167,7 @@
 
     public boolean generate(String key) {
         try {
-            return mBinder.generate(key) == NO_ERROR;
+            return mBinder.generate(key, -1) == NO_ERROR;
         } catch (RemoteException e) {
             Log.w(TAG, "Cannot connect to keystore", e);
             return false;
@@ -176,7 +176,7 @@
 
     public boolean importKey(String keyName, byte[] key) {
         try {
-            return mBinder.import_key(keyName, key) == NO_ERROR;
+            return mBinder.import_key(keyName, key, -1) == NO_ERROR;
         } catch (RemoteException e) {
             Log.w(TAG, "Cannot connect to keystore", e);
             return false;
@@ -194,7 +194,7 @@
 
     public boolean delKey(String key) {
         try {
-            return mBinder.del_key(key) == NO_ERROR;
+            return mBinder.del_key(key, -1) == NO_ERROR;
         } catch (RemoteException e) {
             Log.w(TAG, "Cannot connect to keystore", e);
             return false;
@@ -243,7 +243,12 @@
      */
     public long getmtime(String key) {
         try {
-            return mBinder.getmtime(key);
+            final long millis = mBinder.getmtime(key);
+            if (millis == -1L) {
+                return -1L;
+            }
+
+            return millis * 1000L;
         } catch (RemoteException e) {
             Log.w(TAG, "Cannot connect to keystore", e);
             return -1L;
diff --git a/keystore/tests/src/android/security/AndroidKeyStoreTest.java b/keystore/tests/src/android/security/AndroidKeyStoreTest.java
index 49e2f12..c376f3d 100644
--- a/keystore/tests/src/android/security/AndroidKeyStoreTest.java
+++ b/keystore/tests/src/android/security/AndroidKeyStoreTest.java
@@ -51,6 +51,9 @@
 import java.util.Iterator;
 import java.util.Set;
 
+import javax.crypto.Cipher;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
 import javax.security.auth.x500.X500Principal;
 
 public class AndroidKeyStoreTest extends AndroidTestCase {
@@ -577,17 +580,14 @@
         assertAliases(new String[] { });
     }
 
-    public void testKeyStore_DeleteEntry_EmptyStore_Failure() throws Exception {
+    public void testKeyStore_DeleteEntry_EmptyStore_Success() throws Exception {
         mKeyStore.load(null, null);
 
-        try {
-            mKeyStore.deleteEntry(TEST_ALIAS_1);
-            fail("Should throw KeyStoreException with non-existent alias");
-        } catch (KeyStoreException success) {
-        }
+        // Should not throw when a non-existent entry is requested for delete.
+        mKeyStore.deleteEntry(TEST_ALIAS_1);
     }
 
-    public void testKeyStore_DeleteEntry_NonExistent_Failure() throws Exception {
+    public void testKeyStore_DeleteEntry_NonExistent_Success() throws Exception {
         mKeyStore.load(null, null);
 
         // TEST_ALIAS_1
@@ -596,11 +596,8 @@
         assertTrue(mAndroidKeyStore.put(Credentials.USER_CERTIFICATE + TEST_ALIAS_1, FAKE_USER_1));
         assertTrue(mAndroidKeyStore.put(Credentials.CA_CERTIFICATE + TEST_ALIAS_1, FAKE_CA_1));
 
-        try {
-            mKeyStore.deleteEntry(TEST_ALIAS_2);
-            fail("Should throw KeyStoreException with non-existent alias");
-        } catch (KeyStoreException success) {
-        }
+        // Should not throw when a non-existent entry is requested for delete.
+        mKeyStore.deleteEntry(TEST_ALIAS_2);
     }
 
     public void testKeyStore_GetCertificate_Single_Success() throws Exception {
@@ -1551,4 +1548,49 @@
         } catch (UnsupportedOperationException success) {
         }
     }
+
+    private void setupKey() throws Exception {
+        final String privateKeyAlias = Credentials.USER_PRIVATE_KEY + TEST_ALIAS_1;
+        assertTrue(mAndroidKeyStore.generate(privateKeyAlias));
+
+        X509Certificate cert = generateCertificate(mAndroidKeyStore, TEST_ALIAS_1, TEST_SERIAL_1,
+                TEST_DN_1, NOW, NOW_PLUS_10_YEARS);
+
+        assertTrue(mAndroidKeyStore.put(Credentials.USER_CERTIFICATE + TEST_ALIAS_1,
+                cert.getEncoded()));
+    }
+
+    public void testKeyStore_KeyOperations_Wrap_Success() throws Exception {
+        mKeyStore.load(null, null);
+
+        setupKey();
+
+        // Test key usage
+        Entry e = mKeyStore.getEntry(TEST_ALIAS_1, null);
+        assertNotNull(e);
+        assertTrue(e instanceof PrivateKeyEntry);
+
+        PrivateKeyEntry privEntry = (PrivateKeyEntry) e;
+        PrivateKey privKey = privEntry.getPrivateKey();
+        assertNotNull(privKey);
+
+        PublicKey pubKey = privEntry.getCertificate().getPublicKey();
+
+        Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
+        c.init(Cipher.WRAP_MODE, pubKey);
+
+        byte[] expectedKey = new byte[] {
+                0x00, 0x05, (byte) 0xAA, (byte) 0x0A5, (byte) 0xFF, 0x55, 0x0A
+        };
+
+        SecretKey expectedSecret = new SecretKeySpec(expectedKey, "AES");
+
+        byte[] wrappedExpected = c.wrap(expectedSecret);
+
+        c.init(Cipher.UNWRAP_MODE, privKey);
+        SecretKey actualSecret = (SecretKey) c.unwrap(wrappedExpected, "AES", Cipher.SECRET_KEY);
+
+        assertEquals(Arrays.toString(expectedSecret.getEncoded()),
+                Arrays.toString(actualSecret.getEncoded()));
+    }
 }
diff --git a/libs/androidfw/Input.cpp b/libs/androidfw/Input.cpp
index 8996f6f..eca692a 100644
--- a/libs/androidfw/Input.cpp
+++ b/libs/androidfw/Input.cpp
@@ -225,7 +225,7 @@
     }
 
     for (uint32_t i = 0; i < count; i++) {
-        values[i] = parcel->readInt32();
+        values[i] = parcel->readFloat();
     }
     return OK;
 }
@@ -235,7 +235,7 @@
 
     uint32_t count = __builtin_popcountll(bits);
     for (uint32_t i = 0; i < count; i++) {
-        parcel->writeInt32(values[i]);
+        parcel->writeFloat(values[i]);
     }
     return OK;
 }
diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk
index 549edd2..6bc7aef 100644
--- a/libs/hwui/Android.mk
+++ b/libs/hwui/Android.mk
@@ -14,6 +14,7 @@
 		DisplayListLogBuffer.cpp \
 		DisplayListRenderer.cpp \
 		Dither.cpp \
+		Extensions.cpp \
 		FboCache.cpp \
 		GradientCache.cpp \
 		Layer.cpp \
@@ -21,12 +22,13 @@
 		LayerRenderer.cpp \
 		Matrix.cpp \
 		OpenGLRenderer.cpp \
-		PathRenderer.cpp \
 		Patch.cpp \
 		PatchCache.cpp \
 		PathCache.cpp \
+		PathTessellator.cpp \
 		Program.cpp \
 		ProgramCache.cpp \
+		RenderBufferCache.cpp \
 		ResourceCache.cpp \
 		ShapeCache.cpp \
 		SkiaColorFilter.cpp \
@@ -36,6 +38,8 @@
 		TextureCache.cpp \
 		TextDropShadowCache.cpp
 
+	intermediates := $(call intermediates-dir-for,STATIC_LIBRARIES,libRS,TARGET,)
+
 	LOCAL_C_INCLUDES += \
 		$(JNI_H_INCLUDE) \
 		$(LOCAL_PATH)/../../include/utils \
@@ -43,11 +47,14 @@
 		external/skia/include/effects \
 		external/skia/include/images \
 		external/skia/src/ports \
-		external/skia/include/utils
+		external/skia/include/utils \
+		$(intermediates) \
+		frameworks/rs/cpp \
+		frameworks/rs
 
 	LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER -DGL_GLEXT_PROTOTYPES
 	LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-	LOCAL_SHARED_LIBRARIES := libcutils libutils libGLESv2 libskia libui
+	LOCAL_SHARED_LIBRARIES := libcutils libutils libGLESv2 libskia libui libRS libRScpp
 	LOCAL_MODULE := libhwui
 	LOCAL_MODULE_TAGS := optional
 
@@ -61,5 +68,5 @@
 
 	include $(BUILD_SHARED_LIBRARY)
 
-    include $(call all-makefiles-under,$(LOCAL_PATH))
+	include $(call all-makefiles-under,$(LOCAL_PATH))
 endif
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index 7e645d2..74201d1 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -47,7 +47,7 @@
 // Constructors/destructor
 ///////////////////////////////////////////////////////////////////////////////
 
-Caches::Caches(): Singleton<Caches>(), mInitialized(false) {
+Caches::Caches(): Singleton<Caches>(), mExtensions(Extensions::getInstance()), mInitialized(false) {
     init();
     initFont();
     initExtensions();
@@ -89,6 +89,9 @@
 
     mFunctorsCount = 0;
 
+    debugLayersUpdates = false;
+    debugOverdraw = false;
+
     mInitialized = true;
 }
 
@@ -97,7 +100,7 @@
 }
 
 void Caches::initExtensions() {
-    if (extensions.hasDebugMarker()) {
+    if (mExtensions.hasDebugMarker()) {
         eventMark = glInsertEventMarkerEXT;
         startMark = glPushGroupMarkerEXT;
         endMark = glPopGroupMarkerEXT;
@@ -107,7 +110,7 @@
         endMark = endMarkNull;
     }
 
-    if (extensions.hasDebugLabel()) {
+    if (mExtensions.hasDebugLabel()) {
         setLabel = glLabelObjectEXT;
         getLabel = glGetObjectLabelEXT;
     } else {
@@ -183,6 +186,8 @@
             textureCache.getSize(), textureCache.getMaxSize());
     log.appendFormat("  LayerCache           %8d / %8d\n",
             layerCache.getSize(), layerCache.getMaxSize());
+    log.appendFormat("  RenderBufferCache    %8d / %8d\n",
+            renderBufferCache.getSize(), renderBufferCache.getMaxSize());
     log.appendFormat("  GradientCache        %8d / %8d\n",
             gradientCache.getSize(), gradientCache.getMaxSize());
     log.appendFormat("  PathCache            %8d / %8d\n",
@@ -212,6 +217,7 @@
     uint32_t total = 0;
     total += textureCache.getSize();
     total += layerCache.getSize();
+    total += renderBufferCache.getSize();
     total += gradientCache.getSize();
     total += pathCache.getSize();
     total += dropShadowCache.getSize();
@@ -295,6 +301,7 @@
             // fall through
         case kFlushMode_Layers:
             layerCache.clear();
+            renderBufferCache.clear();
             break;
     }
 
@@ -467,13 +474,13 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 void Caches::startTiling(GLuint x, GLuint y, GLuint width, GLuint height, bool discard) {
-    if (extensions.hasTiledRendering() && !debugOverdraw) {
+    if (mExtensions.hasTiledRendering() && !debugOverdraw) {
         glStartTilingQCOM(x, y, width, height, (discard ? GL_NONE : GL_COLOR_BUFFER_BIT0_QCOM));
     }
 }
 
 void Caches::endTiling() {
-    if (extensions.hasTiledRendering() && !debugOverdraw) {
+    if (mExtensions.hasTiledRendering() && !debugOverdraw) {
         glEndTilingQCOM(GL_COLOR_BUFFER_BIT0_QCOM);
     }
 }
diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h
index 1c4d05f..d70c0e3 100644
--- a/libs/hwui/Caches.h
+++ b/libs/hwui/Caches.h
@@ -25,11 +25,11 @@
 
 #include <cutils/compiler.h>
 
-#include "Extensions.h"
 #include "FontRenderer.h"
 #include "GammaFontRenderer.h"
 #include "TextureCache.h"
 #include "LayerCache.h"
+#include "RenderBufferCache.h"
 #include "GradientCache.h"
 #include "PatchCache.h"
 #include "ProgramCache.h"
@@ -66,7 +66,6 @@
 static const GLsizei gMeshStride = sizeof(TextureVertex);
 static const GLsizei gVertexStride = sizeof(Vertex);
 static const GLsizei gAlphaVertexStride = sizeof(AlphaVertex);
-static const GLsizei gAAVertexStride = sizeof(AAVertex);
 static const GLsizei gMeshTextureOffset = 2 * sizeof(float);
 static const GLsizei gVertexAlphaOffset = 2 * sizeof(float);
 static const GLsizei gVertexAAWidthOffset = 2 * sizeof(float);
@@ -244,9 +243,6 @@
     // VBO to draw with
     GLuint meshBuffer;
 
-    // GL extensions
-    Extensions extensions;
-
     // Misc
     GLint maxTextureSize;
     bool debugLayersUpdates;
@@ -254,6 +250,7 @@
 
     TextureCache textureCache;
     LayerCache layerCache;
+    RenderBufferCache renderBufferCache;
     GradientCache gradientCache;
     ProgramCache programCache;
     PathCache pathCache;
@@ -312,6 +309,8 @@
     GLint mScissorWidth;
     GLint mScissorHeight;
 
+    Extensions& mExtensions;
+
     // Used to render layers
     TextureVertex* mRegionMesh;
     GLuint mRegionMeshIndices;
diff --git a/libs/hwui/Debug.h b/libs/hwui/Debug.h
index dfc4e25..20eb5e1 100644
--- a/libs/hwui/Debug.h
+++ b/libs/hwui/Debug.h
@@ -44,6 +44,12 @@
 // Turn on to display info about layers
 #define DEBUG_LAYERS 0
 
+// Turn on to display info about render buffers
+#define DEBUG_RENDER_BUFFERS 0
+
+// Turn on to make stencil operations easier to debug
+#define DEBUG_STENCIL 0
+
 // Turn on to display debug info about 9patch objects
 #define DEBUG_PATCHES 0
 // Turn on to "explode" 9patch objects
diff --git a/libs/hwui/DisplayListOp.h b/libs/hwui/DisplayListOp.h
index a4de56d..6425b43 100644
--- a/libs/hwui/DisplayListOp.h
+++ b/libs/hwui/DisplayListOp.h
@@ -39,7 +39,7 @@
 
 // Use OP_LOG for logging with arglist, OP_LOGS if just printing char*
 #define OP_LOGS(s) OP_LOG("%s", s)
-#define OP_LOG(s, ...) ALOGD( "%*s--%p " s, level * 2, "", this, __VA_ARGS__ )
+#define OP_LOG(s, ...) ALOGD( "%*s" s, level * 2, "", __VA_ARGS__ )
 
 
 namespace android {
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp
index 5cb629e..17ed8ac 100644
--- a/libs/hwui/DisplayListRenderer.cpp
+++ b/libs/hwui/DisplayListRenderer.cpp
@@ -264,7 +264,7 @@
     ALOGD("%*sStart display list (%p, %s, render=%d)", level * 2, "", this,
             mName.string(), isRenderable());
 
-    ALOGD("%*s%s %d", level * 4, "", "Save", SkCanvas::kMatrix_SaveFlag | SkCanvas::kClip_SaveFlag);
+    ALOGD("%*s%s %d", level * 2, "", "Save", SkCanvas::kMatrix_SaveFlag | SkCanvas::kClip_SaveFlag);
     outputViewProperties(level);
     int flags = DisplayListOp::kOpLogFlag_Recurse;
     for (unsigned int i = 0; i < mDisplayListData->displayListOps.size(); i++) {
@@ -350,7 +350,7 @@
                     mMultipliedAlpha, flags);
         }
     }
-    if (mClipChildren) {
+    if (mClipChildren && !mCaching) {
         ALOGD("%*sClipRect %.2f, %.2f, %.2f, %.2f", level * 2, "", 0.0f, 0.0f,
                 (float) mRight - mLeft, (float) mBottom - mTop);
     }
@@ -391,7 +391,7 @@
                     mMultipliedAlpha, flags);
         }
     }
-    if (mClipChildren) {
+    if (mClipChildren && !mCaching) {
         renderer.clipRect(0, 0, mRight - mLeft, mBottom - mTop,
                 SkRegion::kIntersect_Op);
     }
@@ -814,7 +814,6 @@
         SkPath* path, float hOffset, float vOffset, SkPaint* paint) {
     if (!text || count <= 0) return DrawGlInfo::kStatusDone;
 
-    paint->setAntiAlias(true);
     text = refText(text, bytesCount);
     path = refPath(path);
     paint = refPaint(paint);
@@ -833,7 +832,6 @@
         const float* positions, SkPaint* paint) {
     if (!text || count <= 0) return DrawGlInfo::kStatusDone;
 
-    paint->setAntiAlias(true);
     text = refText(text, bytesCount);
     positions = refBuffer<float>(positions, count * 2);
     paint = refPaint(paint);
@@ -851,14 +849,6 @@
         float x, float y, const float* positions, SkPaint* paint, float length) {
     if (!text || count <= 0) return DrawGlInfo::kStatusDone;
 
-    // TODO: We should probably make a copy of the paint instead of modifying
-    //       it; modifying the paint will change its generationID the first
-    //       time, which might impact caches. More investigation needed to
-    //       see if it matters.
-    //       If we make a copy, then drawTextDecorations() should *not* make
-    //       its own copy as it does right now.
-    // Beware: this needs Glyph encoding (already done on the Paint constructor)
-    paint->setAntiAlias(true);
     if (length < 0.0f) length = paint->measureText(text, bytesCount);
 
     text = refText(text, bytesCount);
diff --git a/libs/hwui/Extensions.cpp b/libs/hwui/Extensions.cpp
new file mode 100644
index 0000000..edc90fb
--- /dev/null
+++ b/libs/hwui/Extensions.cpp
@@ -0,0 +1,87 @@
+/*
+ * 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 "Debug.h"
+#include "Extensions.h"
+
+namespace android {
+
+using namespace uirenderer;
+ANDROID_SINGLETON_STATIC_INSTANCE(Extensions);
+
+namespace uirenderer {
+
+///////////////////////////////////////////////////////////////////////////////
+// Defines
+///////////////////////////////////////////////////////////////////////////////
+
+// Debug
+#if DEBUG_EXTENSIONS
+    #define EXT_LOGD(...) ALOGD(__VA_ARGS__)
+#else
+    #define EXT_LOGD(...)
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// Constructors
+///////////////////////////////////////////////////////////////////////////////
+
+Extensions::Extensions(): Singleton<Extensions>() {
+    const char* buffer = (const char*) glGetString(GL_EXTENSIONS);
+    const char* current = buffer;
+    const char* head = current;
+    EXT_LOGD("Available GL extensions:");
+    do {
+        head = strchr(current, ' ');
+        String8 s(current, head ? head - current : strlen(current));
+        if (s.length()) {
+            mExtensionList.add(s);
+            EXT_LOGD("  %s", s.string());
+        }
+        current = head + 1;
+    } while (head);
+
+    mHasNPot = hasExtension("GL_OES_texture_npot");
+    mHasFramebufferFetch = hasExtension("GL_NV_shader_framebuffer_fetch");
+    mHasDiscardFramebuffer = hasExtension("GL_EXT_discard_framebuffer");
+    mHasDebugMarker = hasExtension("GL_EXT_debug_marker");
+    mHasDebugLabel = hasExtension("GL_EXT_debug_label");
+    mHasTiledRendering = hasExtension("GL_QCOM_tiled_rendering");
+    mHas1BitStencil = hasExtension("GL_OES_stencil1");
+    mHas4BitStencil = hasExtension("GL_OES_stencil4");
+
+    mExtensions = strdup(buffer);
+}
+
+Extensions::~Extensions() {
+   free(mExtensions);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// Methods
+///////////////////////////////////////////////////////////////////////////////
+
+bool Extensions::hasExtension(const char* extension) const {
+   const String8 s(extension);
+   return mExtensionList.indexOf(s) >= 0;
+}
+
+void Extensions::dump() const {
+   ALOGD("Supported extensions:\n%s", mExtensions);
+}
+
+}; // namespace uirenderer
+}; // namespace android
diff --git a/libs/hwui/Extensions.h b/libs/hwui/Extensions.h
index bdaa3cc..a069a6a 100644
--- a/libs/hwui/Extensions.h
+++ b/libs/hwui/Extensions.h
@@ -17,62 +17,24 @@
 #ifndef ANDROID_HWUI_EXTENSIONS_H
 #define ANDROID_HWUI_EXTENSIONS_H
 
+#include <utils/Singleton.h>
 #include <utils/SortedVector.h>
 #include <utils/String8.h>
 
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
 
-#include "Debug.h"
-
 namespace android {
 namespace uirenderer {
 
 ///////////////////////////////////////////////////////////////////////////////
-// Defines
-///////////////////////////////////////////////////////////////////////////////
-
-// Debug
-#if DEBUG_EXTENSIONS
-    #define EXT_LOGD(...) ALOGD(__VA_ARGS__)
-#else
-    #define EXT_LOGD(...)
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
 // Classes
 ///////////////////////////////////////////////////////////////////////////////
 
-class Extensions {
+class Extensions: public Singleton<Extensions> {
 public:
-    Extensions() {
-        const char* buffer = (const char*) glGetString(GL_EXTENSIONS);
-        const char* current = buffer;
-        const char* head = current;
-        EXT_LOGD("Available GL extensions:");
-        do {
-            head = strchr(current, ' ');
-            String8 s(current, head ? head - current : strlen(current));
-            if (s.length()) {
-                mExtensionList.add(s);
-                EXT_LOGD("  %s", s.string());
-            }
-            current = head + 1;
-        } while (head);
-
-        mHasNPot = hasExtension("GL_OES_texture_npot");
-        mHasFramebufferFetch = hasExtension("GL_NV_shader_framebuffer_fetch");
-        mHasDiscardFramebuffer = hasExtension("GL_EXT_discard_framebuffer");
-        mHasDebugMarker = hasExtension("GL_EXT_debug_marker");
-        mHasDebugLabel = hasExtension("GL_EXT_debug_label");
-        mHasTiledRendering = hasExtension("GL_QCOM_tiled_rendering");
-
-        mExtensions = strdup(buffer);
-    }
-
-    ~Extensions() {
-        free(mExtensions);
-    }
+    Extensions();
+    ~Extensions();
 
     inline bool hasNPot() const { return mHasNPot; }
     inline bool hasFramebufferFetch() const { return mHasFramebufferFetch; }
@@ -80,17 +42,16 @@
     inline bool hasDebugMarker() const { return mHasDebugMarker; }
     inline bool hasDebugLabel() const { return mHasDebugLabel; }
     inline bool hasTiledRendering() const { return mHasTiledRendering; }
+    inline bool has1BitStencil() const { return mHas1BitStencil; }
+    inline bool has4BitStencil() const { return mHas4BitStencil; }
 
-    bool hasExtension(const char* extension) const {
-        const String8 s(extension);
-        return mExtensionList.indexOf(s) >= 0;
-    }
+    bool hasExtension(const char* extension) const;
 
-    void dump() {
-        ALOGD("Supported extensions:\n%s", mExtensions);
-    }
+    void dump() const;
 
 private:
+    friend class Singleton<Extensions>;
+
     SortedVector<String8> mExtensionList;
 
     char* mExtensions;
@@ -101,6 +62,8 @@
     bool mHasDebugMarker;
     bool mHasDebugLabel;
     bool mHasTiledRendering;
+    bool mHas1BitStencil;
+    bool mHas4BitStencil;
 }; // class Extensions
 
 }; // namespace uirenderer
diff --git a/libs/hwui/FontRenderer.cpp b/libs/hwui/FontRenderer.cpp
index 5c1eb38..5d5e6a5 100644
--- a/libs/hwui/FontRenderer.cpp
+++ b/libs/hwui/FontRenderer.cpp
@@ -22,6 +22,9 @@
 
 #include <utils/Log.h>
 
+#include "RenderScript.h"
+
+#include "utils/Timing.h"
 #include "Caches.h"
 #include "Debug.h"
 #include "FontRenderer.h"
@@ -30,6 +33,9 @@
 namespace android {
 namespace uirenderer {
 
+// blur inputs smaller than this constant will bypass renderscript
+#define RS_MIN_INPUT_CUTOFF 10000
+
 ///////////////////////////////////////////////////////////////////////////////
 // FontRenderer
 ///////////////////////////////////////////////////////////////////////////////
@@ -218,12 +224,14 @@
         cacheTexture->allocateTexture();
     }
 
-    uint8_t* cacheBuffer = cacheTexture->getTexture();
-    uint8_t* bitmapBuffer = (uint8_t*) glyph.fImage;
-    unsigned int stride = glyph.rowBytes();
+    // Tells us whether the glyphs is B&W (1 bit per pixel)
+    // or anti-aliased (8 bits per pixel)
+    SkMask::Format format = static_cast<SkMask::Format>(glyph.fMaskFormat);
 
+    uint8_t* cacheBuffer = cacheTexture->getTexture();
     uint32_t cacheX = 0, bX = 0, cacheY = 0, bY = 0;
 
+    // Zero out the borders
     for (cacheX = startX - TEXTURE_BORDER_SIZE; cacheX < endX + TEXTURE_BORDER_SIZE; cacheX++) {
         cacheBuffer[(startY - TEXTURE_BORDER_SIZE) * cacheWidth + cacheX] = 0;
         cacheBuffer[(endY + TEXTURE_BORDER_SIZE - 1) * cacheWidth + cacheX] = 0;
@@ -235,20 +243,49 @@
         cacheBuffer[cacheY * cacheWidth + endX + TEXTURE_BORDER_SIZE - 1] = 0;
     }
 
-    if (mGammaTable) {
-        for (cacheX = startX, bX = 0; cacheX < endX; cacheX++, bX++) {
-            for (cacheY = startY, bY = 0; cacheY < endY; cacheY++, bY++) {
-                uint8_t tempCol = bitmapBuffer[bY * stride + bX];
-                cacheBuffer[cacheY * cacheWidth + cacheX] = mGammaTable[tempCol];
+    // Copy the glyph image, taking the mask format into account
+    uint8_t* bitmapBuffer = (uint8_t*) glyph.fImage;
+    int stride = glyph.rowBytes();
+
+    switch (format) {
+        case SkMask::kA8_Format: {
+            if (mGammaTable) {
+                for (cacheY = startY, bY = 0; cacheY < endY; cacheY++, bY += stride) {
+                    for (cacheX = startX, bX = 0; cacheX < endX; cacheX++, bX++) {
+                        uint8_t tempCol = bitmapBuffer[bY + bX];
+                        cacheBuffer[cacheY * cacheWidth + cacheX] = mGammaTable[tempCol];
+                    }
+                }
+            } else {
+                for (cacheY = startY, bY = 0; cacheY < endY; cacheY++, bY += stride) {
+                    memcpy(&cacheBuffer[cacheY * cacheWidth + startX], &bitmapBuffer[bY],
+                            glyph.fWidth);
+                }
             }
+            break;
         }
-    } else {
-        for (cacheX = startX, bX = 0; cacheX < endX; cacheX++, bX++) {
-            for (cacheY = startY, bY = 0; cacheY < endY; cacheY++, bY++) {
-                uint8_t tempCol = bitmapBuffer[bY * stride + bX];
-                cacheBuffer[cacheY * cacheWidth + cacheX] = tempCol;
+        case SkMask::kBW_Format: {
+            static const uint8_t COLORS[2] = { 0, 255 };
+
+            for (cacheY = startY; cacheY < endY; cacheY++) {
+                cacheX = startX;
+                int rowBytes = stride;
+                uint8_t* buffer = bitmapBuffer;
+
+                while (--rowBytes >= 0) {
+                    uint8_t b = *buffer++;
+                    for (int8_t mask = 7; mask >= 0 && cacheX < endX; mask--) {
+                        cacheBuffer[cacheY * cacheWidth + cacheX++] = COLORS[(b >> mask) & 0x1];
+                    }
+                }
+
+                bitmapBuffer += stride;
             }
+            break;
         }
+        default:
+            ALOGW("Unkown glyph format: 0x%x", format);
+            break;
     }
 
     cachedGlyph->mIsValid = true;
@@ -512,18 +549,22 @@
 
     uint32_t paddedWidth = (uint32_t) (bounds.right - bounds.left) + 2 * radius;
     uint32_t paddedHeight = (uint32_t) (bounds.top - bounds.bottom) + 2 * radius;
-    uint8_t* dataBuffer = new uint8_t[paddedWidth * paddedHeight];
 
-    for (uint32_t i = 0; i < paddedWidth * paddedHeight; i++) {
-        dataBuffer[i] = 0;
+    // Align buffers for renderscript usage
+    if (paddedWidth & (RS_CPU_ALLOCATION_ALIGNMENT - 1)) {
+        paddedWidth += RS_CPU_ALLOCATION_ALIGNMENT - paddedWidth % RS_CPU_ALLOCATION_ALIGNMENT;
     }
 
+    int size = paddedWidth * paddedHeight;
+    uint8_t* dataBuffer = (uint8_t*)memalign(RS_CPU_ALLOCATION_ALIGNMENT, size);
+    memset(dataBuffer, 0, size);
+
     int penX = radius - bounds.left;
     int penY = radius - bounds.bottom;
 
     mCurrentFont->render(paint, text, startIndex, len, numGlyphs, penX, penY,
             Font::BITMAP, dataBuffer, paddedWidth, paddedHeight, NULL, positions);
-    blurImage(dataBuffer, paddedWidth, paddedHeight, radius);
+    blurImage(&dataBuffer, paddedWidth, paddedHeight, radius);
 
     DropShadow image;
     image.width = paddedWidth;
@@ -720,18 +761,44 @@
     }
 }
 
+void FontRenderer::blurImage(uint8_t** image, int32_t width, int32_t height, int32_t radius) {
+    if (width * height * radius < RS_MIN_INPUT_CUTOFF) {
+        float *gaussian = new float[2 * radius + 1];
+        computeGaussianWeights(gaussian, radius);
 
-void FontRenderer::blurImage(uint8_t *image, int32_t width, int32_t height, int32_t radius) {
-    float *gaussian = new float[2 * radius + 1];
-    computeGaussianWeights(gaussian, radius);
+        uint8_t* scratch = new uint8_t[width * height];
 
-    uint8_t* scratch = new uint8_t[width * height];
+        horizontalBlur(gaussian, radius, *image, scratch, width, height);
+        verticalBlur(gaussian, radius, scratch, *image, width, height);
 
-    horizontalBlur(gaussian, radius, image, scratch, width, height);
-    verticalBlur(gaussian, radius, scratch, image, width, height);
+        delete[] gaussian;
+        delete[] scratch;
+    }
 
-    delete[] gaussian;
-    delete[] scratch;
+    uint8_t* outImage = (uint8_t*)memalign(RS_CPU_ALLOCATION_ALIGNMENT, width * height);
+
+    if (mRs.get() == 0) {
+        mRs = new RSC::RS();
+        if (!mRs->init(true, true)) {
+            ALOGE("blur RS failed to init");
+        }
+
+        mRsElement = RSC::Element::A_8(mRs);
+        mRsScript = new RSC::ScriptIntrinsicBlur(mRs, mRsElement);
+    }
+
+    sp<const RSC::Type> t = RSC::Type::create(mRs, mRsElement, width, height, 0);
+    sp<RSC::Allocation> ain = RSC::Allocation::createTyped(mRs, t, RS_ALLOCATION_MIPMAP_NONE,
+            RS_ALLOCATION_USAGE_SCRIPT | RS_ALLOCATION_USAGE_SHARED, *image);
+    sp<RSC::Allocation> aout = RSC::Allocation::createTyped(mRs, t, RS_ALLOCATION_MIPMAP_NONE,
+            RS_ALLOCATION_USAGE_SCRIPT | RS_ALLOCATION_USAGE_SHARED, outImage);
+
+    mRsScript->setRadius(radius);
+    mRsScript->blur(ain, aout);
+
+    // replace the original image's pointer, avoiding a copy back to the original buffer
+    delete *image;
+    *image = outImage;
 }
 
 }; // namespace uirenderer
diff --git a/libs/hwui/FontRenderer.h b/libs/hwui/FontRenderer.h
index 3964bca..d0c44ef 100644
--- a/libs/hwui/FontRenderer.h
+++ b/libs/hwui/FontRenderer.h
@@ -31,6 +31,12 @@
 #include "Matrix.h"
 #include "Properties.h"
 
+namespace RSC {
+    class Element;
+    class RS;
+    class ScriptIntrinsicBlur;
+}
+
 namespace android {
 namespace uirenderer {
 
@@ -178,13 +184,19 @@
     Vector<uint32_t> mDrawCounts;
     Vector<CacheTexture*> mDrawCacheTextures;
 
-    /** We should consider multi-threading this code or using Renderscript **/
+    // RS constructs
+    sp<RSC::RS> mRs;
+    sp<const RSC::Element> mRsElement;
+    sp<RSC::ScriptIntrinsicBlur> mRsScript;
+
     static void computeGaussianWeights(float* weights, int32_t radius);
     static void horizontalBlur(float* weights, int32_t radius, const uint8_t *source, uint8_t *dest,
             int32_t width, int32_t height);
     static void verticalBlur(float* weights, int32_t radius, const uint8_t *source, uint8_t *dest,
             int32_t width, int32_t height);
-    static void blurImage(uint8_t* image, int32_t width, int32_t height, int32_t radius);
+
+    // the input image handle may have its pointer replaced (to avoid copies)
+    void blurImage(uint8_t** image, int32_t width, int32_t height, int32_t radius);
 };
 
 }; // namespace uirenderer
diff --git a/libs/hwui/GradientCache.cpp b/libs/hwui/GradientCache.cpp
index 154c0ec..78f9cf5 100644
--- a/libs/hwui/GradientCache.cpp
+++ b/libs/hwui/GradientCache.cpp
@@ -152,7 +152,7 @@
         GradientInfo& info) {
     uint32_t width = 256 * (count - 1);
 
-    if (!Caches::getInstance().extensions.hasNPot()) {
+    if (!Extensions::getInstance().hasNPot()) {
         width = 1 << (31 - __builtin_clz(width));
     }
 
diff --git a/libs/hwui/Layer.cpp b/libs/hwui/Layer.cpp
index 79dbfb0..1899002 100644
--- a/libs/hwui/Layer.cpp
+++ b/libs/hwui/Layer.cpp
@@ -41,7 +41,7 @@
     renderer = NULL;
     displayList = NULL;
     fbo = 0;
-    stencil = 0;
+    stencil = NULL;
     debugDrawUpdate = false;
     Caches::getInstance().resourceCache.incrementRefcount(this);
 }
@@ -87,8 +87,8 @@
     }
 
     if (stencil) {
-        bindStencilRenderBuffer();
-        allocateStencilRenderBuffer();
+        stencil->bind();
+        stencil->resize(desiredWidth, desiredHeight);
 
         if (glGetError() != GL_NO_ERROR) {
             setSize(oldWidth, oldHeight);
@@ -101,15 +101,14 @@
 
 void Layer::removeFbo(bool flush) {
     if (stencil) {
-        // TODO: recycle & cache instead of simply deleting
         GLuint previousFbo;
         glGetIntegerv(GL_FRAMEBUFFER_BINDING, (GLint*) &previousFbo);
         if (fbo != previousFbo) glBindFramebuffer(GL_FRAMEBUFFER, fbo);
         glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0);
         if (fbo != previousFbo) glBindFramebuffer(GL_FRAMEBUFFER, previousFbo);
 
-        glDeleteRenderbuffers(1, &stencil);
-        stencil = 0;
+        Caches::getInstance().renderBufferCache.put(stencil);
+        stencil = NULL;
     }
 
     if (fbo) {
diff --git a/libs/hwui/Layer.h b/libs/hwui/Layer.h
index e8a85fd..664b2f8 100644
--- a/libs/hwui/Layer.h
+++ b/libs/hwui/Layer.h
@@ -26,6 +26,7 @@
 #include <SkXfermode.h>
 
 #include "Rect.h"
+#include "RenderBuffer.h"
 #include "SkiaColorFilter.h"
 #include "Texture.h"
 #include "Vertex.h"
@@ -86,11 +87,11 @@
         deferredUpdateScheduled = true;
     }
 
-    inline uint32_t getWidth() {
+    inline uint32_t getWidth() const {
         return texture.width;
     }
 
-    inline uint32_t getHeight() {
+    inline uint32_t getHeight() const {
         return texture.height;
     }
 
@@ -116,7 +117,7 @@
         texture.blend = blend;
     }
 
-    inline bool isBlend() {
+    inline bool isBlend() const {
         return texture.blend;
     }
 
@@ -129,11 +130,11 @@
         this->mode = mode;
     }
 
-    inline int getAlpha() {
+    inline int getAlpha() const {
         return alpha;
     }
 
-    inline SkXfermode::Mode getMode() {
+    inline SkXfermode::Mode getMode() const {
         return mode;
     }
 
@@ -141,7 +142,7 @@
         this->empty = empty;
     }
 
-    inline bool isEmpty() {
+    inline bool isEmpty() const {
         return empty;
     }
 
@@ -149,23 +150,29 @@
         this->fbo = fbo;
     }
 
-    inline GLuint getFbo() {
+    inline GLuint getFbo() const {
         return fbo;
     }
 
-    inline void setStencilRenderBuffer(GLuint renderBuffer) {
-        this->stencil = renderBuffer;
+    inline void setStencilRenderBuffer(RenderBuffer* renderBuffer) {
+        if (RenderBuffer::isStencilBuffer(renderBuffer->getFormat())) {
+            this->stencil = renderBuffer;
+            glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
+                    GL_RENDERBUFFER, stencil->getName());
+        } else {
+            ALOGE("The specified render buffer is not a stencil buffer");
+        }
     }
 
-    inline GLuint getStencilRenderBuffer() {
+    inline RenderBuffer* getStencilRenderBuffer() const {
         return stencil;
     }
 
-    inline GLuint getTexture() {
+    inline GLuint getTexture() const {
         return texture.id;
     }
 
-    inline GLenum getRenderTarget() {
+    inline GLenum getRenderTarget() const {
         return renderTarget;
     }
 
@@ -181,7 +188,7 @@
         texture.setFilter(filter, bindTexture, force, renderTarget);
     }
 
-    inline bool isCacheable() {
+    inline bool isCacheable() const {
         return cacheable;
     }
 
@@ -189,7 +196,7 @@
         this->cacheable = cacheable;
     }
 
-    inline bool isDirty() {
+    inline bool isDirty() const {
         return dirty;
     }
 
@@ -197,7 +204,7 @@
         this->dirty = dirty;
     }
 
-    inline bool isTextureLayer() {
+    inline bool isTextureLayer() const {
         return textureLayer;
     }
 
@@ -205,21 +212,21 @@
         this->textureLayer = textureLayer;
     }
 
-    inline SkiaColorFilter* getColorFilter() {
+    inline SkiaColorFilter* getColorFilter() const {
         return colorFilter;
     }
 
     ANDROID_API void setColorFilter(SkiaColorFilter* filter);
 
-    inline void bindTexture() {
+    inline void bindTexture() const {
         if (texture.id) {
             glBindTexture(renderTarget, texture.id);
         }
     }
 
-    inline void bindStencilRenderBuffer() {
+    inline void bindStencilRenderBuffer() const {
         if (stencil) {
-            glBindRenderbuffer(GL_RENDERBUFFER, stencil);
+            stencil->bind();
         }
     }
 
@@ -255,12 +262,6 @@
         }
     }
 
-    inline void allocateStencilRenderBuffer() {
-        if (stencil) {
-            glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, getWidth(), getHeight());
-        }
-    }
-
     inline mat4& getTexTransform() {
         return texTransform;
     }
@@ -317,10 +318,9 @@
     GLuint fbo;
 
     /**
-     * Name of the render buffer used as the stencil buffer. If the
-     * name is 0, this layer does not have a stencil buffer.
+     * The render buffer used as the stencil buffer.
      */
-    GLuint stencil;
+    RenderBuffer* stencil;
 
     /**
      * Indicates whether this layer has been used already.
diff --git a/libs/hwui/LayerCache.cpp b/libs/hwui/LayerCache.cpp
index 4278464..a0709af 100644
--- a/libs/hwui/LayerCache.cpp
+++ b/libs/hwui/LayerCache.cpp
@@ -21,7 +21,6 @@
 #include <utils/Log.h>
 
 #include "Caches.h"
-#include "Debug.h"
 #include "LayerCache.h"
 #include "Properties.h"
 
diff --git a/libs/hwui/LayerCache.h b/libs/hwui/LayerCache.h
index 7720b42..221bfe0 100644
--- a/libs/hwui/LayerCache.h
+++ b/libs/hwui/LayerCache.h
@@ -19,7 +19,6 @@
 
 #include "Debug.h"
 #include "Layer.h"
-#include "Properties.h"
 #include "utils/SortedList.h"
 
 namespace android {
@@ -54,7 +53,7 @@
      * size of the cache goes down.
      *
      * @param width The desired width of the layer
-     * @param width The desired height of the layer
+     * @param height The desired height of the layer
      */
     Layer* get(const uint32_t width, const uint32_t height);
 
@@ -91,6 +90,7 @@
      */
     void dump();
 
+private:
     struct LayerEntry {
         LayerEntry():
             mLayer(NULL), mWidth(0), mHeight(0) {
@@ -115,12 +115,19 @@
             return compare(*this, other) != 0;
         }
 
+        friend inline int strictly_order_type(const LayerEntry& lhs, const LayerEntry& rhs) {
+            return LayerEntry::compare(lhs, rhs) < 0;
+        }
+
+        friend inline int compare_type(const LayerEntry& lhs, const LayerEntry& rhs) {
+            return LayerEntry::compare(lhs, rhs);
+        }
+
         Layer* mLayer;
         uint32_t mWidth;
         uint32_t mHeight;
     }; // struct LayerEntry
 
-private:
     void deleteLayer(Layer* layer);
 
     SortedList<LayerEntry> mCache;
@@ -129,15 +136,6 @@
     uint32_t mMaxSize;
 }; // class LayerCache
 
-inline int strictly_order_type(const LayerCache::LayerEntry& lhs,
-        const LayerCache::LayerEntry& rhs) {
-    return LayerCache::LayerEntry::compare(lhs, rhs) < 0;
-}
-
-inline int compare_type(const LayerCache::LayerEntry& lhs, const LayerCache::LayerEntry& rhs) {
-    return LayerCache::LayerEntry::compare(lhs, rhs);
-}
-
 }; // namespace uirenderer
 }; // namespace android
 
diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp
index c8a8ed4..bc660cd 100644
--- a/libs/hwui/LayerRenderer.cpp
+++ b/libs/hwui/LayerRenderer.cpp
@@ -351,7 +351,7 @@
     if (layer && fbo) {
         // If possible, discard any enqueud operations on deferred
         // rendering architectures
-        if (Caches::getInstance().extensions.hasDiscardFramebuffer()) {
+        if (Extensions::getInstance().hasDiscardFramebuffer()) {
             GLuint previousFbo;
             glGetIntegerv(GL_FRAMEBUFFER_BINDING, (GLint*) &previousFbo);
             if (fbo != previousFbo) glBindFramebuffer(GL_FRAMEBUFFER, fbo);
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 6a05789..be3cff1 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -33,7 +33,7 @@
 
 #include "OpenGLRenderer.h"
 #include "DisplayListRenderer.h"
-#include "PathRenderer.h"
+#include "PathTessellator.h"
 #include "Properties.h"
 #include "Vector.h"
 
@@ -109,7 +109,8 @@
 // Constructors/destructor
 ///////////////////////////////////////////////////////////////////////////////
 
-OpenGLRenderer::OpenGLRenderer(): mCaches(Caches::getInstance()) {
+OpenGLRenderer::OpenGLRenderer():
+        mCaches(Caches::getInstance()), mExtensions(Extensions::getInstance()) {
     mShader = NULL;
     mColorFilter = NULL;
     mHasShadow = false;
@@ -216,7 +217,7 @@
     // If we know that we are going to redraw the entire framebuffer,
     // perform a discard to let the driver know we don't need to preserve
     // the back buffer for this frame.
-    if (mCaches.extensions.hasDiscardFramebuffer() &&
+    if (mExtensions.hasDiscardFramebuffer() &&
             left <= 0.0f && top <= 0.0f && right >= mWidth && bottom >= mHeight) {
         const bool isFbo = getTargetFbo() == 0;
         const GLenum attachments[] = {
@@ -1119,7 +1120,7 @@
         it.next();
     }
 
-    drawColorRects(rects.array(), count, color, mode, true, dirty);
+    drawColorRects(rects.array(), count, color, mode, true, dirty, false);
 }
 
 void OpenGLRenderer::dirtyLayer(const float left, const float top,
@@ -1178,6 +1179,10 @@
 
             delete bounds;
         }
+        // We must clear the list of dirty rects before we
+        // call setupDraw() to prevent stencil setup to do
+        // the same thing again
+        mLayers.clear();
 
         setupDraw(false);
         setupDrawColor(0.0f, 0.0f, 0.0f, 1.0f);
@@ -1194,9 +1199,8 @@
         for (uint32_t i = 0; i < count; i++) {
             delete mLayers.itemAt(i);
         }
+        mLayers.clear();
     }
-
-    mLayers.clear();
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -1269,15 +1273,9 @@
         // attach the new render buffer then turn tiling back on
         endTiling();
 
-        // TODO: See Layer::removeFbo(). The stencil renderbuffer should be cached
-        GLuint buffer;
-        glGenRenderbuffers(1, &buffer);
-
+        RenderBuffer* buffer = mCaches.renderBufferCache.get(
+                Stencil::getSmallestStencilFormat(), layer->getWidth(), layer->getHeight());
         layer->setStencilRenderBuffer(buffer);
-        layer->bindStencilRenderBuffer();
-        layer->allocateStencilRenderBuffer();
-
-        glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, buffer);
 
         startTiling(layer->clipRect, layer->layer.getHeight());
     }
@@ -1483,10 +1481,6 @@
     mDescription.isAA = true;
 }
 
-void OpenGLRenderer::setupDrawVertexShape() {
-    mDescription.isVertexShape = true;
-}
-
 void OpenGLRenderer::setupDrawPoint(float pointSize) {
     mDescription.isPoint = true;
     mDescription.pointSize = pointSize;
@@ -1525,13 +1519,13 @@
 
 void OpenGLRenderer::setupDrawShader() {
     if (mShader) {
-        mShader->describe(mDescription, mCaches.extensions);
+        mShader->describe(mDescription, mExtensions);
     }
 }
 
 void OpenGLRenderer::setupDrawColorFilter() {
     if (mColorFilter) {
-        mColorFilter->describe(mDescription, mCaches.extensions);
+        mColorFilter->describe(mDescription, mExtensions);
     }
 }
 
@@ -1702,41 +1696,6 @@
     mCaches.unbindIndicesBuffer();
 }
 
-/**
- * Sets up the shader to draw an AA line. We draw AA lines with quads, where there is an
- * outer boundary that fades out to 0. The variables set in the shader define the proportion of
- * the width and length of the primitive occupied by the AA region. The vtxWidth and vtxLength
- * attributes (one per vertex) are values from zero to one that tells the fragment
- * shader where the fragment is in relation to the line width/length overall; these values are
- * then used to compute the proper color, based on whether the fragment lies in the fading AA
- * region of the line.
- * Note that we only pass down the width values in this setup function. The length coordinates
- * are set up for each individual segment.
- */
-void OpenGLRenderer::setupDrawAALine(GLvoid* vertices, GLvoid* widthCoords,
-        GLvoid* lengthCoords, float boundaryWidthProportion, int& widthSlot, int& lengthSlot) {
-    bool force = mCaches.unbindMeshBuffer();
-    mCaches.bindPositionVertexPointer(force, vertices, gAAVertexStride);
-    mCaches.resetTexCoordsVertexPointer();
-    mCaches.unbindIndicesBuffer();
-
-    widthSlot = mCaches.currentProgram->getAttrib("vtxWidth");
-    glEnableVertexAttribArray(widthSlot);
-    glVertexAttribPointer(widthSlot, 1, GL_FLOAT, GL_FALSE, gAAVertexStride, widthCoords);
-
-    lengthSlot = mCaches.currentProgram->getAttrib("vtxLength");
-    glEnableVertexAttribArray(lengthSlot);
-    glVertexAttribPointer(lengthSlot, 1, GL_FLOAT, GL_FALSE, gAAVertexStride, lengthCoords);
-
-    int boundaryWidthSlot = mCaches.currentProgram->getUniform("boundaryWidth");
-    glUniform1f(boundaryWidthSlot, boundaryWidthProportion);
-}
-
-void OpenGLRenderer::finishDrawAALine(const int widthSlot, const int lengthSlot) {
-    glDisableVertexAttribArray(widthSlot);
-    glDisableVertexAttribArray(lengthSlot);
-}
-
 void OpenGLRenderer::finishDrawTexture() {
 }
 
@@ -2097,39 +2056,26 @@
     return DrawGlInfo::kStatusDrew;
 }
 
-/**
- * Renders a convex path via tessellation. For AA paths, this function uses a similar approach to
- * that of AA lines in the drawLines() function.  We expand the convex path by a half pixel in
- * screen space in all directions. However, instead of using a fragment shader to compute the
- * translucency of the color from its position, we simply use a varying parameter to define how far
- * a given pixel is from the edge. For non-AA paths, the expansion and alpha varying are not used.
- *
- * Doesn't yet support joins, caps, or path effects.
- */
-void OpenGLRenderer::drawConvexPath(const SkPath& path, SkPaint* paint) {
+status_t OpenGLRenderer::drawVertexBuffer(const VertexBuffer& vertexBuffer, SkPaint* paint,
+        bool useOffset) {
+    if (!vertexBuffer.getSize()) {
+        // no vertices to draw
+        return DrawGlInfo::kStatusDone;
+    }
+
     int color = paint->getColor();
     SkXfermode::Mode mode = getXfermode(paint->getXfermode());
     bool isAA = paint->isAntiAlias();
 
-    VertexBuffer vertexBuffer;
-    // TODO: try clipping large paths to viewport
-    PathRenderer::convexPathVertices(path, paint, mSnapshot->transform, vertexBuffer);
-
-    if (!vertexBuffer.getSize()) {
-        // no vertices to draw
-        return;
-    }
-
     setupDraw();
     setupDrawNoTexture();
     if (isAA) setupDrawAA();
-    setupDrawVertexShape();
     setupDrawColor(color, ((color >> 24) & 0xFF) * mSnapshot->alpha);
     setupDrawColorFilter();
     setupDrawShader();
     setupDrawBlending(isAA, mode);
     setupDrawProgram();
-    setupDrawModelViewIdentity();
+    setupDrawModelViewIdentity(useOffset);
     setupDrawColorUniforms();
     setupDrawColorFilterUniforms();
     setupDrawShaderIdentityUniforms();
@@ -2150,286 +2096,64 @@
         glVertexAttribPointer(alphaSlot, 1, GL_FLOAT, GL_FALSE, gAlphaVertexStride, alphaCoords);
     }
 
-    SkRect bounds = PathRenderer::computePathBounds(path, paint);
-    dirtyLayer(bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom, *mSnapshot->transform);
-
     glDrawArrays(GL_TRIANGLE_STRIP, 0, vertexBuffer.getSize());
 
     if (isAA) {
         glDisableVertexAttribArray(alphaSlot);
     }
+
+    return DrawGlInfo::kStatusDrew;
 }
 
 /**
- * We draw lines as quads (tristrips). Using GL_LINES can be difficult because the rasterization
- * rules for those lines produces some unexpected results, and may vary between hardware devices.
- * The basics of lines-as-quads is easy; we simply find the normal to the line and position the
- * corners of the quads on either side of each line endpoint, separated by the strokeWidth
- * of the line. Hairlines are more involved because we need to account for transform scaling
- * to end up with a one-pixel-wide line in screen space..
- * Anti-aliased lines add another factor to the approach. We use a specialized fragment shader
- * in combination with values that we calculate and pass down in this method. The basic approach
- * is that the quad we create contains both the core line area plus a bounding area in which
- * the translucent/AA pixels are drawn. The values we calculate tell the shader what
- * proportion of the width and the length of a given segment is represented by the boundary
- * region. The quad ends up being exactly .5 pixel larger in all directions than the non-AA quad.
- * The bounding region is actually 1 pixel wide on all sides (half pixel on the outside, half pixel
- * on the inside). This ends up giving the result we want, with pixels that are completely
- * 'inside' the line area being filled opaquely and the other pixels being filled according to
- * how far into the boundary region they are, which is determined by shader interpolation.
+ * Renders a convex path via tessellation. For AA paths, this function uses a similar approach to
+ * that of AA lines in the drawLines() function.  We expand the convex path by a half pixel in
+ * screen space in all directions. However, instead of using a fragment shader to compute the
+ * translucency of the color from its position, we simply use a varying parameter to define how far
+ * a given pixel is from the edge. For non-AA paths, the expansion and alpha varying are not used.
+ *
+ * Doesn't yet support joins, caps, or path effects.
+ */
+status_t OpenGLRenderer::drawConvexPath(const SkPath& path, SkPaint* paint) {
+    VertexBuffer vertexBuffer;
+    // TODO: try clipping large paths to viewport
+    PathTessellator::tessellatePath(path, paint, mSnapshot->transform, vertexBuffer);
+
+    SkRect bounds = path.getBounds();
+    PathTessellator::expandBoundsForStroke(bounds, paint, false);
+    dirtyLayer(bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom, *mSnapshot->transform);
+
+    return drawVertexBuffer(vertexBuffer, paint);
+}
+
+/**
+ * We create tristrips for the lines much like shape stroke tessellation, using a per-vertex alpha
+ * and additional geometry for defining an alpha slope perimeter.
+ *
+ * Using GL_LINES can be difficult because the rasterization rules for those lines produces some
+ * unexpected results, and may vary between hardware devices. Previously we used a varying-base
+ * in-shader alpha region, but found it to be taxing on some GPUs.
+ *
+ * TODO: try using a fixed input buffer for non-capped lines as in text rendering. this may reduce
+ * memory transfer by removing need for degenerate vertices.
  */
 status_t OpenGLRenderer::drawLines(float* points, int count, SkPaint* paint) {
-    if (mSnapshot->isIgnored()) return DrawGlInfo::kStatusDone;
+    if (mSnapshot->isIgnored() || count < 4) return DrawGlInfo::kStatusDone;
 
-    const bool isAA = paint->isAntiAlias();
-    // We use half the stroke width here because we're going to position the quad
-    // corner vertices half of the width away from the line endpoints
-    float halfStrokeWidth = paint->getStrokeWidth() * 0.5f;
-    // A stroke width of 0 has a special meaning in Skia:
-    // it draws a line 1 px wide regardless of current transform
-    bool isHairLine = paint->getStrokeWidth() == 0.0f;
+    count &= ~0x3; // round down to nearest four
 
-    float inverseScaleX = 1.0f;
-    float inverseScaleY = 1.0f;
-    bool scaled = false;
+    VertexBuffer buffer;
+    SkRect bounds;
+    PathTessellator::tessellateLines(points, count, paint, mSnapshot->transform, bounds, buffer);
 
-    int alpha;
-    SkXfermode::Mode mode;
-
-    int generatedVerticesCount = 0;
-    int verticesCount = count;
-    if (count > 4) {
-        // Polyline: account for extra vertices needed for continuous tri-strip
-        verticesCount += (count - 4);
+    if (quickReject(bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom)) {
+        return DrawGlInfo::kStatusDone;
     }
 
-    if (isHairLine || isAA) {
-        // The quad that we use for AA and hairlines needs to account for scaling. For hairlines
-        // the line on the screen should always be one pixel wide regardless of scale. For
-        // AA lines, we only want one pixel of translucent boundary around the quad.
-        if (CC_UNLIKELY(!mSnapshot->transform->isPureTranslate())) {
-            Matrix4 *mat = mSnapshot->transform;
-            float m00 = mat->data[Matrix4::kScaleX];
-            float m01 = mat->data[Matrix4::kSkewY];
-            float m10 = mat->data[Matrix4::kSkewX];
-            float m11 = mat->data[Matrix4::kScaleY];
+    dirtyLayer(bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom, *mSnapshot->transform);
 
-            float scaleX = sqrtf(m00 * m00 + m01 * m01);
-            float scaleY = sqrtf(m10 * m10 + m11 * m11);
-
-            inverseScaleX = (scaleX != 0) ? (inverseScaleX / scaleX) : 0;
-            inverseScaleY = (scaleY != 0) ? (inverseScaleY / scaleY) : 0;
-
-            if (inverseScaleX != 1.0f || inverseScaleY != 1.0f) {
-                scaled = true;
-            }
-        }
-    }
-
-    getAlphaAndMode(paint, &alpha, &mode);
-
-    mCaches.enableScissor();
-
-    setupDraw();
-    setupDrawNoTexture();
-    if (isAA) {
-        setupDrawAA();
-    }
-    setupDrawColor(paint->getColor(), alpha);
-    setupDrawColorFilter();
-    setupDrawShader();
-    setupDrawBlending(isAA, mode);
-    setupDrawProgram();
-    setupDrawModelViewIdentity(true);
-    setupDrawColorUniforms();
-    setupDrawColorFilterUniforms();
-    setupDrawShaderIdentityUniforms();
-
-    if (isHairLine) {
-        // Set a real stroke width to be used in quad construction
-        halfStrokeWidth = isAA? 1 : .5;
-    } else if (isAA && !scaled) {
-        // Expand boundary to enable AA calculations on the quad border
-        halfStrokeWidth += .5f;
-    }
-
-    int widthSlot;
-    int lengthSlot;
-
-    Vertex lines[verticesCount];
-    Vertex* vertices = &lines[0];
-
-    AAVertex wLines[verticesCount];
-    AAVertex* aaVertices = &wLines[0];
-
-    if (CC_UNLIKELY(!isAA)) {
-        setupDrawVertices(vertices);
-    } else {
-        void* widthCoords = ((GLbyte*) aaVertices) + gVertexAAWidthOffset;
-        void* lengthCoords = ((GLbyte*) aaVertices) + gVertexAALengthOffset;
-        // innerProportion is the ratio of the inner (non-AA) part of the line to the total
-        // AA stroke width (the base stroke width expanded by a half pixel on either side).
-        // This value is used in the fragment shader to determine how to fill fragments.
-        // We will need to calculate the actual width proportion on each segment for
-        // scaled non-hairlines, since the boundary proportion may differ per-axis when scaled.
-        float boundaryWidthProportion = .5 - 1 / (2 * halfStrokeWidth);
-        setupDrawAALine((void*) aaVertices, widthCoords, lengthCoords,
-                boundaryWidthProportion, widthSlot, lengthSlot);
-    }
-
-    AAVertex* prevAAVertex = NULL;
-    Vertex* prevVertex = NULL;
-
-    int boundaryLengthSlot = -1;
-    int boundaryWidthSlot = -1;
-
-    for (int i = 0; i < count; i += 4) {
-        // a = start point, b = end point
-        vec2 a(points[i], points[i + 1]);
-        vec2 b(points[i + 2], points[i + 3]);
-
-        float length = 0;
-        float boundaryLengthProportion = 0;
-        float boundaryWidthProportion = 0;
-
-        // Find the normal to the line
-        vec2 n = (b - a).copyNormalized() * halfStrokeWidth;
-        float x = n.x;
-        n.x = -n.y;
-        n.y = x;
-
-        if (isHairLine) {
-            if (isAA) {
-                float wideningFactor;
-                if (fabs(n.x) >= fabs(n.y)) {
-                    wideningFactor = fabs(1.0f / n.x);
-                } else {
-                    wideningFactor = fabs(1.0f / n.y);
-                }
-                n *= wideningFactor;
-            }
-
-            if (scaled) {
-                n.x *= inverseScaleX;
-                n.y *= inverseScaleY;
-            }
-        } else if (scaled) {
-            // Extend n by .5 pixel on each side, post-transform
-            vec2 extendedN = n.copyNormalized();
-            extendedN /= 2;
-            extendedN.x *= inverseScaleX;
-            extendedN.y *= inverseScaleY;
-
-            float extendedNLength = extendedN.length();
-            // We need to set this value on the shader prior to drawing
-            boundaryWidthProportion = .5 - extendedNLength / (halfStrokeWidth + extendedNLength);
-            n += extendedN;
-        }
-
-        // aa lines expand the endpoint vertices to encompass the AA boundary
-        if (isAA) {
-            vec2 abVector = (b - a);
-            length = abVector.length();
-            abVector.normalize();
-
-            if (scaled) {
-                abVector.x *= inverseScaleX;
-                abVector.y *= inverseScaleY;
-                float abLength = abVector.length();
-                boundaryLengthProportion = .5 - abLength / (length + abLength);
-            } else {
-                boundaryLengthProportion = .5 - .5 / (length + 1);
-            }
-
-            abVector /= 2;
-            a -= abVector;
-            b += abVector;
-        }
-
-        // Four corners of the rectangle defining a thick line
-        vec2 p1 = a - n;
-        vec2 p2 = a + n;
-        vec2 p3 = b + n;
-        vec2 p4 = b - n;
-
-
-        const float left = fmin(p1.x, fmin(p2.x, fmin(p3.x, p4.x)));
-        const float right = fmax(p1.x, fmax(p2.x, fmax(p3.x, p4.x)));
-        const float top = fmin(p1.y, fmin(p2.y, fmin(p3.y, p4.y)));
-        const float bottom = fmax(p1.y, fmax(p2.y, fmax(p3.y, p4.y)));
-
-        if (!quickRejectNoScissor(left, top, right, bottom)) {
-            if (!isAA) {
-                if (prevVertex != NULL) {
-                    // Issue two repeat vertices to create degenerate triangles to bridge
-                    // between the previous line and the new one. This is necessary because
-                    // we are creating a single triangle_strip which will contain
-                    // potentially discontinuous line segments.
-                    Vertex::set(vertices++, prevVertex->position[0], prevVertex->position[1]);
-                    Vertex::set(vertices++, p1.x, p1.y);
-                    generatedVerticesCount += 2;
-                }
-
-                Vertex::set(vertices++, p1.x, p1.y);
-                Vertex::set(vertices++, p2.x, p2.y);
-                Vertex::set(vertices++, p4.x, p4.y);
-                Vertex::set(vertices++, p3.x, p3.y);
-
-                prevVertex = vertices - 1;
-                generatedVerticesCount += 4;
-            } else {
-                if (!isHairLine && scaled) {
-                    // Must set width proportions per-segment for scaled non-hairlines to use the
-                    // correct AA boundary dimensions
-                    if (boundaryWidthSlot < 0) {
-                        boundaryWidthSlot =
-                                mCaches.currentProgram->getUniform("boundaryWidth");
-                    }
-
-                    glUniform1f(boundaryWidthSlot, boundaryWidthProportion);
-                }
-
-                if (boundaryLengthSlot < 0) {
-                    boundaryLengthSlot = mCaches.currentProgram->getUniform("boundaryLength");
-                }
-
-                glUniform1f(boundaryLengthSlot, boundaryLengthProportion);
-
-                if (prevAAVertex != NULL) {
-                    // Issue two repeat vertices to create degenerate triangles to bridge
-                    // between the previous line and the new one. This is necessary because
-                    // we are creating a single triangle_strip which will contain
-                    // potentially discontinuous line segments.
-                    AAVertex::set(aaVertices++,prevAAVertex->position[0],
-                            prevAAVertex->position[1], prevAAVertex->width, prevAAVertex->length);
-                    AAVertex::set(aaVertices++, p4.x, p4.y, 1, 1);
-                    generatedVerticesCount += 2;
-                }
-
-                AAVertex::set(aaVertices++, p4.x, p4.y, 1, 1);
-                AAVertex::set(aaVertices++, p1.x, p1.y, 1, 0);
-                AAVertex::set(aaVertices++, p3.x, p3.y, 0, 1);
-                AAVertex::set(aaVertices++, p2.x, p2.y, 0, 0);
-
-                prevAAVertex = aaVertices - 1;
-                generatedVerticesCount += 4;
-            }
-
-            dirtyLayer(a.x == b.x ? left - 1 : left, a.y == b.y ? top - 1 : top,
-                    a.x == b.x ? right: right, a.y == b.y ? bottom: bottom,
-                    *mSnapshot->transform);
-        }
-    }
-
-    if (generatedVerticesCount > 0) {
-       glDrawArrays(GL_TRIANGLE_STRIP, 0, generatedVerticesCount);
-    }
-
-    if (isAA) {
-        finishDrawAALine(widthSlot, lengthSlot);
-    }
-
-    return DrawGlInfo::kStatusDrew;
+    bool useOffset = !paint->isAntiAlias();
+    return drawVertexBuffer(buffer, paint, useOffset);
 }
 
 status_t OpenGLRenderer::drawPoints(float* points, int count, SkPaint* paint) {
@@ -2447,6 +2171,7 @@
         strokeWidth = 1.0f;
     }
     const float halfWidth = strokeWidth / 2;
+
     int alpha;
     SkXfermode::Mode mode;
     getAlphaAndMode(paint, &alpha, &mode);
@@ -2540,9 +2265,7 @@
         ry += outset;
     }
     path.addRoundRect(rect, rx, ry);
-    drawConvexPath(path, p);
-
-    return DrawGlInfo::kStatusDrew;
+    return drawConvexPath(path, p);
 }
 
 status_t OpenGLRenderer::drawCircle(float x, float y, float radius, SkPaint* p) {
@@ -2562,9 +2285,7 @@
     } else {
         path.addCircle(x, y, radius);
     }
-    drawConvexPath(path, p);
-
-    return DrawGlInfo::kStatusDrew;
+    return drawConvexPath(path, p);
 }
 
 status_t OpenGLRenderer::drawOval(float left, float top, float right, float bottom,
@@ -2585,9 +2306,7 @@
         rect.outset(p->getStrokeWidth() / 2, p->getStrokeWidth() / 2);
     }
     path.addOval(rect);
-    drawConvexPath(path, p);
-
-    return DrawGlInfo::kStatusDrew;
+    return drawConvexPath(path, p);
 }
 
 status_t OpenGLRenderer::drawArc(float left, float top, float right, float bottom,
@@ -2601,8 +2320,7 @@
     }
 
     // TODO: support fills (accounting for concavity if useCenter && sweepAngle > 180)
-    if (p->getStyle() != SkPaint::kStroke_Style || p->getPathEffect() != 0 ||
-            p->getStrokeCap() != SkPaint::kButt_Cap || useCenter) {
+    if (p->getStyle() != SkPaint::kStroke_Style || p->getPathEffect() != 0 || useCenter) {
         mCaches.activeTexture(0);
         const PathTexture* texture = mCaches.arcShapeCache.getArc(right - left, bottom - top,
                 startAngle, sweepAngle, useCenter, p);
@@ -2622,9 +2340,7 @@
     if (useCenter) {
         path.close();
     }
-    drawConvexPath(path, p);
-
-    return DrawGlInfo::kStatusDrew;
+    return drawConvexPath(path, p);
 }
 
 // See SkPaintDefaults.h
@@ -2651,20 +2367,17 @@
             rect.outset(p->getStrokeWidth() / 2, p->getStrokeWidth() / 2);
         }
         path.addRect(rect);
-        drawConvexPath(path, p);
-
-        return DrawGlInfo::kStatusDrew;
+        return drawConvexPath(path, p);
     }
 
     if (p->isAntiAlias() && !mSnapshot->transform->isSimple()) {
         SkPath path;
         path.addRect(left, top, right, bottom);
-        drawConvexPath(path, p);
+        return drawConvexPath(path, p);
     } else {
         drawColorRect(left, top, right, bottom, p->getColor(), getXfermode(p->getXfermode()));
+        return DrawGlInfo::kStatusDrew;
     }
-
-    return DrawGlInfo::kStatusDrew;
 }
 
 void OpenGLRenderer::drawTextShadow(SkPaint* paint, const char* text, int bytesCount, int count,
@@ -3207,7 +2920,7 @@
 }
 
 status_t OpenGLRenderer::drawColorRects(const float* rects, int count, int color,
-        SkXfermode::Mode mode, bool ignoreTransform, bool dirty) {
+        SkXfermode::Mode mode, bool ignoreTransform, bool dirty, bool clip) {
 
     float left = FLT_MAX;
     float top = FLT_MAX;
@@ -3241,7 +2954,9 @@
         }
     }
 
-    if (count == 0) return DrawGlInfo::kStatusDone;
+    if (count == 0 || (clip && quickReject(left, top, right, bottom))) {
+        return DrawGlInfo::kStatusDone;
+    }
 
     setupDraw();
     setupDrawNoTexture();
@@ -3384,7 +3099,7 @@
         // If the blend mode cannot be implemented using shaders, fall
         // back to the default SrcOver blend mode instead
         if (CC_UNLIKELY(mode > SkXfermode::kScreen_Mode)) {
-            if (CC_UNLIKELY(mCaches.extensions.hasFramebufferFetch())) {
+            if (CC_UNLIKELY(mExtensions.hasFramebufferFetch())) {
                 description.framebufferMode = mode;
                 description.swapSrcDst = swapSrcDst;
 
diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h
index 750b3d2..0ad81c1 100644
--- a/libs/hwui/OpenGLRenderer.h
+++ b/libs/hwui/OpenGLRenderer.h
@@ -53,6 +53,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 class DisplayList;
+class VertexBuffer;
 
 /**
  * OpenGL renderer used to draw accelerated 2D graphics. The API is a
@@ -566,9 +567,11 @@
      * @param mode The Skia xfermode to use
      * @param ignoreTransform True if the current transform should be ignored
      * @param dirty True if calling this method should dirty the current layer
+     * @param clip True if the rects should be clipped, false otherwise
      */
     status_t drawColorRects(const float* rects, int count, int color,
-            SkXfermode::Mode mode, bool ignoreTransform = false, bool dirty = true);
+            SkXfermode::Mode mode, bool ignoreTransform = false,
+            bool dirty = true, bool clip = true);
 
     /**
      * Draws the shape represented by the specified path texture.
@@ -595,12 +598,22 @@
     void drawAlphaBitmap(Texture* texture, float left, float top, SkPaint* paint);
 
     /**
+     * Renders a strip of polygons with the specified paint, used for tessellated geometry.
+     *
+     * @param vertexBuffer The VertexBuffer to be drawn
+     * @param paint The paint to render with
+     * @param useOffset Offset the vertexBuffer (used in drawing non-AA lines)
+     */
+    status_t drawVertexBuffer(const VertexBuffer& vertexBuffer, SkPaint* paint,
+            bool useOffset = false);
+
+    /**
      * Renders the convex hull defined by the specified path as a strip of polygons.
      *
      * @param path The hull of the path to draw
      * @param paint The paint to render with
      */
-    void drawConvexPath(const SkPath& path, SkPaint* paint);
+    status_t drawConvexPath(const SkPath& path, SkPaint* paint);
 
     /**
      * Draws a textured rectangle with the specified texture. The specified coordinates
@@ -767,7 +780,6 @@
     void setupDrawWithExternalTexture();
     void setupDrawNoTexture();
     void setupDrawAA();
-    void setupDrawVertexShape();
     void setupDrawPoint(float pointSize);
     void setupDrawColor(int color, int alpha);
     void setupDrawColor(float r, float g, float b, float a);
@@ -801,9 +813,6 @@
     void setupDrawMesh(GLvoid* vertices, GLvoid* texCoords = NULL, GLuint vbo = 0);
     void setupDrawMeshIndices(GLvoid* vertices, GLvoid* texCoords);
     void setupDrawVertices(GLvoid* vertices);
-    void setupDrawAALine(GLvoid* vertices, GLvoid* distanceCoords, GLvoid* lengthCoords,
-            float strokeWidth, int& widthSlot, int& lengthSlot);
-    void finishDrawAALine(const int widthSlot, const int lengthSlot);
     void finishDrawTexture();
     void accountForClear(SkXfermode::Mode mode);
 
@@ -881,6 +890,7 @@
 
     // Various caches
     Caches& mCaches;
+    Extensions& mExtensions;
 
     // List of rectangles to clear after saveLayer() is invoked
     Vector<Rect*> mLayers;
diff --git a/libs/hwui/PathRenderer.cpp b/libs/hwui/PathRenderer.cpp
deleted file mode 100644
index d59e36f..0000000
--- a/libs/hwui/PathRenderer.cpp
+++ /dev/null
@@ -1,720 +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.
- */
-
-#define LOG_TAG "PathRenderer"
-#define LOG_NDEBUG 1
-#define ATRACE_TAG ATRACE_TAG_GRAPHICS
-
-#define VERTEX_DEBUG 0
-
-#include <SkPath.h>
-#include <SkPaint.h>
-
-#include <stdlib.h>
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <utils/Log.h>
-#include <utils/Trace.h>
-
-#include "PathRenderer.h"
-#include "Matrix.h"
-#include "Vector.h"
-#include "Vertex.h"
-
-namespace android {
-namespace uirenderer {
-
-#define THRESHOLD 0.5f
-
-SkRect PathRenderer::computePathBounds(const SkPath& path, const SkPaint* paint) {
-    SkRect bounds = path.getBounds();
-    if (paint->getStyle() != SkPaint::kFill_Style) {
-        float outset = paint->getStrokeWidth() * 0.5f;
-        bounds.outset(outset, outset);
-    }
-    return bounds;
-}
-
-void computeInverseScales(const mat4 *transform, float &inverseScaleX, float& inverseScaleY) {
-    if (CC_UNLIKELY(!transform->isPureTranslate())) {
-        float m00 = transform->data[Matrix4::kScaleX];
-        float m01 = transform->data[Matrix4::kSkewY];
-        float m10 = transform->data[Matrix4::kSkewX];
-        float m11 = transform->data[Matrix4::kScaleY];
-        float scaleX = sqrt(m00 * m00 + m01 * m01);
-        float scaleY = sqrt(m10 * m10 + m11 * m11);
-        inverseScaleX = (scaleX != 0) ? (1.0f / scaleX) : 1.0f;
-        inverseScaleY = (scaleY != 0) ? (1.0f / scaleY) : 1.0f;
-    } else {
-        inverseScaleX = 1.0f;
-        inverseScaleY = 1.0f;
-    }
-}
-
-inline void copyVertex(Vertex* destPtr, const Vertex* srcPtr) {
-    Vertex::set(destPtr, srcPtr->position[0], srcPtr->position[1]);
-}
-
-inline void copyAlphaVertex(AlphaVertex* destPtr, const AlphaVertex* srcPtr) {
-    AlphaVertex::set(destPtr, srcPtr->position[0], srcPtr->position[1], srcPtr->alpha);
-}
-
-/**
- * Produces a pseudo-normal for a vertex, given the normals of the two incoming lines. If the offset
- * from each vertex in a perimeter is calculated, the resultant lines connecting the offset vertices
- * will be offset by 1.0
- *
- * Note that we can't add and normalize the two vectors, that would result in a rectangle having an
- * offset of (sqrt(2)/2, sqrt(2)/2) at each corner, instead of (1, 1)
- *
- * NOTE: assumes angles between normals 90 degrees or less
- */
-inline vec2 totalOffsetFromNormals(const vec2& normalA, const vec2& normalB) {
-    return (normalA + normalB) / (1 + fabs(normalA.dot(normalB)));
-}
-
-inline void scaleOffsetForStrokeWidth(vec2& offset, float halfStrokeWidth,
-        float inverseScaleX, float inverseScaleY) {
-    if (halfStrokeWidth == 0.0f) {
-        // hairline - compensate for scale
-        offset.x *= 0.5f * inverseScaleX;
-        offset.y *= 0.5f * inverseScaleY;
-    } else {
-        offset *= halfStrokeWidth;
-    }
-}
-
-void getFillVerticesFromPerimeter(const Vector<Vertex>& perimeter, VertexBuffer& vertexBuffer) {
-    Vertex* buffer = vertexBuffer.alloc<Vertex>(perimeter.size());
-
-    int currentIndex = 0;
-    // zig zag between all previous points on the inside of the hull to create a
-    // triangle strip that fills the hull
-    int srcAindex = 0;
-    int srcBindex = perimeter.size() - 1;
-    while (srcAindex <= srcBindex) {
-        copyVertex(&buffer[currentIndex++], &perimeter[srcAindex]);
-        if (srcAindex == srcBindex) break;
-        copyVertex(&buffer[currentIndex++], &perimeter[srcBindex]);
-        srcAindex++;
-        srcBindex--;
-    }
-}
-
-void getStrokeVerticesFromPerimeter(const Vector<Vertex>& perimeter, float halfStrokeWidth,
-        VertexBuffer& vertexBuffer, float inverseScaleX, float inverseScaleY) {
-    Vertex* buffer = vertexBuffer.alloc<Vertex>(perimeter.size() * 2 + 2);
-
-    int currentIndex = 0;
-    const Vertex* last = &(perimeter[perimeter.size() - 1]);
-    const Vertex* current = &(perimeter[0]);
-    vec2 lastNormal(current->position[1] - last->position[1],
-            last->position[0] - current->position[0]);
-    lastNormal.normalize();
-    for (unsigned int i = 0; i < perimeter.size(); i++) {
-        const Vertex* next = &(perimeter[i + 1 >= perimeter.size() ? 0 : i + 1]);
-        vec2 nextNormal(next->position[1] - current->position[1],
-                current->position[0] - next->position[0]);
-        nextNormal.normalize();
-
-        vec2 totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
-        scaleOffsetForStrokeWidth(totalOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
-
-        Vertex::set(&buffer[currentIndex++],
-                current->position[0] + totalOffset.x,
-                current->position[1] + totalOffset.y);
-
-        Vertex::set(&buffer[currentIndex++],
-                current->position[0] - totalOffset.x,
-                current->position[1] - totalOffset.y);
-
-        last = current;
-        current = next;
-        lastNormal = nextNormal;
-    }
-
-    // wrap around to beginning
-    copyVertex(&buffer[currentIndex++], &buffer[0]);
-    copyVertex(&buffer[currentIndex++], &buffer[1]);
-}
-
-void getStrokeVerticesFromUnclosedVertices(const Vector<Vertex>& vertices, float halfStrokeWidth,
-        VertexBuffer& vertexBuffer, float inverseScaleX, float inverseScaleY) {
-    Vertex* buffer = vertexBuffer.alloc<Vertex>(vertices.size() * 2);
-
-    int currentIndex = 0;
-    const Vertex* current = &(vertices[0]);
-    vec2 lastNormal;
-    for (unsigned int i = 0; i < vertices.size() - 1; i++) {
-        const Vertex* next = &(vertices[i + 1]);
-        vec2 nextNormal(next->position[1] - current->position[1],
-                current->position[0] - next->position[0]);
-        nextNormal.normalize();
-
-        vec2 totalOffset;
-        if (i == 0) {
-            totalOffset = nextNormal;
-        } else {
-            totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
-        }
-        scaleOffsetForStrokeWidth(totalOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
-
-        Vertex::set(&buffer[currentIndex++],
-                current->position[0] + totalOffset.x,
-                current->position[1] + totalOffset.y);
-
-        Vertex::set(&buffer[currentIndex++],
-                current->position[0] - totalOffset.x,
-                current->position[1] - totalOffset.y);
-
-        current = next;
-        lastNormal = nextNormal;
-    }
-
-    vec2 totalOffset = lastNormal;
-    scaleOffsetForStrokeWidth(totalOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
-
-    Vertex::set(&buffer[currentIndex++],
-            current->position[0] + totalOffset.x,
-            current->position[1] + totalOffset.y);
-    Vertex::set(&buffer[currentIndex++],
-            current->position[0] - totalOffset.x,
-            current->position[1] - totalOffset.y);
-#if VERTEX_DEBUG
-    for (unsigned int i = 0; i < vertexBuffer.getSize(); i++) {
-        ALOGD("point at %f %f", buffer[i].position[0], buffer[i].position[1]);
-    }
-#endif
-}
-
-void getFillVerticesFromPerimeterAA(const Vector<Vertex>& perimeter, VertexBuffer& vertexBuffer,
-         float inverseScaleX, float inverseScaleY) {
-    AlphaVertex* buffer = vertexBuffer.alloc<AlphaVertex>(perimeter.size() * 3 + 2);
-
-    // generate alpha points - fill Alpha vertex gaps in between each point with
-    // alpha 0 vertex, offset by a scaled normal.
-    int currentIndex = 0;
-    const Vertex* last = &(perimeter[perimeter.size() - 1]);
-    const Vertex* current = &(perimeter[0]);
-    vec2 lastNormal(current->position[1] - last->position[1],
-            last->position[0] - current->position[0]);
-    lastNormal.normalize();
-    for (unsigned int i = 0; i < perimeter.size(); i++) {
-        const Vertex* next = &(perimeter[i + 1 >= perimeter.size() ? 0 : i + 1]);
-        vec2 nextNormal(next->position[1] - current->position[1],
-                current->position[0] - next->position[0]);
-        nextNormal.normalize();
-
-        // AA point offset from original point is that point's normal, such that each side is offset
-        // by .5 pixels
-        vec2 totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
-        totalOffset.x *= 0.5f * inverseScaleX;
-        totalOffset.y *= 0.5f * inverseScaleY;
-
-        AlphaVertex::set(&buffer[currentIndex++],
-                current->position[0] + totalOffset.x,
-                current->position[1] + totalOffset.y,
-                0.0f);
-        AlphaVertex::set(&buffer[currentIndex++],
-                current->position[0] - totalOffset.x,
-                current->position[1] - totalOffset.y,
-                1.0f);
-
-        last = current;
-        current = next;
-        lastNormal = nextNormal;
-    }
-
-    // wrap around to beginning
-    copyAlphaVertex(&buffer[currentIndex++], &buffer[0]);
-    copyAlphaVertex(&buffer[currentIndex++], &buffer[1]);
-
-    // zig zag between all previous points on the inside of the hull to create a
-    // triangle strip that fills the hull, repeating the first inner point to
-    // create degenerate tris to start inside path
-    int srcAindex = 0;
-    int srcBindex = perimeter.size() - 1;
-    while (srcAindex <= srcBindex) {
-        copyAlphaVertex(&buffer[currentIndex++], &buffer[srcAindex * 2 + 1]);
-        if (srcAindex == srcBindex) break;
-        copyAlphaVertex(&buffer[currentIndex++], &buffer[srcBindex * 2 + 1]);
-        srcAindex++;
-        srcBindex--;
-    }
-
-#if VERTEX_DEBUG
-    for (unsigned int i = 0; i < vertexBuffer.getSize(); i++) {
-        ALOGD("point at %f %f, alpha %f", buffer[i].position[0], buffer[i].position[1], buffer[i].alpha);
-    }
-#endif
-}
-
-
-void getStrokeVerticesFromUnclosedVerticesAA(const Vector<Vertex>& vertices, float halfStrokeWidth,
-        VertexBuffer& vertexBuffer, float inverseScaleX, float inverseScaleY) {
-    AlphaVertex* buffer = vertexBuffer.alloc<AlphaVertex>(6 * vertices.size() + 2);
-
-    // avoid lines smaller than hairline since they break triangle based sampling. instead reducing
-    // alpha value (TODO: support different X/Y scale)
-    float maxAlpha = 1.0f;
-    if (halfStrokeWidth != 0 && inverseScaleX == inverseScaleY &&
-            halfStrokeWidth * inverseScaleX < 0.5f) {
-        maxAlpha *= (2 * halfStrokeWidth) / inverseScaleX;
-        halfStrokeWidth = 0.0f;
-    }
-
-    // there is no outer/inner here, using them for consistency with below approach
-    int offset = 2 * (vertices.size() - 2);
-    int currentAAOuterIndex = 2;
-    int currentAAInnerIndex = 2 * offset + 5; // reversed
-    int currentStrokeIndex = currentAAInnerIndex + 7;
-
-    const Vertex* last = &(vertices[0]);
-    const Vertex* current = &(vertices[1]);
-    vec2 lastNormal(current->position[1] - last->position[1],
-            last->position[0] - current->position[0]);
-    lastNormal.normalize();
-
-    {
-        // start cap
-        vec2 totalOffset = lastNormal;
-        vec2 AAOffset = totalOffset;
-        AAOffset.x *= 0.5f * inverseScaleX;
-        AAOffset.y *= 0.5f * inverseScaleY;
-
-        vec2 innerOffset = totalOffset;
-        scaleOffsetForStrokeWidth(innerOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
-        vec2 outerOffset = innerOffset + AAOffset;
-        innerOffset -= AAOffset;
-
-        // TODO: support square cap by changing this offset to incorporate halfStrokeWidth
-        vec2 capAAOffset(AAOffset.y, -AAOffset.x);
-        AlphaVertex::set(&buffer[0],
-                last->position[0] + outerOffset.x + capAAOffset.x,
-                last->position[1] + outerOffset.y + capAAOffset.y,
-                0.0f);
-        AlphaVertex::set(&buffer[1],
-                last->position[0] + innerOffset.x - capAAOffset.x,
-                last->position[1] + innerOffset.y - capAAOffset.y,
-                maxAlpha);
-
-        AlphaVertex::set(&buffer[2 * offset + 6],
-                last->position[0] - outerOffset.x + capAAOffset.x,
-                last->position[1] - outerOffset.y + capAAOffset.y,
-                0.0f);
-        AlphaVertex::set(&buffer[2 * offset + 7],
-                last->position[0] - innerOffset.x - capAAOffset.x,
-                last->position[1] - innerOffset.y - capAAOffset.y,
-                maxAlpha);
-        copyAlphaVertex(&buffer[2 * offset + 8], &buffer[0]);
-        copyAlphaVertex(&buffer[2 * offset + 9], &buffer[1]);
-        copyAlphaVertex(&buffer[2 * offset + 10], &buffer[1]); // degenerate tris (the only two!)
-        copyAlphaVertex(&buffer[2 * offset + 11], &buffer[2 * offset + 7]);
-    }
-
-    for (unsigned int i = 1; i < vertices.size() - 1; i++) {
-        const Vertex* next = &(vertices[i + 1]);
-        vec2 nextNormal(next->position[1] - current->position[1],
-                current->position[0] - next->position[0]);
-        nextNormal.normalize();
-
-        vec2 totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
-        vec2 AAOffset = totalOffset;
-        AAOffset.x *= 0.5f * inverseScaleX;
-        AAOffset.y *= 0.5f * inverseScaleY;
-
-        vec2 innerOffset = totalOffset;
-        scaleOffsetForStrokeWidth(innerOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
-        vec2 outerOffset = innerOffset + AAOffset;
-        innerOffset -= AAOffset;
-
-        AlphaVertex::set(&buffer[currentAAOuterIndex++],
-                current->position[0] + outerOffset.x,
-                current->position[1] + outerOffset.y,
-                0.0f);
-        AlphaVertex::set(&buffer[currentAAOuterIndex++],
-                current->position[0] + innerOffset.x,
-                current->position[1] + innerOffset.y,
-                maxAlpha);
-
-        AlphaVertex::set(&buffer[currentStrokeIndex++],
-                current->position[0] + innerOffset.x,
-                current->position[1] + innerOffset.y,
-                maxAlpha);
-        AlphaVertex::set(&buffer[currentStrokeIndex++],
-                current->position[0] - innerOffset.x,
-                current->position[1] - innerOffset.y,
-                maxAlpha);
-
-        AlphaVertex::set(&buffer[currentAAInnerIndex--],
-                current->position[0] - innerOffset.x,
-                current->position[1] - innerOffset.y,
-                maxAlpha);
-        AlphaVertex::set(&buffer[currentAAInnerIndex--],
-                current->position[0] - outerOffset.x,
-                current->position[1] - outerOffset.y,
-                0.0f);
-
-        last = current;
-        current = next;
-        lastNormal = nextNormal;
-    }
-
-    {
-        // end cap
-        vec2 totalOffset = lastNormal;
-        vec2 AAOffset = totalOffset;
-        AAOffset.x *= 0.5f * inverseScaleX;
-        AAOffset.y *= 0.5f * inverseScaleY;
-
-        vec2 innerOffset = totalOffset;
-        scaleOffsetForStrokeWidth(innerOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
-        vec2 outerOffset = innerOffset + AAOffset;
-        innerOffset -= AAOffset;
-
-        // TODO: support square cap by changing this offset to incorporate halfStrokeWidth
-        vec2 capAAOffset(-AAOffset.y, AAOffset.x);
-
-        AlphaVertex::set(&buffer[offset + 2],
-                current->position[0] + outerOffset.x + capAAOffset.x,
-                current->position[1] + outerOffset.y + capAAOffset.y,
-                0.0f);
-        AlphaVertex::set(&buffer[offset + 3],
-                current->position[0] + innerOffset.x - capAAOffset.x,
-                current->position[1] + innerOffset.y - capAAOffset.y,
-                maxAlpha);
-
-        AlphaVertex::set(&buffer[offset + 4],
-                current->position[0] - outerOffset.x + capAAOffset.x,
-                current->position[1] - outerOffset.y + capAAOffset.y,
-                0.0f);
-        AlphaVertex::set(&buffer[offset + 5],
-                current->position[0] - innerOffset.x - capAAOffset.x,
-                current->position[1] - innerOffset.y - capAAOffset.y,
-                maxAlpha);
-
-        copyAlphaVertex(&buffer[vertexBuffer.getSize() - 2], &buffer[offset + 3]);
-        copyAlphaVertex(&buffer[vertexBuffer.getSize() - 1], &buffer[offset + 5]);
-    }
-
-#if VERTEX_DEBUG
-    for (unsigned int i = 0; i < vertexBuffer.getSize(); i++) {
-        ALOGD("point at %f %f, alpha %f", buffer[i].position[0], buffer[i].position[1], buffer[i].alpha);
-    }
-#endif
-}
-
-
-void getStrokeVerticesFromPerimeterAA(const Vector<Vertex>& perimeter, float halfStrokeWidth,
-        VertexBuffer& vertexBuffer, float inverseScaleX, float inverseScaleY) {
-    AlphaVertex* buffer = vertexBuffer.alloc<AlphaVertex>(6 * perimeter.size() + 8);
-
-    // avoid lines smaller than hairline since they break triangle based sampling. instead reducing
-    // alpha value (TODO: support different X/Y scale)
-    float maxAlpha = 1.0f;
-    if (halfStrokeWidth != 0 && inverseScaleX == inverseScaleY &&
-            halfStrokeWidth * inverseScaleX < 0.5f) {
-        maxAlpha *= (2 * halfStrokeWidth) / inverseScaleX;
-        halfStrokeWidth = 0.0f;
-    }
-
-    int offset = 2 * perimeter.size() + 3;
-    int currentAAOuterIndex = 0;
-    int currentStrokeIndex = offset;
-    int currentAAInnerIndex = offset * 2;
-
-    const Vertex* last = &(perimeter[perimeter.size() - 1]);
-    const Vertex* current = &(perimeter[0]);
-    vec2 lastNormal(current->position[1] - last->position[1],
-            last->position[0] - current->position[0]);
-    lastNormal.normalize();
-    for (unsigned int i = 0; i < perimeter.size(); i++) {
-        const Vertex* next = &(perimeter[i + 1 >= perimeter.size() ? 0 : i + 1]);
-        vec2 nextNormal(next->position[1] - current->position[1],
-                current->position[0] - next->position[0]);
-        nextNormal.normalize();
-
-        vec2 totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
-        vec2 AAOffset = totalOffset;
-        AAOffset.x *= 0.5f * inverseScaleX;
-        AAOffset.y *= 0.5f * inverseScaleY;
-
-        vec2 innerOffset = totalOffset;
-        scaleOffsetForStrokeWidth(innerOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
-        vec2 outerOffset = innerOffset + AAOffset;
-        innerOffset -= AAOffset;
-
-        AlphaVertex::set(&buffer[currentAAOuterIndex++],
-                current->position[0] + outerOffset.x,
-                current->position[1] + outerOffset.y,
-                0.0f);
-        AlphaVertex::set(&buffer[currentAAOuterIndex++],
-                current->position[0] + innerOffset.x,
-                current->position[1] + innerOffset.y,
-                maxAlpha);
-
-        AlphaVertex::set(&buffer[currentStrokeIndex++],
-                current->position[0] + innerOffset.x,
-                current->position[1] + innerOffset.y,
-                maxAlpha);
-        AlphaVertex::set(&buffer[currentStrokeIndex++],
-                current->position[0] - innerOffset.x,
-                current->position[1] - innerOffset.y,
-                maxAlpha);
-
-        AlphaVertex::set(&buffer[currentAAInnerIndex++],
-                current->position[0] - innerOffset.x,
-                current->position[1] - innerOffset.y,
-                maxAlpha);
-        AlphaVertex::set(&buffer[currentAAInnerIndex++],
-                current->position[0] - outerOffset.x,
-                current->position[1] - outerOffset.y,
-                0.0f);
-
-        last = current;
-        current = next;
-        lastNormal = nextNormal;
-    }
-
-    // wrap each strip around to beginning, creating degenerate tris to bridge strips
-    copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[0]);
-    copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[1]);
-    copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[1]);
-
-    copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset]);
-    copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset + 1]);
-    copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset + 1]);
-
-    copyAlphaVertex(&buffer[currentAAInnerIndex++], &buffer[2 * offset]);
-    copyAlphaVertex(&buffer[currentAAInnerIndex++], &buffer[2 * offset + 1]);
-    // don't need to create last degenerate tri
-
-#if VERTEX_DEBUG
-    for (unsigned int i = 0; i < vertexBuffer.getSize(); i++) {
-        ALOGD("point at %f %f, alpha %f", buffer[i].position[0], buffer[i].position[1], buffer[i].alpha);
-    }
-#endif
-}
-
-void PathRenderer::convexPathVertices(const SkPath &path, const SkPaint* paint,
-        const mat4 *transform, VertexBuffer& vertexBuffer) {
-    ATRACE_CALL();
-
-    SkPaint::Style style = paint->getStyle();
-    bool isAA = paint->isAntiAlias();
-
-    float inverseScaleX, inverseScaleY;
-    computeInverseScales(transform, inverseScaleX, inverseScaleY);
-
-    Vector<Vertex> tempVertices;
-    float threshInvScaleX = inverseScaleX;
-    float threshInvScaleY = inverseScaleY;
-    if (style == SkPaint::kStroke_Style) {
-        // alter the bezier recursion threshold values we calculate in order to compensate for
-        // expansion done after the path vertices are found
-        SkRect bounds = path.getBounds();
-        if (!bounds.isEmpty()) {
-            threshInvScaleX *= bounds.width() / (bounds.width() + paint->getStrokeWidth());
-            threshInvScaleY *= bounds.height() / (bounds.height() + paint->getStrokeWidth());
-        }
-    }
-
-    // force close if we're filling the path, since fill path expects closed perimeter.
-    bool forceClose = style != SkPaint::kStroke_Style;
-    bool wasClosed = convexPathPerimeterVertices(path, forceClose, threshInvScaleX * threshInvScaleX,
-            threshInvScaleY * threshInvScaleY, tempVertices);
-
-    if (!tempVertices.size()) {
-        // path was empty, return without allocating vertex buffer
-        return;
-    }
-
-#if VERTEX_DEBUG
-    for (unsigned int i = 0; i < tempVertices.size(); i++) {
-        ALOGD("orig path: point at %f %f", tempVertices[i].position[0], tempVertices[i].position[1]);
-    }
-#endif
-
-    if (style == SkPaint::kStroke_Style) {
-        float halfStrokeWidth = paint->getStrokeWidth() * 0.5f;
-        if (!isAA) {
-            if (wasClosed) {
-                getStrokeVerticesFromPerimeter(tempVertices, halfStrokeWidth, vertexBuffer,
-                        inverseScaleX, inverseScaleY);
-            } else {
-                getStrokeVerticesFromUnclosedVertices(tempVertices, halfStrokeWidth, vertexBuffer,
-                        inverseScaleX, inverseScaleY);
-            }
-
-        } else {
-            if (wasClosed) {
-                getStrokeVerticesFromPerimeterAA(tempVertices, halfStrokeWidth, vertexBuffer,
-                        inverseScaleX, inverseScaleY);
-            } else {
-                getStrokeVerticesFromUnclosedVerticesAA(tempVertices, halfStrokeWidth, vertexBuffer,
-                        inverseScaleX, inverseScaleY);
-            }
-        }
-    } else {
-        // For kStrokeAndFill style, the path should be adjusted externally, as it will be treated as a fill here.
-        if (!isAA) {
-            getFillVerticesFromPerimeter(tempVertices, vertexBuffer);
-        } else {
-            getFillVerticesFromPerimeterAA(tempVertices, vertexBuffer, inverseScaleX, inverseScaleY);
-        }
-    }
-}
-
-
-void pushToVector(Vector<Vertex>& vertices, float x, float y) {
-    // TODO: make this not yuck
-    vertices.push();
-    Vertex* newVertex = &(vertices.editArray()[vertices.size() - 1]);
-    Vertex::set(newVertex, x, y);
-}
-
-bool PathRenderer::convexPathPerimeterVertices(const SkPath& path, bool forceClose,
-        float sqrInvScaleX, float sqrInvScaleY, Vector<Vertex>& outputVertices) {
-    ATRACE_CALL();
-
-    // TODO: to support joins other than sharp miter, join vertices should be labelled in the
-    // perimeter, or resolved into more vertices. Reconsider forceClose-ing in that case.
-    SkPath::Iter iter(path, forceClose);
-    SkPoint pts[4];
-    SkPath::Verb v;
-    while (SkPath::kDone_Verb != (v = iter.next(pts))) {
-            switch (v) {
-                case SkPath::kMove_Verb:
-                    pushToVector(outputVertices, pts[0].x(), pts[0].y());
-                    ALOGV("Move to pos %f %f", pts[0].x(), pts[0].y());
-                    break;
-                case SkPath::kClose_Verb:
-                    ALOGV("Close at pos %f %f", pts[0].x(), pts[0].y());
-                    break;
-                case SkPath::kLine_Verb:
-                    ALOGV("kLine_Verb %f %f -> %f %f",
-                            pts[0].x(), pts[0].y(),
-                            pts[1].x(), pts[1].y());
-
-                    pushToVector(outputVertices, pts[1].x(), pts[1].y());
-                    break;
-                case SkPath::kQuad_Verb:
-                    ALOGV("kQuad_Verb");
-                    recursiveQuadraticBezierVertices(
-                            pts[0].x(), pts[0].y(),
-                            pts[2].x(), pts[2].y(),
-                            pts[1].x(), pts[1].y(),
-                            sqrInvScaleX, sqrInvScaleY, outputVertices);
-                    break;
-                case SkPath::kCubic_Verb:
-                    ALOGV("kCubic_Verb");
-                    recursiveCubicBezierVertices(
-                            pts[0].x(), pts[0].y(),
-                            pts[1].x(), pts[1].y(),
-                            pts[3].x(), pts[3].y(),
-                            pts[2].x(), pts[2].y(),
-                        sqrInvScaleX, sqrInvScaleY, outputVertices);
-                    break;
-                default:
-                    break;
-            }
-    }
-
-    int size = outputVertices.size();
-    if (size >= 2 && outputVertices[0].position[0] == outputVertices[size - 1].position[0] &&
-            outputVertices[0].position[1] == outputVertices[size - 1].position[1]) {
-        outputVertices.pop();
-        return true;
-    }
-    return false;
-}
-
-void PathRenderer::recursiveCubicBezierVertices(
-        float p1x, float p1y, float c1x, float c1y,
-        float p2x, float p2y, float c2x, float c2y,
-        float sqrInvScaleX, float sqrInvScaleY, Vector<Vertex>& outputVertices) {
-    float dx = p2x - p1x;
-    float dy = p2y - p1y;
-    float d1 = fabs((c1x - p2x) * dy - (c1y - p2y) * dx);
-    float d2 = fabs((c2x - p2x) * dy - (c2y - p2y) * dx);
-    float d = d1 + d2;
-
-    // multiplying by sqrInvScaleY/X equivalent to multiplying in dimensional scale factors
-
-    if (d * d < THRESHOLD * THRESHOLD * (dx * dx * sqrInvScaleY + dy * dy * sqrInvScaleX)) {
-        // below thresh, draw line by adding endpoint
-        pushToVector(outputVertices, p2x, p2y);
-    } else {
-        float p1c1x = (p1x + c1x) * 0.5f;
-        float p1c1y = (p1y + c1y) * 0.5f;
-        float p2c2x = (p2x + c2x) * 0.5f;
-        float p2c2y = (p2y + c2y) * 0.5f;
-
-        float c1c2x = (c1x + c2x) * 0.5f;
-        float c1c2y = (c1y + c2y) * 0.5f;
-
-        float p1c1c2x = (p1c1x + c1c2x) * 0.5f;
-        float p1c1c2y = (p1c1y + c1c2y) * 0.5f;
-
-        float p2c1c2x = (p2c2x + c1c2x) * 0.5f;
-        float p2c1c2y = (p2c2y + c1c2y) * 0.5f;
-
-        float mx = (p1c1c2x + p2c1c2x) * 0.5f;
-        float my = (p1c1c2y + p2c1c2y) * 0.5f;
-
-        recursiveCubicBezierVertices(
-                p1x, p1y, p1c1x, p1c1y,
-                mx, my, p1c1c2x, p1c1c2y,
-                sqrInvScaleX, sqrInvScaleY, outputVertices);
-        recursiveCubicBezierVertices(
-                mx, my, p2c1c2x, p2c1c2y,
-                p2x, p2y, p2c2x, p2c2y,
-                sqrInvScaleX, sqrInvScaleY, outputVertices);
-    }
-}
-
-void PathRenderer::recursiveQuadraticBezierVertices(
-        float ax, float ay,
-        float bx, float by,
-        float cx, float cy,
-        float sqrInvScaleX, float sqrInvScaleY, Vector<Vertex>& outputVertices) {
-    float dx = bx - ax;
-    float dy = by - ay;
-    float d = (cx - bx) * dy - (cy - by) * dx;
-
-    if (d * d < THRESHOLD * THRESHOLD * (dx * dx * sqrInvScaleY + dy * dy * sqrInvScaleX)) {
-        // below thresh, draw line by adding endpoint
-        pushToVector(outputVertices, bx, by);
-    } else {
-        float acx = (ax + cx) * 0.5f;
-        float bcx = (bx + cx) * 0.5f;
-        float acy = (ay + cy) * 0.5f;
-        float bcy = (by + cy) * 0.5f;
-
-        // midpoint
-        float mx = (acx + bcx) * 0.5f;
-        float my = (acy + bcy) * 0.5f;
-
-        recursiveQuadraticBezierVertices(ax, ay, mx, my, acx, acy,
-                sqrInvScaleX, sqrInvScaleY, outputVertices);
-        recursiveQuadraticBezierVertices(mx, my, bx, by, bcx, bcy,
-                sqrInvScaleX, sqrInvScaleY, outputVertices);
-    }
-}
-
-}; // namespace uirenderer
-}; // namespace android
diff --git a/libs/hwui/PathRenderer.h b/libs/hwui/PathRenderer.h
deleted file mode 100644
index e9f347b..0000000
--- a/libs/hwui/PathRenderer.h
+++ /dev/null
@@ -1,104 +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_PATH_RENDERER_H
-#define ANDROID_HWUI_PATH_RENDERER_H
-
-#include <utils/Vector.h>
-
-#include "Vertex.h"
-
-namespace android {
-namespace uirenderer {
-
-class Matrix4;
-typedef Matrix4 mat4;
-
-class VertexBuffer {
-public:
-    VertexBuffer():
-        mBuffer(0),
-        mSize(0),
-        mCleanupMethod(0)
-    {}
-
-    ~VertexBuffer() {
-        if (mCleanupMethod)
-            mCleanupMethod(mBuffer);
-    }
-
-    template <class TYPE>
-    TYPE* alloc(int size) {
-        mSize = size;
-        mBuffer = (void*)new TYPE[size];
-        mCleanupMethod = &(cleanup<TYPE>);
-
-        return (TYPE*)mBuffer;
-    }
-
-    void* getBuffer() { return mBuffer; }
-    unsigned int getSize() { return mSize; }
-
-private:
-    template <class TYPE>
-    static void cleanup(void* buffer) {
-        delete[] (TYPE*)buffer;
-    }
-
-    void* mBuffer;
-    unsigned int mSize;
-    void (*mCleanupMethod)(void*);
-};
-
-class PathRenderer {
-public:
-    static SkRect computePathBounds(const SkPath& path, const SkPaint* paint);
-
-    static void convexPathVertices(const SkPath& path, const SkPaint* paint,
-            const mat4 *transform, VertexBuffer& vertexBuffer);
-
-private:
-    static bool convexPathPerimeterVertices(const SkPath &path, bool forceClose,
-        float sqrInvScaleX, float sqrInvScaleY, Vector<Vertex> &outputVertices);
-
-/*
-  endpoints a & b,
-  control c
- */
-    static void recursiveQuadraticBezierVertices(
-            float ax, float ay,
-            float bx, float by,
-            float cx, float cy,
-            float sqrInvScaleX, float sqrInvScaleY,
-            Vector<Vertex> &outputVertices);
-
-/*
-  endpoints p1, p2
-  control c1, c2
- */
-    static void recursiveCubicBezierVertices(
-            float p1x, float p1y,
-            float c1x, float c1y,
-            float p2x, float p2y,
-            float c2x, float c2y,
-            float sqrInvScaleX, float sqrInvScaleY,
-            Vector<Vertex> &outputVertices);
-};
-
-}; // namespace uirenderer
-}; // namespace android
-
-#endif // ANDROID_HWUI_PATH_RENDERER_H
diff --git a/libs/hwui/PathTessellator.cpp b/libs/hwui/PathTessellator.cpp
new file mode 100644
index 0000000..69ccdfa
--- /dev/null
+++ b/libs/hwui/PathTessellator.cpp
@@ -0,0 +1,970 @@
+/*
+ * 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.
+ */
+
+#define LOG_TAG "PathTessellator"
+#define LOG_NDEBUG 1
+#define ATRACE_TAG ATRACE_TAG_GRAPHICS
+
+#define VERTEX_DEBUG 0
+
+#if VERTEX_DEBUG
+#define DEBUG_DUMP_ALPHA_BUFFER() \
+    for (unsigned int i = 0; i < vertexBuffer.getSize(); i++) { \
+        ALOGD("point %d at %f %f, alpha %f", \
+        i, buffer[i].position[0], buffer[i].position[1], buffer[i].alpha); \
+    }
+#define DEBUG_DUMP_BUFFER() \
+    for (unsigned int i = 0; i < vertexBuffer.getSize(); i++) { \
+        ALOGD("point %d at %f %f", i, buffer[i].position[0], buffer[i].position[1]); \
+    }
+#else
+#define DEBUG_DUMP_ALPHA_BUFFER()
+#define DEBUG_DUMP_BUFFER()
+#endif
+
+#include <SkPath.h>
+#include <SkPaint.h>
+
+#include <stdlib.h>
+#include <stdint.h>
+#include <sys/types.h>
+
+#include <utils/Log.h>
+#include <utils/Trace.h>
+
+#include "PathTessellator.h"
+#include "Matrix.h"
+#include "Vector.h"
+#include "Vertex.h"
+
+namespace android {
+namespace uirenderer {
+
+#define THRESHOLD 0.5f
+#define ROUND_CAP_THRESH 0.25f
+#define PI 3.1415926535897932f
+
+void PathTessellator::expandBoundsForStroke(SkRect& bounds, const SkPaint* paint,
+        bool forceExpand) {
+    if (forceExpand || paint->getStyle() != SkPaint::kFill_Style) {
+        float outset = paint->getStrokeWidth() * 0.5f;
+        bounds.outset(outset, outset);
+    }
+}
+
+inline void copyVertex(Vertex* destPtr, const Vertex* srcPtr) {
+    Vertex::set(destPtr, srcPtr->position[0], srcPtr->position[1]);
+}
+
+inline void copyAlphaVertex(AlphaVertex* destPtr, const AlphaVertex* srcPtr) {
+    AlphaVertex::set(destPtr, srcPtr->position[0], srcPtr->position[1], srcPtr->alpha);
+}
+
+/**
+ * Produces a pseudo-normal for a vertex, given the normals of the two incoming lines. If the offset
+ * from each vertex in a perimeter is calculated, the resultant lines connecting the offset vertices
+ * will be offset by 1.0
+ *
+ * Note that we can't add and normalize the two vectors, that would result in a rectangle having an
+ * offset of (sqrt(2)/2, sqrt(2)/2) at each corner, instead of (1, 1)
+ *
+ * NOTE: assumes angles between normals 90 degrees or less
+ */
+inline vec2 totalOffsetFromNormals(const vec2& normalA, const vec2& normalB) {
+    return (normalA + normalB) / (1 + fabs(normalA.dot(normalB)));
+}
+
+/**
+ * Structure used for storing useful information about the SkPaint and scale used for tessellating
+ */
+struct PaintInfo {
+public:
+    PaintInfo(const SkPaint* paint, const mat4 *transform) :
+            style(paint->getStyle()), cap(paint->getStrokeCap()), isAA(paint->isAntiAlias()),
+            inverseScaleX(1.0f), inverseScaleY(1.0f),
+            halfStrokeWidth(paint->getStrokeWidth() * 0.5f), maxAlpha(1.0f) {
+        // compute inverse scales
+        if (CC_UNLIKELY(!transform->isPureTranslate())) {
+            float m00 = transform->data[Matrix4::kScaleX];
+            float m01 = transform->data[Matrix4::kSkewY];
+            float m10 = transform->data[Matrix4::kSkewX];
+            float m11 = transform->data[Matrix4::kScaleY];
+            float scaleX = sqrt(m00 * m00 + m01 * m01);
+            float scaleY = sqrt(m10 * m10 + m11 * m11);
+            inverseScaleX = (scaleX != 0) ? (1.0f / scaleX) : 1.0f;
+            inverseScaleY = (scaleY != 0) ? (1.0f / scaleY) : 1.0f;
+        }
+
+        if (isAA && halfStrokeWidth != 0 && inverseScaleX == inverseScaleY &&
+                halfStrokeWidth * inverseScaleX < 0.5f) {
+            maxAlpha *= (2 * halfStrokeWidth) / inverseScaleX;
+            halfStrokeWidth = 0.0f;
+        }
+    }
+
+    SkPaint::Style style;
+    SkPaint::Cap cap;
+    bool isAA;
+    float inverseScaleX;
+    float inverseScaleY;
+    float halfStrokeWidth;
+    float maxAlpha;
+
+    inline void scaleOffsetForStrokeWidth(vec2& offset) const {
+        if (halfStrokeWidth == 0.0f) {
+            // hairline - compensate for scale
+            offset.x *= 0.5f * inverseScaleX;
+            offset.y *= 0.5f * inverseScaleY;
+        } else {
+            offset *= halfStrokeWidth;
+        }
+    }
+
+    /**
+     * NOTE: the input will not always be a normal, especially for sharp edges - it should be the
+     * result of totalOffsetFromNormals (see documentation there)
+     */
+    inline vec2 deriveAAOffset(const vec2& offset) const {
+        return vec2(offset.x * 0.5f * inverseScaleX,
+            offset.y * 0.5f * inverseScaleY);
+    }
+
+    /**
+     * Returns the number of cap divisions beyond the minimum 2 (kButt_Cap/kSquareCap will return 0)
+     * Should only be used when stroking and drawing caps
+     */
+    inline int capExtraDivisions() const {
+        if (cap == SkPaint::kRound_Cap) {
+            if (halfStrokeWidth == 0.0f) return 2;
+
+            // ROUND_CAP_THRESH is the maximum error for polygonal approximation of the round cap
+            const float errConst = (-ROUND_CAP_THRESH / halfStrokeWidth + 1);
+            const float targetCosVal = 2 * errConst * errConst - 1;
+            int neededDivisions = (int)(ceilf(PI / acos(targetCosVal)/2)) * 2;
+            return neededDivisions;
+        }
+        return 0;
+    }
+};
+
+void getFillVerticesFromPerimeter(const Vector<Vertex>& perimeter, VertexBuffer& vertexBuffer) {
+    Vertex* buffer = vertexBuffer.alloc<Vertex>(perimeter.size());
+
+    int currentIndex = 0;
+    // zig zag between all previous points on the inside of the hull to create a
+    // triangle strip that fills the hull
+    int srcAindex = 0;
+    int srcBindex = perimeter.size() - 1;
+    while (srcAindex <= srcBindex) {
+        copyVertex(&buffer[currentIndex++], &perimeter[srcAindex]);
+        if (srcAindex == srcBindex) break;
+        copyVertex(&buffer[currentIndex++], &perimeter[srcBindex]);
+        srcAindex++;
+        srcBindex--;
+    }
+}
+
+/*
+ * Fills a vertexBuffer with non-alpha vertices, zig-zagging at each perimeter point to create a
+ * tri-strip as wide as the stroke.
+ *
+ * Uses an additional 2 vertices at the end to wrap around, closing the tri-strip
+ * (for a total of perimeter.size() * 2 + 2 vertices)
+ */
+void getStrokeVerticesFromPerimeter(const PaintInfo& paintInfo, const Vector<Vertex>& perimeter,
+        VertexBuffer& vertexBuffer) {
+    Vertex* buffer = vertexBuffer.alloc<Vertex>(perimeter.size() * 2 + 2);
+
+    int currentIndex = 0;
+    const Vertex* last = &(perimeter[perimeter.size() - 1]);
+    const Vertex* current = &(perimeter[0]);
+    vec2 lastNormal(current->position[1] - last->position[1],
+            last->position[0] - current->position[0]);
+    lastNormal.normalize();
+    for (unsigned int i = 0; i < perimeter.size(); i++) {
+        const Vertex* next = &(perimeter[i + 1 >= perimeter.size() ? 0 : i + 1]);
+        vec2 nextNormal(next->position[1] - current->position[1],
+                current->position[0] - next->position[0]);
+        nextNormal.normalize();
+
+        vec2 totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+        paintInfo.scaleOffsetForStrokeWidth(totalOffset);
+
+        Vertex::set(&buffer[currentIndex++],
+                current->position[0] + totalOffset.x,
+                current->position[1] + totalOffset.y);
+
+        Vertex::set(&buffer[currentIndex++],
+                current->position[0] - totalOffset.x,
+                current->position[1] - totalOffset.y);
+
+        last = current;
+        current = next;
+        lastNormal = nextNormal;
+    }
+
+    // wrap around to beginning
+    copyVertex(&buffer[currentIndex++], &buffer[0]);
+    copyVertex(&buffer[currentIndex++], &buffer[1]);
+
+    DEBUG_DUMP_BUFFER();
+}
+
+/**
+ * Fills a vertexBuffer with non-alpha vertices similar to getStrokeVerticesFromPerimeter, except:
+ *
+ * 1 - Doesn't need to wrap around, since the input vertices are unclosed
+ *
+ * 2 - can zig-zag across 'extra' vertices at either end, to create round caps
+ */
+void getStrokeVerticesFromUnclosedVertices(const PaintInfo& paintInfo,
+        const Vector<Vertex>& vertices, VertexBuffer& vertexBuffer) {
+    const int extra = paintInfo.capExtraDivisions();
+    const int allocSize = (vertices.size() + extra) * 2;
+
+    Vertex* buffer = vertexBuffer.alloc<Vertex>(allocSize);
+
+    if (extra > 0) {
+        // tessellate both round caps
+        const int last = vertices.size() - 1;
+        float beginTheta = atan2(
+                - (vertices[0].position[0] - vertices[1].position[0]),
+                vertices[0].position[1] - vertices[1].position[1]);
+        float endTheta = atan2(
+                - (vertices[last].position[0] - vertices[last - 1].position[0]),
+                vertices[last].position[1] - vertices[last - 1].position[1]);
+
+        const float dTheta = PI / (extra + 1);
+        const float radialScale = 2.0f / (1 + cos(dTheta));
+
+        int capOffset;
+        for (int i = 0; i < extra; i++) {
+            if (i < extra / 2) {
+                capOffset = extra - 2 * i - 1;
+            } else {
+                capOffset = 2 * i - extra;
+            }
+
+            beginTheta += dTheta;
+            vec2 beginRadialOffset(cos(beginTheta), sin(beginTheta));
+            paintInfo.scaleOffsetForStrokeWidth(beginRadialOffset);
+            Vertex::set(&buffer[capOffset],
+                    vertices[0].position[0] + beginRadialOffset.x,
+                    vertices[0].position[1] + beginRadialOffset.y);
+
+            endTheta += dTheta;
+            vec2 endRadialOffset(cos(endTheta), sin(endTheta));
+            paintInfo.scaleOffsetForStrokeWidth(endRadialOffset);
+            Vertex::set(&buffer[allocSize - 1 - capOffset],
+                    vertices[last].position[0] + endRadialOffset.x,
+                    vertices[last].position[1] + endRadialOffset.y);
+        }
+    }
+
+    int currentIndex = extra;
+    const Vertex* current = &(vertices[0]);
+    vec2 lastNormal;
+    for (unsigned int i = 0; i < vertices.size() - 1; i++) {
+        const Vertex* next = &(vertices[i + 1]);
+        vec2 nextNormal(next->position[1] - current->position[1],
+                current->position[0] - next->position[0]);
+        nextNormal.normalize();
+
+        vec2 totalOffset;
+        if (i == 0) {
+            totalOffset = nextNormal;
+        } else {
+            totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+        }
+        paintInfo.scaleOffsetForStrokeWidth(totalOffset);
+
+        Vertex::set(&buffer[currentIndex++],
+                current->position[0] + totalOffset.x,
+                current->position[1] + totalOffset.y);
+
+        Vertex::set(&buffer[currentIndex++],
+                current->position[0] - totalOffset.x,
+                current->position[1] - totalOffset.y);
+
+        current = next;
+        lastNormal = nextNormal;
+    }
+
+    vec2 totalOffset = lastNormal;
+    paintInfo.scaleOffsetForStrokeWidth(totalOffset);
+
+    Vertex::set(&buffer[currentIndex++],
+            current->position[0] + totalOffset.x,
+            current->position[1] + totalOffset.y);
+    Vertex::set(&buffer[currentIndex++],
+            current->position[0] - totalOffset.x,
+            current->position[1] - totalOffset.y);
+
+    DEBUG_DUMP_BUFFER();
+}
+
+/**
+ * Populates a vertexBuffer with AlphaVertices to create an anti-aliased fill shape tessellation
+ * 
+ * 1 - create the AA perimeter of unit width, by zig-zagging at each point around the perimeter of
+ * the shape (using 2 * perimeter.size() vertices)
+ *
+ * 2 - wrap around to the beginning to complete the perimeter (2 vertices)
+ *
+ * 3 - zig zag back and forth inside the shape to fill it (using perimeter.size() vertices)
+ */
+void getFillVerticesFromPerimeterAA(const PaintInfo& paintInfo, const Vector<Vertex>& perimeter,
+        VertexBuffer& vertexBuffer) {
+    AlphaVertex* buffer = vertexBuffer.alloc<AlphaVertex>(perimeter.size() * 3 + 2);
+
+    // generate alpha points - fill Alpha vertex gaps in between each point with
+    // alpha 0 vertex, offset by a scaled normal.
+    int currentIndex = 0;
+    const Vertex* last = &(perimeter[perimeter.size() - 1]);
+    const Vertex* current = &(perimeter[0]);
+    vec2 lastNormal(current->position[1] - last->position[1],
+            last->position[0] - current->position[0]);
+    lastNormal.normalize();
+    for (unsigned int i = 0; i < perimeter.size(); i++) {
+        const Vertex* next = &(perimeter[i + 1 >= perimeter.size() ? 0 : i + 1]);
+        vec2 nextNormal(next->position[1] - current->position[1],
+                current->position[0] - next->position[0]);
+        nextNormal.normalize();
+
+        // AA point offset from original point is that point's normal, such that each side is offset
+        // by .5 pixels
+        vec2 totalOffset = paintInfo.deriveAAOffset(totalOffsetFromNormals(lastNormal, nextNormal));
+
+        AlphaVertex::set(&buffer[currentIndex++],
+                current->position[0] + totalOffset.x,
+                current->position[1] + totalOffset.y,
+                0.0f);
+        AlphaVertex::set(&buffer[currentIndex++],
+                current->position[0] - totalOffset.x,
+                current->position[1] - totalOffset.y,
+                1.0f);
+
+        last = current;
+        current = next;
+        lastNormal = nextNormal;
+    }
+
+    // wrap around to beginning
+    copyAlphaVertex(&buffer[currentIndex++], &buffer[0]);
+    copyAlphaVertex(&buffer[currentIndex++], &buffer[1]);
+
+    // zig zag between all previous points on the inside of the hull to create a
+    // triangle strip that fills the hull, repeating the first inner point to
+    // create degenerate tris to start inside path
+    int srcAindex = 0;
+    int srcBindex = perimeter.size() - 1;
+    while (srcAindex <= srcBindex) {
+        copyAlphaVertex(&buffer[currentIndex++], &buffer[srcAindex * 2 + 1]);
+        if (srcAindex == srcBindex) break;
+        copyAlphaVertex(&buffer[currentIndex++], &buffer[srcBindex * 2 + 1]);
+        srcAindex++;
+        srcBindex--;
+    }
+
+    DEBUG_DUMP_BUFFER();
+}
+
+/**
+ * Stores geometry for a single, AA-perimeter (potentially rounded) cap
+ *
+ * For explanation of constants and general methodoloyg, see comments for
+ * getStrokeVerticesFromUnclosedVerticesAA() below.
+ */
+inline void storeCapAA(const PaintInfo& paintInfo, const Vector<Vertex>& vertices,
+        AlphaVertex* buffer, bool isFirst, vec2 normal, int offset) {
+    const int extra = paintInfo.capExtraDivisions();
+    const int extraOffset = (extra + 1) / 2;
+    const int capIndex = isFirst
+            ? 2 * offset + 6 + 2 * (extra + extraOffset)
+            : offset + 2 + 2 * extraOffset;
+    if (isFirst) normal *= -1;
+
+    // TODO: this normal should be scaled by radialScale if extra != 0, see totalOffsetFromNormals()
+    vec2 AAOffset = paintInfo.deriveAAOffset(normal);
+
+    vec2 strokeOffset = normal;
+    paintInfo.scaleOffsetForStrokeWidth(strokeOffset);
+    vec2 outerOffset = strokeOffset + AAOffset;
+    vec2 innerOffset = strokeOffset - AAOffset;
+
+    vec2 capAAOffset;
+    if (paintInfo.cap != SkPaint::kRound_Cap) {
+        // if the cap is square or butt, the inside primary cap vertices will be inset in two
+        // directions - both normal to the stroke, and parallel to it.
+        capAAOffset = vec2(-AAOffset.y, AAOffset.x);
+    }
+
+    // determine referencePoint, the center point for the 4 primary cap vertices
+    const Vertex* point = isFirst ? vertices.begin() : (vertices.end() - 1);
+    vec2 referencePoint(point->position[0], point->position[1]);
+    if (paintInfo.cap == SkPaint::kSquare_Cap) {
+        // To account for square cap, move the primary cap vertices (that create the AA edge) by the
+        // stroke offset vector (rotated to be parallel to the stroke)
+        referencePoint += vec2(-strokeOffset.y, strokeOffset.x);
+    }
+
+    AlphaVertex::set(&buffer[capIndex + 0],
+            referencePoint.x + outerOffset.x + capAAOffset.x,
+            referencePoint.y + outerOffset.y + capAAOffset.y,
+            0.0f);
+    AlphaVertex::set(&buffer[capIndex + 1],
+            referencePoint.x + innerOffset.x - capAAOffset.x,
+            referencePoint.y + innerOffset.y - capAAOffset.y,
+            paintInfo.maxAlpha);
+
+    bool isRound = paintInfo.cap == SkPaint::kRound_Cap;
+
+    const int postCapIndex = (isRound && isFirst) ? (2 * extraOffset - 2) : capIndex + (2 * extra);
+    AlphaVertex::set(&buffer[postCapIndex + 2],
+            referencePoint.x - outerOffset.x + capAAOffset.x,
+            referencePoint.y - outerOffset.y + capAAOffset.y,
+            0.0f);
+    AlphaVertex::set(&buffer[postCapIndex + 3],
+            referencePoint.x - innerOffset.x - capAAOffset.x,
+            referencePoint.y - innerOffset.y - capAAOffset.y,
+            paintInfo.maxAlpha);
+
+    if (isRound) {
+        const float dTheta = PI / (extra + 1);
+        const float radialScale = 2.0f / (1 + cos(dTheta));
+        float theta = atan2(normal.y, normal.x);
+        int capPerimIndex = capIndex + 2;
+
+        for (int i = 0; i < extra; i++) {
+            theta += dTheta;
+
+            vec2 radialOffset(cos(theta), sin(theta));
+
+            // scale to compensate for pinching at sharp angles, see totalOffsetFromNormals()
+            radialOffset *= radialScale;
+
+            AAOffset = paintInfo.deriveAAOffset(radialOffset);
+            paintInfo.scaleOffsetForStrokeWidth(radialOffset);
+            AlphaVertex::set(&buffer[capPerimIndex++],
+                    referencePoint.x + radialOffset.x + AAOffset.x,
+                    referencePoint.y + radialOffset.y + AAOffset.y,
+                    0.0f);
+            AlphaVertex::set(&buffer[capPerimIndex++],
+                    referencePoint.x + radialOffset.x - AAOffset.x,
+                    referencePoint.y + radialOffset.y - AAOffset.y,
+                    paintInfo.maxAlpha);
+
+            if (isFirst && i == extra - extraOffset) {
+                //copy most recent two points to first two points
+                copyAlphaVertex(&buffer[0], &buffer[capPerimIndex - 2]);
+                copyAlphaVertex(&buffer[1], &buffer[capPerimIndex - 1]);
+
+                capPerimIndex = 2; // start writing the rest of the round cap at index 2
+            }
+        }
+
+        if (isFirst) {
+            const int startCapFillIndex = capIndex + 2 * (extra - extraOffset) + 4;
+            int capFillIndex = startCapFillIndex;
+            for (int i = 0; i < extra + 2; i += 2) {
+                copyAlphaVertex(&buffer[capFillIndex++], &buffer[1 + i]);
+                // TODO: to support odd numbers of divisions, break here on the last iteration
+                copyAlphaVertex(&buffer[capFillIndex++], &buffer[startCapFillIndex - 3 - i]);
+            }
+        } else {
+            int capFillIndex = 6 * vertices.size() + 2 + 6 * extra - (extra + 2);
+            for (int i = 0; i < extra + 2; i += 2) {
+                copyAlphaVertex(&buffer[capFillIndex++], &buffer[capIndex + 1 + i]);
+                // TODO: to support odd numbers of divisions, break here on the last iteration
+                copyAlphaVertex(&buffer[capFillIndex++], &buffer[capIndex + 3 + 2 * extra - i]);
+            }
+        }
+        return;
+    }
+    if (isFirst) {
+        copyAlphaVertex(&buffer[0], &buffer[postCapIndex + 2]);
+        copyAlphaVertex(&buffer[1], &buffer[postCapIndex + 3]);
+        copyAlphaVertex(&buffer[postCapIndex + 4], &buffer[1]); // degenerate tris (the only two!)
+        copyAlphaVertex(&buffer[postCapIndex + 5], &buffer[postCapIndex + 1]);
+    } else {
+        copyAlphaVertex(&buffer[6 * vertices.size()], &buffer[postCapIndex + 1]);
+        copyAlphaVertex(&buffer[6 * vertices.size() + 1], &buffer[postCapIndex + 3]);
+    }
+}
+
+/*
+the geometry for an aa, capped stroke consists of the following:
+
+       # vertices       |    function
+----------------------------------------------------------------------
+a) 2                    | Start AA perimeter
+b) 2, 2 * roundDivOff   | First half of begin cap's perimeter
+                        |
+   2 * middlePts        | 'Outer' or 'Top' AA perimeter half (between caps)
+                        |
+a) 4                    | End cap's
+b) 2, 2 * roundDivs, 2  |    AA perimeter
+                        |
+   2 * middlePts        | 'Inner' or 'bottom' AA perimeter half
+                        |
+a) 6                    | Begin cap's perimeter
+b) 2, 2*(rD - rDO + 1), | Last half of begin cap's perimeter
+       roundDivs, 2     |
+                        |
+   2 * middlePts        | Stroke's full opacity center strip
+                        |
+a) 2                    | end stroke
+b) 2, roundDivs         |    (and end cap fill, for round)
+
+Notes:
+* rows starting with 'a)' denote the Butt or Square cap vertex use, 'b)' denote Round
+
+* 'middlePts' is (number of points in the unclosed input vertex list, minus 2) times two
+
+* 'roundDivs' or 'rD' is the number of extra vertices (beyond the minimum of 2) that define the
+        round cap's shape, and is at least two. This will increase with cap size to sufficiently
+        define the cap's level of tessellation.
+
+* 'roundDivOffset' or 'rDO' is the point about halfway along the start cap's round perimeter, where
+        the stream of vertices for the AA perimeter starts. By starting and ending the perimeter at
+        this offset, the fill of the stroke is drawn from this point with minimal extra vertices.
+
+This means the outer perimeter starts at:
+    outerIndex = (2) OR (2 + 2 * roundDivOff)
+the inner perimeter (since it is filled in reverse) starts at:
+    innerIndex = outerIndex + (4 * middlePts) + ((4) OR (4 + 2 * roundDivs)) - 1
+the stroke starts at:
+    strokeIndex = innerIndex + 1 + ((6) OR (6 + 3 * roundDivs - 2 * roundDivOffset))
+
+The total needed allocated space is either:
+    2 + 4 + 6 + 2 + 3 * (2 * middlePts) = 14 + 6 * middlePts = 2 + 6 * pts
+or, for rounded caps:
+    (2 + 2 * rDO) + (4 + 2 * rD) + (2 * (rD - rDO + 1)
+            + roundDivs + 4) + (2 + roundDivs) + 3 * (2 * middlePts)
+    = 14 + 6 * middlePts + 6 * roundDivs
+    = 2 + 6 * pts + 6 * roundDivs
+ */
+void getStrokeVerticesFromUnclosedVerticesAA(const PaintInfo& paintInfo,
+        const Vector<Vertex>& vertices, VertexBuffer& vertexBuffer) {
+
+    const int extra = paintInfo.capExtraDivisions();
+    const int allocSize = 6 * vertices.size() + 2 + 6 * extra;
+
+    AlphaVertex* buffer = vertexBuffer.alloc<AlphaVertex>(allocSize);
+
+    const int extraOffset = (extra + 1) / 2;
+    int offset = 2 * (vertices.size() - 2);
+    // there is no outer/inner here, using them for consistency with below approach
+    int currentAAOuterIndex = 2 + 2 * extraOffset;
+    int currentAAInnerIndex = currentAAOuterIndex + (2 * offset) + 3 + (2 * extra);
+    int currentStrokeIndex = currentAAInnerIndex + 7 + (3 * extra - 2 * extraOffset);
+
+    const Vertex* last = &(vertices[0]);
+    const Vertex* current = &(vertices[1]);
+    vec2 lastNormal(current->position[1] - last->position[1],
+            last->position[0] - current->position[0]);
+    lastNormal.normalize();
+
+    // TODO: use normal from bezier traversal for cap, instead of from vertices
+    storeCapAA(paintInfo, vertices, buffer, true, lastNormal, offset);
+
+    for (unsigned int i = 1; i < vertices.size() - 1; i++) {
+        const Vertex* next = &(vertices[i + 1]);
+        vec2 nextNormal(next->position[1] - current->position[1],
+                current->position[0] - next->position[0]);
+        nextNormal.normalize();
+
+        vec2 totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+        vec2 AAOffset = paintInfo.deriveAAOffset(totalOffset);
+
+        vec2 innerOffset = totalOffset;
+        paintInfo.scaleOffsetForStrokeWidth(innerOffset);
+        vec2 outerOffset = innerOffset + AAOffset;
+        innerOffset -= AAOffset;
+
+        AlphaVertex::set(&buffer[currentAAOuterIndex++],
+                current->position[0] + outerOffset.x,
+                current->position[1] + outerOffset.y,
+                0.0f);
+        AlphaVertex::set(&buffer[currentAAOuterIndex++],
+                current->position[0] + innerOffset.x,
+                current->position[1] + innerOffset.y,
+                paintInfo.maxAlpha);
+
+        AlphaVertex::set(&buffer[currentStrokeIndex++],
+                current->position[0] + innerOffset.x,
+                current->position[1] + innerOffset.y,
+                paintInfo.maxAlpha);
+        AlphaVertex::set(&buffer[currentStrokeIndex++],
+                current->position[0] - innerOffset.x,
+                current->position[1] - innerOffset.y,
+                paintInfo.maxAlpha);
+
+        AlphaVertex::set(&buffer[currentAAInnerIndex--],
+                current->position[0] - innerOffset.x,
+                current->position[1] - innerOffset.y,
+                paintInfo.maxAlpha);
+        AlphaVertex::set(&buffer[currentAAInnerIndex--],
+                current->position[0] - outerOffset.x,
+                current->position[1] - outerOffset.y,
+                0.0f);
+
+        current = next;
+        lastNormal = nextNormal;
+    }
+
+    // TODO: use normal from bezier traversal for cap, instead of from vertices
+    storeCapAA(paintInfo, vertices, buffer, false, lastNormal, offset);
+
+    DEBUG_DUMP_ALPHA_BUFFER();
+}
+
+
+void getStrokeVerticesFromPerimeterAA(const PaintInfo& paintInfo, const Vector<Vertex>& perimeter,
+        VertexBuffer& vertexBuffer) {
+    AlphaVertex* buffer = vertexBuffer.alloc<AlphaVertex>(6 * perimeter.size() + 8);
+
+    int offset = 2 * perimeter.size() + 3;
+    int currentAAOuterIndex = 0;
+    int currentStrokeIndex = offset;
+    int currentAAInnerIndex = offset * 2;
+
+    const Vertex* last = &(perimeter[perimeter.size() - 1]);
+    const Vertex* current = &(perimeter[0]);
+    vec2 lastNormal(current->position[1] - last->position[1],
+            last->position[0] - current->position[0]);
+    lastNormal.normalize();
+    for (unsigned int i = 0; i < perimeter.size(); i++) {
+        const Vertex* next = &(perimeter[i + 1 >= perimeter.size() ? 0 : i + 1]);
+        vec2 nextNormal(next->position[1] - current->position[1],
+                current->position[0] - next->position[0]);
+        nextNormal.normalize();
+
+        vec2 totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+        vec2 AAOffset = paintInfo.deriveAAOffset(totalOffset);
+
+        vec2 innerOffset = totalOffset;
+        paintInfo.scaleOffsetForStrokeWidth(innerOffset);
+        vec2 outerOffset = innerOffset + AAOffset;
+        innerOffset -= AAOffset;
+
+        AlphaVertex::set(&buffer[currentAAOuterIndex++],
+                current->position[0] + outerOffset.x,
+                current->position[1] + outerOffset.y,
+                0.0f);
+        AlphaVertex::set(&buffer[currentAAOuterIndex++],
+                current->position[0] + innerOffset.x,
+                current->position[1] + innerOffset.y,
+                paintInfo.maxAlpha);
+
+        AlphaVertex::set(&buffer[currentStrokeIndex++],
+                current->position[0] + innerOffset.x,
+                current->position[1] + innerOffset.y,
+                paintInfo.maxAlpha);
+        AlphaVertex::set(&buffer[currentStrokeIndex++],
+                current->position[0] - innerOffset.x,
+                current->position[1] - innerOffset.y,
+                paintInfo.maxAlpha);
+
+        AlphaVertex::set(&buffer[currentAAInnerIndex++],
+                current->position[0] - innerOffset.x,
+                current->position[1] - innerOffset.y,
+                paintInfo.maxAlpha);
+        AlphaVertex::set(&buffer[currentAAInnerIndex++],
+                current->position[0] - outerOffset.x,
+                current->position[1] - outerOffset.y,
+                0.0f);
+
+        last = current;
+        current = next;
+        lastNormal = nextNormal;
+    }
+
+    // wrap each strip around to beginning, creating degenerate tris to bridge strips
+    copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[0]);
+    copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[1]);
+    copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[1]);
+
+    copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset]);
+    copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset + 1]);
+    copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset + 1]);
+
+    copyAlphaVertex(&buffer[currentAAInnerIndex++], &buffer[2 * offset]);
+    copyAlphaVertex(&buffer[currentAAInnerIndex++], &buffer[2 * offset + 1]);
+    // don't need to create last degenerate tri
+
+    DEBUG_DUMP_ALPHA_BUFFER();
+}
+
+void PathTessellator::tessellatePath(const SkPath &path, const SkPaint* paint,
+        const mat4 *transform, VertexBuffer& vertexBuffer) {
+    ATRACE_CALL();
+
+    const PaintInfo paintInfo(paint, transform);
+
+    Vector<Vertex> tempVertices;
+    float threshInvScaleX = paintInfo.inverseScaleX;
+    float threshInvScaleY = paintInfo.inverseScaleY;
+    if (paintInfo.style == SkPaint::kStroke_Style) {
+        // alter the bezier recursion threshold values we calculate in order to compensate for
+        // expansion done after the path vertices are found
+        SkRect bounds = path.getBounds();
+        if (!bounds.isEmpty()) {
+            threshInvScaleX *= bounds.width() / (bounds.width() + paint->getStrokeWidth());
+            threshInvScaleY *= bounds.height() / (bounds.height() + paint->getStrokeWidth());
+        }
+    }
+
+    // force close if we're filling the path, since fill path expects closed perimeter.
+    bool forceClose = paintInfo.style != SkPaint::kStroke_Style;
+    bool wasClosed = approximatePathOutlineVertices(path, forceClose,
+            threshInvScaleX * threshInvScaleX, threshInvScaleY * threshInvScaleY, tempVertices);
+
+    if (!tempVertices.size()) {
+        // path was empty, return without allocating vertex buffer
+        return;
+    }
+
+#if VERTEX_DEBUG
+    for (unsigned int i = 0; i < tempVertices.size(); i++) {
+        ALOGD("orig path: point at %f %f",
+                tempVertices[i].position[0], tempVertices[i].position[1]);
+    }
+#endif
+
+    if (paintInfo.style == SkPaint::kStroke_Style) {
+        if (!paintInfo.isAA) {
+            if (wasClosed) {
+                getStrokeVerticesFromPerimeter(paintInfo, tempVertices, vertexBuffer);
+            } else {
+                getStrokeVerticesFromUnclosedVertices(paintInfo, tempVertices, vertexBuffer);
+            }
+
+        } else {
+            if (wasClosed) {
+                getStrokeVerticesFromPerimeterAA(paintInfo, tempVertices, vertexBuffer);
+            } else {
+                getStrokeVerticesFromUnclosedVerticesAA(paintInfo, tempVertices, vertexBuffer);
+            }
+        }
+    } else {
+        // For kStrokeAndFill style, the path should be adjusted externally.
+        // It will be treated as a fill here.
+        if (!paintInfo.isAA) {
+            getFillVerticesFromPerimeter(tempVertices, vertexBuffer);
+        } else {
+            getFillVerticesFromPerimeterAA(paintInfo, tempVertices, vertexBuffer);
+        }
+    }
+}
+
+static void expandRectToCoverVertex(SkRect& rect, const Vertex& vertex) {
+    rect.fLeft = fminf(rect.fLeft, vertex.position[0]);
+    rect.fTop = fminf(rect.fTop, vertex.position[1]);
+    rect.fRight = fmaxf(rect.fRight, vertex.position[0]);
+    rect.fBottom = fmaxf(rect.fBottom, vertex.position[1]);
+}
+
+void PathTessellator::tessellateLines(const float* points, int count, SkPaint* paint,
+        const mat4* transform, SkRect& bounds, VertexBuffer& vertexBuffer) {
+    ATRACE_CALL();
+    const PaintInfo paintInfo(paint, transform);
+
+    const int extra = paintInfo.capExtraDivisions();
+    int numLines = count / 4;
+    int lineAllocSize;
+    // pre-allocate space for lines in the buffer, and degenerate tris in between
+    if (paintInfo.isAA) {
+        lineAllocSize = 6 * (2) + 2 + 6 * extra;
+        vertexBuffer.alloc<AlphaVertex>(numLines * lineAllocSize + (numLines - 1) * 2);
+    } else {
+        lineAllocSize = 2 * ((2) + extra);
+        vertexBuffer.alloc<Vertex>(numLines * lineAllocSize + (numLines - 1) * 2);
+    }
+
+    Vector<Vertex> tempVertices;
+    tempVertices.push();
+    tempVertices.push();
+    Vertex* tempVerticesData = tempVertices.editArray();
+    bounds.set(points[0], points[1], points[0], points[1]);
+    for (int i = 0; i < count; i += 4) {
+        Vertex::set(&(tempVerticesData[0]), points[i + 0], points[i + 1]);
+        Vertex::set(&(tempVerticesData[1]), points[i + 2], points[i + 3]);
+
+        if (paintInfo.isAA) {
+            getStrokeVerticesFromUnclosedVerticesAA(paintInfo, tempVertices, vertexBuffer);
+        } else {
+            getStrokeVerticesFromUnclosedVertices(paintInfo, tempVertices, vertexBuffer);
+        }
+
+        // calculate bounds
+        expandRectToCoverVertex(bounds, tempVerticesData[0]);
+        expandRectToCoverVertex(bounds, tempVerticesData[1]);
+    }
+
+    expandBoundsForStroke(bounds, paint, true); // force-expand bounds to incorporate stroke
+
+    // since multiple objects tessellated into buffer, separate them with degen tris
+    if (paintInfo.isAA) {
+        vertexBuffer.createDegenerateSeparators<AlphaVertex>(lineAllocSize);
+    } else {
+        vertexBuffer.createDegenerateSeparators<Vertex>(lineAllocSize);
+    }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// Simple path line approximation
+///////////////////////////////////////////////////////////////////////////////
+
+void pushToVector(Vector<Vertex>& vertices, float x, float y) {
+    // TODO: make this not yuck
+    vertices.push();
+    Vertex* newVertex = &(vertices.editArray()[vertices.size() - 1]);
+    Vertex::set(newVertex, x, y);
+}
+
+bool PathTessellator::approximatePathOutlineVertices(const SkPath& path, bool forceClose,
+        float sqrInvScaleX, float sqrInvScaleY, Vector<Vertex>& outputVertices) {
+    ATRACE_CALL();
+
+    // TODO: to support joins other than sharp miter, join vertices should be labelled in the
+    // perimeter, or resolved into more vertices. Reconsider forceClose-ing in that case.
+    SkPath::Iter iter(path, forceClose);
+    SkPoint pts[4];
+    SkPath::Verb v;
+    while (SkPath::kDone_Verb != (v = iter.next(pts))) {
+            switch (v) {
+            case SkPath::kMove_Verb:
+                pushToVector(outputVertices, pts[0].x(), pts[0].y());
+                ALOGV("Move to pos %f %f", pts[0].x(), pts[0].y());
+                break;
+            case SkPath::kClose_Verb:
+                ALOGV("Close at pos %f %f", pts[0].x(), pts[0].y());
+                break;
+            case SkPath::kLine_Verb:
+                ALOGV("kLine_Verb %f %f -> %f %f", pts[0].x(), pts[0].y(), pts[1].x(), pts[1].y());
+                pushToVector(outputVertices, pts[1].x(), pts[1].y());
+                break;
+            case SkPath::kQuad_Verb:
+                ALOGV("kQuad_Verb");
+                recursiveQuadraticBezierVertices(
+                        pts[0].x(), pts[0].y(),
+                        pts[2].x(), pts[2].y(),
+                        pts[1].x(), pts[1].y(),
+                        sqrInvScaleX, sqrInvScaleY, outputVertices);
+                break;
+            case SkPath::kCubic_Verb:
+                ALOGV("kCubic_Verb");
+                recursiveCubicBezierVertices(
+                        pts[0].x(), pts[0].y(),
+                        pts[1].x(), pts[1].y(),
+                        pts[3].x(), pts[3].y(),
+                        pts[2].x(), pts[2].y(),
+                        sqrInvScaleX, sqrInvScaleY, outputVertices);
+                break;
+            default:
+                break;
+            }
+    }
+
+    int size = outputVertices.size();
+    if (size >= 2 && outputVertices[0].position[0] == outputVertices[size - 1].position[0] &&
+            outputVertices[0].position[1] == outputVertices[size - 1].position[1]) {
+        outputVertices.pop();
+        return true;
+    }
+    return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// Bezier approximation
+///////////////////////////////////////////////////////////////////////////////
+
+void PathTessellator::recursiveCubicBezierVertices(
+        float p1x, float p1y, float c1x, float c1y,
+        float p2x, float p2y, float c2x, float c2y,
+        float sqrInvScaleX, float sqrInvScaleY, Vector<Vertex>& outputVertices) {
+    float dx = p2x - p1x;
+    float dy = p2y - p1y;
+    float d1 = fabs((c1x - p2x) * dy - (c1y - p2y) * dx);
+    float d2 = fabs((c2x - p2x) * dy - (c2y - p2y) * dx);
+    float d = d1 + d2;
+
+    // multiplying by sqrInvScaleY/X equivalent to multiplying in dimensional scale factors
+
+    if (d * d < THRESHOLD * THRESHOLD * (dx * dx * sqrInvScaleY + dy * dy * sqrInvScaleX)) {
+        // below thresh, draw line by adding endpoint
+        pushToVector(outputVertices, p2x, p2y);
+    } else {
+        float p1c1x = (p1x + c1x) * 0.5f;
+        float p1c1y = (p1y + c1y) * 0.5f;
+        float p2c2x = (p2x + c2x) * 0.5f;
+        float p2c2y = (p2y + c2y) * 0.5f;
+
+        float c1c2x = (c1x + c2x) * 0.5f;
+        float c1c2y = (c1y + c2y) * 0.5f;
+
+        float p1c1c2x = (p1c1x + c1c2x) * 0.5f;
+        float p1c1c2y = (p1c1y + c1c2y) * 0.5f;
+
+        float p2c1c2x = (p2c2x + c1c2x) * 0.5f;
+        float p2c1c2y = (p2c2y + c1c2y) * 0.5f;
+
+        float mx = (p1c1c2x + p2c1c2x) * 0.5f;
+        float my = (p1c1c2y + p2c1c2y) * 0.5f;
+
+        recursiveCubicBezierVertices(
+                p1x, p1y, p1c1x, p1c1y,
+                mx, my, p1c1c2x, p1c1c2y,
+                sqrInvScaleX, sqrInvScaleY, outputVertices);
+        recursiveCubicBezierVertices(
+                mx, my, p2c1c2x, p2c1c2y,
+                p2x, p2y, p2c2x, p2c2y,
+                sqrInvScaleX, sqrInvScaleY, outputVertices);
+    }
+}
+
+void PathTessellator::recursiveQuadraticBezierVertices(
+        float ax, float ay,
+        float bx, float by,
+        float cx, float cy,
+        float sqrInvScaleX, float sqrInvScaleY, Vector<Vertex>& outputVertices) {
+    float dx = bx - ax;
+    float dy = by - ay;
+    float d = (cx - bx) * dy - (cy - by) * dx;
+
+    if (d * d < THRESHOLD * THRESHOLD * (dx * dx * sqrInvScaleY + dy * dy * sqrInvScaleX)) {
+        // below thresh, draw line by adding endpoint
+        pushToVector(outputVertices, bx, by);
+    } else {
+        float acx = (ax + cx) * 0.5f;
+        float bcx = (bx + cx) * 0.5f;
+        float acy = (ay + cy) * 0.5f;
+        float bcy = (by + cy) * 0.5f;
+
+        // midpoint
+        float mx = (acx + bcx) * 0.5f;
+        float my = (acy + bcy) * 0.5f;
+
+        recursiveQuadraticBezierVertices(ax, ay, mx, my, acx, acy,
+                sqrInvScaleX, sqrInvScaleY, outputVertices);
+        recursiveQuadraticBezierVertices(mx, my, bx, by, bcx, bcy,
+                sqrInvScaleX, sqrInvScaleY, outputVertices);
+    }
+}
+
+}; // namespace uirenderer
+}; // namespace android
diff --git a/libs/hwui/PathTessellator.h b/libs/hwui/PathTessellator.h
new file mode 100644
index 0000000..596d49d
--- /dev/null
+++ b/libs/hwui/PathTessellator.h
@@ -0,0 +1,132 @@
+/*
+ * 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_PATH_TESSELLATOR_H
+#define ANDROID_HWUI_PATH_TESSELLATOR_H
+
+#include <utils/Vector.h>
+
+#include "Matrix.h"
+#include "Rect.h"
+#include "Vertex.h"
+
+namespace android {
+namespace uirenderer {
+
+class VertexBuffer {
+public:
+    VertexBuffer():
+        mBuffer(0),
+        mSize(0),
+        mCleanupMethod(NULL)
+    {}
+
+    ~VertexBuffer() {
+        if (mCleanupMethod) mCleanupMethod(mBuffer);
+    }
+
+    /**
+       This should be the only method used by the PathTessellator. Subsequent calls to alloc will
+       allocate space within the first allocation (useful if you want to eventually allocate
+       multiple regions within a single VertexBuffer, such as with PathTessellator::tesselateLines()
+     */
+    template <class TYPE>
+    TYPE* alloc(int size) {
+        if (mSize) {
+            TYPE* reallocBuffer = (TYPE*)mReallocBuffer;
+            // already have allocated the buffer, re-allocate space within
+            if (mReallocBuffer != mBuffer) {
+                // not first re-allocation, leave space for degenerate triangles to separate strips
+                reallocBuffer += 2;
+            }
+            mReallocBuffer = reallocBuffer + size;
+            return reallocBuffer;
+        }
+        mSize = size;
+        mReallocBuffer = mBuffer = (void*)new TYPE[size];
+        mCleanupMethod = &(cleanup<TYPE>);
+
+        return (TYPE*)mBuffer;
+    }
+
+    void* getBuffer() const { return mBuffer; }
+    unsigned int getSize() const { return mSize; }
+
+    template <class TYPE>
+    void createDegenerateSeparators(int allocSize) {
+        TYPE* end = (TYPE*)mBuffer + mSize;
+        for (TYPE* degen = (TYPE*)mBuffer + allocSize; degen < end; degen += 2 + allocSize) {
+            memcpy(degen, degen - 1, sizeof(TYPE));
+            memcpy(degen + 1, degen + 2, sizeof(TYPE));
+        }
+    }
+
+private:
+    template <class TYPE>
+    static void cleanup(void* buffer) {
+        delete[] (TYPE*)buffer;
+    }
+
+    void* mBuffer;
+    unsigned int mSize;
+
+    void* mReallocBuffer; // used for multi-allocation
+
+    void (*mCleanupMethod)(void*);
+};
+
+class PathTessellator {
+public:
+    static void expandBoundsForStroke(SkRect& bounds, const SkPaint* paint, bool forceExpand);
+
+    static void tessellatePath(const SkPath& path, const SkPaint* paint,
+            const mat4 *transform, VertexBuffer& vertexBuffer);
+
+    static void tessellateLines(const float* points, int count, SkPaint* paint,
+            const mat4* transform, SkRect& bounds, VertexBuffer& vertexBuffer);
+
+private:
+    static bool approximatePathOutlineVertices(const SkPath &path, bool forceClose,
+        float sqrInvScaleX, float sqrInvScaleY, Vector<Vertex> &outputVertices);
+
+/*
+  endpoints a & b,
+  control c
+ */
+    static void recursiveQuadraticBezierVertices(
+            float ax, float ay,
+            float bx, float by,
+            float cx, float cy,
+            float sqrInvScaleX, float sqrInvScaleY,
+            Vector<Vertex> &outputVertices);
+
+/*
+  endpoints p1, p2
+  control c1, c2
+ */
+    static void recursiveCubicBezierVertices(
+            float p1x, float p1y,
+            float c1x, float c1y,
+            float p2x, float p2y,
+            float c2x, float c2y,
+            float sqrInvScaleX, float sqrInvScaleY,
+            Vector<Vertex> &outputVertices);
+};
+
+}; // namespace uirenderer
+}; // namespace android
+
+#endif // ANDROID_HWUI_PATH_TESSELLATOR_H
diff --git a/libs/hwui/Program.h b/libs/hwui/Program.h
index 7e3aacf..b1df980 100644
--- a/libs/hwui/Program.h
+++ b/libs/hwui/Program.h
@@ -81,8 +81,6 @@
 
 #define PROGRAM_IS_SIMPLE_GRADIENT 41
 
-#define PROGRAM_IS_VERTEX_SHAPE_SHIFT 42
-
 ///////////////////////////////////////////////////////////////////////////////
 // Types
 ///////////////////////////////////////////////////////////////////////////////
@@ -129,8 +127,7 @@
     bool hasBitmap;
     bool isBitmapNpot;
 
-    bool isAA;
-    bool isVertexShape;
+    bool isAA; // drawing with a per-vertex alpha
 
     bool hasGradient;
     Gradient gradientType;
@@ -168,7 +165,6 @@
         hasTextureTransform = false;
 
         isAA = false;
-        isVertexShape = false;
 
         modulate = false;
 
@@ -263,7 +259,6 @@
         if (hasTextureTransform) key |= programid(0x1) << PROGRAM_HAS_TEXTURE_TRANSFORM_SHIFT;
         if (hasGammaCorrection) key |= programid(0x1) << PROGRAM_HAS_GAMMA_CORRECTION;
         if (isSimpleGradient) key |= programid(0x1) << PROGRAM_IS_SIMPLE_GRADIENT;
-        if (isVertexShape) key |= programid(0x1) << PROGRAM_IS_VERTEX_SHAPE_SHIFT;
         return key;
     }
 
diff --git a/libs/hwui/ProgramCache.cpp b/libs/hwui/ProgramCache.cpp
index f536ade..fb00335 100644
--- a/libs/hwui/ProgramCache.cpp
+++ b/libs/hwui/ProgramCache.cpp
@@ -40,9 +40,6 @@
         "attribute vec4 position;\n";
 const char* gVS_Header_Attributes_TexCoords =
         "attribute vec2 texCoords;\n";
-const char* gVS_Header_Attributes_AALineParameters =
-        "attribute float vtxWidth;\n"
-        "attribute float vtxLength;\n";
 const char* gVS_Header_Attributes_AAVertexShapeParameters =
         "attribute float vtxAlpha;\n";
 const char* gVS_Header_Uniforms_TextureTransform =
@@ -68,9 +65,6 @@
         "uniform mediump vec2 textureDimension;\n";
 const char* gVS_Header_Varyings_HasTexture =
         "varying vec2 outTexCoords;\n";
-const char* gVS_Header_Varyings_IsAALine =
-        "varying float widthProportion;\n"
-        "varying float lengthProportion;\n";
 const char* gVS_Header_Varyings_IsAAVertexShape =
         "varying float alpha;\n";
 const char* gVS_Header_Varyings_HasBitmap =
@@ -129,9 +123,6 @@
         "    gl_Position = projection * transform * position;\n";
 const char* gVS_Main_PointSize =
         "    gl_PointSize = pointSize;\n";
-const char* gVS_Main_AALine =
-        "    widthProportion = vtxWidth;\n"
-        "    lengthProportion = vtxLength;\n";
 const char* gVS_Main_AAVertexShape =
         "    alpha = vtxAlpha;\n";
 const char* gVS_Footer =
@@ -149,9 +140,6 @@
         "precision mediump float;\n\n";
 const char* gFS_Uniforms_Color =
         "uniform vec4 color;\n";
-const char* gFS_Uniforms_AALine =
-        "uniform float boundaryWidth;\n"
-        "uniform float boundaryLength;\n";
 const char* gFS_Header_Uniforms_PointHasBitmap =
         "uniform vec2 textureDimension;\n"
         "uniform float pointSize;\n";
@@ -259,9 +247,6 @@
         "    fragColor = color;\n";
 const char* gFS_Main_ModulateColor =
         "    fragColor *= color.a;\n";
-const char* gFS_Main_AccountForAALine =
-        "    fragColor *= (1.0 - smoothstep(boundaryWidth, 0.5, abs(0.5 - widthProportion)))\n"
-        "               * (1.0 - smoothstep(boundaryLength, 0.5, abs(0.5 - lengthProportion)));\n";
 const char* gFS_Main_AccountForAAVertexShape =
         "    fragColor *= alpha;\n";
 
@@ -472,11 +457,7 @@
         shader.append(gVS_Header_Attributes_TexCoords);
     }
     if (description.isAA) {
-        if (description.isVertexShape) {
-            shader.append(gVS_Header_Attributes_AAVertexShapeParameters);
-        } else {
-            shader.append(gVS_Header_Attributes_AALineParameters);
-        }
+        shader.append(gVS_Header_Attributes_AAVertexShapeParameters);
     }
     // Uniforms
     shader.append(gVS_Header_Uniforms);
@@ -497,11 +478,7 @@
         shader.append(gVS_Header_Varyings_HasTexture);
     }
     if (description.isAA) {
-        if (description.isVertexShape) {
-            shader.append(gVS_Header_Varyings_IsAAVertexShape);
-        } else {
-            shader.append(gVS_Header_Varyings_IsAALine);
-        }
+        shader.append(gVS_Header_Varyings_IsAAVertexShape);
     }
     if (description.hasGradient) {
         shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
@@ -520,11 +497,7 @@
             shader.append(gVS_Main_OutTexCoords);
         }
         if (description.isAA) {
-            if (description.isVertexShape) {
-                shader.append(gVS_Main_AAVertexShape);
-            } else {
-                shader.append(gVS_Main_AALine);
-            }
+            shader.append(gVS_Main_AAVertexShape);
         }
         if (description.hasBitmap) {
             shader.append(description.isPoint ?
@@ -574,11 +547,7 @@
         shader.append(gVS_Header_Varyings_HasTexture);
     }
     if (description.isAA) {
-        if (description.isVertexShape) {
-            shader.append(gVS_Header_Varyings_IsAAVertexShape);
-        } else {
-            shader.append(gVS_Header_Varyings_IsAALine);
-        }
+        shader.append(gVS_Header_Varyings_IsAAVertexShape);
     }
     if (description.hasGradient) {
         shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
@@ -603,9 +572,6 @@
     } else if (description.hasExternalTexture) {
         shader.append(gFS_Uniforms_ExternalTextureSampler);
     }
-    if (description.isAA && !description.isVertexShape) {
-        shader.append(gFS_Uniforms_AALine);
-    }
     if (description.hasGradient) {
         shader.append(gFS_Uniforms_GradientSampler[gradientIndex(description)]);
     }
@@ -618,8 +584,7 @@
 
     // Optimization for common cases
     if (!description.isAA && !blendFramebuffer &&
-            description.colorOp == ProgramDescription::kColorNone &&
-            !description.isPoint && !description.isVertexShape) {
+            description.colorOp == ProgramDescription::kColorNone && !description.isPoint) {
         bool fast = false;
 
         const bool noShader = !description.hasGradient && !description.hasBitmap;
@@ -754,11 +719,7 @@
         shader.append(gFS_Main_ApplyColorOp[description.colorOp]);
 
         if (description.isAA) {
-            if (description.isVertexShape) {
-                shader.append(gFS_Main_AccountForAAVertexShape);
-            } else {
-                shader.append(gFS_Main_AccountForAALine);
-            }
+            shader.append(gFS_Main_AccountForAAVertexShape);
         }
 
         // Output the fragment
diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h
index 1e8765b..0c75242 100644
--- a/libs/hwui/Properties.h
+++ b/libs/hwui/Properties.h
@@ -34,9 +34,9 @@
 // Textures used by layers must have dimensions multiples of this number
 #define LAYER_SIZE 64
 
-// Defines the size in bits of the stencil buffer
+// Defines the size in bits of the stencil buffer for the framebuffer
 // Note: Only 1 bit is required for clipping but more bits are required
-// to properly implement the winding fill rule when rasterizing paths
+// to properly implement overdraw debugging
 #define STENCIL_BUFFER_SIZE 8
 
 /**
@@ -85,6 +85,7 @@
 // These properties are defined in mega-bytes
 #define PROPERTY_TEXTURE_CACHE_SIZE "ro.hwui.texture_cache_size"
 #define PROPERTY_LAYER_CACHE_SIZE "ro.hwui.layer_cache_size"
+#define PROPERTY_RENDER_BUFFER_CACHE_SIZE "ro.hwui.r_buffer_cache_size"
 #define PROPERTY_GRADIENT_CACHE_SIZE "ro.hwui.gradient_cache_size"
 #define PROPERTY_PATH_CACHE_SIZE "ro.hwui.path_cache_size"
 #define PROPERTY_SHAPE_CACHE_SIZE "ro.hwui.shape_cache_size"
@@ -130,6 +131,7 @@
 
 #define DEFAULT_TEXTURE_CACHE_SIZE 24.0f
 #define DEFAULT_LAYER_CACHE_SIZE 16.0f
+#define DEFAULT_RENDER_BUFFER_CACHE_SIZE 2.0f
 #define DEFAULT_PATH_CACHE_SIZE 4.0f
 #define DEFAULT_SHAPE_CACHE_SIZE 1.0f
 #define DEFAULT_PATCH_CACHE_SIZE 512
diff --git a/libs/hwui/RenderBuffer.h b/libs/hwui/RenderBuffer.h
new file mode 100644
index 0000000..35a516a
--- /dev/null
+++ b/libs/hwui/RenderBuffer.h
@@ -0,0 +1,194 @@
+/*
+ * 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_RENDER_BUFFER_H
+#define ANDROID_HWUI_RENDER_BUFFER_H
+
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+namespace android {
+namespace uirenderer {
+
+/**
+ * Represents an OpenGL render buffer. Render buffers are attached
+ * to layers to perform stencil work.
+ */
+struct RenderBuffer {
+    /**
+     * Creates a new render buffer in the specified format and dimensions.
+     * The format must be one of the formats allowed by glRenderbufferStorage().
+     */
+    RenderBuffer(GLenum format, uint32_t width, uint32_t height):
+        mFormat(format), mWidth(width), mHeight(height), mAllocated(false) {
+
+        glGenRenderbuffers(1, &mName);
+    }
+
+    ~RenderBuffer() {
+        if (mName) {
+            glDeleteRenderbuffers(1, &mName);
+        }
+    }
+
+    /**
+     * Returns the GL name of this render buffer.
+     */
+    GLuint getName() const {
+        return mName;
+    }
+
+    /**
+     * Returns the format of this render buffer.
+     */
+    GLenum getFormat() const {
+        return mFormat;
+    }
+
+    /**
+     * Binds this render buffer to the current GL context.
+     */
+    void bind() const {
+        glBindRenderbuffer(GL_RENDERBUFFER, mName);
+    }
+
+    /**
+     * Indicates whether this render buffer has allocated its
+     * storage. See allocate() and resize().
+     */
+    bool isAllocated() const {
+        return mAllocated;
+    }
+
+    /**
+     * Allocates this render buffer's storage if needed.
+     * This method doesn't do anything if isAllocated() returns true.
+     */
+    void allocate() {
+        if (!mAllocated) {
+            glRenderbufferStorage(GL_RENDERBUFFER, mFormat, mWidth, mHeight);
+            mAllocated = true;
+        }
+    }
+
+    /**
+     * Resizes this render buffer. If the buffer was previously allocated,
+     * the storage is re-allocated wit the new specified dimensions. If the
+     * buffer wasn't previously allocated, the buffer remains unallocated.
+     */
+    void resize(uint32_t width, uint32_t height) {
+        if (isAllocated() && (width != mWidth || height != mHeight)) {
+            glRenderbufferStorage(GL_RENDERBUFFER, mFormat, width, height);
+        }
+
+        mWidth = width;
+        mHeight = height;
+    }
+
+    /**
+     * Returns the width of the render buffer in pixels.
+     */
+    uint32_t getWidth() const {
+        return mWidth;
+    }
+
+    /**
+     * Returns the height of the render buffer in pixels.
+     */
+    uint32_t getHeight() const {
+        return mHeight;
+    }
+
+    /**
+     * Returns the size of this render buffer in bytes.
+     */
+    uint32_t getSize() const {
+        // Round to the nearest byte
+        return (uint32_t) ((mWidth * mHeight * formatSize(mFormat)) / 8.0f + 0.5f);
+    }
+
+    /**
+     * Returns the number of bits per component in the specified format.
+     * The format must be one of the formats allowed by glRenderbufferStorage().
+     */
+    static uint32_t formatSize(GLenum format) {
+        switch (format) {
+            case GL_STENCIL_INDEX8:
+                return 8;
+            case GL_STENCIL_INDEX1_OES:
+                return 1;
+            case GL_STENCIL_INDEX4_OES:
+                return 4;
+            case GL_DEPTH_COMPONENT16:
+            case GL_RGBA4:
+            case GL_RGB565:
+            case GL_RGB5_A1:
+                return 16;
+        }
+        return 0;
+    }
+
+    /**
+     * Indicates whether the specified format represents a stencil buffer.
+     */
+    static bool isStencilBuffer(GLenum format) {
+        switch (format) {
+            case GL_STENCIL_INDEX8:
+            case GL_STENCIL_INDEX1_OES:
+            case GL_STENCIL_INDEX4_OES:
+                return true;
+        }
+        return false;
+    }
+
+    /**
+     * Returns the name of the specified render buffer format.
+     */
+    static const char* formatName(GLenum format) {
+        switch (format) {
+            case GL_STENCIL_INDEX8:
+                return "STENCIL_8";
+            case GL_STENCIL_INDEX1_OES:
+                return "STENCIL_1";
+            case GL_STENCIL_INDEX4_OES:
+                return "STENCIL_4";
+            case GL_DEPTH_COMPONENT16:
+                return "DEPTH_16";
+            case GL_RGBA4:
+                return "RGBA_4444";
+            case GL_RGB565:
+                return "RGB_565";
+            case GL_RGB5_A1:
+                return "RGBA_5551";
+        }
+        return "Unknown";
+    }
+
+private:
+    GLenum mFormat;
+
+    uint32_t mWidth;
+    uint32_t mHeight;
+
+    bool mAllocated;
+
+    GLuint mName;
+}; // struct RenderBuffer
+
+}; // namespace uirenderer
+}; // namespace android
+
+#endif // ANDROID_HWUI_RENDER_BUFFER_H
diff --git a/libs/hwui/RenderBufferCache.cpp b/libs/hwui/RenderBufferCache.cpp
new file mode 100644
index 0000000..830a13a
--- /dev/null
+++ b/libs/hwui/RenderBufferCache.cpp
@@ -0,0 +1,166 @@
+/*
+ * 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 "OpenGLRenderer"
+
+#include <utils/Log.h>
+
+#include "Debug.h"
+#include "Properties.h"
+#include "RenderBufferCache.h"
+
+namespace android {
+namespace uirenderer {
+
+///////////////////////////////////////////////////////////////////////////////
+// Defines
+///////////////////////////////////////////////////////////////////////////////
+
+// Debug
+#if DEBUG_RENDER_BUFFERS
+    #define RENDER_BUFFER_LOGD(...) ALOGD(__VA_ARGS__)
+#else
+    #define RENDER_BUFFER_LOGD(...)
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// Constructors/destructor
+///////////////////////////////////////////////////////////////////////////////
+
+RenderBufferCache::RenderBufferCache(): mSize(0), mMaxSize(MB(DEFAULT_RENDER_BUFFER_CACHE_SIZE)) {
+    char property[PROPERTY_VALUE_MAX];
+    if (property_get(PROPERTY_RENDER_BUFFER_CACHE_SIZE, property, NULL) > 0) {
+        INIT_LOGD("  Setting render buffer cache size to %sMB", property);
+        setMaxSize(MB(atof(property)));
+    } else {
+        INIT_LOGD("  Using default render buffer cache size of %.2fMB",
+                DEFAULT_RENDER_BUFFER_CACHE_SIZE);
+    }
+}
+
+RenderBufferCache::~RenderBufferCache() {
+    clear();
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// Size management
+///////////////////////////////////////////////////////////////////////////////
+
+uint32_t RenderBufferCache::getSize() {
+    return mSize;
+}
+
+uint32_t RenderBufferCache::getMaxSize() {
+    return mMaxSize;
+}
+
+void RenderBufferCache::setMaxSize(uint32_t maxSize) {
+    clear();
+    mMaxSize = maxSize;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// Caching
+///////////////////////////////////////////////////////////////////////////////
+
+int RenderBufferCache::RenderBufferEntry::compare(
+        const RenderBufferCache::RenderBufferEntry& lhs,
+        const RenderBufferCache::RenderBufferEntry& rhs) {
+    int deltaInt = int(lhs.mWidth) - int(rhs.mWidth);
+    if (deltaInt != 0) return deltaInt;
+
+    deltaInt = int(lhs.mHeight) - int(rhs.mHeight);
+    if (deltaInt != 0) return deltaInt;
+
+    return int(lhs.mFormat) - int(rhs.mFormat);
+}
+
+void RenderBufferCache::deleteBuffer(RenderBuffer* buffer) {
+    if (buffer) {
+        RENDER_BUFFER_LOGD("Deleted %s render buffer (%dx%d)",
+                RenderBuffer::formatName(buffer->getFormat()),
+                buffer->getWidth(), buffer->getHeight());
+
+        mSize -= buffer->getSize();
+        delete buffer;
+    }
+}
+
+void RenderBufferCache::clear() {
+    size_t count = mCache.size();
+    for (size_t i = 0; i < count; i++) {
+        deleteBuffer(mCache.itemAt(i).mBuffer);
+    }
+    mCache.clear();
+}
+
+RenderBuffer* RenderBufferCache::get(GLenum format, const uint32_t width, const uint32_t height) {
+    RenderBuffer* buffer = NULL;
+
+    RenderBufferEntry entry(format, width, height);
+    ssize_t index = mCache.indexOf(entry);
+
+    if (index >= 0) {
+        entry = mCache.itemAt(index);
+        mCache.removeAt(index);
+
+        buffer = entry.mBuffer;
+        mSize -= buffer->getSize();
+
+        RENDER_BUFFER_LOGD("Found %s render buffer (%dx%d)",
+                RenderBuffer::formatName(format), width, height);
+    } else {
+        buffer = new RenderBuffer(format, width, height);
+
+        RENDER_BUFFER_LOGD("Created new %s render buffer (%dx%d)",
+                RenderBuffer::formatName(format), width, height);
+    }
+
+    buffer->bind();
+    buffer->allocate();
+
+    return buffer;
+}
+
+bool RenderBufferCache::put(RenderBuffer* buffer) {
+    if (!buffer) return false;
+
+    const uint32_t size = buffer->getSize();
+    if (size < mMaxSize) {
+        while (mSize + size > mMaxSize) {
+            size_t position = 0;
+
+            RenderBuffer* victim = mCache.itemAt(position).mBuffer;
+            deleteBuffer(victim);
+            mCache.removeAt(position);
+        }
+
+        RenderBufferEntry entry(buffer);
+
+        mCache.add(entry);
+        mSize += size;
+
+        RENDER_BUFFER_LOGD("Added %s render buffer (%dx%d)",
+                RenderBuffer::formatName(buffer->getFormat()),
+                buffer->getWidth(), buffer->getHeight());
+
+        return true;
+    }
+    return false;
+}
+
+}; // namespace uirenderer
+}; // namespace android
diff --git a/libs/hwui/RenderBufferCache.h b/libs/hwui/RenderBufferCache.h
new file mode 100644
index 0000000..af8060f
--- /dev/null
+++ b/libs/hwui/RenderBufferCache.h
@@ -0,0 +1,130 @@
+/*
+ * 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_RENDER_BUFFER_CACHE_H
+#define ANDROID_HWUI_RENDER_BUFFER_CACHE_H
+
+#include <GLES2/gl2.h>
+
+#include "RenderBuffer.h"
+#include "utils/SortedList.h"
+
+namespace android {
+namespace uirenderer {
+
+class RenderBufferCache {
+public:
+    RenderBufferCache();
+    ~RenderBufferCache();
+
+    /**
+     * Returns a buffer with the exact specified dimensions. If no suitable
+     * buffer can be found, a new one is created and returned. If creating a
+     * new buffer fails, NULL is returned.
+     *
+     * When a buffer is obtained from the cache, it is removed and the total
+     * size of the cache goes down.
+     *
+     * The returned buffer is always allocated and bound
+     * (see RenderBuffer::isAllocated()).
+     *
+     * @param format The desired render buffer format
+     * @param width The desired width of the buffer
+     * @param height The desired height of the buffer
+     */
+    RenderBuffer* get(GLenum format, const uint32_t width, const uint32_t height);
+
+    /**
+     * Adds the buffer to the cache. The buffer will not be added if there is
+     * not enough space available. Adding a buffer can cause other buffer to
+     * be removed from the cache.
+     *
+     * @param buffer The render buffer to add to the cache
+     *
+     * @return True if the buffer was added, false otherwise.
+     */
+    bool put(RenderBuffer* buffer);
+    /**
+     * Clears the cache. This causes all layers to be deleted.
+     */
+    void clear();
+
+    /**
+     * Sets the maximum size of the cache in bytes.
+     */
+    void setMaxSize(uint32_t maxSize);
+    /**
+     * Returns the maximum size of the cache in bytes.
+     */
+    uint32_t getMaxSize();
+    /**
+     * Returns the current size of the cache in bytes.
+     */
+    uint32_t getSize();
+
+private:
+    struct RenderBufferEntry {
+        RenderBufferEntry():
+            mBuffer(NULL), mWidth(0), mHeight(0) {
+        }
+
+        RenderBufferEntry(GLenum format, const uint32_t width, const uint32_t height):
+            mBuffer(NULL), mFormat(format), mWidth(width), mHeight(height) {
+        }
+
+        RenderBufferEntry(RenderBuffer* buffer):
+            mBuffer(buffer), mFormat(buffer->getFormat()),
+            mWidth(buffer->getWidth()), mHeight(buffer->getHeight()) {
+        }
+
+        static int compare(const RenderBufferEntry& lhs, const RenderBufferEntry& rhs);
+
+        bool operator==(const RenderBufferEntry& other) const {
+            return compare(*this, other) == 0;
+        }
+
+        bool operator!=(const RenderBufferEntry& other) const {
+            return compare(*this, other) != 0;
+        }
+
+        friend inline int strictly_order_type(const RenderBufferEntry& lhs,
+                const RenderBufferEntry& rhs) {
+            return RenderBufferEntry::compare(lhs, rhs) < 0;
+        }
+
+        friend inline int compare_type(const RenderBufferEntry& lhs,
+                const RenderBufferEntry& rhs) {
+            return RenderBufferEntry::compare(lhs, rhs);
+        }
+
+        RenderBuffer* mBuffer;
+        GLenum mFormat;
+        uint32_t mWidth;
+        uint32_t mHeight;
+    }; // struct RenderBufferEntry
+
+    void deleteBuffer(RenderBuffer* buffer);
+
+    SortedList<RenderBufferEntry> mCache;
+
+    uint32_t mSize;
+    uint32_t mMaxSize;
+}; // class RenderBufferCache
+
+}; // namespace uirenderer
+}; // namespace android
+
+#endif // ANDROID_HWUI_RENDER_BUFFER_CACHE_H
diff --git a/libs/hwui/Snapshot.cpp b/libs/hwui/Snapshot.cpp
index 22c7dde..19a5db7 100644
--- a/libs/hwui/Snapshot.cpp
+++ b/libs/hwui/Snapshot.cpp
@@ -183,7 +183,11 @@
 }
 
 void Snapshot::resetClip(float left, float top, float right, float bottom) {
+    // TODO: This is incorrect, when we start rendering into a new layer,
+    // we may have to modify the previous snapshot's clip rect and clip
+    // region if the previous restore() call did not restore the clip
     clipRect = &mClipRectRoot;
+    clipRegion = &mClipRegionRoot;
     setClip(left, top, right, bottom);
 }
 
diff --git a/libs/hwui/Stencil.cpp b/libs/hwui/Stencil.cpp
index 4fcd51d..ba2e6f2 100644
--- a/libs/hwui/Stencil.cpp
+++ b/libs/hwui/Stencil.cpp
@@ -14,14 +14,23 @@
  * limitations under the License.
  */
 
-#include <GLES2/gl2.h>
-
+#include "Extensions.h"
 #include "Properties.h"
 #include "Stencil.h"
 
+#include <GLES2/gl2ext.h>
+
 namespace android {
 namespace uirenderer {
 
+#if DEBUG_STENCIL
+#define STENCIL_WRITE_VALUE 0xff
+#define STENCIL_MASK_VALUE 0xff
+#else
+#define STENCIL_WRITE_VALUE 0x1
+#define STENCIL_MASK_VALUE 0x1
+#endif
+
 Stencil::Stencil(): mState(kDisabled) {
 }
 
@@ -29,6 +38,18 @@
     return STENCIL_BUFFER_SIZE;
 }
 
+GLenum Stencil::getSmallestStencilFormat() {
+#if !DEBUG_STENCIL
+    const Extensions& extensions = Extensions::getInstance();
+    if (extensions.has1BitStencil()) {
+        return GL_STENCIL_INDEX1_OES;
+    } else if (extensions.has4BitStencil()) {
+        return GL_STENCIL_INDEX4_OES;
+    }
+#endif
+    return GL_STENCIL_INDEX8;
+}
+
 void Stencil::clear() {
     glClearStencil(0);
     glClear(GL_STENCIL_BUFFER_BIT);
@@ -37,7 +58,7 @@
 void Stencil::enableTest() {
     if (mState != kTest) {
         enable();
-        glStencilFunc(GL_EQUAL, 0xff, 0xff);
+        glStencilFunc(GL_EQUAL, STENCIL_WRITE_VALUE, STENCIL_MASK_VALUE);
         // We only want to test, let's keep everything
         glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
         glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
@@ -48,7 +69,7 @@
 void Stencil::enableWrite() {
     if (mState != kWrite) {
         enable();
-        glStencilFunc(GL_ALWAYS, 0xff, 0xff);
+        glStencilFunc(GL_ALWAYS, STENCIL_WRITE_VALUE, STENCIL_MASK_VALUE);
         // The test always passes so the first two values are meaningless
         glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
         glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
diff --git a/libs/hwui/Stencil.h b/libs/hwui/Stencil.h
index 2f8a66a..047f7ee 100644
--- a/libs/hwui/Stencil.h
+++ b/libs/hwui/Stencil.h
@@ -21,6 +21,8 @@
     #define LOG_TAG "OpenGLRenderer"
 #endif
 
+#include <GLES2/gl2.h>
+
 #include <cutils/compiler.h>
 
 namespace android {
@@ -41,6 +43,11 @@
     ANDROID_API static uint32_t getStencilSize();
 
     /**
+     * Returns the smallest stencil format accepted by render buffers.
+     */
+    static GLenum getSmallestStencilFormat();
+
+    /**
      * Clears the stencil buffer.
      */
     void clear();
diff --git a/libs/hwui/TextDropShadowCache.cpp b/libs/hwui/TextDropShadowCache.cpp
index 9c7a5ab..db7bd48 100644
--- a/libs/hwui/TextDropShadowCache.cpp
+++ b/libs/hwui/TextDropShadowCache.cpp
@@ -222,7 +222,7 @@
         }
 
         // Cleanup shadow
-        delete[] shadow.image;
+        delete shadow.image;
     }
 
     return texture;
diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp
index abf2d98..5cff5a5 100644
--- a/libs/hwui/TextureCache.cpp
+++ b/libs/hwui/TextureCache.cpp
@@ -219,7 +219,7 @@
 
     // We could also enable mipmapping if both bitmap dimensions are powers
     // of 2 but we'd have to deal with size changes. Let's keep this simple
-    const bool canMipMap = Caches::getInstance().extensions.hasNPot();
+    const bool canMipMap = Extensions::getInstance().hasNPot();
 
     // If the texture had mipmap enabled but not anymore,
     // force a glTexImage2D to discard the mipmap levels
diff --git a/libs/hwui/Vertex.h b/libs/hwui/Vertex.h
index 38455dc..c120428 100644
--- a/libs/hwui/Vertex.h
+++ b/libs/hwui/Vertex.h
@@ -68,25 +68,6 @@
     }
 }; // struct AlphaVertex
 
-/**
- * Simple structure to describe a vertex with a position and an alpha value.
- */
-struct AAVertex : Vertex {
-    float width;
-    float length;
-
-    static inline void set(AAVertex* vertex, float x, float y, float width, float length) {
-        Vertex::set(vertex, x, y);
-        vertex[0].width = width;
-        vertex[0].length = length;
-    }
-
-    static inline void setColor(AAVertex* vertex, float width, float length) {
-        vertex[0].width = width;
-        vertex[0].length = length;
-    }
-}; // struct AlphaVertex
-
 }; // namespace uirenderer
 }; // namespace android
 
diff --git a/libs/hwui/font/Font.cpp b/libs/hwui/font/Font.cpp
index 34afe97..8c5a8ff 100644
--- a/libs/hwui/font/Font.cpp
+++ b/libs/hwui/font/Font.cpp
@@ -50,6 +50,7 @@
     mScaleX = paint->getTextScaleX();
     mStyle = paint->getStyle();
     mStrokeWidth = paint->getStrokeWidth();
+    mAntiAliasing = paint->isAntiAlias();
 }
 
 Font::~Font() {
@@ -68,6 +69,7 @@
     hash = JenkinsHashMix(hash, android::hash_type(mScaleX));
     hash = JenkinsHashMix(hash, android::hash_type(mStyle));
     hash = JenkinsHashMix(hash, android::hash_type(mStrokeWidth));
+    hash = JenkinsHashMix(hash, int(mAntiAliasing));
     return JenkinsHashWhiten(hash);
 }
 
@@ -94,6 +96,9 @@
     if (lhs.mStrokeWidth < rhs.mStrokeWidth) return -1;
     if (lhs.mStrokeWidth > rhs.mStrokeWidth) return +1;
 
+    deltaInt = int(lhs.mAntiAliasing) - int(rhs.mAntiAliasing);
+    if (deltaInt != 0) return deltaInt;
+
     return 0;
 }
 
@@ -183,7 +188,10 @@
     vOffset += glyph->mBitmapTop + height;
 
     SkPoint destination[4];
-    measure.getPosTan(x + hOffset + glyph->mBitmapLeft + halfWidth, position, tangent);
+    bool ok = measure.getPosTan(x + hOffset + glyph->mBitmapLeft + halfWidth, position, tangent);
+    if (!ok) {
+        ALOGW("The path for drawTextOnPath is empty or null");
+    }
 
     // Move along the tangent and offset by the normal
     destination[0].set(-tangent->fX * halfWidth - tangent->fY * vOffset,
@@ -384,7 +392,9 @@
     uint32_t startY = 0;
 
     // Get the bitmap for the glyph
-    paint->findImage(skiaGlyph, NULL);
+    if (!skiaGlyph.fImage) {
+        paint->findImage(skiaGlyph, NULL);
+    }
     mState->cacheBitmap(skiaGlyph, glyph, &startX, &startY, precaching);
 
     if (!glyph->mIsValid) {
diff --git a/libs/hwui/font/Font.h b/libs/hwui/font/Font.h
index 6ddf162..7a64a67 100644
--- a/libs/hwui/font/Font.h
+++ b/libs/hwui/font/Font.h
@@ -68,6 +68,7 @@
         float mScaleX;
         uint8_t mStyle;
         float mStrokeWidth;
+        bool mAntiAliasing;
     };
 
     ~Font();
diff --git a/libs/hwui/utils/Timing.h b/libs/hwui/utils/Timing.h
new file mode 100644
index 0000000..eced987
--- /dev/null
+++ b/libs/hwui/utils/Timing.h
@@ -0,0 +1,42 @@
+/*
+ * 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_TIMING_H
+#define ANDROID_HWUI_TIMING_H
+
+#include <sys/time.h>
+
+#define TIME_METHOD() MethodTimer __method_timer(__func__)
+class MethodTimer {
+public:
+    MethodTimer(const char* name)
+            : mMethodName(name) {
+        gettimeofday(&mStart, NULL);
+    }
+
+    ~MethodTimer() {
+        struct timeval stop;
+        gettimeofday(&stop, NULL);
+        long long elapsed = (stop.tv_sec * 1000000) - (mStart.tv_sec * 1000000)
+                + (stop.tv_usec - mStart.tv_usec);
+        ALOGD("%s took %.2fms", mMethodName, elapsed / 1000.0);
+    }
+private:
+    const char* mMethodName;
+    struct timeval mStart;
+};
+
+#endif
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 035b282..2e4fa4b 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -1526,6 +1526,16 @@
 
     /**
      * @hide
+     * Checks whether any music or media is actively playing on a remote device (e.g. wireless
+     *   display). Note that BT audio sinks are not considered remote devices.
+     * @return true if {@link AudioManager#STREAM_MUSIC} is active on a remote device
+     */
+    public boolean isMusicActiveRemotely() {
+        return AudioSystem.isStreamActiveRemotely(STREAM_MUSIC, 0);
+    }
+
+    /**
+     * @hide
      * Checks whether speech recognition is active
      * @return true if a recording with source {@link MediaRecorder.AudioSource#VOICE_RECOGNITION}
      *    is underway.
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index dde2979..4a33743 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -111,6 +111,14 @@
     public static native boolean isStreamActive(int stream, int inPastMs);
 
     /*
+     * Checks whether the specified stream type is active on a remotely connected device. The notion
+     * of what constitutes a remote device is enforced by the audio policy manager of the platform.
+     *
+     * return true if any track playing on this stream is active on a remote device.
+     */
+    public static native boolean isStreamActiveRemotely(int stream, int inPastMs);
+
+    /*
      * Checks whether the specified audio source is active.
      *
      * return true if any recorder using this source is currently recording
diff --git a/media/jni/android_media_MediaScanner.cpp b/media/jni/android_media_MediaScanner.cpp
index f930a03..5d27966 100644
--- a/media/jni/android_media_MediaScanner.cpp
+++ b/media/jni/android_media_MediaScanner.cpp
@@ -19,7 +19,6 @@
 #define LOG_TAG "MediaScannerJNI"
 #include <utils/Log.h>
 #include <utils/threads.h>
-#include <utils/Unicode.h>
 #include <media/mediascanner.h>
 #include <media/stagefright/StagefrightMediaScanner.h>
 
@@ -57,6 +56,53 @@
     return OK;
 }
 
+// stolen from dalvik/vm/checkJni.cpp
+static bool isValidUtf8(const char* bytes) {
+    while (*bytes != '\0') {
+        unsigned char utf8 = *(bytes++);
+        // Switch on the high four bits.
+        switch (utf8 >> 4) {
+        case 0x00:
+        case 0x01:
+        case 0x02:
+        case 0x03:
+        case 0x04:
+        case 0x05:
+        case 0x06:
+        case 0x07:
+            // Bit pattern 0xxx. No need for any extra bytes.
+            break;
+        case 0x08:
+        case 0x09:
+        case 0x0a:
+        case 0x0b:
+        case 0x0f:
+            /*
+             * Bit pattern 10xx or 1111, which are illegal start bytes.
+             * Note: 1111 is valid for normal UTF-8, but not the
+             * modified UTF-8 used here.
+             */
+            return false;
+        case 0x0e:
+            // Bit pattern 1110, so there are two additional bytes.
+            utf8 = *(bytes++);
+            if ((utf8 & 0xc0) != 0x80) {
+                return false;
+            }
+            // Fall through to take care of the final byte.
+        case 0x0c:
+        case 0x0d:
+            // Bit pattern 110x, so there is one additional byte.
+            utf8 = *(bytes++);
+            if ((utf8 & 0xc0) != 0x80) {
+                return false;
+            }
+            break;
+        }
+    }
+    return true;
+}
+
 class MyMediaScannerClient : public MediaScannerClient
 {
 public:
@@ -124,11 +170,8 @@
             mEnv->ExceptionClear();
             return NO_MEMORY;
         }
-
-        // Check if the value is valid UTF-8 string and replace
-        // any un-printable characters with '?' when it's not.
         char *cleaned = NULL;
-        if (utf8_length(value) == -1) {
+        if (!isValidUtf8(value)) {
             cleaned = strdup(value);
             char *chp = cleaned;
             char ch;
diff --git a/nfc-extras/java/com/android/nfc_extras/EeAlreadyOpenException.java b/nfc-extras/java/com/android/nfc_extras/EeAlreadyOpenException.java
new file mode 100644
index 0000000..9fde0a3
--- /dev/null
+++ b/nfc-extras/java/com/android/nfc_extras/EeAlreadyOpenException.java
@@ -0,0 +1,27 @@
+/*
+ * 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.nfc_extras;
+
+public class EeAlreadyOpenException extends EeIOException {
+    public EeAlreadyOpenException() {
+        super();
+    }
+
+    public EeAlreadyOpenException(String message) {
+        super(message);
+    }
+}
diff --git a/nfc-extras/java/com/android/nfc_extras/EeExternalFieldException.java b/nfc-extras/java/com/android/nfc_extras/EeExternalFieldException.java
new file mode 100644
index 0000000..4326fab
--- /dev/null
+++ b/nfc-extras/java/com/android/nfc_extras/EeExternalFieldException.java
@@ -0,0 +1,27 @@
+/*
+ * 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.nfc_extras;
+
+public class EeExternalFieldException extends EeIOException {
+    public EeExternalFieldException() {
+        super();
+    }
+
+    public EeExternalFieldException(String message) {
+        super(message);
+    }
+}
diff --git a/nfc-extras/java/com/android/nfc_extras/EeIOException.java b/nfc-extras/java/com/android/nfc_extras/EeIOException.java
new file mode 100644
index 0000000..66a3b25
--- /dev/null
+++ b/nfc-extras/java/com/android/nfc_extras/EeIOException.java
@@ -0,0 +1,29 @@
+/*
+ * 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.nfc_extras;
+
+import java.io.IOException;
+
+public class EeIOException extends IOException {
+    public EeIOException() {
+        super();
+    }
+
+    public EeIOException(String message) {
+        super(message);
+    }
+}
diff --git a/nfc-extras/java/com/android/nfc_extras/EeInitializationException.java b/nfc-extras/java/com/android/nfc_extras/EeInitializationException.java
new file mode 100644
index 0000000..00e5264
--- /dev/null
+++ b/nfc-extras/java/com/android/nfc_extras/EeInitializationException.java
@@ -0,0 +1,27 @@
+/*
+ * 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.nfc_extras;
+
+public class EeInitializationException extends EeIOException {
+    public EeInitializationException() {
+        super();
+    }
+
+    public EeInitializationException(String message) {
+        super(message);
+    }
+}
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs b/nfc-extras/java/com/android/nfc_extras/EeListenModeException.java
similarity index 60%
copy from tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs
copy to nfc-extras/java/com/android/nfc_extras/EeListenModeException.java
index 1a19ffc..07f1980 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs
+++ b/nfc-extras/java/com/android/nfc_extras/EeListenModeException.java
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * 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
+ *     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,
@@ -14,10 +14,14 @@
  * limitations under the License.
  */
 
-#pragma version(1)
-#pragma rs java_package_name(com.android.rs.image)
+package com.android.nfc_extras;
 
-void sendMsg() {
-    rsSendToClientBlocking(0);
+public class EeListenModeException extends EeIOException {
+    public EeListenModeException() {
+        super();
+    }
+
+    public EeListenModeException(String message) {
+        super(message);
+    }
 }
-
diff --git a/nfc-extras/java/com/android/nfc_extras/EeNfcDisabledException.java b/nfc-extras/java/com/android/nfc_extras/EeNfcDisabledException.java
new file mode 100644
index 0000000..091db28
--- /dev/null
+++ b/nfc-extras/java/com/android/nfc_extras/EeNfcDisabledException.java
@@ -0,0 +1,27 @@
+/*
+ * 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.nfc_extras;
+
+public class EeNfcDisabledException extends EeIOException {
+    public EeNfcDisabledException() {
+        super();
+    }
+
+    public EeNfcDisabledException(String message) {
+        super(message);
+    }
+}
diff --git a/nfc-extras/java/com/android/nfc_extras/NfcExecutionEnvironment.java b/nfc-extras/java/com/android/nfc_extras/NfcExecutionEnvironment.java
index f47327a..fd7cb33 100644
--- a/nfc-extras/java/com/android/nfc_extras/NfcExecutionEnvironment.java
+++ b/nfc-extras/java/com/android/nfc_extras/NfcExecutionEnvironment.java
@@ -28,6 +28,15 @@
     private final NfcAdapterExtras mExtras;
     private final Binder mToken;
 
+    // Exception types that can be thrown by NfcService
+    // 1:1 mapped to EE_ERROR_ types in NfcService
+    private static final int EE_ERROR_IO = -1;
+    private static final int EE_ERROR_ALREADY_OPEN = -2;
+    private static final int EE_ERROR_INIT = -3;
+    private static final int EE_ERROR_LISTEN_MODE = -4;
+    private static final int EE_ERROR_EXT_FIELD = -5;
+    private static final int EE_ERROR_NFC_DISABLED = -6;
+
     /**
      * Broadcast Action: An ISO-DEP AID was selected.
      *
@@ -118,24 +127,49 @@
     /**
      * Open the NFC Execution Environment on its contact interface.
      *
-     * <p>Only one process may open the secure element at a time. If it is
-     * already open, an {@link IOException} is thrown.
+     * <p>Opening a channel to the the secure element may fail
+     * for a number of reasons:
+     * <ul>
+     * <li>NFC must be enabled for the connection to the SE to be opened.
+     * If it is disabled at the time of this call, an {@link EeNfcDisabledException}
+     * is thrown.
      *
+     * <li>Only one process may open the secure element at a time. Additionally,
+     * this method is not reentrant. If the secure element is already opened,
+     * either by this process or by a different process, an {@link EeAlreadyOpenException}
+     * is thrown.
+     *
+     * <li>If the connection to the secure element could not be initialized,
+     * an {@link EeInitializationException} is thrown.
+     *
+     * <li>If the secure element or the NFC controller is activated in listen
+     * mode - that is, it is talking over the contactless interface - an
+     * {@link EeListenModeException} is thrown.
+     *
+     * <li>If the NFC controller is in a field powered by a remote device,
+     * such as a payment terminal, an {@link EeExternalFieldException} is
+     * thrown.
+     * </ul>
      * <p>All other NFC functionality is disabled while the NFC-EE is open
      * on its contact interface, so make sure to call {@link #close} once complete.
      *
      * <p class="note">
      * Requires the {@link android.Manifest.permission#WRITE_SECURE_SETTINGS} permission.
      *
-     * @throws IOException if the NFC-EE is already open, or some other error occurs
+     * @throws EeAlreadyOpenException if the NFC-EE is already open
+     * @throws EeNfcDisabledException if NFC is disabled
+     * @throws EeInitializationException if the Secure Element could not be initialized
+     * @throws EeListenModeException if the NFCC or Secure Element is activated in listen mode
+     * @throws EeExternalFieldException if the NFCC is in the presence of a remote-powered field
+     * @throws EeIoException if an unknown error occurs
      */
-    public void open() throws IOException {
+    public void open() throws EeIOException {
         try {
             Bundle b = mExtras.getService().open(mExtras.mPackageName, mToken);
             throwBundle(b);
         } catch (RemoteException e) {
             mExtras.attemptDeadServiceRecovery(e);
-            throw new IOException("NFC Service was dead, try again");
+            throw new EeIOException("NFC Service was dead, try again");
         }
     }
 
@@ -176,9 +210,20 @@
         return b.getByteArray("out");
     }
 
-    private static void throwBundle(Bundle b) throws IOException {
-        if (b.getInt("e") == -1) {
-            throw new IOException(b.getString("m"));
+    private static void throwBundle(Bundle b) throws EeIOException {
+        switch (b.getInt("e")) {
+            case EE_ERROR_NFC_DISABLED:
+                throw new EeNfcDisabledException(b.getString("m"));
+            case EE_ERROR_IO:
+                throw new EeIOException(b.getString("m"));
+            case EE_ERROR_INIT:
+                throw new EeInitializationException(b.getString("m"));
+            case EE_ERROR_EXT_FIELD:
+                throw new EeExternalFieldException(b.getString("m"));
+            case EE_ERROR_LISTEN_MODE:
+                throw new EeListenModeException(b.getString("m"));
+            case EE_ERROR_ALREADY_OPEN:
+                throw new EeAlreadyOpenException(b.getString("m"));
         }
     }
 }
diff --git a/packages/FusedLocation/Android.mk b/packages/FusedLocation/Android.mk
index a81b9f1..318782f 100644
--- a/packages/FusedLocation/Android.mk
+++ b/packages/FusedLocation/Android.mk
@@ -23,6 +23,5 @@
 
 LOCAL_PACKAGE_NAME := FusedLocation
 LOCAL_CERTIFICATE := platform
-LOCAL_SDK_VERSION := current
 
 include $(BUILD_PACKAGE)
diff --git a/packages/FusedLocation/AndroidManifest.xml b/packages/FusedLocation/AndroidManifest.xml
index 779428e..6a4d4bf 100644
--- a/packages/FusedLocation/AndroidManifest.xml
+++ b/packages/FusedLocation/AndroidManifest.xml
@@ -18,14 +18,17 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.location.fused"
-        coreApp="true">
+        coreApp="true"
+        android:sharedUserId="android.uid.system">
 
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
+    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
 
     <application
-            android:label="@string/app_label">
+            android:label="@string/app_label"
+            android:process="system">
 
         <uses-library android:name="com.android.location.provider" />
 
@@ -39,6 +42,7 @@
                <action android:name="com.android.location.service.FusedLocationProvider" />
            </intent-filter>
            <meta-data android:name="serviceVersion" android:value="0" />
+           <meta-data android:name="serviceIsMultiuser" android:value="true" />
         </service>
     </application>
 </manifest>
diff --git a/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java b/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java
index 7918882..56feb47 100644
--- a/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java
+++ b/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java
@@ -24,13 +24,17 @@
 import com.android.location.provider.ProviderPropertiesUnbundled;
 import com.android.location.provider.ProviderRequestUnbundled;
 
+import android.content.BroadcastReceiver;
 import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
 import android.location.Criteria;
 import android.location.LocationProvider;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
+import android.os.UserHandle;
 import android.os.WorkSource;
 
 public class FusedLocationProvider extends LocationProviderBase implements FusionEngine.Callback {
@@ -60,6 +64,19 @@
         super(TAG, PROPERTIES);
         mContext = context;
         mEngine = new FusionEngine(context, Looper.myLooper());
+
+        // listen for user change
+        IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(Intent.ACTION_USER_SWITCHED);
+        mContext.registerReceiverAsUser(new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                String action = intent.getAction();
+                if (Intent.ACTION_USER_SWITCHED.equals(action)) {
+                    mEngine.switchUser();
+                }
+            }
+        }, UserHandle.ALL, intentFilter, null, mHandler);
     }
 
     /**
diff --git a/packages/FusedLocation/src/com/android/location/fused/FusionEngine.java b/packages/FusedLocation/src/com/android/location/fused/FusionEngine.java
index f909158..4ba6c34 100644
--- a/packages/FusedLocation/src/com/android/location/fused/FusionEngine.java
+++ b/packages/FusedLocation/src/com/android/location/fused/FusionEngine.java
@@ -300,4 +300,12 @@
         s.append("    ").append(mStats.get(NETWORK)).append('\n');
         pw.append(s);
     }
+
+    /** Called on mLooper thread */
+    public void switchUser() {
+        // reset state to prevent location data leakage
+        mFusedLocation = null;
+        mGpsLocation = null;
+        mNetworkLocation = null;
+    }
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_english_uk.kcm b/packages/InputDevices/res/raw/keyboard_layout_english_uk.kcm
new file mode 100644
index 0000000..6d9c2e5
--- /dev/null
+++ b/packages/InputDevices/res/raw/keyboard_layout_english_uk.kcm
@@ -0,0 +1,331 @@
+# 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.
+
+#
+# English (UK) keyboard layout.
+#
+
+type OVERLAY
+
+map key 43 POUND
+
+### ROW 1
+
+key GRAVE {
+    label:                              '`'
+    base:                               '`'
+    shift:                              '\u00AC'
+    ralt:                               '\u00A6'
+}
+
+key 1 {
+    label:                              '1'
+    base:                               '1'
+    shift:                              '!'
+}
+
+key 2 {
+    label:                              '2'
+    base:                               '2'
+    shift:                              '"'
+}
+
+key 3 {
+    label:                              '3'
+    base:                               '3'
+    shift:                              '\u00A3'
+}
+
+key 4 {
+    label:                              '4'
+    base:                               '4'
+    shift:                              '$'
+    ralt:                               '\u20AC'
+}
+
+key 5 {
+    label:                              '5'
+    base:                               '5'
+    shift:                              '%'
+}
+
+key 6 {
+    label:                              '6'
+    base:                               '6'
+    shift:                              '^'
+}
+
+key 7 {
+    label:                              '7'
+    base:                               '7'
+    shift:                              '&'
+}
+
+key 8 {
+    label:                              '8'
+    base:                               '8'
+    shift:                              '*'
+}
+
+key 9 {
+    label:                              '9'
+    base:                               '9'
+    shift:                              '('
+}
+
+key 0 {
+    label:                              '0'
+    base:                               '0'
+    shift:                              ')'
+}
+
+key MINUS {
+    label:                              '-'
+    base:                               '-'
+    shift:                              '_'
+}
+
+key EQUALS {
+    label:                              '='
+    base:                               '='
+    shift:                              '+'
+}
+
+### ROW 2
+
+key Q {
+    label:                              'Q'
+    base:                               'q'
+    shift, capslock:                    'Q'
+}
+
+key W {
+    label:                              'W'
+    base:                               'w'
+    shift, capslock:                    'W'
+}
+
+key E {
+    label:                              'E'
+    base:                               'e'
+    shift, capslock:                    'E'
+    ralt:                               '\u00e9'
+    shift+ralt:                         '\u00c9'
+}
+
+key R {
+    label:                              'R'
+    base:                               'r'
+    shift, capslock:                    'R'
+}
+
+key T {
+    label:                              'T'
+    base:                               't'
+    shift, capslock:                    'T'
+}
+
+key Y {
+    label:                              'Y'
+    base:                               'y'
+    shift, capslock:                    'Y'
+}
+
+key U {
+    label:                              'U'
+    base:                               'u'
+    shift, capslock:                    'U'
+    ralt:                               '\u00fa'
+    shift+ralt:                         '\u00da'
+}
+
+key I {
+    label:                              'I'
+    base:                               'i'
+    shift, capslock:                    'I'
+    ralt:                               '\u00ed'
+    shift+ralt:                         '\u00cd'
+}
+
+key O {
+    label:                              'O'
+    base:                               'o'
+    shift, capslock:                    'O'
+    ralt:                               '\u00f3'
+    shift+ralt:                         '\u00d3'
+}
+
+key P {
+    label:                              'P'
+    base:                               'p'
+    shift, capslock:                    'P'
+}
+
+key LEFT_BRACKET {
+    label:                              '['
+    base:                               '['
+    shift:                              '{'
+}
+
+key RIGHT_BRACKET {
+    label:                              ']'
+    base:                               ']'
+    shift:                              '}'
+}
+
+### ROW 3
+
+key A {
+    label:                              'A'
+    base:                               'a'
+    shift, capslock:                    'A'
+    ralt:                               '\u00e1'
+    shift+ralt:                         '\u00c1'
+}
+
+key S {
+    label:                              'S'
+    base:                               's'
+    shift, capslock:                    'S'
+}
+
+key D {
+    label:                              'D'
+    base:                               'd'
+    shift, capslock:                    'D'
+}
+
+key F {
+    label:                              'F'
+    base:                               'f'
+    shift, capslock:                    'F'
+}
+
+key G {
+    label:                              'G'
+    base:                               'g'
+    shift, capslock:                    'G'
+}
+
+key H {
+    label:                              'H'
+    base:                               'h'
+    shift, capslock:                    'H'
+}
+
+key J {
+    label:                              'J'
+    base:                               'j'
+    shift, capslock:                    'J'
+}
+
+key K {
+    label:                              'K'
+    base:                               'k'
+    shift, capslock:                    'K'
+}
+
+key L {
+    label:                              'L'
+    base:                               'l'
+    shift, capslock:                    'L'
+}
+
+key SEMICOLON {
+    label:                              ';'
+    base:                               ';'
+    shift:                              ':'
+}
+
+key APOSTROPHE {
+    label:                              '\''
+    base:                               '\''
+    shift:                              '@'
+}
+
+key POUND {
+    label:                              '#'
+    base:                               '#'
+    shift:                              '~'
+    ralt:                               '\\'
+    shift+ralt:                         '|'
+}
+
+### ROW 4
+
+key BACKSLASH {
+    label:                              '\\'
+    base:                               '\\'
+    shift:                              '|'
+}
+
+key Z {
+    label:                              'Z'
+    base:                               'z'
+    shift, capslock:                    'Z'
+}
+
+key X {
+    label:                              'X'
+    base:                               'x'
+    shift, capslock:                    'X'
+}
+
+key C {
+    label:                              'C'
+    base:                               'c'
+    shift, capslock:                    'C'
+}
+
+key V {
+    label:                              'V'
+    base:                               'v'
+    shift, capslock:                    'V'
+}
+
+key B {
+    label:                              'B'
+    base:                               'b'
+    shift, capslock:                    'B'
+}
+
+key N {
+    label:                              'N'
+    base:                               'n'
+    shift, capslock:                    'N'
+}
+
+key M {
+    label:                              'M'
+    base:                               'm'
+    shift, capslock:                    'M'
+}
+
+key COMMA {
+    label:                              ','
+    base:                               ','
+    shift:                              '<'
+}
+
+key PERIOD {
+    label:                              '.'
+    base:                               '.'
+    shift:                              '>'
+}
+
+key SLASH {
+    label:                              '/'
+    base:                               '/'
+    shift:                              '?'
+}
diff --git a/packages/InputDevices/res/values/strings.xml b/packages/InputDevices/res/values/strings.xml
index c13e606..65d3304 100644
--- a/packages/InputDevices/res/values/strings.xml
+++ b/packages/InputDevices/res/values/strings.xml
@@ -6,6 +6,9 @@
     <!-- Keyboard layouts label, used to describe the set of all built-in layouts in the UI. [CHAR LIMIT=35] -->
     <string name="keyboard_layouts_label">Android keyboard</string>
 
+    <!-- UK English keyboard layout label. [CHAR LIMIT=35] -->
+    <string name="keyboard_layout_english_uk_label">English (UK)</string>
+
     <!-- US English keyboard layout label. [CHAR LIMIT=35] -->
     <string name="keyboard_layout_english_us_label">English (US)</string>
 
diff --git a/packages/InputDevices/res/xml/keyboard_layouts.xml b/packages/InputDevices/res/xml/keyboard_layouts.xml
index c2a2ecc..3cfa170 100644
--- a/packages/InputDevices/res/xml/keyboard_layouts.xml
+++ b/packages/InputDevices/res/xml/keyboard_layouts.xml
@@ -1,5 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <keyboard-layouts xmlns:android="http://schemas.android.com/apk/res/android">
+    <keyboard-layout android:name="keyboard_layout_english_uk"
+            android:label="@string/keyboard_layout_english_uk_label"
+            android:keyboardLayout="@raw/keyboard_layout_english_uk" />
+
     <keyboard-layout android:name="keyboard_layout_english_us"
             android:label="@string/keyboard_layout_english_us_label"
             android:keyboardLayout="@raw/keyboard_layout_english_us" />
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 16007c4..5838526 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -112,7 +112,6 @@
         super(context, dbNameForUser(userHandle), null, DATABASE_VERSION);
         mContext = context;
         mUserHandle = userHandle;
-        setWriteAheadLoggingEnabled(true);
     }
 
     public static boolean isValidTable(String name) {
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index f18338a..45319a8 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -23,6 +23,7 @@
 import java.util.concurrent.atomic.AtomicInteger;
 
 import android.app.ActivityManager;
+import android.app.AppOpsManager;
 import android.app.backup.BackupManager;
 import android.content.BroadcastReceiver;
 import android.content.ContentProvider;
@@ -323,6 +324,7 @@
         mBackupManager = new BackupManager(getContext());
         mUserManager = (UserManager) getContext().getSystemService(Context.USER_SERVICE);
 
+        setAppOps(AppOpsManager.OP_NONE, AppOpsManager.OP_WRITE_SETTINGS);
         establishDbTracking(UserHandle.USER_OWNER);
 
         IntentFilter userFilter = new IntentFilter();
@@ -544,7 +546,8 @@
      * Fast path that avoids the use of chatty remoted Cursors.
      */
     @Override
-    public Bundle call(String method, String request, Bundle args) {
+    public Bundle callFromPackage(String callingPackage, String method, String request,
+            Bundle args) {
         int callingUser = UserHandle.getCallingUserId();
         if (args != null) {
             int reqUser = args.getInt(Settings.CALL_METHOD_USER_KEY, callingUser);
@@ -586,7 +589,22 @@
         // Put methods - new value is in the args bundle under the key named by
         // the Settings.NameValueTable.VALUE static.
         final String newValue = (args == null)
-        ? null : args.getString(Settings.NameValueTable.VALUE);
+                ? null : args.getString(Settings.NameValueTable.VALUE);
+
+        // Framework can't do automatic permission checking for calls, so we need
+        // to do it here.
+        if (getContext().checkCallingOrSelfPermission(android.Manifest.permission.WRITE_SETTINGS)
+                != PackageManager.PERMISSION_GRANTED) {
+            throw new SecurityException(
+                    String.format("Permission denial: writing to settings requires %1$s",
+                                  android.Manifest.permission.WRITE_SETTINGS));
+        }
+
+        // Also need to take care of app op.
+        if (getAppOpsManager().noteOp(AppOpsManager.OP_WRITE_SETTINGS, Binder.getCallingUid(),
+                callingPackage) != AppOpsManager.MODE_ALLOWED) {
+            return null;
+        }
 
         final ContentValues values = new ContentValues();
         values.put(Settings.NameValueTable.NAME, request);
@@ -757,7 +775,7 @@
      * @returns whether the database needs to be updated or not, also modifying
      *     'initialValues' if needed.
      */
-    private boolean parseProviderList(Uri url, ContentValues initialValues) {
+    private boolean parseProviderList(Uri url, ContentValues initialValues, int desiredUser) {
         String value = initialValues.getAsString(Settings.Secure.VALUE);
         String newProviders = null;
         if (value != null && value.length() > 1) {
@@ -770,7 +788,7 @@
                 String providers = "";
                 String[] columns = {Settings.Secure.VALUE};
                 String where = Settings.Secure.NAME + "=\'" + Settings.Secure.LOCATION_PROVIDERS_ALLOWED + "\'";
-                Cursor cursor = query(url, columns, where, null, null);
+                Cursor cursor = queryForUser(url, columns, where, null, null, desiredUser);
                 if (cursor != null && cursor.getCount() == 1) {
                     try {
                         cursor.moveToFirst();
@@ -847,7 +865,7 @@
         // Support enabling/disabling a single provider (using "+" or "-" prefix)
         String name = initialValues.getAsString(Settings.Secure.NAME);
         if (Settings.Secure.LOCATION_PROVIDERS_ALLOWED.equals(name)) {
-            if (!parseProviderList(url, initialValues)) return null;
+            if (!parseProviderList(url, initialValues, desiredUserHandle)) return null;
         }
 
         // If this is an insert() of a key that has been migrated to the global store,
diff --git a/packages/Shell/Android.mk b/packages/Shell/Android.mk
new file mode 100644
index 0000000..f993ab5
--- /dev/null
+++ b/packages/Shell/Android.mk
@@ -0,0 +1,11 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_PACKAGE_NAME := Shell
+LOCAL_CERTIFICATE := platform
+
+include $(BUILD_PACKAGE)
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
new file mode 100644
index 0000000..b42db45
--- /dev/null
+++ b/packages/Shell/AndroidManifest.xml
@@ -0,0 +1,74 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.shell"
+        coreApp="true"
+        android:sharedUserId="android.uid.shell"
+        >
+
+    <!-- Standard permissions granted to the shell. -->
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.SEND_SMS" />
+    <uses-permission android:name="android.permission.CALL_PHONE" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
+    <uses-permission android:name="android.permission.READ_CALENDAR" />
+    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
+    <uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
+    <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+    <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
+    <!-- System tool permissions granted to the shell. -->
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
+    <uses-permission android:name="android.permission.REORDER_TASKS" />
+    <uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
+    <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
+    <!-- Development tool permissions granted to the shell. -->
+    <uses-permission android:name="android.permission.SET_DEBUG_APP" />
+    <uses-permission android:name="android.permission.SET_PROCESS_LIMIT" />
+    <uses-permission android:name="android.permission.SET_ALWAYS_FINISH" />
+    <uses-permission android:name="android.permission.DUMP" />
+    <uses-permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES" />
+    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
+    <!-- Internal permissions granted to the shell. -->
+    <uses-permission android:name="android.permission.FORCE_BACK" />
+    <uses-permission android:name="android.permission.BATTERY_STATS" />
+    <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
+    <uses-permission android:name="android.permission.INJECT_EVENTS" />
+    <uses-permission android:name="android.permission.RETRIEVE_WINDOW_CONTENT" />
+    <uses-permission android:name="android.permission.SET_ACTIVITY_WATCHER" />
+    <uses-permission android:name="android.permission.READ_INPUT_STATE" />
+    <uses-permission android:name="android.permission.SET_ORIENTATION" />
+    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
+    <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
+    <uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
+    <uses-permission android:name="android.permission.DELETE_PACKAGES" />
+    <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
+    <uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
+    <uses-permission android:name="android.permission.DEVICE_POWER" />
+    <uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
+    <uses-permission android:name="android.permission.BACKUP" />
+    <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES" />
+    <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
+    <uses-permission android:name="android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" />
+    <uses-permission android:name="android.permission.GRANT_REVOKE_PERMISSIONS" />
+    <uses-permission android:name="android.permission.SET_KEYBOARD_LAYOUT" />
+    <uses-permission android:name="android.permission.GET_DETAILED_TASKS" />
+    <uses-permission android:name="android.permission.SET_SCREEN_COMPATIBILITY" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
+    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
+    <uses-permission android:name="android.permission.MANAGE_USERS" />
+    <uses-permission android:name="android.permission.BLUETOOTH_STACK" />
+    
+    <application android:hasCode="false" android:label="@string/app_label">
+    </application>
+</manifest>
diff --git a/packages/Shell/res/values/strings.xml b/packages/Shell/res/values/strings.xml
new file mode 100644
index 0000000..50610d5
--- /dev/null
+++ b/packages/Shell/res/values/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<resources>
+    <string name="app_label">Shell</string>
+</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 7666f7d..a03ca33 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -181,7 +181,7 @@
     <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Laddat"</string>
     <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
     <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> enheter)"</string>
-    <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth inaktivt"</string>
+    <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth av"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Ljusstyrka"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotera automatiskt"</string>
     <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotationen har låsts"</string>
diff --git a/packages/SystemUI/src/com/android/systemui/media/NotificationPlayer.java b/packages/SystemUI/src/com/android/systemui/media/NotificationPlayer.java
index 6a12eb1..8979fc2 100644
--- a/packages/SystemUI/src/com/android/systemui/media/NotificationPlayer.java
+++ b/packages/SystemUI/src/com/android/systemui/media/NotificationPlayer.java
@@ -21,15 +21,11 @@
 import android.media.MediaPlayer;
 import android.media.MediaPlayer.OnCompletionListener;
 import android.net.Uri;
-import android.os.Handler;
 import android.os.Looper;
-import android.os.Message;
 import android.os.PowerManager;
 import android.os.SystemClock;
 import android.util.Log;
 
-import java.io.IOException;
-import java.lang.IllegalStateException;
 import java.lang.Thread;
 import java.util.LinkedList;
 
@@ -90,14 +86,29 @@
                     player.prepare();
                     if ((mCmd.uri != null) && (mCmd.uri.getEncodedPath() != null)
                             && (mCmd.uri.getEncodedPath().length() > 0)) {
-                        if (mCmd.looping) {
-                            audioManager.requestAudioFocus(null, mCmd.stream,
-                                    AudioManager.AUDIOFOCUS_GAIN);
-                        } else {
-                            audioManager.requestAudioFocus(null, mCmd.stream,
-                                    AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
+                        if (!audioManager.isMusicActiveRemotely()) {
+                            synchronized(mQueueAudioFocusLock) {
+                                if (mAudioManagerWithAudioFocus == null) {
+                                    if (mDebug) Log.d(mTag, "requesting AudioFocus");
+                                    if (mCmd.looping) {
+                                        audioManager.requestAudioFocus(null, mCmd.stream,
+                                                AudioManager.AUDIOFOCUS_GAIN);
+                                    } else {
+                                        audioManager.requestAudioFocus(null, mCmd.stream,
+                                                AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
+                                    }
+                                    mAudioManagerWithAudioFocus = audioManager;
+                                } else {
+                                    if (mDebug) Log.d(mTag, "AudioFocus was previously requested");
+                                }
+                            }
                         }
                     }
+                    // FIXME Having to start a new thread so we can receive completion callbacks
+                    //  is wrong, as we kill this thread whenever a new sound is to be played. This
+                    //  can lead to AudioFocus being released too early, before the second sound is
+                    //  done playing. This class should be modified to use a single thread, on which
+                    //  command are issued, and on which it receives the completion callbacks.
                     player.setOnCompletionListener(NotificationPlayer.this);
                     player.start();
                     if (mPlayer != null) {
@@ -108,7 +119,6 @@
                 catch (Exception e) {
                     Log.w(mTag, "error loading sound for " + mCmd.uri, e);
                 }
-                mAudioManager = audioManager;
                 this.notify();
             }
             Looper.loop();
@@ -179,8 +189,12 @@
                         mPlayer.stop();
                         mPlayer.release();
                         mPlayer = null;
-                        mAudioManager.abandonAudioFocus(null);
-                        mAudioManager = null;
+                        synchronized(mQueueAudioFocusLock) {
+                            if (mAudioManagerWithAudioFocus != null) {
+                                mAudioManagerWithAudioFocus.abandonAudioFocus(null);
+                                mAudioManagerWithAudioFocus = null;
+                            }
+                        }
                         if((mLooper != null)
                                 && (mLooper.getThread().getState() != Thread.State.TERMINATED)) {
                             mLooper.quit();
@@ -207,8 +221,14 @@
     }
 
     public void onCompletion(MediaPlayer mp) {
-        if (mAudioManager != null) {
-            mAudioManager.abandonAudioFocus(null);
+        synchronized(mQueueAudioFocusLock) {
+            if (mAudioManagerWithAudioFocus != null) {
+                if (mDebug) Log.d(mTag, "onCompletion() abandonning AudioFocus");
+                mAudioManagerWithAudioFocus.abandonAudioFocus(null);
+                mAudioManagerWithAudioFocus = null;
+            } else {
+                if (mDebug) Log.d(mTag, "onCompletion() no need to abandon AudioFocus");
+            }
         }
         // if there are no more sounds to play, end the Looper to listen for media completion
         synchronized (mCmdQueue) {
@@ -229,7 +249,8 @@
     private final Object mCompletionHandlingLock = new Object();
     private MediaPlayer mPlayer;
     private PowerManager.WakeLock mWakeLock;
-    private AudioManager mAudioManager;
+    private final Object mQueueAudioFocusLock = new Object();
+    private AudioManager mAudioManagerWithAudioFocus; // synchronized on mQueueAudioFocusLock
 
     // The current state according to the caller.  Reality lags behind
     // because of the asynchronous nature of this class.
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
index 9a1e38d..e79b2c6 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
@@ -45,6 +45,8 @@
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.view.ViewTreeObserver.OnGlobalLayoutListener;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.animation.AnimationUtils;
 import android.view.animation.DecelerateInterpolator;
@@ -162,7 +164,7 @@
             if (convertView == null) {
                 convertView = createView(parent);
             }
-            ViewHolder holder = (ViewHolder) convertView.getTag();
+            final ViewHolder holder = (ViewHolder) convertView.getTag();
 
             // index is reverse since most recent appears at the bottom...
             final int index = mRecentTaskDescriptions.size() - position - 1;
@@ -191,24 +193,49 @@
                             holder.calloutLine.setTranslationY(0f);
                         }
                     }
-                    mItemToAnimateInWhenWindowAnimationIsFinished = holder;
-                    final int translation = -getResources().getDimensionPixelSize(
-                            R.dimen.status_bar_recents_app_icon_translate_distance);
-                    final Configuration config = getResources().getConfiguration();
-                    if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {
-                        holder.iconView.setAlpha(0f);
-                        holder.iconView.setTranslationX(translation);
-                        holder.labelView.setAlpha(0f);
-                        holder.labelView.setTranslationX(translation);
-                        holder.calloutLine.setAlpha(0f);
-                        holder.calloutLine.setTranslationX(translation);
-                    } else {
-                        holder.iconView.setAlpha(0f);
-                        holder.iconView.setTranslationY(translation);
-                    }
-                    if (!mWaitingForWindowAnimation) {
-                        animateInIconOfFirstTask();
-                    }
+                    mItemToAnimateInWhenWindowAnimationIsFinished = null;
+
+                    final ViewTreeObserver observer = getViewTreeObserver();
+                    final OnGlobalLayoutListener animateFirstIcon = new OnGlobalLayoutListener() {
+                        public void onGlobalLayout() {
+                            if (mItemToAnimateInWhenWindowAnimationIsFinished != null) {
+                                holder.iconView.setAlpha(1f);
+                                holder.iconView.setTranslationX(0f);
+                                holder.iconView.setTranslationY(0f);
+                                holder.labelView.setAlpha(1f);
+                                holder.labelView.setTranslationX(0f);
+                                holder.labelView.setTranslationY(0f);
+                                if (holder.calloutLine != null) {
+                                    holder.calloutLine.setAlpha(1f);
+                                    holder.calloutLine.setTranslationX(0f);
+                                    holder.calloutLine.setTranslationY(0f);
+                                }
+                            }
+                            mItemToAnimateInWhenWindowAnimationIsFinished = holder;
+                            int translation = -getResources().getDimensionPixelSize(
+                                    R.dimen.status_bar_recents_app_icon_translate_distance);
+                            final Configuration config = getResources().getConfiguration();
+                            if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {
+                                if (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
+                                    translation = -translation;
+                                }
+                                holder.iconView.setAlpha(0f);
+                                holder.iconView.setTranslationX(translation);
+                                holder.labelView.setAlpha(0f);
+                                holder.labelView.setTranslationX(translation);
+                                holder.calloutLine.setAlpha(0f);
+                                holder.calloutLine.setTranslationX(translation);
+                            } else {
+                                holder.iconView.setAlpha(0f);
+                                holder.iconView.setTranslationY(translation);
+                            }
+                            if (!mWaitingForWindowAnimation) {
+                                animateInIconOfFirstTask();
+                            }
+                            getViewTreeObserver().removeOnGlobalLayoutListener(this);
+                        }
+                    };
+                    observer.addOnGlobalLayoutListener(animateFirstIcon);
                 }
             }
 
@@ -682,8 +709,12 @@
                     | Intent.FLAG_ACTIVITY_TASK_ON_HOME
                     | Intent.FLAG_ACTIVITY_NEW_TASK);
             if (DEBUG) Log.v(TAG, "Starting activity " + intent);
-            context.startActivityAsUser(intent, opts,
-                    new UserHandle(UserHandle.USER_CURRENT));
+            try {
+                context.startActivityAsUser(intent, opts,
+                        new UserHandle(UserHandle.USER_CURRENT));
+            } catch (SecurityException e) {
+                Log.e(TAG, "Recents does not have the permission to launch " + intent, e);
+            }
         }
         if (usingDrawingCache) {
             holder.thumbnailViewImage.setDrawingCacheEnabled(false);
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index 280b368..ddfaad5 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -45,6 +45,7 @@
 import android.os.Process;
 import android.provider.MediaStore;
 import android.util.DisplayMetrics;
+import android.util.Log;
 import android.view.Display;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -86,6 +87,8 @@
  */
 class SaveImageInBackgroundTask extends AsyncTask<SaveImageInBackgroundData, Void,
         SaveImageInBackgroundData> {
+    private static final String TAG = "SaveImageInBackgroundTask";
+
     private static final String SCREENSHOTS_DIR_NAME = "Screenshots";
     private static final String SCREENSHOT_FILE_NAME_TEMPLATE = "Screenshot_%s.png";
     private static final String SCREENSHOT_SHARE_SUBJECT_TEMPLATE = "Screenshot (%s)";
@@ -138,6 +141,7 @@
                             (shortSide - mImageHeight) / 2);
         c.drawBitmap(data.image, matrix, paint);
         c.drawColor(0x40FFFFFF);
+        c.setBitmap(null);
 
         Bitmap croppedIcon = Bitmap.createScaledBitmap(preview, iconSize, iconSize, true);
 
@@ -167,6 +171,8 @@
         mNotificationBuilder.setLargeIcon(croppedIcon);
         // But we still don't set it for the expanded view, allowing the smallIcon to show here.
         mNotificationStyle.bigLargeIcon(null);
+
+        Log.d(TAG, "SaveImageInBackgroundTask constructor");
     }
 
     @Override
@@ -174,6 +180,7 @@
         if (params.length != 1) return null;
         if (isCancelled()) {
             params[0].clearImage();
+            Log.d(TAG, "doInBackground cancelled");
             return null;
         }
 
@@ -238,6 +245,7 @@
             // mounted
             params[0].clearImage();
             params[0].result = 1;
+            Log.d(TAG, "doInBackground failed");
         }
 
         // Recycle the bitmap data
@@ -245,6 +253,7 @@
             image.recycle();
         }
 
+        Log.d(TAG, "doInBackground complete");
         return params[0];
     }
 
@@ -253,6 +262,7 @@
         if (isCancelled()) {
             params.finisher.run();
             params.clearImage();
+            Log.d(TAG, "onPostExecute cancelled");
             return;
         }
 
@@ -280,6 +290,7 @@
             mNotificationManager.notify(mNotificationId, n);
         }
         params.finisher.run();
+        Log.d(TAG, "onPostExecute complete");
     }
 }
 
@@ -290,6 +301,8 @@
  *     type of gallery?
  */
 class GlobalScreenshot {
+    private static final String TAG = "GlobalScreenshot";
+
     private static final int SCREENSHOT_NOTIFICATION_ID = 789;
     private static final int SCREENSHOT_FLASH_TO_PEAK_DURATION = 130;
     private static final int SCREENSHOT_DROP_IN_DURATION = 430;
@@ -381,12 +394,15 @@
         // Setup the Camera shutter sound
         mCameraSound = new MediaActionSound();
         mCameraSound.load(MediaActionSound.SHUTTER_CLICK);
+
+        Log.d(TAG, "GlobalScreenshot constructor");
     }
 
     /**
      * Creates a new worker thread and saves the screenshot to the media store.
      */
     private void saveScreenshotInWorkerThread(Runnable finisher) {
+        Log.d(TAG, "saveScreenshotInWorkerThread");
         SaveImageInBackgroundData data = new SaveImageInBackgroundData();
         data.context = mContext;
         data.image = mScreenBitmap;
@@ -394,6 +410,7 @@
         data.finisher = finisher;
         if (mSaveInBgTask != null) {
             mSaveInBgTask.cancel(false);
+            Log.d(TAG, "saveScreenshotInWorkerThread cancel");
         }
         mSaveInBgTask = new SaveImageInBackgroundTask(mContext, data, mNotificationManager,
                 SCREENSHOT_NOTIFICATION_ID).execute(data);
@@ -418,6 +435,8 @@
      * Takes a screenshot of the current display and shows an animation.
      */
     void takeScreenshot(Runnable finisher, boolean statusBarVisible, boolean navBarVisible) {
+        Log.d(TAG, "takeScreenshot");
+
         // We need to orient the screenshot correctly (and the Surface api seems to take screenshots
         // only in the natural orientation of the device :!)
         mDisplay.getRealMetrics(mDisplayMetrics);
@@ -431,6 +450,8 @@
             mDisplayMatrix.mapPoints(dims);
             dims[0] = Math.abs(dims[0]);
             dims[1] = Math.abs(dims[1]);
+
+            Log.d(TAG, "takeScreenshot requiresRotation");
         }
 
         // Take the screenshot
@@ -438,6 +459,7 @@
         if (mScreenBitmap == null) {
             notifyScreenshotError(mContext, mNotificationManager);
             finisher.run();
+            Log.d(TAG, "takeScreenshot null bitmap");
             return;
         }
 
@@ -451,7 +473,10 @@
             c.translate(-dims[0] / 2, -dims[1] / 2);
             c.drawBitmap(mScreenBitmap, 0, 0, null);
             c.setBitmap(null);
+            // Recycle the previous bitmap
+            mScreenBitmap.recycle();
             mScreenBitmap = ss;
+            Log.d(TAG, "takeScreenshot rotation bitmap created");
         }
 
         // Optimizations
@@ -461,6 +486,7 @@
         // Start the post-screenshot animation
         startAnimation(finisher, mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels,
                 statusBarVisible, navBarVisible);
+        Log.d(TAG, "takeScreenshot startedAnimation");
     }
 
 
@@ -469,6 +495,7 @@
      */
     private void startAnimation(final Runnable finisher, int w, int h, boolean statusBarVisible,
             boolean navBarVisible) {
+        Log.d(TAG, "startAnimation");
         // Add the view for the animation
         mScreenshotView.setImageBitmap(mScreenBitmap);
         mScreenshotLayout.requestFocus();
@@ -477,9 +504,11 @@
         if (mScreenshotAnimation != null) {
             mScreenshotAnimation.end();
             mScreenshotAnimation.removeAllListeners();
+            Log.d(TAG, "startAnimation reset previous animations");
         }
 
         mWindowManager.addView(mScreenshotLayout, mWindowLayoutParams);
+        Log.d(TAG, "startAnimation layout added to WM");
         ValueAnimator screenshotDropInAnim = createScreenshotDropInAnimation();
         ValueAnimator screenshotFadeOutAnim = createScreenshotDropOutAnimation(w, h,
                 statusBarVisible, navBarVisible);
@@ -495,6 +524,7 @@
                 // Clear any references to the bitmap
                 mScreenBitmap = null;
                 mScreenshotView.setImageBitmap(null);
+                Log.d(TAG, "startAnimation onAnimationEnd");
             }
         });
         mScreenshotLayout.post(new Runnable() {
@@ -506,6 +536,7 @@
                 mScreenshotView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
                 mScreenshotView.buildLayer();
                 mScreenshotAnimation.start();
+                Log.d(TAG, "startAnimation post runnable");
             }
         });
     }
@@ -643,6 +674,7 @@
     }
 
     static void notifyScreenshotError(Context context, NotificationManager nManager) {
+        Log.d(TAG, "notifyScreenshotError");
         Resources r = context.getResources();
 
         // Clear all existing notification, compose the new notification and show it
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
index 456b5fa..1954af8 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
@@ -23,6 +23,7 @@
 import android.os.Message;
 import android.os.Messenger;
 import android.os.RemoteException;
+import android.util.Log;
 
 public class TakeScreenshotService extends Service {
     private static final String TAG = "TakeScreenshotService";
@@ -37,12 +38,15 @@
                     final Messenger callback = msg.replyTo;
                     if (mScreenshot == null) {
                         mScreenshot = new GlobalScreenshot(TakeScreenshotService.this);
+                        Log.d(TAG, "Global screenshot initialized");
                     }
+                    Log.d(TAG, "Global screenshot captured");
                     mScreenshot.takeScreenshot(new Runnable() {
                         @Override public void run() {
                             Message reply = Message.obtain(null, 1);
                             try {
                                 callback.send(reply);
+                                Log.d(TAG, "Global screenshot completed");
                             } catch (RemoteException e) {
                             }
                         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 3bac146..f941f89 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -597,6 +597,10 @@
                     y = (int) ((dm.heightPixels - statusBarHeight - height) / 2f + thumbTopMargin
                             + recentsItemTopPadding + thumbBgPadding + statusBarHeight);
                 }
+                if (mLayoutDirection == View.LAYOUT_DIRECTION_RTL) {
+                    x = dm.widthPixels - x - res
+                            .getDimensionPixelSize(R.dimen.status_bar_recents_thumbnail_width);
+                }
 
                 ActivityOptions opts = ActivityOptions.makeThumbnailScaleDownAnimation(
                         getStatusBarView(),
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
index 4b07b00..565a3f2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
@@ -96,14 +96,21 @@
     @Override
     public boolean onTouchEvent(MotionEvent event) {
         // Allow subclasses to implement enable/disable semantics
-        if (!panelsEnabled()) return false;
+        if (!panelsEnabled()) {
+            if (event.getAction() == MotionEvent.ACTION_DOWN) {
+                Slog.v(TAG, String.format("onTouch: all panels disabled, ignoring touch at (%d,%d)",
+                        (int) event.getX(), (int) event.getY()));
+            }
+            return false;
+        }
 
         // figure out which panel needs to be talked to here
         if (event.getAction() == MotionEvent.ACTION_DOWN) {
             final PanelView panel = selectPanelForTouch(event);
             if (panel == null) {
                 // panel is not there, so we'll eat the gesture
-                if (DEBUG) LOG("PanelBar.onTouch: no panel for x=%d, bailing", event.getX());
+                Slog.v(TAG, String.format("onTouch: no panel for touch at (%d,%d)",
+                        (int) event.getX(), (int) event.getY()));
                 mTouchingPanel = null;
                 return true;
             }
@@ -112,6 +119,9 @@
                     (enabled ? "" : " (disabled)"));
             if (!enabled) {
                 // panel is disabled, so we'll eat the gesture
+                Slog.v(TAG, String.format(
+                        "onTouch: panel (%s) is disabled, ignoring touch at (%d,%d)",
+                        panel, (int) event.getX(), (int) event.getY()));
                 mTouchingPanel = null;
                 return true;
             }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
index cbe296d..27a3a15 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
@@ -46,7 +46,8 @@
             final String action = intent.getAction();
             if (Intent.ACTION_TIME_TICK.equals(action)
                     || Intent.ACTION_TIME_CHANGED.equals(action)
-                    || Intent.ACTION_TIMEZONE_CHANGED.equals(action)) {
+                    || Intent.ACTION_TIMEZONE_CHANGED.equals(action)
+                    || Intent.ACTION_LOCALE_CHANGED.equals(action)) {
                 updateClock();
             }
         }
@@ -122,6 +123,7 @@
                 filter.addAction(Intent.ACTION_TIME_TICK);
                 filter.addAction(Intent.ACTION_TIME_CHANGED);
                 filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
+                filter.addAction(Intent.ACTION_LOCALE_CHANGED);
                 mContext.registerReceiver(mIntentReceiver, filter, null, null);
                 updateClock();
             } else {
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
index 41d67bc..88a0ef3 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
@@ -2266,8 +2266,6 @@
                         mActionModeView = new ActionBarContextView(mContext);
                         mActionModePopup = new PopupWindow(mContext, null,
                                 com.android.internal.R.attr.actionModePopupWindowStyle);
-                        mActionModePopup.setLayoutInScreenEnabled(true);
-                        mActionModePopup.setLayoutInsetDecor(true);
                         mActionModePopup.setWindowLayoutType(
                                 WindowManager.LayoutParams.TYPE_APPLICATION);
                         mActionModePopup.setContentView(mActionModeView);
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 8135d22..9cb54a9 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -17,6 +17,7 @@
 
 import android.app.ActivityManager;
 import android.app.ActivityManagerNative;
+import android.app.AppOpsManager;
 import android.app.ProgressDialog;
 import android.app.SearchManager;
 import android.app.UiModeManager;
@@ -83,7 +84,6 @@
 import android.view.WindowManager;
 import android.view.WindowManagerGlobal;
 import android.view.WindowManagerPolicy;
-import android.view.WindowOrientationListener;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.animation.Animation;
 import android.view.animation.AnimationUtils;
@@ -554,8 +554,8 @@
     }
     
     class MyOrientationListener extends WindowOrientationListener {
-        MyOrientationListener(Context context) {
-            super(context);
+        MyOrientationListener(Context context, Handler handler) {
+            super(context, handler);
         }
         
         @Override
@@ -853,7 +853,7 @@
             mKeyguardMediator = new KeyguardViewMediator(context, null);
         }
         mHandler = new PolicyHandler();
-        mOrientationListener = new MyOrientationListener(mContext);
+        mOrientationListener = new MyOrientationListener(mContext, mHandler);
         try {
             mOrientationListener.setCurrentRotation(windowManager.getRotation());
         } catch (RemoteException ex) { }
@@ -1185,9 +1185,11 @@
 
     /** {@inheritDoc} */
     @Override
-    public int checkAddPermission(WindowManager.LayoutParams attrs) {
+    public int checkAddPermission(WindowManager.LayoutParams attrs, int[] outAppOp) {
         int type = attrs.type;
-        
+
+        outAppOp[0] = AppOpsManager.OP_NONE;
+
         if (type < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW
                 || type > WindowManager.LayoutParams.LAST_SYSTEM_WINDOW) {
             return WindowManagerGlobal.ADD_OKAY;
@@ -1210,6 +1212,7 @@
             case TYPE_SYSTEM_ERROR:
             case TYPE_SYSTEM_OVERLAY:
                 permission = android.Manifest.permission.SYSTEM_ALERT_WINDOW;
+                outAppOp[0] = AppOpsManager.OP_SYSTEM_ALERT_WINDOW;
                 break;
             default:
                 permission = android.Manifest.permission.INTERNAL_SYSTEM_WINDOW;
@@ -3756,13 +3759,16 @@
     }
 
     BroadcastReceiver mDockReceiver = new BroadcastReceiver() {
+        @Override
         public void onReceive(Context context, Intent intent) {
             if (Intent.ACTION_DOCK_EVENT.equals(intent.getAction())) {
                 mDockMode = intent.getIntExtra(Intent.EXTRA_DOCK_STATE,
                         Intent.EXTRA_DOCK_STATE_UNDOCKED);
             }
             updateRotation(true);
-            updateOrientationListenerLp();
+            synchronized (mLock) {
+                updateOrientationListenerLp();
+            }
         }
     };
 
diff --git a/core/java/android/view/WindowOrientationListener.java b/policy/src/com/android/internal/policy/impl/WindowOrientationListener.java
similarity index 65%
rename from core/java/android/view/WindowOrientationListener.java
rename to policy/src/com/android/internal/policy/impl/WindowOrientationListener.java
index 4c34dd4..0c77556 100644
--- a/core/java/android/view/WindowOrientationListener.java
+++ b/policy/src/com/android/internal/policy/impl/WindowOrientationListener.java
@@ -14,13 +14,14 @@
  * limitations under the License.
  */
 
-package android.view;
+package com.android.internal.policy.impl;
 
 import android.content.Context;
 import android.hardware.Sensor;
 import android.hardware.SensorEvent;
 import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
+import android.os.Handler;
 import android.os.SystemProperties;
 import android.util.FloatMath;
 import android.util.Log;
@@ -47,26 +48,31 @@
 
     private static final boolean USE_GRAVITY_SENSOR = false;
 
+    private Handler mHandler;
     private SensorManager mSensorManager;
     private boolean mEnabled;
     private int mRate;
     private Sensor mSensor;
     private SensorEventListenerImpl mSensorEventListener;
-    int mCurrentRotation = -1;
+    private int mCurrentRotation = -1;
+
+    private final Object mLock = new Object();
 
     /**
      * Creates a new WindowOrientationListener.
      * 
      * @param context for the WindowOrientationListener.
+     * @param handler Provides the Looper for receiving sensor updates.
      */
-    public WindowOrientationListener(Context context) {
-        this(context, SensorManager.SENSOR_DELAY_UI);
+    public WindowOrientationListener(Context context, Handler handler) {
+        this(context, handler, SensorManager.SENSOR_DELAY_UI);
     }
     
     /**
      * Creates a new WindowOrientationListener.
      * 
      * @param context for the WindowOrientationListener.
+     * @param handler Provides the Looper for receiving sensor updates.
      * @param rate at which sensor events are processed (see also
      * {@link android.hardware.SensorManager SensorManager}). Use the default
      * value of {@link android.hardware.SensorManager#SENSOR_DELAY_NORMAL 
@@ -74,32 +80,36 @@
      *
      * This constructor is private since no one uses it.
      */
-    private WindowOrientationListener(Context context, int rate) {
+    private WindowOrientationListener(Context context, Handler handler, int rate) {
+        mHandler = handler;
         mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
         mRate = rate;
         mSensor = mSensorManager.getDefaultSensor(USE_GRAVITY_SENSOR
                 ? Sensor.TYPE_GRAVITY : Sensor.TYPE_ACCELEROMETER);
         if (mSensor != null) {
             // Create listener only if sensors do exist
-            mSensorEventListener = new SensorEventListenerImpl(this);
+            mSensorEventListener = new SensorEventListenerImpl();
         }
     }
 
     /**
      * Enables the WindowOrientationListener so it will monitor the sensor and call
-     * {@link #onOrientationChanged} when the device orientation changes.
+     * {@link #onProposedRotationChanged(int)} when the device orientation changes.
      */
     public void enable() {
-        if (mSensor == null) {
-            Log.w(TAG, "Cannot detect sensors. Not enabled");
-            return;
-        }
-        if (mEnabled == false) {
-            if (LOG) {
-                Log.d(TAG, "WindowOrientationListener enabled");
+        synchronized (mLock) {
+            if (mSensor == null) {
+                Log.w(TAG, "Cannot detect sensors. Not enabled");
+                return;
             }
-            mSensorManager.registerListener(mSensorEventListener, mSensor, mRate);
-            mEnabled = true;
+            if (mEnabled == false) {
+                if (LOG) {
+                    Log.d(TAG, "WindowOrientationListener enabled");
+                }
+                mSensorEventListener.resetLocked();
+                mSensorManager.registerListener(mSensorEventListener, mSensor, mRate, mHandler);
+                mEnabled = true;
+            }
         }
     }
 
@@ -107,16 +117,18 @@
      * Disables the WindowOrientationListener.
      */
     public void disable() {
-        if (mSensor == null) {
-            Log.w(TAG, "Cannot detect sensors. Invalid disable");
-            return;
-        }
-        if (mEnabled == true) {
-            if (LOG) {
-                Log.d(TAG, "WindowOrientationListener disabled");
+        synchronized (mLock) {
+            if (mSensor == null) {
+                Log.w(TAG, "Cannot detect sensors. Invalid disable");
+                return;
             }
-            mSensorManager.unregisterListener(mSensorEventListener);
-            mEnabled = false;
+            if (mEnabled == true) {
+                if (LOG) {
+                    Log.d(TAG, "WindowOrientationListener disabled");
+                }
+                mSensorManager.unregisterListener(mSensorEventListener);
+                mEnabled = false;
+            }
         }
     }
 
@@ -126,7 +138,9 @@
      * @param rotation The current rotation.
      */
     public void setCurrentRotation(int rotation) {
-        mCurrentRotation = rotation;
+        synchronized (mLock) {
+            mCurrentRotation = rotation;
+        }
     }
 
     /**
@@ -138,17 +152,21 @@
      * @return The proposed rotation, or -1 if unknown.
      */
     public int getProposedRotation() {
-        if (mEnabled) {
-            return mSensorEventListener.getProposedRotation();
+        synchronized (mLock) {
+            if (mEnabled) {
+                return mSensorEventListener.getProposedRotationLocked();
+            }
+            return -1;
         }
-        return -1;
     }
 
     /**
      * Returns true if sensor is enabled and false otherwise
      */
     public boolean canDetectOrientation() {
-        return mSensor != null;
+        synchronized (mLock) {
+            return mSensor != null;
+        }
     }
 
     /**
@@ -159,7 +177,7 @@
      * uncertain to being certain again, even if it is the same orientation as before.
      *
      * @param rotation The new orientation of the device, one of the Surface.ROTATION_* constants.
-     * @see Surface
+     * @see android.view.Surface
      */
     public abstract void onProposedRotationChanged(int rotation);
 
@@ -201,7 +219,7 @@
      * See http://en.wikipedia.org/wiki/Low-pass_filter#Discrete-time_realization for
      * signal processing background.
      */
-    static final class SensorEventListenerImpl implements SensorEventListener {
+    final class SensorEventListenerImpl implements SensorEventListener {
         // We work with all angles in degrees in this class.
         private static final float RADIANS_TO_DEGREES = (float) (180 / Math.PI);
 
@@ -213,8 +231,6 @@
         private static final int ACCELEROMETER_DATA_Y = 1;
         private static final int ACCELEROMETER_DATA_Z = 2;
 
-        private final WindowOrientationListener mOrientationListener;
-
         // The minimum amount of time that a predicted rotation must be stable before it
         // is accepted as a valid rotation proposal.  This value can be quite small because
         // the low-pass filter already suppresses most of the noise so we're really just
@@ -319,7 +335,7 @@
         // facing up (resting on a table).
         // The ideal tilt angle is 0 (when the device is vertical) so the limits establish
         // how close to vertical the device must be in order to change orientation.
-        private static final int[][] TILT_TOLERANCE = new int[][] {
+        private final int[][] TILT_TOLERANCE = new int[][] {
             /* ROTATION_0   */ { -25, 70 },
             /* ROTATION_90  */ { -25, 65 },
             /* ROTATION_180 */ { -25, 60 },
@@ -361,12 +377,7 @@
         private long[] mTiltHistoryTimestampNanos = new long[TILT_HISTORY_SIZE];
         private int mTiltHistoryIndex;
 
-        public SensorEventListenerImpl(WindowOrientationListener orientationListener) {
-            mOrientationListener = orientationListener;
-            reset();
-        }
-
-        public int getProposedRotation() {
+        public int getProposedRotationLocked() {
             return mProposedRotation;
         }
 
@@ -376,179 +387,187 @@
 
         @Override
         public void onSensorChanged(SensorEvent event) {
-            // The vector given in the SensorEvent points straight up (towards the sky) under ideal
-            // conditions (the phone is not accelerating).  I'll call this up vector elsewhere.
-            float x = event.values[ACCELEROMETER_DATA_X];
-            float y = event.values[ACCELEROMETER_DATA_Y];
-            float z = event.values[ACCELEROMETER_DATA_Z];
+            int proposedRotation;
+            int oldProposedRotation;
 
-            if (LOG) {
-                Slog.v(TAG, "Raw acceleration vector: "
-                        + "x=" + x + ", y=" + y + ", z=" + z
-                        + ", magnitude=" + FloatMath.sqrt(x * x + y * y + z * z));
-            }
+            synchronized (mLock) {
+                // The vector given in the SensorEvent points straight up (towards the sky) under
+                // ideal conditions (the phone is not accelerating).  I'll call this up vector
+                // elsewhere.
+                float x = event.values[ACCELEROMETER_DATA_X];
+                float y = event.values[ACCELEROMETER_DATA_Y];
+                float z = event.values[ACCELEROMETER_DATA_Z];
 
-            // Apply a low-pass filter to the acceleration up vector in cartesian space.
-            // Reset the orientation listener state if the samples are too far apart in time
-            // or when we see values of (0, 0, 0) which indicates that we polled the
-            // accelerometer too soon after turning it on and we don't have any data yet.
-            final long now = event.timestamp;
-            final long then = mLastFilteredTimestampNanos;
-            final float timeDeltaMS = (now - then) * 0.000001f;
-            final boolean skipSample;
-            if (now < then
-                    || now > then + MAX_FILTER_DELTA_TIME_NANOS
-                    || (x == 0 && y == 0 && z == 0)) {
                 if (LOG) {
-                    Slog.v(TAG, "Resetting orientation listener.");
-                }
-                reset();
-                skipSample = true;
-            } else {
-                final float alpha = timeDeltaMS / (FILTER_TIME_CONSTANT_MS + timeDeltaMS);
-                x = alpha * (x - mLastFilteredX) + mLastFilteredX;
-                y = alpha * (y - mLastFilteredY) + mLastFilteredY;
-                z = alpha * (z - mLastFilteredZ) + mLastFilteredZ;
-                if (LOG) {
-                    Slog.v(TAG, "Filtered acceleration vector: "
+                    Slog.v(TAG, "Raw acceleration vector: "
                             + "x=" + x + ", y=" + y + ", z=" + z
                             + ", magnitude=" + FloatMath.sqrt(x * x + y * y + z * z));
                 }
-                skipSample = false;
-            }
-            mLastFilteredTimestampNanos = now;
-            mLastFilteredX = x;
-            mLastFilteredY = y;
-            mLastFilteredZ = z;
 
-            boolean isAccelerating = false;
-            boolean isFlat = false;
-            boolean isSwinging = false;
-            if (!skipSample) {
-                // Calculate the magnitude of the acceleration vector.
-                final float magnitude = FloatMath.sqrt(x * x + y * y + z * z);
-                if (magnitude < NEAR_ZERO_MAGNITUDE) {
+                // Apply a low-pass filter to the acceleration up vector in cartesian space.
+                // Reset the orientation listener state if the samples are too far apart in time
+                // or when we see values of (0, 0, 0) which indicates that we polled the
+                // accelerometer too soon after turning it on and we don't have any data yet.
+                final long now = event.timestamp;
+                final long then = mLastFilteredTimestampNanos;
+                final float timeDeltaMS = (now - then) * 0.000001f;
+                final boolean skipSample;
+                if (now < then
+                        || now > then + MAX_FILTER_DELTA_TIME_NANOS
+                        || (x == 0 && y == 0 && z == 0)) {
                     if (LOG) {
-                        Slog.v(TAG, "Ignoring sensor data, magnitude too close to zero.");
+                        Slog.v(TAG, "Resetting orientation listener.");
                     }
-                    clearPredictedRotation();
+                    resetLocked();
+                    skipSample = true;
                 } else {
-                    // Determine whether the device appears to be undergoing external acceleration.
-                    if (isAccelerating(magnitude)) {
-                        isAccelerating = true;
-                        mAccelerationTimestampNanos = now;
+                    final float alpha = timeDeltaMS / (FILTER_TIME_CONSTANT_MS + timeDeltaMS);
+                    x = alpha * (x - mLastFilteredX) + mLastFilteredX;
+                    y = alpha * (y - mLastFilteredY) + mLastFilteredY;
+                    z = alpha * (z - mLastFilteredZ) + mLastFilteredZ;
+                    if (LOG) {
+                        Slog.v(TAG, "Filtered acceleration vector: "
+                                + "x=" + x + ", y=" + y + ", z=" + z
+                                + ", magnitude=" + FloatMath.sqrt(x * x + y * y + z * z));
                     }
+                    skipSample = false;
+                }
+                mLastFilteredTimestampNanos = now;
+                mLastFilteredX = x;
+                mLastFilteredY = y;
+                mLastFilteredZ = z;
 
-                    // Calculate the tilt angle.
-                    // This is the angle between the up vector and the x-y plane (the plane of
-                    // the screen) in a range of [-90, 90] degrees.
-                    //   -90 degrees: screen horizontal and facing the ground (overhead)
-                    //     0 degrees: screen vertical
-                    //    90 degrees: screen horizontal and facing the sky (on table)
-                    final int tiltAngle = (int) Math.round(
-                            Math.asin(z / magnitude) * RADIANS_TO_DEGREES);
-                    addTiltHistoryEntry(now, tiltAngle);
-
-                    // Determine whether the device appears to be flat or swinging.
-                    if (isFlat(now)) {
-                        isFlat = true;
-                        mFlatTimestampNanos = now;
-                    }
-                    if (isSwinging(now, tiltAngle)) {
-                        isSwinging = true;
-                        mSwingTimestampNanos = now;
-                    }
-
-                    // If the tilt angle is too close to horizontal then we cannot determine
-                    // the orientation angle of the screen.
-                    if (Math.abs(tiltAngle) > MAX_TILT) {
+                boolean isAccelerating = false;
+                boolean isFlat = false;
+                boolean isSwinging = false;
+                if (!skipSample) {
+                    // Calculate the magnitude of the acceleration vector.
+                    final float magnitude = FloatMath.sqrt(x * x + y * y + z * z);
+                    if (magnitude < NEAR_ZERO_MAGNITUDE) {
                         if (LOG) {
-                            Slog.v(TAG, "Ignoring sensor data, tilt angle too high: "
-                                    + "tiltAngle=" + tiltAngle);
+                            Slog.v(TAG, "Ignoring sensor data, magnitude too close to zero.");
                         }
-                        clearPredictedRotation();
+                        clearPredictedRotationLocked();
                     } else {
-                        // Calculate the orientation angle.
-                        // This is the angle between the x-y projection of the up vector onto
-                        // the +y-axis, increasing clockwise in a range of [0, 360] degrees.
-                        int orientationAngle = (int) Math.round(
-                                -Math.atan2(-x, y) * RADIANS_TO_DEGREES);
-                        if (orientationAngle < 0) {
-                            // atan2 returns [-180, 180]; normalize to [0, 360]
-                            orientationAngle += 360;
+                        // Determine whether the device appears to be undergoing external
+                        // acceleration.
+                        if (isAcceleratingLocked(magnitude)) {
+                            isAccelerating = true;
+                            mAccelerationTimestampNanos = now;
                         }
 
-                        // Find the nearest rotation.
-                        int nearestRotation = (orientationAngle + 45) / 90;
-                        if (nearestRotation == 4) {
-                            nearestRotation = 0;
+                        // Calculate the tilt angle.
+                        // This is the angle between the up vector and the x-y plane (the plane of
+                        // the screen) in a range of [-90, 90] degrees.
+                        //   -90 degrees: screen horizontal and facing the ground (overhead)
+                        //     0 degrees: screen vertical
+                        //    90 degrees: screen horizontal and facing the sky (on table)
+                        final int tiltAngle = (int) Math.round(
+                                Math.asin(z / magnitude) * RADIANS_TO_DEGREES);
+                        addTiltHistoryEntryLocked(now, tiltAngle);
+
+                        // Determine whether the device appears to be flat or swinging.
+                        if (isFlatLocked(now)) {
+                            isFlat = true;
+                            mFlatTimestampNanos = now;
+                        }
+                        if (isSwingingLocked(now, tiltAngle)) {
+                            isSwinging = true;
+                            mSwingTimestampNanos = now;
                         }
 
-                        // Determine the predicted orientation.
-                        if (isTiltAngleAcceptable(nearestRotation, tiltAngle)
-                                && isOrientationAngleAcceptable(nearestRotation,
-                                        orientationAngle)) {
-                            updatePredictedRotation(now, nearestRotation);
+                        // If the tilt angle is too close to horizontal then we cannot determine
+                        // the orientation angle of the screen.
+                        if (Math.abs(tiltAngle) > MAX_TILT) {
                             if (LOG) {
-                                Slog.v(TAG, "Predicted: "
-                                        + "tiltAngle=" + tiltAngle
-                                        + ", orientationAngle=" + orientationAngle
-                                        + ", predictedRotation=" + mPredictedRotation
-                                        + ", predictedRotationAgeMS="
-                                                + ((now - mPredictedRotationTimestampNanos)
-                                                        * 0.000001f));
+                                Slog.v(TAG, "Ignoring sensor data, tilt angle too high: "
+                                        + "tiltAngle=" + tiltAngle);
                             }
+                            clearPredictedRotationLocked();
                         } else {
-                            if (LOG) {
-                                Slog.v(TAG, "Ignoring sensor data, no predicted rotation: "
-                                        + "tiltAngle=" + tiltAngle
-                                        + ", orientationAngle=" + orientationAngle);
+                            // Calculate the orientation angle.
+                            // This is the angle between the x-y projection of the up vector onto
+                            // the +y-axis, increasing clockwise in a range of [0, 360] degrees.
+                            int orientationAngle = (int) Math.round(
+                                    -Math.atan2(-x, y) * RADIANS_TO_DEGREES);
+                            if (orientationAngle < 0) {
+                                // atan2 returns [-180, 180]; normalize to [0, 360]
+                                orientationAngle += 360;
                             }
-                            clearPredictedRotation();
+
+                            // Find the nearest rotation.
+                            int nearestRotation = (orientationAngle + 45) / 90;
+                            if (nearestRotation == 4) {
+                                nearestRotation = 0;
+                            }
+
+                            // Determine the predicted orientation.
+                            if (isTiltAngleAcceptableLocked(nearestRotation, tiltAngle)
+                                    && isOrientationAngleAcceptableLocked(nearestRotation,
+                                            orientationAngle)) {
+                                updatePredictedRotationLocked(now, nearestRotation);
+                                if (LOG) {
+                                    Slog.v(TAG, "Predicted: "
+                                            + "tiltAngle=" + tiltAngle
+                                            + ", orientationAngle=" + orientationAngle
+                                            + ", predictedRotation=" + mPredictedRotation
+                                            + ", predictedRotationAgeMS="
+                                                    + ((now - mPredictedRotationTimestampNanos)
+                                                            * 0.000001f));
+                                }
+                            } else {
+                                if (LOG) {
+                                    Slog.v(TAG, "Ignoring sensor data, no predicted rotation: "
+                                            + "tiltAngle=" + tiltAngle
+                                            + ", orientationAngle=" + orientationAngle);
+                                }
+                                clearPredictedRotationLocked();
+                            }
                         }
                     }
                 }
-            }
 
-            // Determine new proposed rotation.
-            final int oldProposedRotation = mProposedRotation;
-            if (mPredictedRotation < 0 || isPredictedRotationAcceptable(now)) {
-                mProposedRotation = mPredictedRotation;
-            }
+                // Determine new proposed rotation.
+                oldProposedRotation = mProposedRotation;
+                if (mPredictedRotation < 0 || isPredictedRotationAcceptableLocked(now)) {
+                    mProposedRotation = mPredictedRotation;
+                }
+                proposedRotation = mProposedRotation;
 
-            // Write final statistics about where we are in the orientation detection process.
-            if (LOG) {
-                Slog.v(TAG, "Result: currentRotation=" + mOrientationListener.mCurrentRotation
-                        + ", proposedRotation=" + mProposedRotation
-                        + ", predictedRotation=" + mPredictedRotation
-                        + ", timeDeltaMS=" + timeDeltaMS
-                        + ", isAccelerating=" + isAccelerating
-                        + ", isFlat=" + isFlat
-                        + ", isSwinging=" + isSwinging
-                        + ", timeUntilSettledMS=" + remainingMS(now,
-                                mPredictedRotationTimestampNanos + PROPOSAL_SETTLE_TIME_NANOS)
-                        + ", timeUntilAccelerationDelayExpiredMS=" + remainingMS(now,
-                                mAccelerationTimestampNanos + PROPOSAL_MIN_TIME_SINCE_ACCELERATION_ENDED_NANOS)
-                        + ", timeUntilFlatDelayExpiredMS=" + remainingMS(now,
-                                mFlatTimestampNanos + PROPOSAL_MIN_TIME_SINCE_FLAT_ENDED_NANOS)
-                        + ", timeUntilSwingDelayExpiredMS=" + remainingMS(now,
-                                mSwingTimestampNanos + PROPOSAL_MIN_TIME_SINCE_SWING_ENDED_NANOS));
+                // Write final statistics about where we are in the orientation detection process.
+                if (LOG) {
+                    Slog.v(TAG, "Result: currentRotation=" + mCurrentRotation
+                            + ", proposedRotation=" + proposedRotation
+                            + ", predictedRotation=" + mPredictedRotation
+                            + ", timeDeltaMS=" + timeDeltaMS
+                            + ", isAccelerating=" + isAccelerating
+                            + ", isFlat=" + isFlat
+                            + ", isSwinging=" + isSwinging
+                            + ", timeUntilSettledMS=" + remainingMS(now,
+                                    mPredictedRotationTimestampNanos + PROPOSAL_SETTLE_TIME_NANOS)
+                            + ", timeUntilAccelerationDelayExpiredMS=" + remainingMS(now,
+                                    mAccelerationTimestampNanos + PROPOSAL_MIN_TIME_SINCE_ACCELERATION_ENDED_NANOS)
+                            + ", timeUntilFlatDelayExpiredMS=" + remainingMS(now,
+                                    mFlatTimestampNanos + PROPOSAL_MIN_TIME_SINCE_FLAT_ENDED_NANOS)
+                            + ", timeUntilSwingDelayExpiredMS=" + remainingMS(now,
+                                    mSwingTimestampNanos + PROPOSAL_MIN_TIME_SINCE_SWING_ENDED_NANOS));
+                }
             }
 
             // Tell the listener.
-            if (mProposedRotation != oldProposedRotation && mProposedRotation >= 0) {
+            if (proposedRotation != oldProposedRotation && proposedRotation >= 0) {
                 if (LOG) {
-                    Slog.v(TAG, "Proposed rotation changed!  proposedRotation=" + mProposedRotation
+                    Slog.v(TAG, "Proposed rotation changed!  proposedRotation=" + proposedRotation
                             + ", oldProposedRotation=" + oldProposedRotation);
                 }
-                mOrientationListener.onProposedRotationChanged(mProposedRotation);
+                onProposedRotationChanged(proposedRotation);
             }
         }
 
         /**
          * Returns true if the tilt angle is acceptable for a given predicted rotation.
          */
-        private boolean isTiltAngleAcceptable(int rotation, int tiltAngle) {
+        private boolean isTiltAngleAcceptableLocked(int rotation, int tiltAngle) {
             return tiltAngle >= TILT_TOLERANCE[rotation][0]
                     && tiltAngle <= TILT_TOLERANCE[rotation][1];
         }
@@ -559,11 +578,11 @@
          * This function takes into account the gap between adjacent orientations
          * for hysteresis.
          */
-        private boolean isOrientationAngleAcceptable(int rotation, int orientationAngle) {
+        private boolean isOrientationAngleAcceptableLocked(int rotation, int orientationAngle) {
             // If there is no current rotation, then there is no gap.
             // The gap is used only to introduce hysteresis among advertised orientation
             // changes to avoid flapping.
-            final int currentRotation = mOrientationListener.mCurrentRotation;
+            final int currentRotation = mCurrentRotation;
             if (currentRotation >= 0) {
                 // If the specified rotation is the same or is counter-clockwise adjacent
                 // to the current rotation, then we set a lower bound on the orientation angle.
@@ -610,7 +629,7 @@
          * Returns true if the predicted rotation is ready to be advertised as a
          * proposed rotation.
          */
-        private boolean isPredictedRotationAcceptable(long now) {
+        private boolean isPredictedRotationAcceptableLocked(long now) {
             // The predicted rotation must have settled long enough.
             if (now < mPredictedRotationTimestampNanos + PROPOSAL_SETTLE_TIME_NANOS) {
                 return false;
@@ -637,47 +656,47 @@
             return true;
         }
 
-        private void reset() {
+        private void resetLocked() {
             mLastFilteredTimestampNanos = Long.MIN_VALUE;
             mProposedRotation = -1;
             mFlatTimestampNanos = Long.MIN_VALUE;
             mSwingTimestampNanos = Long.MIN_VALUE;
             mAccelerationTimestampNanos = Long.MIN_VALUE;
-            clearPredictedRotation();
-            clearTiltHistory();
+            clearPredictedRotationLocked();
+            clearTiltHistoryLocked();
         }
 
-        private void clearPredictedRotation() {
+        private void clearPredictedRotationLocked() {
             mPredictedRotation = -1;
             mPredictedRotationTimestampNanos = Long.MIN_VALUE;
         }
 
-        private void updatePredictedRotation(long now, int rotation) {
+        private void updatePredictedRotationLocked(long now, int rotation) {
             if (mPredictedRotation != rotation) {
                 mPredictedRotation = rotation;
                 mPredictedRotationTimestampNanos = now;
             }
         }
 
-        private boolean isAccelerating(float magnitude) {
+        private boolean isAcceleratingLocked(float magnitude) {
             return magnitude < MIN_ACCELERATION_MAGNITUDE
                     || magnitude > MAX_ACCELERATION_MAGNITUDE;
         }
 
-        private void clearTiltHistory() {
+        private void clearTiltHistoryLocked() {
             mTiltHistoryTimestampNanos[0] = Long.MIN_VALUE;
             mTiltHistoryIndex = 1;
         }
 
-        private void addTiltHistoryEntry(long now, float tilt) {
+        private void addTiltHistoryEntryLocked(long now, float tilt) {
             mTiltHistory[mTiltHistoryIndex] = tilt;
             mTiltHistoryTimestampNanos[mTiltHistoryIndex] = now;
             mTiltHistoryIndex = (mTiltHistoryIndex + 1) % TILT_HISTORY_SIZE;
             mTiltHistoryTimestampNanos[mTiltHistoryIndex] = Long.MIN_VALUE;
         }
 
-        private boolean isFlat(long now) {
-            for (int i = mTiltHistoryIndex; (i = nextTiltHistoryIndex(i)) >= 0; ) {
+        private boolean isFlatLocked(long now) {
+            for (int i = mTiltHistoryIndex; (i = nextTiltHistoryIndexLocked(i)) >= 0; ) {
                 if (mTiltHistory[i] < FLAT_ANGLE) {
                     break;
                 }
@@ -689,8 +708,8 @@
             return false;
         }
 
-        private boolean isSwinging(long now, float tilt) {
-            for (int i = mTiltHistoryIndex; (i = nextTiltHistoryIndex(i)) >= 0; ) {
+        private boolean isSwingingLocked(long now, float tilt) {
+            for (int i = mTiltHistoryIndex; (i = nextTiltHistoryIndexLocked(i)) >= 0; ) {
                 if (mTiltHistoryTimestampNanos[i] + SWING_TIME_NANOS < now) {
                     break;
                 }
@@ -702,12 +721,12 @@
             return false;
         }
 
-        private int nextTiltHistoryIndex(int index) {
+        private int nextTiltHistoryIndexLocked(int index) {
             index = (index == 0 ? TILT_HISTORY_SIZE : index) - 1;
             return mTiltHistoryTimestampNanos[index] != Long.MIN_VALUE ? index : -1;
         }
 
-        private static float remainingMS(long now, long until) {
+        private float remainingMS(long now, long until) {
             return now >= until ? 0 : (until - now) * 0.000001f;
         }
     }
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMessageArea.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMessageArea.java
index 210312a..77359ff 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMessageArea.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMessageArea.java
@@ -24,6 +24,7 @@
 import android.os.BatteryManager;
 import android.os.Handler;
 import android.os.Looper;
+import android.os.SystemClock;
 import android.os.UserHandle;
 import android.provider.Settings;
 import android.text.TextUtils;
@@ -33,12 +34,23 @@
 
 import libcore.util.MutableInt;
 
+import java.lang.ref.WeakReference;
+
 import com.android.internal.R;
 
 /***
  * Manages a number of views inside of the given layout. See below for a list of widgets.
  */
 class KeyguardMessageArea extends TextView {
+    /** Handler token posted with accessibility announcement runnables. */
+    private static final Object ANNOUNCE_TOKEN = new Object();
+
+    /**
+     * Delay before speaking an accessibility announcement. Used to prevent
+     * lift-to-type from interrupting itself.
+     */
+    private static final long ANNOUNCEMENT_DELAY = 250;
+
     static final int CHARGING_ICON = 0; //R.drawable.ic_lock_idle_charging;
     static final int BATTERY_LOW_ICON = 0; //R.drawable.ic_lock_idle_low_battery;
 
@@ -174,7 +186,9 @@
         if (mTimeout > 0) {
             mHandler.postDelayed(mClearMessageRunnable, mTimeout);
         }
-        announceForAccessibility(getText());
+        mHandler.removeCallbacksAndMessages(ANNOUNCE_TOKEN);
+        mHandler.postAtTime(new AnnounceRunnable(this, getText()), ANNOUNCE_TOKEN,
+                (SystemClock.uptimeMillis() + ANNOUNCEMENT_DELAY));
     }
 
     /**
@@ -271,4 +285,25 @@
             setAlpha(1f);
         }
     }
+
+    /**
+     * Runnable used to delay accessibility announcements.
+     */
+    private static class AnnounceRunnable implements Runnable {
+        private final WeakReference<View> mHost;
+        private final CharSequence mTextToAnnounce;
+
+        public AnnounceRunnable(View host, CharSequence textToAnnounce) {
+            mHost = new WeakReference<View>(host);
+            mTextToAnnounce = textToAnnounce;
+        }
+
+        @Override
+        public void run() {
+            final View host = mHost.get();
+            if (host != null) {
+                host.announceForAccessibility(mTextToAnnounce);
+            }
+        }
+    }
 }
diff --git a/services/java/com/android/server/AppOpsService.java b/services/java/com/android/server/AppOpsService.java
index 335917e..a402642 100644
--- a/services/java/com/android/server/AppOpsService.java
+++ b/services/java/com/android/server/AppOpsService.java
@@ -25,6 +25,7 @@
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 
 import android.app.AppOpsManager;
@@ -34,7 +35,9 @@
 import android.os.AsyncTask;
 import android.os.Binder;
 import android.os.Handler;
+import android.os.IBinder;
 import android.os.Process;
+import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.UserHandle;
 import android.util.AtomicFile;
@@ -45,6 +48,7 @@
 import android.util.Xml;
 
 import com.android.internal.app.IAppOpsService;
+import com.android.internal.app.IAppOpsCallback;
 import com.android.internal.util.FastXmlSerializer;
 import com.android.internal.util.XmlUtils;
 
@@ -82,7 +86,7 @@
     final SparseArray<HashMap<String, Ops>> mUidOps
             = new SparseArray<HashMap<String, Ops>>();
 
-    final static class Ops extends SparseArray<Op> {
+    public final static class Ops extends SparseArray<Op> {
         public final String packageName;
         public final int uid;
 
@@ -92,7 +96,7 @@
         }
     }
 
-    final static class Op {
+    public final static class Op {
         public final int op;
         public int mode;
         public int duration;
@@ -106,6 +110,34 @@
         }
     }
 
+    final SparseArray<ArrayList<Callback>> mOpModeWatchers
+            = new SparseArray<ArrayList<Callback>>();
+    final HashMap<String, ArrayList<Callback>> mPackageModeWatchers
+            = new HashMap<String, ArrayList<Callback>>();
+    final HashMap<IBinder, Callback> mModeWatchers
+            = new HashMap<IBinder, Callback>();
+
+    public final class Callback implements DeathRecipient {
+        final IAppOpsCallback mCallback;
+
+        public Callback(IAppOpsCallback callback) {
+            mCallback = callback;
+            try {
+                mCallback.asBinder().linkToDeath(this, 0);
+            } catch (RemoteException e) {
+            }
+        }
+
+        public void unlinkToDeath() {
+            mCallback.asBinder().unlinkToDeath(this, 0);
+        }
+
+        @Override
+        public void binderDied() {
+            stopWatchingMode(mCallback);
+        }
+    }
+
     public AppOpsService(File storagePath) {
         mFile = new AtomicFile(storagePath);
         mHandler = new Handler();
@@ -117,6 +149,61 @@
         ServiceManager.addService(Context.APP_OPS_SERVICE, asBinder());
     }
 
+    public void systemReady() {
+        synchronized (this) {
+            boolean changed = false;
+            for (int i=0; i<mUidOps.size(); i++) {
+                HashMap<String, Ops> pkgs = mUidOps.valueAt(i);
+                Iterator<Ops> it = pkgs.values().iterator();
+                while (it.hasNext()) {
+                    Ops ops = it.next();
+                    int curUid;
+                    try {
+                        curUid = mContext.getPackageManager().getPackageUid(ops.packageName,
+                                UserHandle.getUserId(ops.uid));
+                    } catch (NameNotFoundException e) {
+                        curUid = -1;
+                    }
+                    if (curUid != ops.uid) {
+                        Slog.i(TAG, "Pruning old package " + ops.packageName
+                                + "/" + ops.uid + ": new uid=" + curUid);
+                        it.remove();
+                        changed = true;
+                    }
+                }
+                if (pkgs.size() <= 0) {
+                    mUidOps.removeAt(i);
+                }
+            }
+            if (changed) {
+                scheduleWriteLocked();
+            }
+        }
+    }
+
+    public void packageRemoved(int uid, String packageName) {
+        synchronized (this) {
+            HashMap<String, Ops> pkgs = mUidOps.get(uid);
+            if (pkgs != null) {
+                if (pkgs.remove(packageName) != null) {
+                    if (pkgs.size() <= 0) {
+                        mUidOps.remove(uid);
+                    }
+                    scheduleWriteLocked();
+                }
+            }
+        }
+    }
+
+    public void uidRemoved(int uid) {
+        synchronized (this) {
+            if (mUidOps.indexOfKey(uid) >= 0) {
+                mUidOps.remove(uid);
+                scheduleWriteLocked();
+            }
+        }
+    }
+
     public void shutdown() {
         Slog.w(TAG, "Writing app ops before shutdown...");
         boolean doWrite = false;
@@ -204,20 +291,120 @@
     @Override
     public void setMode(int code, int uid, String packageName, int mode) {
         verifyIncomingUid(uid);
+        verifyIncomingOp(code);
+        ArrayList<Callback> repCbs = null;
+        code = AppOpsManager.opToSwitch(code);
         synchronized (this) {
-            Op op = getOpLocked(AppOpsManager.opToSwitch(code), uid, packageName, true);
+            Op op = getOpLocked(code, uid, packageName, true);
             if (op != null) {
                 if (op.mode != mode) {
                     op.mode = mode;
+                    ArrayList<Callback> cbs = mOpModeWatchers.get(code);
+                    if (cbs != null) {
+                        if (repCbs == null) {
+                            repCbs = new ArrayList<Callback>();
+                        }
+                        repCbs.addAll(cbs);
+                    }
+                    cbs = mPackageModeWatchers.get(packageName);
+                    if (cbs != null) {
+                        if (repCbs == null) {
+                            repCbs = new ArrayList<Callback>();
+                        }
+                        repCbs.addAll(cbs);
+                    }
+                    if (mode == AppOpsManager.MODE_ALLOWED) {
+                        // If going into the default mode, prune this op
+                        // if there is nothing else interesting in it.
+                        if (op.time == 0 && op.rejectTime == 0) {
+                            Ops ops = getOpsLocked(uid, packageName, false);
+                            if (ops != null) {
+                                ops.remove(op.op);
+                                if (ops.size() <= 0) {
+                                    HashMap<String, Ops> pkgOps = mUidOps.get(uid);
+                                    if (pkgOps != null) {
+                                        pkgOps.remove(ops.packageName);
+                                        if (pkgOps.size() <= 0) {
+                                            mUidOps.remove(uid);
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
                     scheduleWriteNowLocked();
                 }
             }
         }
+        if (repCbs != null) {
+            for (int i=0; i<repCbs.size(); i++) {
+                try {
+                    repCbs.get(i).mCallback.opChanged(code, packageName);
+                } catch (RemoteException e) {
+                }
+            }
+        }
+    }
+
+    @Override
+    public void startWatchingMode(int op, String packageName, IAppOpsCallback callback) {
+        synchronized (this) {
+            op = AppOpsManager.opToSwitch(op);
+            Callback cb = mModeWatchers.get(callback.asBinder());
+            if (cb == null) {
+                cb = new Callback(callback);
+                mModeWatchers.put(callback.asBinder(), cb);
+            }
+            if (op != AppOpsManager.OP_NONE) {
+                ArrayList<Callback> cbs = mOpModeWatchers.get(op);
+                if (cbs == null) {
+                    cbs = new ArrayList<Callback>();
+                    mOpModeWatchers.put(op, cbs);
+                }
+                cbs.add(cb);
+            }
+            if (packageName != null) {
+                ArrayList<Callback> cbs = mPackageModeWatchers.get(packageName);
+                if (cbs == null) {
+                    cbs = new ArrayList<Callback>();
+                    mPackageModeWatchers.put(packageName, cbs);
+                }
+                cbs.add(cb);
+            }
+        }
+    }
+
+    @Override
+    public void stopWatchingMode(IAppOpsCallback callback) {
+        synchronized (this) {
+            Callback cb = mModeWatchers.remove(callback.asBinder());
+            if (cb != null) {
+                cb.unlinkToDeath();
+                for (int i=0; i<mOpModeWatchers.size(); i++) {
+                    ArrayList<Callback> cbs = mOpModeWatchers.valueAt(i);
+                    cbs.remove(cb);
+                    if (cbs.size() <= 0) {
+                        mOpModeWatchers.removeAt(i);
+                    }
+                }
+                if (mPackageModeWatchers.size() > 0) {
+                    Iterator<ArrayList<Callback>> it = mPackageModeWatchers.values().iterator();
+                    while (it.hasNext()) {
+                        ArrayList<Callback> cbs = it.next();
+                        cbs.remove(cb);
+                        if (cbs.size() <= 0) {
+                            it.remove();
+                        }
+                    }
+                }
+            }
+        }
     }
 
     @Override
     public int checkOperation(int code, int uid, String packageName) {
         verifyIncomingUid(uid);
+        verifyIncomingOp(code);
         synchronized (this) {
             Op op = getOpLocked(AppOpsManager.opToSwitch(code), uid, packageName, false);
             if (op == null) {
@@ -230,6 +417,7 @@
     @Override
     public int noteOperation(int code, int uid, String packageName) {
         verifyIncomingUid(uid);
+        verifyIncomingOp(code);
         synchronized (this) {
             Ops ops = getOpsLocked(uid, packageName, true);
             if (ops == null) {
@@ -254,6 +442,7 @@
             if (DEBUG) Log.d(TAG, "noteOperation: allowing code " + code + " uid " + uid
                     + " package " + packageName);
             op.time = System.currentTimeMillis();
+            op.rejectTime = 0;
             return AppOpsManager.MODE_ALLOWED;
         }
     }
@@ -261,6 +450,7 @@
     @Override
     public int startOperation(int code, int uid, String packageName) {
         verifyIncomingUid(uid);
+        verifyIncomingOp(code);
         synchronized (this) {
             Ops ops = getOpsLocked(uid, packageName, true);
             if (ops == null) {
@@ -281,6 +471,7 @@
                     + " package " + packageName);
             if (op.nesting == 0) {
                 op.time = System.currentTimeMillis();
+                op.rejectTime = 0;
                 op.duration = -1;
             }
             op.nesting++;
@@ -291,6 +482,7 @@
     @Override
     public void finishOperation(int code, int uid, String packageName) {
         verifyIncomingUid(uid);
+        verifyIncomingOp(code);
         synchronized (this) {
             Op op = getOpLocked(code, uid, packageName, true);
             if (op == null) {
@@ -299,6 +491,7 @@
             if (op.nesting <= 1) {
                 if (op.nesting == 1) {
                     op.duration = (int)(System.currentTimeMillis() - op.time);
+                    op.time += op.duration;
                 } else {
                     Slog.w(TAG, "Finishing op nesting under-run: uid " + uid + " pkg " + packageName
                         + " code " + code + " time=" + op.time + " duration=" + op.duration
@@ -322,6 +515,13 @@
                 Binder.getCallingPid(), Binder.getCallingUid(), null);
     }
 
+    private void verifyIncomingOp(int op) {
+        if (op >= 0 && op < AppOpsManager._NUM_OP) {
+            return;
+        }
+        throw new IllegalArgumentException("Bad operation #" + op);
+    }
+
     private Ops getOpsLocked(int uid, String packageName, boolean edit) {
         HashMap<String, Ops> pkgOps = mUidOps.get(uid);
         if (pkgOps == null) {
@@ -331,6 +531,11 @@
             pkgOps = new HashMap<String, Ops>();
             mUidOps.put(uid, pkgOps);
         }
+        if (uid == 0) {
+            packageName = "root";
+        } else if (uid == Process.SHELL_UID) {
+            packageName = "com.android.shell";
+        }
         Ops ops = pkgOps.get(packageName);
         if (ops == null) {
             if (!edit) {
@@ -338,23 +543,25 @@
             }
             // This is the first time we have seen this package name under this uid,
             // so let's make sure it is valid.
-            final long ident = Binder.clearCallingIdentity();
-            try {
-                int pkgUid = -1;
+            if (uid != 0) {
+                final long ident = Binder.clearCallingIdentity();
                 try {
-                    pkgUid = mContext.getPackageManager().getPackageUid(packageName,
-                            UserHandle.getUserId(uid));
-                } catch (NameNotFoundException e) {
+                    int pkgUid = -1;
+                    try {
+                        pkgUid = mContext.getPackageManager().getPackageUid(packageName,
+                                UserHandle.getUserId(uid));
+                    } catch (NameNotFoundException e) {
+                    }
+                    if (pkgUid != uid) {
+                        // Oops!  The package name is not valid for the uid they are calling
+                        // under.  Abort.
+                        Slog.w(TAG, "Bad call: specified package " + packageName
+                                + " under uid " + uid + " but it is really " + pkgUid);
+                        return null;
+                    }
+                } finally {
+                    Binder.restoreCallingIdentity(ident);
                 }
-                if (pkgUid != uid) {
-                    // Oops!  The package name is not valid for the uid they are calling
-                    // under.  Abort.
-                    Slog.w(TAG, "Bad call: specified package " + packageName
-                            + " under uid " + uid + " but it is really " + pkgUid);
-                    return null;
-                }
-            } finally {
-                Binder.restoreCallingIdentity(ident);
             }
             ops = new Ops(packageName, uid);
             pkgOps.put(packageName, ops);
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java
index 88ea1f1..dfde692 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/java/com/android/server/BackupManagerService.java
@@ -133,7 +133,7 @@
 
 class BackupManagerService extends IBackupManager.Stub {
     private static final String TAG = "BackupManagerService";
-    private static final boolean DEBUG = false;
+    private static final boolean DEBUG = true;
     private static final boolean MORE_DEBUG = false;
 
     // Name and current contents version of the full-backup manifest file
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 4cfe5d5..6efe4c5 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -183,7 +183,7 @@
      * A per Net list of the PID's that requested access to the net
      * used both as a refcount and for per-PID DNS selection
      */
-    private List mNetRequestersPids[];
+    private List<Integer> mNetRequestersPids[];
 
     // priority order of the nettrackers
     // (excluding dynamically set mNetworkPreference)
@@ -508,15 +508,14 @@
             }
         }
 
-        mNetRequestersPids = new ArrayList[ConnectivityManager.MAX_NETWORK_TYPE+1];
+        mNetRequestersPids =
+                (List<Integer> [])new ArrayList[ConnectivityManager.MAX_NETWORK_TYPE+1];
         for (int i : mPriorityList) {
-            mNetRequestersPids[i] = new ArrayList();
+            mNetRequestersPids[i] = new ArrayList<Integer>();
         }
 
         mFeatureUsers = new ArrayList<FeatureUser>();
 
-        mNumDnsEntries = 0;
-
         mTestMode = SystemProperties.get("cm.test.mode").equals("true")
                 && SystemProperties.get("ro.build.type").equals("eng");
 
@@ -1317,6 +1316,7 @@
                 Integer currentPid = new Integer(pid);
                 mNetRequestersPids[usedNetworkType].remove(currentPid);
                 reassessPidDns(pid, true);
+                flushVmDnsCache();
                 if (mNetRequestersPids[usedNetworkType].size() != 0) {
                     if (VDBG) {
                         log("stopUsingNetworkFeature: net " + networkType + ": " + feature +
@@ -1698,9 +1698,8 @@
          * in accordance with network preference policies.
          */
         if (!mNetConfigs[prevNetType].isDefault()) {
-            List pids = mNetRequestersPids[prevNetType];
-            for (int i = 0; i<pids.size(); i++) {
-                Integer pid = (Integer)pids.get(i);
+            List<Integer> pids = mNetRequestersPids[prevNetType];
+            for (Integer pid : pids) {
                 // will remove them because the net's no longer connected
                 // need to do this now as only now do we know the pids and
                 // can properly null things that are no longer referenced.
@@ -2250,6 +2249,7 @@
                         }
                     }
                     if (resetDns) {
+                        flushVmDnsCache();
                         if (VDBG) log("resetting DNS cache for " + iface);
                         try {
                             mNetd.flushInterfaceDnsCache(iface);
@@ -2416,9 +2416,10 @@
      * on the highest priority active net which this process requested.
      * If there aren't any, clear it out
      */
-    private void reassessPidDns(int myPid, boolean doBump)
+    private void reassessPidDns(int pid, boolean doBump)
     {
-        if (VDBG) log("reassessPidDns for pid " + myPid);
+        if (VDBG) log("reassessPidDns for pid " + pid);
+        Integer myPid = new Integer(pid);
         for(int i : mPriorityList) {
             if (mNetConfigs[i].isDefault()) {
                 continue;
@@ -2428,61 +2429,25 @@
                     !nt.isTeardownRequested()) {
                 LinkProperties p = nt.getLinkProperties();
                 if (p == null) continue;
-                List pids = mNetRequestersPids[i];
-                for (int j=0; j<pids.size(); j++) {
-                    Integer pid = (Integer)pids.get(j);
-                    if (pid.intValue() == myPid) {
-                        Collection<InetAddress> dnses = p.getDnses();
-                        writePidDns(dnses, myPid);
-                        if (doBump) {
-                            bumpDns();
-                        }
-                        return;
+                if (mNetRequestersPids[i].contains(myPid)) {
+                    try {
+                        mNetd.setDnsInterfaceForPid(p.getInterfaceName(), pid);
+                    } catch (Exception e) {
+                        Slog.e(TAG, "exception reasseses pid dns: " + e);
                     }
+                    return;
                 }
            }
         }
         // nothing found - delete
-        for (int i = 1; ; i++) {
-            String prop = "net.dns" + i + "." + myPid;
-            if (SystemProperties.get(prop).length() == 0) {
-                if (doBump) {
-                    bumpDns();
-                }
-                return;
-            }
-            SystemProperties.set(prop, "");
+        try {
+            mNetd.clearDnsInterfaceForPid(pid);
+        } catch (Exception e) {
+            Slog.e(TAG, "exception clear interface from pid: " + e);
         }
     }
 
-    // return true if results in a change
-    private boolean writePidDns(Collection <InetAddress> dnses, int pid) {
-        int j = 1;
-        boolean changed = false;
-        for (InetAddress dns : dnses) {
-            String dnsString = dns.getHostAddress();
-            if (changed || !dnsString.equals(SystemProperties.get("net.dns" + j + "." + pid))) {
-                changed = true;
-                SystemProperties.set("net.dns" + j + "." + pid, dns.getHostAddress());
-            }
-            j++;
-        }
-        return changed;
-    }
-
-    private void bumpDns() {
-        /*
-         * Bump the property that tells the name resolver library to reread
-         * the DNS server list from the properties.
-         */
-        String propVal = SystemProperties.get("net.dnschange");
-        int n = 0;
-        if (propVal.length() != 0) {
-            try {
-                n = Integer.parseInt(propVal);
-            } catch (NumberFormatException e) {}
-        }
-        SystemProperties.set("net.dnschange", "" + (n+1));
+    private void flushVmDnsCache() {
         /*
          * Tell the VMs to toss their DNS caches
          */
@@ -2501,56 +2466,34 @@
     }
 
     // Caller must grab mDnsLock.
-    private boolean updateDns(String network, String iface,
+    private void updateDnsLocked(String network, String iface,
             Collection<InetAddress> dnses, String domains) {
-        boolean changed = false;
         int last = 0;
         if (dnses.size() == 0 && mDefaultDns != null) {
-            ++last;
-            String value = mDefaultDns.getHostAddress();
-            if (!value.equals(SystemProperties.get("net.dns1"))) {
-                if (DBG) {
-                    loge("no dns provided for " + network + " - using " + value);
-                }
-                changed = true;
-                SystemProperties.set("net.dns1", value);
+            dnses = new ArrayList();
+            dnses.add(mDefaultDns);
+            if (DBG) {
+                loge("no dns provided for " + network + " - using " + mDefaultDns.getHostAddress());
             }
-        } else {
+        }
+
+        try {
+            mNetd.setDnsServersForInterface(iface, NetworkUtils.makeStrings(dnses), domains);
+            mNetd.setDefaultInterfaceForDns(iface);
             for (InetAddress dns : dnses) {
                 ++last;
                 String key = "net.dns" + last;
                 String value = dns.getHostAddress();
-                if (!changed && value.equals(SystemProperties.get(key))) {
-                    continue;
-                }
-                if (VDBG) {
-                    log("adding dns " + value + " for " + network);
-                }
-                changed = true;
                 SystemProperties.set(key, value);
             }
-        }
-        for (int i = last + 1; i <= mNumDnsEntries; ++i) {
-            String key = "net.dns" + i;
-            if (VDBG) log("erasing " + key);
-            changed = true;
-            SystemProperties.set(key, "");
-        }
-        mNumDnsEntries = last;
-        if (SystemProperties.get("net.dns.search").equals(domains) == false) {
-            SystemProperties.set("net.dns.search", domains);
-            changed = true;
-        }
-
-        if (changed) {
-            try {
-                mNetd.setDnsServersForInterface(iface, NetworkUtils.makeStrings(dnses), domains);
-                mNetd.setDefaultInterfaceForDns(iface);
-            } catch (Exception e) {
-                if (DBG) loge("exception setting default dns interface: " + e);
+            for (int i = last + 1; i <= mNumDnsEntries; ++i) {
+                String key = "net.dns" + i;
+                SystemProperties.set(key, "");
             }
+            mNumDnsEntries = last;
+        } catch (Exception e) {
+            if (DBG) loge("exception setting default dns interface: " + e);
         }
-        return changed;
     }
 
     private void handleDnsConfigurationChange(int netType) {
@@ -2560,12 +2503,11 @@
             LinkProperties p = nt.getLinkProperties();
             if (p == null) return;
             Collection<InetAddress> dnses = p.getDnses();
-            boolean changed = false;
             if (mNetConfigs[netType].isDefault()) {
                 String network = nt.getNetworkInfo().getTypeName();
                 synchronized (mDnsLock) {
                     if (!mDnsOverridden) {
-                        changed = updateDns(network, p.getInterfaceName(), dnses, p.getDomains());
+                        updateDnsLocked(network, p.getInterfaceName(), dnses, p.getDomains());
                     }
                 }
             } else {
@@ -2576,13 +2518,16 @@
                     if (DBG) loge("exception setting dns servers: " + e);
                 }
                 // set per-pid dns for attached secondary nets
-                List pids = mNetRequestersPids[netType];
-                for (int y=0; y< pids.size(); y++) {
-                    Integer pid = (Integer)pids.get(y);
-                    changed = writePidDns(dnses, pid.intValue());
+                List<Integer> pids = mNetRequestersPids[netType];
+                for (Integer pid : pids) {
+                    try {
+                        mNetd.setDnsInterfaceForPid(p.getInterfaceName(), pid);
+                    } catch (Exception e) {
+                        Slog.e(TAG, "exception setting interface for pid: " + e);
+                    }
                 }
             }
-            if (changed) bumpDns();
+            flushVmDnsCache();
         }
     }
 
@@ -2641,7 +2586,7 @@
         pw.increaseIndent();
         for (int net : mPriorityList) {
             String pidString = net + ": ";
-            for (Object pid : mNetRequestersPids[net]) {
+            for (Integer pid : mNetRequestersPids[net]) {
                 pidString = pidString + pid.toString() + ", ";
             }
             pw.println(pidString);
@@ -3351,14 +3296,10 @@
             String domains = buffer.toString().trim();
 
             // Apply DNS changes.
-            boolean changed = false;
             synchronized (mDnsLock) {
-                changed = updateDns("VPN", "VPN", addresses, domains);
+                updateDnsLocked("VPN", "VPN", addresses, domains);
                 mDnsOverridden = true;
             }
-            if (changed) {
-                bumpDns();
-            }
 
             // Temporarily disable the default proxy.
             synchronized (mDefaultProxyLock) {
diff --git a/services/java/com/android/server/DevicePolicyManagerService.java b/services/java/com/android/server/DevicePolicyManagerService.java
index 6a62809..18b4ec1 100644
--- a/services/java/com/android/server/DevicePolicyManagerService.java
+++ b/services/java/com/android/server/DevicePolicyManagerService.java
@@ -1889,7 +1889,7 @@
             mHandler.post(new Runnable() {
                 public void run() {
                     try {
-                        ActivityManagerNative.getDefault().switchUser(0);
+                        ActivityManagerNative.getDefault().switchUser(UserHandle.USER_OWNER);
                         ((UserManager) mContext.getSystemService(Context.USER_SERVICE))
                                 .removeUser(userHandle);
                     } catch (RemoteException re) {
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java
index 9606cf1..bcb7cb7 100644
--- a/services/java/com/android/server/LocationManagerService.java
+++ b/services/java/com/android/server/LocationManagerService.java
@@ -92,7 +92,7 @@
  */
 public class LocationManagerService extends ILocationManager.Stub {
     private static final String TAG = "LocationManagerService";
-    public static final boolean D = false;
+    public static final boolean D = Log.isLoggable(TAG, Log.DEBUG);
 
     private static final String WAKELOCK_KEY = TAG;
     private static final String THREAD_NAME = TAG;
@@ -221,6 +221,16 @@
             mBlacklist.init();
             mGeofenceManager = new GeofenceManager(mContext, mBlacklist);
 
+            // Monitor for app ops mode changes.
+            AppOpsManager.Callback callback = new AppOpsManager.Callback() {
+                public void opChanged(int op, String packageName) {
+                    synchronized (mLock) {
+                        applyAllProviderRequirementsLocked();
+                    }
+                }
+            };
+            mAppOps.startWatchingMode(AppOpsManager.OP_COARSE_LOCATION, null, callback);
+
             // prepare providers
             loadProvidersLocked();
             updateProvidersLocked();
@@ -365,7 +375,7 @@
                 mContext,
                 LocationManager.NETWORK_PROVIDER,
                 NETWORK_LOCATION_SERVICE_ACTION,
-                providerPackageNames, mLocationHandler, mCurrentUserId);
+                providerPackageNames, mLocationHandler);
         if (networkProvider != null) {
             mRealProviders.put(LocationManager.NETWORK_PROVIDER, networkProvider);
             mProxyProviders.add(networkProvider);
@@ -379,7 +389,7 @@
                 mContext,
                 LocationManager.FUSED_PROVIDER,
                 FUSED_LOCATION_SERVICE_ACTION,
-                providerPackageNames, mLocationHandler, mCurrentUserId);
+                providerPackageNames, mLocationHandler);
         if (fusedLocationProvider != null) {
             addProviderLocked(fusedLocationProvider);
             mProxyProviders.add(fusedLocationProvider);
@@ -392,7 +402,7 @@
 
         // bind to geocoder provider
         mGeocodeProvider = GeocoderProxy.createAndBind(mContext, providerPackageNames,
-                mLocationHandler, mCurrentUserId);
+                mLocationHandler);
         if (mGeocodeProvider == null) {
             Slog.e(TAG,  "no geocoder provider found");
         }
@@ -404,11 +414,11 @@
      */
     private void switchUser(int userId) {
         mBlacklist.switchUser(userId);
+        mLocationHandler.removeMessages(MSG_LOCATION_CHANGED);
         synchronized (mLock) {
             mLastLocation.clear();
             for (LocationProviderInterface p : mProviders) {
                 updateProviderListenersLocked(p.getName(), false, mCurrentUserId);
-                p.switchUser(userId);
             }
             mCurrentUserId = userId;
             updateProvidersLocked();
@@ -667,11 +677,15 @@
         mProvidersByName.remove(provider.getName());
     }
 
-
-    private boolean isAllowedBySettingsLocked(String provider, int userId) {
-        if (userId != mCurrentUserId) {
-            return false;
-        }
+    /**
+     * Returns "true" if access to the specified location provider is allowed by the current
+     * user's settings. Access to all location providers is forbidden to non-location-provider
+     * processes belonging to background users.
+     *
+     * @param provider the name of the location provider
+     * @return
+     */
+    private boolean isAllowedByCurrentUserSettingsLocked(String provider) {
         if (mEnabledProviders.contains(provider)) {
             return true;
         }
@@ -685,6 +699,22 @@
     }
 
     /**
+     * Returns "true" if access to the specified location provider is allowed by the specified
+     * user's settings. Access to all location providers is forbidden to non-location-provider
+     * processes belonging to background users.
+     *
+     * @param provider the name of the location provider
+     * @param uid the requestor's UID
+     * @return
+     */
+    private boolean isAllowedByUserSettingsLocked(String provider, int uid) {
+        if (UserHandle.getUserId(uid) != mCurrentUserId && !isUidALocationProvider(uid)) {
+            return false;
+        }
+        return isAllowedByCurrentUserSettingsLocked(provider);
+    }
+
+    /**
      * Returns the permission string associated with the specified resolution level.
      *
      * @param resolutionLevel the resolution level
@@ -862,7 +892,7 @@
     public List<String> getProviders(Criteria criteria, boolean enabledOnly) {
         int allowedResolutionLevel = getCallerAllowedResolutionLevel();
         ArrayList<String> out;
-        int callingUserId = UserHandle.getCallingUserId();
+        int uid = Binder.getCallingUid();;
         long identity = Binder.clearCallingIdentity();
         try {
             synchronized (mLock) {
@@ -873,7 +903,7 @@
                         continue;
                     }
                     if (allowedResolutionLevel >= getMinimumResolutionLevelForProviderUse(name)) {
-                        if (enabledOnly && !isAllowedBySettingsLocked(name, callingUserId)) {
+                        if (enabledOnly && !isAllowedByUserSettingsLocked(name, uid)) {
                             continue;
                         }
                         if (criteria != null && !LocationProvider.propertiesMeetCriteria(
@@ -949,7 +979,7 @@
             LocationProviderInterface p = mProviders.get(i);
             boolean isEnabled = p.isEnabled();
             String name = p.getName();
-            boolean shouldBeEnabled = isAllowedBySettingsLocked(name, mCurrentUserId);
+            boolean shouldBeEnabled = isAllowedByCurrentUserSettingsLocked(name);
             if (isEnabled && !shouldBeEnabled) {
                 updateProviderListenersLocked(name, false, mCurrentUserId);
                 changesMade = true;
@@ -1260,7 +1290,7 @@
             oldRecord.disposeLocked(false);
         }
 
-        boolean isProviderEnabled = isAllowedBySettingsLocked(name, UserHandle.getUserId(uid));
+        boolean isProviderEnabled = isAllowedByUserSettingsLocked(name, uid);
         if (isProviderEnabled) {
             applyRequirementsLocked(name);
         } else {
@@ -1317,7 +1347,7 @@
         // update provider
         for (String provider : providers) {
             // If provider is already disabled, don't need to do anything
-            if (!isAllowedBySettingsLocked(provider, mCurrentUserId)) {
+            if (!isAllowedByCurrentUserSettingsLocked(provider)) {
                 continue;
             }
 
@@ -1325,6 +1355,17 @@
         }
     }
 
+    private void applyAllProviderRequirementsLocked() {
+        for (LocationProviderInterface p : mProviders) {
+            // If provider is already disabled, don't need to do anything
+            if (!isAllowedByCurrentUserSettingsLocked(p.getName())) {
+                continue;
+            }
+
+            applyRequirementsLocked(p.getName());
+        }
+    }
+
     @Override
     public Location getLastLocation(LocationRequest request, String packageName) {
         if (D) Log.d(TAG, "getLastLocation: " + request);
@@ -1358,7 +1399,7 @@
                 LocationProviderInterface provider = mProvidersByName.get(name);
                 if (provider == null) return null;
 
-                if (!isAllowedBySettingsLocked(name, mCurrentUserId)) return null;
+                if (!isAllowedByUserSettingsLocked(name, uid)) return null;
 
                 Location location = mLastLocation.get(name);
                 if (location == null) {
@@ -1439,7 +1480,7 @@
         final int uid = Binder.getCallingUid();
         final long ident = Binder.clearCallingIdentity();
         try {
-            if (checkLocationAccess(uid, packageName, allowedResolutionLevel)) {
+            if (!checkLocationAccess(uid, packageName, allowedResolutionLevel)) {
                 return false;
             }
         } finally {
@@ -1532,19 +1573,39 @@
                 provider);
         if (LocationManager.FUSED_PROVIDER.equals(provider)) return false;
 
+        int uid = Binder.getCallingUid();
         long identity = Binder.clearCallingIdentity();
         try {
             synchronized (mLock) {
                 LocationProviderInterface p = mProvidersByName.get(provider);
                 if (p == null) return false;
 
-                return isAllowedBySettingsLocked(provider, mCurrentUserId);
+                return isAllowedByUserSettingsLocked(provider, uid);
             }
         } finally {
             Binder.restoreCallingIdentity(identity);
         }
     }
 
+    /**
+     * Returns "true" if the UID belongs to a bound location provider.
+     *
+     * @param uid the uid
+     * @return true if uid belongs to a bound location provider
+     */
+    private boolean isUidALocationProvider(int uid) {
+        if (uid == Process.SYSTEM_UID) {
+            return true;
+        }
+        if (mGeocodeProvider != null) {
+            if (doesPackageHaveUid(uid, mGeocodeProvider.getConnectedPackageName())) return true;
+        }
+        for (LocationProviderProxy proxy : mProxyProviders) {
+            if (doesPackageHaveUid(uid, proxy.getConnectedPackageName())) return true;
+        }
+        return false;
+    }
+
     private void checkCallerIsProvider() {
         if (mContext.checkCallingOrSelfPermission(INSTALL_LOCATION_PROVIDER)
                 == PackageManager.PERMISSION_GRANTED) {
@@ -1558,14 +1619,10 @@
         // also allow providers with a UID matching the
         // currently bound package name
 
-        int uid = Binder.getCallingUid();
+        if (isUidALocationProvider(Binder.getCallingUid())) {
+            return;
+        }
 
-        if (mGeocodeProvider != null) {
-            if (doesPackageHaveUid(uid, mGeocodeProvider.getConnectedPackageName())) return;
-        }
-        for (LocationProviderProxy proxy : mProxyProviders) {
-            if (doesPackageHaveUid(uid, proxy.getConnectedPackageName())) return;
-        }
         throw new SecurityException("need INSTALL_LOCATION_PROVIDER permission, " +
                 "or UID of a currently bound location provider");
     }
@@ -1811,13 +1868,12 @@
             myLocation.setIsFromMockProvider(true);
         }
 
-        if (!passive) {
-            // notify passive provider of the new location
-            mPassiveProvider.updateLocation(myLocation);
-        }
-
         synchronized (mLock) {
-            if (isAllowedBySettingsLocked(provider, mCurrentUserId)) {
+            if (isAllowedByCurrentUserSettingsLocked(provider)) {
+                if (!passive) {
+                    // notify passive provider of the new location
+                    mPassiveProvider.updateLocation(myLocation);
+                }
                 handleLocationChangedLocked(myLocation, passive);
             }
         }
diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java
index 0a54593..29e4c43 100644
--- a/services/java/com/android/server/NetworkManagementService.java
+++ b/services/java/com/android/server/NetworkManagementService.java
@@ -1468,6 +1468,28 @@
     }
 
     @Override
+    public void setDnsInterfaceForPid(String iface, int pid) throws IllegalStateException {
+        mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+        try {
+            mConnector.execute("resolver", "setifaceforpid", iface, pid);
+        } catch (NativeDaemonConnectorException e) {
+            throw new IllegalStateException(
+                    "Error communicating with native deamon to set interface for pid" + iface, e);
+        }
+    }
+
+    @Override
+    public void clearDnsInterfaceForPid(int pid) throws IllegalStateException {
+        mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+        try {
+            mConnector.execute("resolver", "clearifaceforpid", pid);
+        } catch (NativeDaemonConnectorException e) {
+            throw new IllegalStateException(
+                    "Error communicating with native deamon to clear interface for pid " + pid, e);
+        }
+    }
+
+    /** {@inheritDoc} */
     public void monitor() {
         if (mConnector != null) {
             mConnector.monitor();
diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java
index d121653..13bf39f 100644
--- a/services/java/com/android/server/NotificationManagerService.java
+++ b/services/java/com/android/server/NotificationManagerService.java
@@ -49,6 +49,8 @@
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
+import android.os.Parcel;
+import android.os.Parcelable;
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -77,9 +79,12 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
 
 import libcore.io.IoUtils;
 
@@ -169,6 +174,96 @@
     private static final String TAG_PACKAGE = "package";
     private static final String ATTR_NAME = "name";
 
+    private static class Archive {
+        static final int BUFFER_SIZE = 1000;
+        ArrayDeque<StatusBarNotification> mBuffer = new ArrayDeque<StatusBarNotification>(BUFFER_SIZE);
+
+        public Archive() {
+
+        }
+        public void record(StatusBarNotification nr) {
+            if (mBuffer.size() == BUFFER_SIZE) {
+                mBuffer.removeFirst();
+            }
+            mBuffer.addLast(nr);
+        }
+
+        public void clear() {
+            mBuffer.clear();
+        }
+
+        public Iterator<StatusBarNotification> descendingIterator() {
+            return mBuffer.descendingIterator();
+        }
+        public Iterator<StatusBarNotification> ascendingIterator() {
+            return mBuffer.iterator();
+        }
+        public Iterator<StatusBarNotification> filter(
+                final Iterator<StatusBarNotification> iter, final String pkg, final int userId) {
+            return new Iterator<StatusBarNotification>() {
+                StatusBarNotification mNext = findNext();
+
+                private StatusBarNotification findNext() {
+                    while (iter.hasNext()) {
+                        StatusBarNotification nr = iter.next();
+                        if ((pkg == null || nr.pkg == pkg)
+                                && (userId == UserHandle.USER_ALL || nr.getUserId() == userId)) {
+                            return nr;
+                        }
+                    }
+                    return null;
+                }
+
+                @Override
+                public boolean hasNext() {
+                    return mNext == null;
+                }
+
+                @Override
+                public StatusBarNotification next() {
+                    StatusBarNotification next = mNext;
+                    if (next == null) {
+                        throw new NoSuchElementException();
+                    }
+                    mNext = findNext();
+                    return next;
+                }
+
+                @Override
+                public void remove() {
+                    iter.remove();
+                }
+            };
+        }
+
+        public StatusBarNotification[] getArray(int count) {
+            if (count == 0) count = Archive.BUFFER_SIZE;
+            final StatusBarNotification[] a
+                    = new StatusBarNotification[Math.min(count, mBuffer.size())];
+            Iterator<StatusBarNotification> iter = descendingIterator();
+            int i=0;
+            while (iter.hasNext() && i < count) {
+                a[i++] = iter.next();
+            }
+            return a;
+        }
+
+        public StatusBarNotification[] getArray(int count, String pkg, int userId) {
+            if (count == 0) count = Archive.BUFFER_SIZE;
+            final StatusBarNotification[] a
+                    = new StatusBarNotification[Math.min(count, mBuffer.size())];
+            Iterator<StatusBarNotification> iter = filter(descendingIterator(), pkg, userId);
+            int i=0;
+            while (iter.hasNext() && i < count) {
+                a[i++] = iter.next();
+            }
+            return a;
+        }
+
+    }
+
+    Archive mArchive = new Archive();
+
     private void loadBlockDb() {
         synchronized(mBlockedPackages) {
             if (mPolicyFile == null) {
@@ -275,44 +370,68 @@
         }
     }
 
-    private static final class NotificationRecord
+    public StatusBarNotification[] getActiveNotifications(String callingPkg) {
+        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.ACCESS_NOTIFICATIONS,
+                "NotificationManagerService.getActiveNotifications");
+
+        StatusBarNotification[] tmp = null;
+        int uid = Binder.getCallingUid();
+
+        if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_NOTIFICATIONS, uid, callingPkg)
+                == AppOpsManager.MODE_ALLOWED) {
+            synchronized (mNotificationList) {
+                tmp = new StatusBarNotification[mNotificationList.size()];
+                final int N = mNotificationList.size();
+                for (int i=0; i<N; i++) {
+                    tmp[i] = mNotificationList.get(i).sbn;
+                }
+            }
+        }
+        return tmp;
+    }
+
+    public StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count) {
+        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.ACCESS_NOTIFICATIONS,
+                "NotificationManagerService.getHistoricalNotifications");
+
+        StatusBarNotification[] tmp = null;
+        int uid = Binder.getCallingUid();
+
+        if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_NOTIFICATIONS, uid, callingPkg)
+                == AppOpsManager.MODE_ALLOWED) {
+            synchronized (mArchive) {
+                tmp = mArchive.getArray(count);
+            }
+        }
+        return tmp;
+    }
+
+    public static final class NotificationRecord
     {
-        final String pkg;
-        final String basePkg;
-        final String tag;
-        final int id;
-        final int uid;
-        final int initialPid;
-        final int userId;
-        final Notification notification;
-        final int score;
+        final StatusBarNotification sbn;
         IBinder statusBarKey;
 
-        NotificationRecord(String pkg, String basePkg, String tag, int id, int uid, int initialPid,
-                int userId, int score, Notification notification)
+        NotificationRecord(StatusBarNotification sbn)
         {
-            this.pkg = pkg;
-            this.basePkg = basePkg;
-            this.tag = tag;
-            this.id = id;
-            this.uid = uid;
-            this.initialPid = initialPid;
-            this.userId = userId;
-            this.score = score;
-            this.notification = notification;
+            this.sbn = sbn;
         }
 
+        public Notification getNotification() { return sbn.notification; }
+        public int getFlags() { return sbn.notification.flags; }
+        public int getUserId() { return sbn.getUserId(); }
+
         void dump(PrintWriter pw, String prefix, Context baseContext) {
+            final Notification notification = sbn.notification;
             pw.println(prefix + this);
             pw.println(prefix + "  icon=0x" + Integer.toHexString(notification.icon)
-                    + " / " + idDebugString(baseContext, this.pkg, notification.icon));
+                    + " / " + idDebugString(baseContext, this.sbn.pkg, notification.icon));
             pw.println(prefix + "  pri=" + notification.priority);
-            pw.println(prefix + "  score=" + this.score);
+            pw.println(prefix + "  score=" + this.sbn.score);
             pw.println(prefix + "  contentIntent=" + notification.contentIntent);
             pw.println(prefix + "  deleteIntent=" + notification.deleteIntent);
             pw.println(prefix + "  tickerText=" + notification.tickerText);
             pw.println(prefix + "  contentView=" + notification.contentView);
-            pw.println(prefix + "  uid=" + uid + " userId=" + userId);
+            pw.println(prefix + "  uid=" + this.sbn.uid + " userId=" + this.sbn.getUserId());
             pw.println(prefix + "  defaults=0x" + Integer.toHexString(notification.defaults));
             pw.println(prefix + "  flags=0x" + Integer.toHexString(notification.flags));
             pw.println(prefix + "  sound=" + notification.sound);
@@ -323,15 +442,12 @@
         }
 
         @Override
-        public final String toString()
-        {
-            return "NotificationRecord{"
-                + Integer.toHexString(System.identityHashCode(this))
-                + " pkg=" + pkg
-                + " id=" + Integer.toHexString(id)
-                + " tag=" + tag 
-                + " score=" + score
-                + "}";
+        public final String toString() {
+            return String.format(
+                    "NotificationRecord(0x%08x: pkg=%s user=%s id=%d tag=%s score=%d: %s)",
+                    System.identityHashCode(this),
+                    this.sbn.pkg, this.sbn.user, this.sbn.id, this.sbn.tag,
+                    this.sbn.score, this.sbn.notification);
         }
     }
 
@@ -916,7 +1032,7 @@
                 final int N = mNotificationList.size();
                 for (int i=0; i<N; i++) {
                     final NotificationRecord r = mNotificationList.get(i);
-                    if (r.pkg.equals(pkg) && r.userId == userId) {
+                    if (r.sbn.pkg.equals(pkg) && r.sbn.getUserId() == userId) {
                         count++;
                         if (count >= MAX_PACKAGE_NOTIFICATIONS) {
                             Slog.e(TAG, "Package has already posted " + count
@@ -986,10 +1102,9 @@
         final boolean canInterrupt = (score >= SCORE_INTERRUPTION_THRESHOLD);
 
         synchronized (mNotificationList) {
-            NotificationRecord r = new NotificationRecord(pkg, basePkg, tag, id,
-                    callingUid, callingPid, userId,
-                    score,
-                    notification);
+            final StatusBarNotification n = new StatusBarNotification(
+                    pkg, id, tag, callingUid, callingPid, score, notification, user);
+            NotificationRecord r = new NotificationRecord(n);
             NotificationRecord old = null;
 
             int index = indexOfNotificationLocked(pkg, tag, id, userId);
@@ -1001,7 +1116,7 @@
                 // Make sure we don't lose the foreground service state.
                 if (old != null) {
                     notification.flags |=
-                        old.notification.flags&Notification.FLAG_FOREGROUND_SERVICE;
+                        old.getNotification().flags&Notification.FLAG_FOREGROUND_SERVICE;
                 }
             }
 
@@ -1021,8 +1136,6 @@
             }
 
             if (notification.icon != 0) {
-                final StatusBarNotification n = new StatusBarNotification(
-                        pkg, id, tag, r.uid, r.initialPid, score, notification, user);
                 if (old != null && old.statusBarKey != null) {
                     r.statusBarKey = old.statusBarKey;
                     long identity = Binder.clearCallingIdentity();
@@ -1049,6 +1162,9 @@
                 if (currentUser == userId) {
                     sendAccessibilityEvent(notification, pkg);
                 }
+
+                // finally, keep some of this information around for later use
+                mArchive.record(n);
             } else {
                 Slog.e(TAG, "Ignoring notification with icon==0: " + notification);
                 if (old != null && old.statusBarKey != null) {
@@ -1060,14 +1176,15 @@
                         Binder.restoreCallingIdentity(identity);
                     }
                 }
+                return; // do not play sounds, show lights, etc. for invalid notifications
             }
 
             // If we're not supposed to beep, vibrate, etc. then don't.
             if (((mDisabledNotifications & StatusBarManager.DISABLE_NOTIFICATION_ALERTS) == 0)
                     && (!(old != null
                         && (notification.flags & Notification.FLAG_ONLY_ALERT_ONCE) != 0 ))
-                    && (r.userId == UserHandle.USER_ALL ||
-                        (r.userId == userId && r.userId == currentUser))
+                    && (r.getUserId() == UserHandle.USER_ALL ||
+                        (r.getUserId() == userId && r.getUserId() == currentUser))
                     && canInterrupt
                     && mSystemReady) {
 
@@ -1143,7 +1260,7 @@
                         // does not have the VIBRATE permission.
                         long identity = Binder.clearCallingIdentity();
                         try {
-                            mVibrator.vibrate(r.uid, r.basePkg,
+                            mVibrator.vibrate(r.sbn.uid, r.sbn.basePkg,
                                 useDefaultVibrate ? mDefaultVibrationPattern
                                     : mFallbackVibrationPattern,
                                 ((notification.flags & Notification.FLAG_INSISTENT) != 0) ? 0: -1);
@@ -1152,14 +1269,12 @@
                         }
                     } else if (notification.vibrate.length > 1) {
                         // If you want your own vibration pattern, you need the VIBRATE permission
-                        mVibrator.vibrate(r.uid, r.basePkg, notification.vibrate,
+                        mVibrator.vibrate(r.sbn.uid, r.sbn.basePkg, notification.vibrate,
                             ((notification.flags & Notification.FLAG_INSISTENT) != 0) ? 0: -1);
                     }
                 }
             }
 
-            // this option doesn't shut off the lights
-
             // light
             // the most recent thing gets the light
             mLights.remove(old);
@@ -1174,7 +1289,7 @@
                 updateLightsLocked();
             } else {
                 if (old != null
-                        && ((old.notification.flags & Notification.FLAG_SHOW_LIGHTS) != 0)) {
+                        && ((old.getFlags() & Notification.FLAG_SHOW_LIGHTS) != 0)) {
                     updateLightsLocked();
                 }
             }
@@ -1205,19 +1320,19 @@
     private void cancelNotificationLocked(NotificationRecord r, boolean sendDelete) {
         // tell the app
         if (sendDelete) {
-            if (r.notification.deleteIntent != null) {
+            if (r.getNotification().deleteIntent != null) {
                 try {
-                    r.notification.deleteIntent.send();
+                    r.getNotification().deleteIntent.send();
                 } catch (PendingIntent.CanceledException ex) {
                     // do nothing - there's no relevant way to recover, and
                     //     no reason to let this propagate
-                    Slog.w(TAG, "canceled PendingIntent for " + r.pkg, ex);
+                    Slog.w(TAG, "canceled PendingIntent for " + r.sbn.pkg, ex);
                 }
             }
         }
 
         // status bar
-        if (r.notification.icon != 0) {
+        if (r.getNotification().icon != 0) {
             long identity = Binder.clearCallingIdentity();
             try {
                 mStatusBar.removeNotification(r.statusBarKey);
@@ -1276,10 +1391,10 @@
             if (index >= 0) {
                 NotificationRecord r = mNotificationList.get(index);
 
-                if ((r.notification.flags & mustHaveFlags) != mustHaveFlags) {
+                if ((r.getNotification().flags & mustHaveFlags) != mustHaveFlags) {
                     return;
                 }
-                if ((r.notification.flags & mustNotHaveFlags) != 0) {
+                if ((r.getNotification().flags & mustNotHaveFlags) != 0) {
                     return;
                 }
 
@@ -1300,9 +1415,9 @@
                 // looking for USER_ALL notifications? match everything
                    userId == UserHandle.USER_ALL
                 // a notification sent to USER_ALL matches any query
-                || r.userId == UserHandle.USER_ALL
+                || r.getUserId() == UserHandle.USER_ALL
                 // an exact user match
-                || r.userId == userId;
+                || r.getUserId() == userId;
     }
 
     /**
@@ -1323,16 +1438,16 @@
                     continue;
                 }
                 // Don't remove notifications to all, if there's no package name specified
-                if (r.userId == UserHandle.USER_ALL && pkg == null) {
+                if (r.getUserId() == UserHandle.USER_ALL && pkg == null) {
                     continue;
                 }
-                if ((r.notification.flags & mustHaveFlags) != mustHaveFlags) {
+                if ((r.getFlags() & mustHaveFlags) != mustHaveFlags) {
                     continue;
                 }
-                if ((r.notification.flags & mustNotHaveFlags) != 0) {
+                if ((r.getFlags() & mustNotHaveFlags) != 0) {
                     continue;
                 }
-                if (pkg != null && !r.pkg.equals(pkg)) {
+                if (pkg != null && !r.sbn.pkg.equals(pkg)) {
                     continue;
                 }
                 canceledSomething = true;
@@ -1405,7 +1520,7 @@
                     continue;
                 }
 
-                if ((r.notification.flags & (Notification.FLAG_ONGOING_EVENT
+                if ((r.getFlags() & (Notification.FLAG_ONGOING_EVENT
                                 | Notification.FLAG_NO_CLEAR)) == 0) {
                     mNotificationList.remove(i);
                     cancelNotificationLocked(r, true);
@@ -1432,10 +1547,11 @@
         if (mLedNotification == null || mInCall || mScreenOn) {
             mNotificationLight.turnOff();
         } else {
-            int ledARGB = mLedNotification.notification.ledARGB;
-            int ledOnMS = mLedNotification.notification.ledOnMS;
-            int ledOffMS = mLedNotification.notification.ledOffMS;
-            if ((mLedNotification.notification.defaults & Notification.DEFAULT_LIGHTS) != 0) {
+            final Notification ledno = mLedNotification.sbn.notification;
+            int ledARGB = ledno.ledARGB;
+            int ledOnMS = ledno.ledOnMS;
+            int ledOffMS = ledno.ledOffMS;
+            if ((ledno.defaults & Notification.DEFAULT_LIGHTS) != 0) {
                 ledARGB = mDefaultNotificationColor;
                 ledOnMS = mDefaultNotificationLedOn;
                 ledOffMS = mDefaultNotificationLedOff;
@@ -1455,19 +1571,19 @@
         final int len = list.size();
         for (int i=0; i<len; i++) {
             NotificationRecord r = list.get(i);
-            if (!notificationMatchesUserId(r, userId) || r.id != id) {
+            if (!notificationMatchesUserId(r, userId) || r.sbn.id != id) {
                 continue;
             }
             if (tag == null) {
-                if (r.tag != null) {
+                if (r.sbn.tag != null) {
                     continue;
                 }
             } else {
-                if (!tag.equals(r.tag)) {
+                if (!tag.equals(r.sbn.tag)) {
                     continue;
                 }
             }
-            if (r.pkg.equals(pkg)) {
+            if (r.sbn.pkg.equals(pkg)) {
                 return i;
             }
         }
diff --git a/services/java/com/android/server/ServiceWatcher.java b/services/java/com/android/server/ServiceWatcher.java
index bca7faa..6078d8a 100644
--- a/services/java/com/android/server/ServiceWatcher.java
+++ b/services/java/com/android/server/ServiceWatcher.java
@@ -16,9 +16,11 @@
 
 package com.android.server;
 
+import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
@@ -44,6 +46,7 @@
 public class ServiceWatcher implements ServiceConnection {
     private static final boolean D = false;
     public static final String EXTRA_SERVICE_VERSION = "serviceVersion";
+    public static final String EXTRA_SERVICE_IS_MULTIUSER = "serviceIsMultiuser";
 
     private final String mTag;
     private final Context mContext;
@@ -59,7 +62,11 @@
     private IBinder mBinder;   // connected service
     private String mPackageName;  // current best package
     private int mVersion = Integer.MIN_VALUE;  // current best version
-    private int mCurrentUserId;
+    /**
+     * Whether the currently-connected service is multiuser-aware. This can change at run-time
+     * when switching from one version of a service to another.
+     */
+    private boolean mIsMultiuser = false;
 
     public static ArrayList<HashSet<Signature>> getSignatureSets(Context context,
             List<String> initialPackageNames) {
@@ -80,15 +87,13 @@
     }
 
     public ServiceWatcher(Context context, String logTag, String action,
-            List<String> initialPackageNames, Runnable newServiceWork, Handler handler, int userId) {
+            List<String> initialPackageNames, Runnable newServiceWork, Handler handler) {
         mContext = context;
         mTag = logTag;
         mAction = action;
         mPm = mContext.getPackageManager();
         mNewServiceWork = newServiceWork;
         mHandler = handler;
-        mCurrentUserId = userId;
-
         mSignatureSets = getSignatureSets(context, initialPackageNames);
     }
 
@@ -97,7 +102,22 @@
             if (!bindBestPackageLocked(null)) return false;
         }
 
+        // listen for user change
+        IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(Intent.ACTION_USER_SWITCHED);
+        mContext.registerReceiverAsUser(new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                String action = intent.getAction();
+                if (Intent.ACTION_USER_SWITCHED.equals(action)) {
+                    switchUser();
+                }
+            }
+        }, UserHandle.ALL, intentFilter, null, mHandler);
+
+        // listen for relevant package changes
         mPackageMonitor.register(mContext, null, UserHandle.ALL, true);
+
         return true;
     }
 
@@ -114,9 +134,10 @@
             intent.setPackage(justCheckThisPackage);
         }
         List<ResolveInfo> rInfos = mPm.queryIntentServicesAsUser(new Intent(mAction),
-                PackageManager.GET_META_DATA, mCurrentUserId);
+                PackageManager.GET_META_DATA, UserHandle.USER_OWNER);
         int bestVersion = Integer.MIN_VALUE;
         String bestPackage = null;
+        boolean bestIsMultiuser = false;
         for (ResolveInfo rInfo : rInfos) {
             String packageName = rInfo.serviceInfo.packageName;
 
@@ -134,25 +155,30 @@
                 continue;
             }
 
-            // check version
-            int version = 0;
+            // check metadata
+            int version = Integer.MIN_VALUE;
+            boolean isMultiuser = false;
             if (rInfo.serviceInfo.metaData != null) {
-                version = rInfo.serviceInfo.metaData.getInt(EXTRA_SERVICE_VERSION, 0);
+                version = rInfo.serviceInfo.metaData.getInt(EXTRA_SERVICE_VERSION,
+                        Integer.MIN_VALUE);
+                isMultiuser = rInfo.serviceInfo.metaData.getBoolean(EXTRA_SERVICE_IS_MULTIUSER);
             }
 
             if (version > mVersion) {
                 bestVersion = version;
                 bestPackage = packageName;
+                bestIsMultiuser = isMultiuser;
             }
         }
 
         if (D) Log.d(mTag, String.format("bindBestPackage for %s : %s found %d, %s", mAction,
                 (justCheckThisPackage == null ? "" : "(" + justCheckThisPackage + ") "),
                 rInfos.size(),
-                (bestPackage == null ? "no new best package" : "new best packge: " + bestPackage)));
+                (bestPackage == null ? "no new best package" : "new best package: "
+                + bestPackage)));
 
         if (bestPackage != null) {
-            bindToPackageLocked(bestPackage, bestVersion);
+            bindToPackageLocked(bestPackage, bestVersion, bestIsMultiuser);
             return true;
         }
         return false;
@@ -163,21 +189,24 @@
         pkg = mPackageName;
         mPackageName = null;
         mVersion = Integer.MIN_VALUE;
+        mIsMultiuser = false;
         if (pkg != null) {
             if (D) Log.d(mTag, "unbinding " + pkg);
             mContext.unbindService(this);
         }
     }
 
-    private void bindToPackageLocked(String packageName, int version) {
+    private void bindToPackageLocked(String packageName, int version, boolean isMultiuser) {
         unbindLocked();
         Intent intent = new Intent(mAction);
         intent.setPackage(packageName);
         mPackageName = packageName;
         mVersion = version;
-        if (D) Log.d(mTag, "binding " + packageName + " (version " + version + ")");
+        mIsMultiuser = isMultiuser;
+        if (D) Log.d(mTag, "binding " + packageName + " (version " + version + ") ("
+                + (isMultiuser ? "multi" : "single") + "-user)");
         mContext.bindServiceAsUser(intent, this, Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND
-                | Context.BIND_NOT_VISIBLE, new UserHandle(mCurrentUserId));
+                | Context.BIND_NOT_VISIBLE, mIsMultiuser ? UserHandle.OWNER : UserHandle.CURRENT);
     }
 
     public static boolean isSignatureMatch(Signature[] signatures,
@@ -290,11 +319,12 @@
         }
     }
 
-    public void switchUser(int userId) {
+    public void switchUser() {
         synchronized (mLock) {
-            unbindLocked();
-            mCurrentUserId = userId;
-            bindBestPackageLocked(null);
+            if (!mIsMultiuser) {
+                unbindLocked();
+                bindBestPackageLocked(null);
+            }
         }
     }
 }
diff --git a/services/java/com/android/server/VibratorService.java b/services/java/com/android/server/VibratorService.java
index 9065525..21d3111 100644
--- a/services/java/com/android/server/VibratorService.java
+++ b/services/java/com/android/server/VibratorService.java
@@ -466,7 +466,7 @@
         //synchronized (mInputDeviceVibrators) {
         //    return !mInputDeviceVibrators.isEmpty() || vibratorExists();
         //}
-        return true || vibratorExists();
+        return vibratorExists();
     }
 
     private void doVibratorOn(long millis, int uid) {
diff --git a/services/java/com/android/server/accessibility/AccessibilityInputFilter.java b/services/java/com/android/server/accessibility/AccessibilityInputFilter.java
index 9eb6834..179db12 100644
--- a/services/java/com/android/server/accessibility/AccessibilityInputFilter.java
+++ b/services/java/com/android/server/accessibility/AccessibilityInputFilter.java
@@ -41,8 +41,6 @@
 
     private static final boolean DEBUG = false;
 
-    private static final int UNDEFINED_DEVICE_ID = -1;
-
     /**
      * Flag for enabling the screen magnification feature.
      *
@@ -89,11 +87,17 @@
     private int mEnabledFeatures;
 
     private TouchExplorer mTouchExplorer;
+
     private ScreenMagnifier mScreenMagnifier;
+
     private EventStreamTransformation mEventHandler;
 
     private MotionEventHolder mEventQueue;
 
+    private boolean mMotionEventSequenceStarted;
+
+    private boolean mHoverEventSequenceStarted;
+
     AccessibilityInputFilter(Context context, AccessibilityManagerService service) {
         super(context.getMainLooper());
         mContext = context;
@@ -138,17 +142,46 @@
             return;
         }
         if ((policyFlags & WindowManagerPolicy.FLAG_PASS_TO_USER) == 0) {
+            mMotionEventSequenceStarted = false;
+            mHoverEventSequenceStarted = false;
             mEventHandler.clear();
             super.onInputEvent(event, policyFlags);
             return;
         }
         final int deviceId = event.getDeviceId();
         if (mCurrentDeviceId != deviceId) {
-            if (mCurrentDeviceId != UNDEFINED_DEVICE_ID) {
-                mEventHandler.clear();
-            }
+            mMotionEventSequenceStarted = false;
+            mHoverEventSequenceStarted = false;
+            mEventHandler.clear();
             mCurrentDeviceId = deviceId;
         }
+        if (mCurrentDeviceId < 0) {
+            super.onInputEvent(event, policyFlags);
+            return;
+        }
+        // We do not handle scroll events.
+        MotionEvent motionEvent = (MotionEvent) event;
+        if (motionEvent.getActionMasked() == MotionEvent.ACTION_SCROLL) {
+            super.onInputEvent(event, policyFlags);
+            return;
+        }
+        // Wait for a down touch event to start processing.
+        if (motionEvent.isTouchEvent()) {
+            if (!mMotionEventSequenceStarted) {
+                if (motionEvent.getActionMasked() != MotionEvent.ACTION_DOWN) {
+                    return;
+                }
+                mMotionEventSequenceStarted = true;
+            }
+        } else {
+            // Wait for an enter hover event to start processing.
+            if (!mHoverEventSequenceStarted) {
+                if (motionEvent.getActionMasked() != MotionEvent.ACTION_HOVER_ENTER) {
+                    return;
+                }
+                mHoverEventSequenceStarted = true;
+            }
+        }
         batchMotionEvent((MotionEvent) event, policyFlags);
     }
 
@@ -201,10 +234,14 @@
         if (DEBUG) {
             Slog.i(TAG, "Handling batched event: " + event + ", policyFlags: " + policyFlags);
         }
-        mPm.userActivity(event.getEventTime(), false);
-        MotionEvent transformedEvent = MotionEvent.obtain(event);
-        mEventHandler.onMotionEvent(transformedEvent, event, policyFlags);
-        transformedEvent.recycle();
+        // Since we do batch processing it is possible that by the time the
+        // next batch is processed the event handle had been set to null.
+        if (mEventHandler != null) {
+            mPm.userActivity(event.getEventTime(), false);
+            MotionEvent transformedEvent = MotionEvent.obtain(event);
+            mEventHandler.onMotionEvent(transformedEvent, event, policyFlags);
+            transformedEvent.recycle();
+        }
     }
 
     @Override
@@ -250,6 +287,8 @@
     }
 
     private void enableFeatures() {
+        mMotionEventSequenceStarted = false;
+        mHoverEventSequenceStarted = false;
         if ((mEnabledFeatures & FLAG_FEATURE_SCREEN_MAGNIFIER) != 0) {
             mEventHandler = mScreenMagnifier = new ScreenMagnifier(mContext,
                     Display.DEFAULT_DISPLAY, mAms);
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
index bb040bf..e5cba62 100644
--- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -123,6 +123,9 @@
     private static final String TEMPORARY_ENABLE_ACCESSIBILITY_UNTIL_KEYGUARD_REMOVED =
             "temporaryEnableAccessibilityStateUntilKeyguardRemoved";
 
+    private static final ComponentName sFakeAccessibilityServiceComponentName =
+            new ComponentName("foo.bar", "FakeService");
+
     private static final String FUNCTION_DUMP = "dump";
 
     private static final char COMPONENT_NAME_SEPARATOR = ':';
@@ -157,8 +160,6 @@
 
     private final MainHandler mMainHandler;
 
-    private Service mUiAutomationService;
-
     private Service mQueryBridge;
 
     private AlertDialog mEnableTouchExplorationDialog;
@@ -167,6 +168,11 @@
 
     private boolean mHasInputFilter;
 
+    private final Set<ComponentName> mTempComponentNameSet = new HashSet<ComponentName>();
+
+    private final List<AccessibilityServiceInfo> mTempAccessibilityServiceInfoList =
+            new ArrayList<AccessibilityServiceInfo>();
+
     private final RemoteCallbackList<IAccessibilityManagerClient> mGlobalClients =
             new RemoteCallbackList<IAccessibilityManagerClient>();
 
@@ -177,9 +183,6 @@
 
     private final SparseArray<UserState> mUserStates = new SparseArray<UserState>();
 
-    private final TempUserStateChangeMemento mTempStateChangeForCurrentUserMemento =
-            new TempUserStateChangeMemento();
-
     private int mCurrentUserId = UserHandle.USER_OWNER;
 
     private UserState getCurrentUserStateLocked() {
@@ -224,10 +227,11 @@
                         return;
                     }
                     // We will update when the automation service dies.
-                    if (mUiAutomationService == null) {
-                        UserState userState = getCurrentUserStateLocked();
-                        populateInstalledAccessibilityServiceLocked(userState);
-                        manageServicesLocked(userState);
+                    UserState userState = getCurrentUserStateLocked();
+                    if (userState.mUiAutomationService == null) {
+                        if (readConfigurationForUserStateLocked(userState)) {
+                            onUserStateChangedLocked(userState);
+                        }
                     }
                 }
             }
@@ -239,8 +243,8 @@
                     if (userId != mCurrentUserId) {
                         return;
                     }
-                    UserState state = getUserStateLocked(userId);
-                    Iterator<ComponentName> it = state.mEnabledServices.iterator();
+                    UserState userState = getUserStateLocked(userId);
+                    Iterator<ComponentName> it = userState.mEnabledServices.iterator();
                     while (it.hasNext()) {
                         ComponentName comp = it.next();
                         String compPkg = comp.getPackageName();
@@ -249,13 +253,17 @@
                             // Update the enabled services setting.
                             persistComponentNamesToSettingLocked(
                                     Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
-                                    state.mEnabledServices, userId);
+                                    userState.mEnabledServices, userId);
                             // Update the touch exploration granted services setting.
-                            state.mTouchExplorationGrantedServices.remove(comp);
+                            userState.mTouchExplorationGrantedServices.remove(comp);
                             persistComponentNamesToSettingLocked(
                                     Settings.Secure.
                                     TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
-                                    state.mEnabledServices, userId);
+                                    userState.mTouchExplorationGrantedServices, userId);
+                            // We will update when the automation service dies.
+                            if (userState.mUiAutomationService == null) {
+                                onUserStateChangedLocked(userState);
+                            }
                             return;
                         }
                     }
@@ -270,8 +278,8 @@
                     if (userId != mCurrentUserId) {
                         return false;
                     }
-                    UserState state = getUserStateLocked(userId);
-                    Iterator<ComponentName> it = state.mEnabledServices.iterator();
+                    UserState userState = getUserStateLocked(userId);
+                    Iterator<ComponentName> it = userState.mEnabledServices.iterator();
                     while (it.hasNext()) {
                         ComponentName comp = it.next();
                         String compPkg = comp.getPackageName();
@@ -283,7 +291,11 @@
                                 it.remove();
                                 persistComponentNamesToSettingLocked(
                                         Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
-                                        state.mEnabledServices, userId);
+                                        userState.mEnabledServices, userId);
+                                // We will update when the automation service dies.
+                                if (userState.mUiAutomationService == null) {
+                                    onUserStateChangedLocked(userState);
+                                }
                             }
                         }
                     }
@@ -310,7 +322,13 @@
                 } else if (Intent.ACTION_USER_REMOVED.equals(action)) {
                     removeUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
                 } else if (Intent.ACTION_USER_PRESENT.equals(action)) {
-                    restoreStateFromMementoIfNeeded();
+                    // We will update when the automation service dies.
+                    UserState userState = getCurrentUserStateLocked();
+                    if (userState.mUiAutomationService == null) {
+                        if (readConfigurationForUserStateLocked(userState)) {
+                            onUserStateChangedLocked(userState);
+                        }
+                    }
                 }
             }
         }, UserHandle.ALL, intentFilter, null, null);
@@ -329,7 +347,7 @@
                 if (DEBUG) {
                     Slog.i(LOG_TAG, "Added global client for pid:" + Binder.getCallingPid());
                 }
-                return getClientState(userState);
+                return userState.getClientState();
             } else {
                 userState.mClients.register(client);
                 // If this client is not for the current user we do not
@@ -339,7 +357,7 @@
                     Slog.i(LOG_TAG, "Added user client for pid:" + Binder.getCallingPid()
                             + " and userId:" + mCurrentUserId);
                 }
-                return (resolvedUserId == mCurrentUserId) ? getClientState(userState) : 0;
+                return (resolvedUserId == mCurrentUserId) ? userState.getClientState() : 0;
             }
         }
     }
@@ -385,7 +403,7 @@
                     .resolveCallingUserIdEnforcingPermissionsLocked(userId);
             result = mEnabledServicesForFeedbackTempList;
             result.clear();
-            List<Service> services = getUserStateLocked(resolvedUserId).mServices;
+            List<Service> services = getUserStateLocked(resolvedUserId).mBoundServices;
             while (feedbackType != 0) {
                 final int feedbackTypeBit = (1 << Integer.numberOfTrailingZeros(feedbackType));
                 feedbackType &= ~feedbackTypeBit;
@@ -410,7 +428,7 @@
             if (resolvedUserId != mCurrentUserId) {
                 return;
             }
-            services = getUserStateLocked(resolvedUserId).mServices;
+            services = getUserStateLocked(resolvedUserId).mBoundServices;
         }
         for (int i = 0, count = services.size(); i < count; i++) {
             Service service = services.get(i);
@@ -514,36 +532,49 @@
             AccessibilityServiceInfo accessibilityServiceInfo) {
         mSecurityPolicy.enforceCallingPermission(Manifest.permission.RETRIEVE_WINDOW_CONTENT,
                 FUNCTION_REGISTER_UI_TEST_AUTOMATION_SERVICE);
-        ComponentName componentName = new ComponentName("foo.bar",
-                "AutomationAccessibilityService");
+
+        accessibilityServiceInfo.setComponentName(sFakeAccessibilityServiceComponentName);
+
         synchronized (mLock) {
-            if (mUiAutomationService != null) {
+            UserState userState = getCurrentUserStateLocked();
+
+            if (userState.mUiAutomationService != null) {
                 throw new IllegalStateException("UiAutomationService " + serviceClient
                         + "already registered!");
             }
-            // If an automation services is connected to the system all services are stopped
-            // so the automation one is the only one running. Settings are not changed so when
-            // the automation service goes away the state is restored from the settings.
-            UserState userState = getCurrentUserStateLocked();
-            unbindAllServicesLocked(userState);
 
-            // If necessary enable accessibility and announce that.
-            if (!userState.mIsAccessibilityEnabled) {
-                userState.mIsAccessibilityEnabled = true;
-            }
-            // No touch exploration.
+            userState.mUiAutomationServiceClient = serviceClient;
+
+            // Set the temporary state.
+            userState.mIsAccessibilityEnabled = true;
             userState.mIsTouchExplorationEnabled = false;
-
-            // No touch enhanced web accessibility.
             userState.mIsEnhancedWebAccessibilityEnabled = false;
+            userState.mIsDisplayMagnificationEnabled = false;
+            userState.mInstalledServices.add(accessibilityServiceInfo);
+            userState.mEnabledServices.clear();
+            userState.mEnabledServices.add(sFakeAccessibilityServiceComponentName);
+            userState.mTouchExplorationGrantedServices.add(sFakeAccessibilityServiceComponentName);
 
-            // Hook the automation service up.
-            mUiAutomationService = new Service(mCurrentUserId, componentName,
-                    accessibilityServiceInfo, true);
-            mUiAutomationService.onServiceConnected(componentName, serviceClient.asBinder());
+            // Use the new state instead of settings.
+            onUserStateChangedLocked(userState);
+        }
+    }
 
-            scheduleUpdateInputFilter(userState);
-            scheduleSendStateToClientsLocked(userState);
+    public void unregisterUiTestAutomationService(IAccessibilityServiceClient serviceClient) {
+        synchronized (mLock) {
+            UserState userState = getCurrentUserStateLocked();
+            // Automation service is not bound, so pretend it died to perform clean up.
+            if (userState.mUiAutomationService != null
+                    && serviceClient != null
+                    && userState.mUiAutomationService != null
+                    && userState.mUiAutomationService.mServiceInterface != null
+                    && userState.mUiAutomationService.mServiceInterface.asBinder()
+                    == serviceClient.asBinder()) {
+                userState.mUiAutomationService.binderDied();
+            } else {
+                throw new IllegalStateException("UiAutomationService " + serviceClient
+                        + " not registered!");
+            }
         }
     }
 
@@ -560,36 +591,26 @@
             return;
         }
         synchronized (mLock) {
-            UserState userState = getCurrentUserStateLocked();
-            // Stash the old state so we can restore it when the keyguard is gone.
-            mTempStateChangeForCurrentUserMemento.initialize(getCurrentUserStateLocked());
             // Set the temporary state.
+            UserState userState = getCurrentUserStateLocked();
+
+            // This is a nop if UI automation is enabled.
+            if (userState.mUiAutomationService != null) {
+                return;
+            }
+
             userState.mIsAccessibilityEnabled = true;
             userState.mIsTouchExplorationEnabled = touchExplorationEnabled;
             userState.mIsEnhancedWebAccessibilityEnabled = false;
             userState.mIsDisplayMagnificationEnabled = false;
             userState.mEnabledServices.clear();
             userState.mEnabledServices.add(service);
+            userState.mBindingServices.clear();
             userState.mTouchExplorationGrantedServices.clear();
             userState.mTouchExplorationGrantedServices.add(service);
-            // Update the internal state.
-            performServiceManagementLocked(userState);
-            scheduleUpdateInputFilter(userState);
-            scheduleSendStateToClientsLocked(userState);
-        }
-    }
 
-    public void unregisterUiTestAutomationService(IAccessibilityServiceClient serviceClient) {
-        synchronized (mLock) {
-            // Automation service is not bound, so pretend it died to perform clean up.
-            if (mUiAutomationService != null && mUiAutomationService.mServiceInterface != null
-                    && serviceClient != null && mUiAutomationService.mServiceInterface
-                            .asBinder() == serviceClient.asBinder()) {
-                mUiAutomationService.binderDied();
-            } else {
-                throw new IllegalStateException("UiAutomationService " + serviceClient
-                        + " not registered!");
-            }
+            // User the current state instead settings.
+            onUserStateChangedLocked(userState);
         }
     }
 
@@ -695,10 +716,6 @@
 
     private void switchUser(int userId) {
         synchronized (mLock) {
-            // The user switched so we do not need to restore the current user
-            // state since we will fully rebuild it when he becomes current again.
-            mTempStateChangeForCurrentUserMemento.clear();
-
             // Disconnect from services for the old user.
             UserState oldUserState = getUserStateLocked(mCurrentUserId);
             unbindAllServicesLocked(oldUserState);
@@ -716,9 +733,14 @@
             // The user changed.
             mCurrentUserId = userId;
 
-            // Recreate the internal state for the new user.
-            mMainHandler.obtainMessage(MainHandler.MSG_SEND_RECREATE_INTERNAL_STATE,
-                    mCurrentUserId, 0).sendToTarget();
+            UserState userState = getCurrentUserStateLocked();
+            if (userState.mUiAutomationService != null) {
+                // Switching users disables the UI automation service.
+                userState.mUiAutomationService.binderDied();
+            } else if (readConfigurationForUserStateLocked(userState)) {
+                // Update the user state if needed.
+               onUserStateChangedLocked(userState);
+            }
 
             if (announceNewUser) {
                 // Schedule announcement of the current user if needed.
@@ -734,25 +756,11 @@
         }
     }
 
-    private void restoreStateFromMementoIfNeeded() {
-        synchronized (mLock) {
-            if (mTempStateChangeForCurrentUserMemento.mUserId != UserHandle.USER_NULL) {
-                UserState userState = getCurrentUserStateLocked();
-                // Restore the state from the memento.
-                mTempStateChangeForCurrentUserMemento.applyTo(userState);
-                mTempStateChangeForCurrentUserMemento.clear();
-                // Update the internal state.
-                performServiceManagementLocked(userState);
-                scheduleUpdateInputFilter(userState);
-                scheduleSendStateToClientsLocked(userState);
-            }
-        }
-    }
-
     private Service getQueryBridge() {
         if (mQueryBridge == null) {
             AccessibilityServiceInfo info = new AccessibilityServiceInfo();
-            mQueryBridge = new Service(UserHandle.USER_NULL, null, info, true);
+            mQueryBridge = new Service(UserHandle.USER_NULL,
+                    sFakeAccessibilityServiceComponentName, info);
         }
         return mQueryBridge;
     }
@@ -768,8 +776,8 @@
         //       behavior is observed from different combinations of
         //       enabled accessibility services.
         UserState state = getCurrentUserStateLocked();
-        for (int i = state.mServices.size() - 1; i >= 0; i--) {
-            Service service = state.mServices.get(i);
+        for (int i = state.mBoundServices.size() - 1; i >= 0; i--) {
+            Service service = state.mBoundServices.get(i);
             if (service.mRequestTouchExplorationMode && service.mIsDefault == isDefault) {
                 service.notifyGesture(gestureId);
                 return true;
@@ -780,8 +788,8 @@
 
     private void notifyClearAccessibilityNodeInfoCacheLocked() {
         UserState state = getCurrentUserStateLocked();
-        for (int i = state.mServices.size() - 1; i >= 0; i--) {
-            Service service = state.mServices.get(i);
+        for (int i = state.mBoundServices.size() - 1; i >= 0; i--) {
+            Service service = state.mBoundServices.get(i);
             service.notifyClearAccessibilityNodeInfoCache();
         }
     }
@@ -807,8 +815,8 @@
         }
     }
 
-    private void populateInstalledAccessibilityServiceLocked(UserState userState) {
-        userState.mInstalledServices.clear();
+    private boolean readInstalledAccessibilityServiceLocked(UserState userState) {
+        mTempAccessibilityServiceInfoList.clear();
 
         List<ResolveInfo> installedServices = mPackageManager.queryIntentServicesAsUser(
                 new Intent(AccessibilityService.SERVICE_INTERFACE),
@@ -829,26 +837,53 @@
             AccessibilityServiceInfo accessibilityServiceInfo;
             try {
                 accessibilityServiceInfo = new AccessibilityServiceInfo(resolveInfo, mContext);
-                userState.mInstalledServices.add(accessibilityServiceInfo);
+                mTempAccessibilityServiceInfoList.add(accessibilityServiceInfo);
             } catch (XmlPullParserException xppe) {
                 Slog.e(LOG_TAG, "Error while initializing AccessibilityServiceInfo", xppe);
             } catch (IOException ioe) {
                 Slog.e(LOG_TAG, "Error while initializing AccessibilityServiceInfo", ioe);
             }
         }
+
+        if (!mTempAccessibilityServiceInfoList.equals(userState.mInstalledServices)) {
+            userState.mInstalledServices.clear();
+            userState.mInstalledServices.addAll(mTempAccessibilityServiceInfoList);
+            mTempAccessibilityServiceInfoList.clear();
+            return true;
+        }
+
+        mTempAccessibilityServiceInfoList.clear();
+        return false;
     }
 
-    private void populateEnabledAccessibilityServicesLocked(UserState userState) {
-        populateComponentNamesFromSettingLocked(
-                Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
-                userState.mUserId,
-                userState.mEnabledServices);
+    private boolean readEnabledAccessibilityServicesLocked(UserState userState) {
+        mTempComponentNameSet.clear();
+        readComponentNamesFromSettingLocked(Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
+                userState.mUserId, mTempComponentNameSet);
+        if (!mTempComponentNameSet.equals(userState.mEnabledServices)) {
+            userState.mEnabledServices.clear();
+            userState.mEnabledServices.addAll(mTempComponentNameSet);
+            mTempComponentNameSet.clear();
+            return true;
+        }
+        mTempComponentNameSet.clear();
+        return false;
     }
 
-    private void populateTouchExplorationGrantedAccessibilityServicesLocked(UserState userState) {
-        populateComponentNamesFromSettingLocked(
+    private boolean readTouchExplorationGrantedAccessibilityServicesLocked(
+            UserState userState) {
+        mTempComponentNameSet.clear();
+        readComponentNamesFromSettingLocked(
                 Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
-                userState.mUserId, userState.mTouchExplorationGrantedServices);
+                userState.mUserId, mTempComponentNameSet);
+        if (!mTempComponentNameSet.equals(userState.mTouchExplorationGrantedServices)) {
+            userState.mTouchExplorationGrantedServices.clear();
+            userState.mTouchExplorationGrantedServices.addAll(mTempComponentNameSet);
+            mTempComponentNameSet.clear();
+            return true;
+        }
+        mTempComponentNameSet.clear();
+        return false;
     }
 
     /**
@@ -862,8 +897,8 @@
             boolean isDefault) {
         try {
             UserState state = getCurrentUserStateLocked();
-            for (int i = 0, count = state.mServices.size(); i < count; i++) {
-                Service service = state.mServices.get(i);
+            for (int i = 0, count = state.mBoundServices.size(); i < count; i++) {
+                Service service = state.mBoundServices.get(i);
 
                 if (service.mIsDefault == isDefault) {
                     if (canDispathEventLocked(service, event, state.mHandledFeedbackTypes)) {
@@ -880,25 +915,12 @@
         }
     }
 
-    /**
-     * Adds a service for a user.
-     *
-     * @param service The service to add.
-     * @param userId The user id.
-     */
-    private void tryAddServiceLocked(Service service, int userId) {
+    private void addServiceLocked(Service service, UserState userState) {
         try {
-            UserState userState = getUserStateLocked(userId);
-            if (userState.mServices.contains(service)) {
-                return;
-            }
             service.linkToOwnDeath();
-            userState.mServices.add(service);
+            userState.mBoundServices.add(service);
             userState.mComponentNameToServiceMap.put(service.mComponentName, service);
-            scheduleUpdateInputFilter(userState);
-            tryEnableTouchExplorationLocked(service);
-            tryEnableEnhancedWebAccessibilityLocked(service);
-        } catch (RemoteException e) {
+        } catch (RemoteException re) {
             /* do nothing */
         }
     }
@@ -909,19 +931,12 @@
      * @param service The service.
      * @return True if the service was removed, false otherwise.
      */
-    private boolean tryRemoveServiceLocked(Service service) {
+    private void removeServiceLocked(Service service) {
         UserState userState = getUserStateLocked(service.mUserId);
-        final boolean removed = userState.mServices.remove(service);
-        if (!removed) {
-            return false;
-        }
+        userState.mBoundServices.remove(service);
         userState.mComponentNameToServiceMap.remove(service.mComponentName);
         service.unlinkToOwnDeath();
         service.dispose();
-        scheduleUpdateInputFilter(userState);
-        tryDisableTouchExplorationLocked(service);
-        tryDisableEnhancedWebAccessibilityLocked(service);
-        return removed;
     }
 
     /**
@@ -969,29 +984,11 @@
         return false;
     }
 
-    /**
-     * Manages services by starting enabled ones and stopping disabled ones.
-     */
-    private void manageServicesLocked(UserState userState) {
-        final int enabledInstalledServicesCount = updateServicesStateLocked(userState);
-        // No enabled installed services => disable accessibility to avoid
-        // sending accessibility events with no recipient across processes.
-        if (userState.mIsAccessibilityEnabled && enabledInstalledServicesCount == 0) {
-            Settings.Secure.putIntForUser(mContext.getContentResolver(),
-                    Settings.Secure.ACCESSIBILITY_ENABLED, 0, userState.mUserId);
-        }
-    }
-
-    /**
-     * Unbinds all bound services for a user.
-     *
-     * @param userState The user state.
-     */
     private void unbindAllServicesLocked(UserState userState) {
-        List<Service> services = userState.mServices;
+        List<Service> services = userState.mBoundServices;
         for (int i = 0, count = services.size(); i < count; i++) {
             Service service = services.get(i);
-            if (service.unbind()) {
+            if (service.unbindLocked()) {
                 i--;
                 count--;
             }
@@ -1006,7 +1003,7 @@
      * @param userId The user id.
      * @param outComponentNames The output component names.
      */
-    private void populateComponentNamesFromSettingLocked(String settingName, int userId,
+    private void readComponentNamesFromSettingLocked(String settingName, int userId,
             Set<ComponentName> outComponentNames) {
         String settingValue = Settings.Secure.getStringForUser(mContext.getContentResolver(),
                 settingName, userId);
@@ -1047,19 +1044,11 @@
                 settingName, builder.toString(), userId);
     }
 
-    /**
-     * Updates the state of each service by starting (or keeping running) enabled ones and
-     * stopping the rest.
-     *
-     * @param userState The user state for which to do that.
-     * @return The number of enabled installed services.
-     */
-    private int updateServicesStateLocked(UserState userState) {
+    private void manageServicesLocked(UserState userState) {
         Map<ComponentName, Service> componentNameToServiceMap =
                 userState.mComponentNameToServiceMap;
         boolean isEnabled = userState.mIsAccessibilityEnabled;
 
-        int enabledInstalledServices = 0;
         for (int i = 0, count = userState.mInstalledServices.size(); i < count; i++) {
             AccessibilityServiceInfo installedService = userState.mInstalledServices.get(i);
             ComponentName componentName = ComponentName.unflattenFromString(
@@ -1067,32 +1056,46 @@
             Service service = componentNameToServiceMap.get(componentName);
 
             if (isEnabled) {
+                // Wait for the binding if it is in process.
+                if (userState.mBindingServices.contains(componentName)) {
+                    continue;
+                }
+                // No enabled installed services => disable accessibility to avoid
+                // sending accessibility events with no recipient across processes.
+                if (userState.mEnabledServices.isEmpty()) {
+                    userState.mIsAccessibilityEnabled = false;
+                    Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                            Settings.Secure.ACCESSIBILITY_ENABLED, 0, userState.mUserId);
+                    return;
+                }
                 if (userState.mEnabledServices.contains(componentName)) {
                     if (service == null) {
-                        service = new Service(userState.mUserId, componentName,
-                                installedService, false);
+                        service = new Service(userState.mUserId, componentName, installedService);
+                    } else if (userState.mBoundServices.contains(service)) {
+                        continue;
                     }
-                    service.bind();
-                    enabledInstalledServices++;
+                    service.bindLocked();
                 } else {
                     if (service != null) {
-                        service.unbind();
+                        service.unbindLocked();
                     }
                 }
             } else {
                 if (service != null) {
-                    service.unbind();
+                    service.unbindLocked();
+                } else {
+                    userState.mBindingServices.remove(componentName);
                 }
             }
         }
-
-        return enabledInstalledServices;
     }
 
-    private void scheduleSendStateToClientsLocked(UserState userState) {
-        if (mGlobalClients.getRegisteredCallbackCount() > 0
-                || userState.mClients.getRegisteredCallbackCount() > 0) {
-            final int clientState = getClientState(userState);
+    private void scheduleUpdateClientsIfNeededLocked(UserState userState) {
+        final int clientState = userState.getClientState();
+        if (userState.mLastSentClientState != clientState
+                && (mGlobalClients.getRegisteredCallbackCount() > 0
+                        || userState.mClients.getRegisteredCallbackCount() > 0)) {
+            userState.mLastSentClientState = clientState;
             mMainHandler.obtainMessage(MainHandler.MSG_SEND_STATE_TO_CLIENTS,
                     clientState, userState.mUserId) .sendToTarget();
         }
@@ -1144,10 +1147,10 @@
     }
 
     private void showEnableTouchExplorationDialog(final Service service) {
-        String label = service.mResolveInfo.loadLabel(
-
-        mContext.getPackageManager()).toString();
         synchronized (mLock) {
+            String label = service.mResolveInfo.loadLabel(
+            mContext.getPackageManager()).toString();
+
             final UserState state = getCurrentUserStateLocked();
             if (state.mIsTouchExplorationEnabled) {
                 return;
@@ -1167,9 +1170,12 @@
                                  Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
                                  state.mTouchExplorationGrantedServices, state.mUserId);
                          // Enable touch exploration.
+                         UserState userState = getUserStateLocked(service.mUserId);
+                         userState.mIsTouchExplorationEnabled = true;
                          Settings.Secure.putIntForUser(mContext.getContentResolver(),
                                  Settings.Secure.TOUCH_EXPLORATION_ENABLED, 1,
                                  service.mUserId);
+                         onUserStateChangedLocked(userState);
                      }
                  })
                  .setNegativeButton(android.R.string.cancel, new OnClickListener() {
@@ -1191,92 +1197,104 @@
         }
     }
 
-    private int getClientState(UserState userState) {
-        int clientState = 0;
-        if (userState.mIsAccessibilityEnabled) {
-            clientState |= AccessibilityManager.STATE_FLAG_ACCESSIBILITY_ENABLED;
-        }
-        // Touch exploration relies on enabled accessibility.
-        if (userState.mIsAccessibilityEnabled && userState.mIsTouchExplorationEnabled) {
-            clientState |= AccessibilityManager.STATE_FLAG_TOUCH_EXPLORATION_ENABLED;
-        }
-        return clientState;
-    }
-
-    private void recreateInternalStateLocked(UserState userState) {
-        populateInstalledAccessibilityServiceLocked(userState);
-        populateEnabledAccessibilityServicesLocked(userState);
-        populateTouchExplorationGrantedAccessibilityServicesLocked(userState);
-        populatedEnhancedWebAccessibilityEnabledChangedLocked(userState);
-
-        handleTouchExplorationEnabledSettingChangedLocked(userState);
-        handleDisplayMagnificationEnabledSettingChangedLocked(userState);
-        handleAccessibilityEnabledSettingChangedLocked(userState);
-        handleTouchExplorationGrantedAccessibilityServicesChangedLocked(userState);
-
-        performServiceManagementLocked(userState);
-
+    private void onUserStateChangedLocked(UserState userState) {
+        updateServicesLocked(userState);
+        updateTouchExplorationLocked(userState);
+        updateEnhancedWebAccessibilityLocked(userState);
         scheduleUpdateInputFilter(userState);
-        scheduleSendStateToClientsLocked(userState);
+        scheduleUpdateClientsIfNeededLocked(userState);
     }
 
-    private void handleAccessibilityEnabledSettingChangedLocked(UserState userState) {
-        userState.mIsAccessibilityEnabled = Settings.Secure.getIntForUser(
-               mContext.getContentResolver(),
-               Settings.Secure.ACCESSIBILITY_ENABLED, 0, userState.mUserId) == 1;
-    }
-
-    private void performServiceManagementLocked(UserState userState) {
-        if (userState.mIsAccessibilityEnabled ) {
+    private void updateServicesLocked(UserState userState) {
+        if (userState.mIsAccessibilityEnabled) {
             manageServicesLocked(userState);
         } else {
             unbindAllServicesLocked(userState);
         }
     }
 
-    private void handleTouchExplorationEnabledSettingChangedLocked(UserState userState) {
-        userState.mIsTouchExplorationEnabled = Settings.Secure.getIntForUser(
-                mContext.getContentResolver(),
-                Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0, userState.mUserId) == 1;
+    private boolean readConfigurationForUserStateLocked(UserState userState) {
+        boolean somthingChanged = false;
+        somthingChanged |= readAccessibilityEnabledSettingLocked(userState);
+        somthingChanged |= readInstalledAccessibilityServiceLocked(userState);
+        somthingChanged |= readEnabledAccessibilityServicesLocked(userState);
+        somthingChanged |= readTouchExplorationGrantedAccessibilityServicesLocked(userState);
+        somthingChanged |= readTouchExplorationEnabledSettingLocked(userState);
+        somthingChanged |= readEnhancedWebAccessibilityEnabledChangedLocked(userState);
+        somthingChanged |= readDisplayMagnificationEnabledSettingLocked(userState);
+        return somthingChanged;
     }
 
-    private void handleDisplayMagnificationEnabledSettingChangedLocked(UserState userState) {
-        userState.mIsDisplayMagnificationEnabled = Settings.Secure.getIntForUser(
+    private boolean readAccessibilityEnabledSettingLocked(UserState userState) {
+        final boolean accessibilityEnabled = Settings.Secure.getIntForUser(
+               mContext.getContentResolver(),
+               Settings.Secure.ACCESSIBILITY_ENABLED, 0, userState.mUserId) == 1;
+        if (accessibilityEnabled != userState.mIsAccessibilityEnabled) {
+            userState.mIsAccessibilityEnabled = accessibilityEnabled;
+            return true;
+        }
+        return false;
+    }
+
+    private boolean readTouchExplorationEnabledSettingLocked(UserState userState) {
+        final boolean touchExplorationEnabled = Settings.Secure.getIntForUser(
+                mContext.getContentResolver(),
+                Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0, userState.mUserId) == 1;
+        if (touchExplorationEnabled != userState.mIsTouchExplorationEnabled) {
+            userState.mIsTouchExplorationEnabled = touchExplorationEnabled;
+            return true;
+        }
+        return false;
+    }
+
+    private boolean readDisplayMagnificationEnabledSettingLocked(UserState userState) {
+        final boolean displayMagnificationEnabled = Settings.Secure.getIntForUser(
                 mContext.getContentResolver(),
                 Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
                 0, userState.mUserId) == 1;
+        if (displayMagnificationEnabled != userState.mIsDisplayMagnificationEnabled) {
+            userState.mIsDisplayMagnificationEnabled = displayMagnificationEnabled;
+            return true;
+        }
+        return false;
     }
 
-    private void handleTouchExplorationGrantedAccessibilityServicesChangedLocked(
-            UserState userState) {
-        Settings.Secure.putIntForUser(mContext.getContentResolver(),
-                Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0, userState.mUserId);
-        final int serviceCount = userState.mServices.size();
+    private boolean readEnhancedWebAccessibilityEnabledChangedLocked(UserState userState) {
+         final boolean enhancedWeAccessibilityEnabled = Settings.Secure.getIntForUser(
+                mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION,
+                0, userState.mUserId) == 1;
+         if (enhancedWeAccessibilityEnabled != userState.mIsEnhancedWebAccessibilityEnabled) {
+             userState.mIsEnhancedWebAccessibilityEnabled = enhancedWeAccessibilityEnabled;
+             return true;
+         }
+         return false;
+    }
+
+    private void updateTouchExplorationLocked(UserState userState) {
+        userState.mIsTouchExplorationEnabled = false;
+        final int serviceCount = userState.mBoundServices.size();
         for (int i = 0; i < serviceCount; i++) {
-            Service service = userState.mServices.get(i);
-            tryEnableTouchExplorationLocked(service);
+            Service service = userState.mBoundServices.get(i);
+            if (tryEnableTouchExplorationLocked(service)) {
+                break;
+            }
         }
     }
 
-    private void populatedEnhancedWebAccessibilityEnabledChangedLocked(UserState userState) {
-        userState.mIsEnhancedWebAccessibilityEnabled = Settings.Secure.getIntForUser(
-                mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION,
-                0, userState.mUserId) == 1;
-    }
-
-    private void tryEnableTouchExplorationLocked(Service service) {
+    private boolean tryEnableTouchExplorationLocked(Service service) {
         if (!service.canReceiveEventsLocked() || !service.mRequestTouchExplorationMode) {
-            return;
+            return false;
         }
         UserState userState = getUserStateLocked(service.mUserId);
         if (userState.mIsTouchExplorationEnabled) {
-            return;
+            return false;
         }
         // UI test automation service can always enable it.
         if (service.mIsAutomation) {
+            userState.mIsTouchExplorationEnabled = true;
             Settings.Secure.putIntForUser(mContext.getContentResolver(),
                     Settings.Secure.TOUCH_EXPLORATION_ENABLED, 1, service.mUserId);
-            return;
+            return true;
         }
         if (service.mResolveInfo.serviceInfo.applicationInfo.targetSdkVersion
                 <= Build.VERSION_CODES.JELLY_BEAN_MR1) {
@@ -1287,11 +1305,15 @@
                 if (mEnableTouchExplorationDialog == null
                         || (mEnableTouchExplorationDialog != null
                             && !mEnableTouchExplorationDialog.isShowing())) {
-                    showEnableTouchExplorationDialog(service);
+                    mMainHandler.obtainMessage(
+                            MainHandler.MSG_SHOW_ENABLED_TOUCH_EXPLORATION_DIALOG,
+                            service).sendToTarget();
                 }
             } else {
+                userState.mIsTouchExplorationEnabled = true;
                 Settings.Secure.putIntForUser(mContext.getContentResolver(),
                         Settings.Secure.TOUCH_EXPLORATION_ENABLED, 1, service.mUserId);
+                return true;
             }
         } else {
             // Starting in JB-MR2 we request a permission to allow a service to enable
@@ -1299,94 +1321,43 @@
             if (mContext.getPackageManager().checkPermission(
                     android.Manifest.permission.CAN_REQUEST_TOUCH_EXPLORATION_MODE,
                     service.mComponentName.getPackageName()) == PackageManager.PERMISSION_GRANTED) {
+                userState.mIsTouchExplorationEnabled = true;
                 Settings.Secure.putIntForUser(mContext.getContentResolver(),
                         Settings.Secure.TOUCH_EXPLORATION_ENABLED, 1, service.mUserId);
+                return true;
             }
         }
+        return false;
     }
 
-    private void tryDisableTouchExplorationLocked(Service service) {
-        if (!service.mRequestTouchExplorationMode) {
-            return;
-        }
-        UserState userState = getUserStateLocked(service.mUserId);
-        if (!userState.mIsTouchExplorationEnabled) {
-            return;
-        }
-        final int serviceCount = userState.mServices.size();
+    private void updateEnhancedWebAccessibilityLocked(UserState userState) {
+        userState.mIsEnhancedWebAccessibilityEnabled = false;
+        final int serviceCount = userState.mBoundServices.size();
         for (int i = 0; i < serviceCount; i++) {
-            Service other = userState.mServices.get(i);
-            if (other != service) {
-                if (service.mResolveInfo.serviceInfo.applicationInfo.targetSdkVersion
-                        <= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                    // Up to JB-MR1 we had a white list with services that can enable touch
-                    // exploration. When a service is first started we show a dialog to the
-                    // use to get a permission to white list the service.
-                    if (other.mRequestTouchExplorationMode &&
-                            userState.mTouchExplorationGrantedServices.contains(
-                                    service.mComponentName)) {
-                        // A white-listed service wants touch exploration, do not disable.
-                        return;
-                    }
-                } else {
-                    // Starting in JB-MR2 we request a permission to allow a service to enable
-                    // touch exploration and do not care if the service is in the white list.
-                    if (other.mRequestTouchExplorationMode && (service.mIsAutomation
-                            || mContext.getPackageManager().checkPermission(
-                                    android.Manifest.permission.CAN_REQUEST_TOUCH_EXPLORATION_MODE,
-                                    service.mComponentName.getPackageName())
-                                    == PackageManager.PERMISSION_GRANTED)) {
-                        // A service with permission wants touch exploration, do not disable.
-                        return;
-                    }
-                }
-            }
-        }
-        Settings.Secure.putIntForUser(mContext.getContentResolver(),
-                Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0, userState.mUserId);
-    }
-
-    private void tryEnableEnhancedWebAccessibilityLocked(Service service) {
-        if (!service.canReceiveEventsLocked() || !service.mRequestEnhancedWebAccessibility ) {
-            return;
-        }
-        UserState userState = getUserStateLocked(service.mUserId);
-        if (userState.mIsEnhancedWebAccessibilityEnabled) {
-            return;
-        }
-        // Requested and can enabled, do it.
-        if (service.mRequestEnhancedWebAccessibility
-                && canEnabledEnhancedWebAccessibility(service)) {
-            Settings.Secure.putIntForUser(mContext.getContentResolver(),
-                    Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 1, userState.mUserId);
-        }
-    }
-
-    private void tryDisableEnhancedWebAccessibilityLocked(Service service) {
-        if (!service.mRequestEnhancedWebAccessibility) {
-            return;
-        }
-        UserState userState = getUserStateLocked(service.mUserId);
-        if (!userState.mIsEnhancedWebAccessibilityEnabled) {
-            return;
-        }
-        final int serviceCount = userState.mServices.size();
-        for (int i = 0; i < serviceCount; i++) {
-            Service other = userState.mServices.get(i);
-            if (other != service && other.mRequestEnhancedWebAccessibility
-                    && canEnabledEnhancedWebAccessibility(other)) {
-                // One service requests the feature, do not disable.
+            Service service = userState.mBoundServices.get(i);
+            if (tryEnableEnhancedWebAccessibilityLocked(service)) {
                 return;
             }
         }
-        Settings.Secure.putIntForUser(mContext.getContentResolver(),
-                Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 0, service.mUserId);
     }
 
-    private boolean canEnabledEnhancedWebAccessibility(Service service) {
-        return (service.mIsAutomation || mContext.getPackageManager().checkPermission(
+    private boolean tryEnableEnhancedWebAccessibilityLocked(Service service) {
+        if (!service.canReceiveEventsLocked() || !service.mRequestEnhancedWebAccessibility ) {
+            return false;
+        }
+        UserState userState = getUserStateLocked(service.mUserId);
+        if (userState.mIsEnhancedWebAccessibilityEnabled) {
+            return false;
+        }
+        if (service.mIsAutomation || mContext.getPackageManager().checkPermission(
                 android.Manifest.permission.CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY,
-                service.mComponentName.getPackageName()) == PackageManager.PERMISSION_GRANTED);
+                service.mComponentName.getPackageName()) == PackageManager.PERMISSION_GRANTED) {
+            userState.mIsEnhancedWebAccessibilityEnabled = true;
+            Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                    Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 1, userState.mUserId);
+            return true;
+        }
+        return false;
     }
 
     @Override
@@ -1395,12 +1366,6 @@
         synchronized (mLock) {
             pw.println("ACCESSIBILITY MANAGER (dumpsys accessibility)");
             pw.println();
-            pw.println("Ui automation service: bound=" + (mUiAutomationService != null));
-            pw.println();
-            if (mUiAutomationService != null) {
-                mUiAutomationService.dump(fd, pw, args);
-                pw.println();
-            }
             final int userCount = mUserStates.size();
             for (int i = 0; i < userCount; i++) {
                 UserState userState = mUserStates.valueAt(i);
@@ -1410,17 +1375,22 @@
                 pw.append(", touchExplorationEnabled=" + userState.mIsTouchExplorationEnabled);
                 pw.append(", displayMagnificationEnabled="
                         + userState.mIsDisplayMagnificationEnabled);
+                if (userState.mUiAutomationService != null) {
+                    pw.append(", ");
+                    userState.mUiAutomationService.dump(fd, pw, args);
+                    pw.println();
+                }
                 pw.append("}");
                 pw.println();
                 pw.append("           services:{");
-                final int serviceCount = userState.mServices.size();
+                final int serviceCount = userState.mBoundServices.size();
                 for (int j = 0; j < serviceCount; j++) {
                     if (j > 0) {
                         pw.append(", ");
                         pw.println();
                         pw.append("                     ");
                     }
-                    Service service = userState.mServices.get(j);
+                    Service service = userState.mBoundServices.get(j);
                     service.dump(fd, pw, args);
                 }
                 pw.println("}]");
@@ -1462,10 +1432,10 @@
         public static final int MSG_SEND_ACCESSIBILITY_EVENT_TO_INPUT_FILTER = 1;
         public static final int MSG_SEND_STATE_TO_CLIENTS = 2;
         public static final int MSG_SEND_CLEARED_STATE_TO_CLIENTS_FOR_USER = 3;
-        public static final int MSG_SEND_RECREATE_INTERNAL_STATE = 4;
-        public static final int MSG_UPDATE_ACTIVE_WINDOW = 5;
-        public static final int MSG_ANNOUNCE_NEW_USER_IF_NEEDED = 6;
-        public static final int MSG_UPDATE_INPUT_FILTER = 7;
+        public static final int MSG_UPDATE_ACTIVE_WINDOW = 4;
+        public static final int MSG_ANNOUNCE_NEW_USER_IF_NEEDED = 5;
+        public static final int MSG_UPDATE_INPUT_FILTER = 6;
+        public static final int MSG_SHOW_ENABLED_TOUCH_EXPLORATION_DIALOG = 7;
 
         public MainHandler(Looper looper) {
             super(looper);
@@ -1494,13 +1464,6 @@
                     final int userId = msg.arg1;
                     sendStateToClientsForUser(0, userId);
                 } break;
-                case MSG_SEND_RECREATE_INTERNAL_STATE: {
-                    final int userId = msg.arg1;
-                    synchronized (mLock) {
-                        UserState userState = getUserStateLocked(userId);
-                        recreateInternalStateLocked(userState);
-                    }
-                } break;
                 case MSG_UPDATE_ACTIVE_WINDOW: {
                     final int windowId = msg.arg1;
                     final int eventType = msg.arg2;
@@ -1513,6 +1476,10 @@
                     UserState userState = (UserState) msg.obj;
                     updateInputFilter(userState);
                 } break;
+                case MSG_SHOW_ENABLED_TOUCH_EXPLORATION_DIALOG: {
+                    Service service = (Service) msg.obj;
+                    showEnableTouchExplorationDialog(service);
+                } break;
             }
         }
 
@@ -1641,14 +1608,14 @@
         };
 
         public Service(int userId, ComponentName componentName,
-                AccessibilityServiceInfo accessibilityServiceInfo, boolean isAutomation) {
+                AccessibilityServiceInfo accessibilityServiceInfo) {
             mUserId = userId;
             mResolveInfo = accessibilityServiceInfo.getResolveInfo();
             mId = sIdCounter++;
             mComponentName = componentName;
             mAccessibilityServiceInfo = accessibilityServiceInfo;
-            mIsAutomation = isAutomation;
-            if (!isAutomation) {
+            mIsAutomation = (sFakeAccessibilityServiceComponentName.equals(componentName));
+            if (!mIsAutomation) {
                 mCanRetrieveScreenContent = accessibilityServiceInfo.getCanRetrieveWindowContent();
                 mIntent = new Intent().setComponent(mComponentName);
                 mIntent.putExtra(Intent.EXTRA_CLIENT_LABEL,
@@ -1688,24 +1655,6 @@
                 mRequestEnhancedWebAccessibility = (info.flags
                            & AccessibilityServiceInfo.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY) != 0;
             }
-
-            // If this service is up and running we may have to enable touch
-            // exploration or enhanced web accessibility, otherwise this will
-            // happen when the service connects.
-            synchronized (mLock) {
-                if (canReceiveEventsLocked()) {
-                    if (mRequestTouchExplorationMode) {
-                        tryEnableTouchExplorationLocked(this);
-                    } else {
-                        tryDisableTouchExplorationLocked(this);
-                    }
-                    if (mRequestEnhancedWebAccessibility) {
-                        tryEnableEnhancedWebAccessibilityLocked(this);
-                    } else {
-                        tryDisableEnhancedWebAccessibilityLocked(this);
-                    }
-                }
-            }
         }
 
         /**
@@ -1713,10 +1662,20 @@
          *
          * @return True if binding is successful.
          */
-        public boolean bind() {
-            if (!mIsAutomation && mService == null) {
-                return mContext.bindServiceAsUser(mIntent, this, Context.BIND_AUTO_CREATE,
-                        new UserHandle(mUserId));
+        public boolean bindLocked() {
+            UserState userState = getUserStateLocked(mUserId);
+            if (!mIsAutomation) {
+                if (mService == null) {
+                    if (mContext.bindServiceAsUser(mIntent, this, Context.BIND_AUTO_CREATE,
+                            new UserHandle(mUserId))) {
+                        userState.mBindingServices.add(mComponentName);
+                    }
+                }
+            } else {
+                userState.mBindingServices.add(mComponentName);
+                mService = userState.mUiAutomationServiceClient.asBinder();
+                onServiceConnected(mComponentName, mService);
+                userState.mUiAutomationService = this;
             }
             return false;
         }
@@ -1727,17 +1686,19 @@
          *
          * @return True if unbinding is successful.
          */
-        public boolean unbind() {
-            if (mService != null) {
-                synchronized (mLock) {
-                    tryRemoveServiceLocked(this);
-                }
-                if (!mIsAutomation) {
-                    mContext.unbindService(this);
-                }
-                return true;
+        public boolean unbindLocked() {
+            if (mService == null) {
+                return false;
             }
-            return false;
+            if (!mIsAutomation) {
+                mContext.unbindService(this);
+            } else {
+                UserState userState = getUserStateLocked(mUserId);
+                userState.mUiAutomationService = null;
+                userState.mUiAutomationServiceClient = null;
+            }
+            removeServiceLocked(this);
+            return true;
         }
 
         public boolean canReceiveEventsLocked() {
@@ -1766,6 +1727,8 @@
                     } else {
                         setDynamicallyConfigurableProperties(info);
                     }
+                    UserState userState = getUserStateLocked(mUserId);
+                    onUserStateChangedLocked(userState);
                 }
             } finally {
                 Binder.restoreCallingIdentity(identity);
@@ -1774,15 +1737,24 @@
 
         @Override
         public void onServiceConnected(ComponentName componentName, IBinder service) {
-            mService = service;
-            mServiceInterface = IAccessibilityServiceClient.Stub.asInterface(service);
-            try {
-                mServiceInterface.setConnection(this, mId);
-                synchronized (mLock) {
-                    tryAddServiceLocked(this, mUserId);
+            final int connectionId;
+            synchronized (mLock) {
+                connectionId = mId;
+                mService = service;
+                mServiceInterface = IAccessibilityServiceClient.Stub.asInterface(service);
+                UserState userState = getUserStateLocked(mUserId);
+                if (!userState.mBindingServices.contains(mComponentName)) {
+                    binderDied();
+                } else {
+                    userState.mBindingServices.remove(mComponentName);
+                    addServiceLocked(this, userState);
+                    onUserStateChangedLocked(userState);
                 }
+            }
+            try {
+                mServiceInterface.setConnection(this, connectionId);
             } catch (RemoteException re) {
-                Slog.w(LOG_TAG, "Error while setting Controller for service: " + service, re);
+                Slog.w(LOG_TAG, "Error while setting connection for service: " + service, re);
             }
         }
 
@@ -2128,13 +2100,17 @@
         public void binderDied() {
             synchronized (mLock) {
                 // The death recipient is unregistered in tryRemoveServiceLocked
-                tryRemoveServiceLocked(this);
-                // We no longer have an automation service, so restore
-                // the state based on values in the settings database.
+                removeServiceLocked(this);
+                UserState userState = getUserStateLocked(mUserId);
                 if (mIsAutomation) {
-                    mUiAutomationService = null;
-                    recreateInternalStateLocked(getUserStateLocked(mUserId));
+                    // We no longer have an automation service, so restore
+                    // the state based on values in the settings database.
+                    userState.mInstalledServices.remove(mAccessibilityServiceInfo);
+                    userState.mEnabledServices.remove(mComponentName);
+                    userState.mUiAutomationService = null;
+                    userState.mUiAutomationServiceClient = null;
                 }
+                onUserStateChangedLocked(userState);
             }
         }
 
@@ -2585,7 +2561,7 @@
     private class UserState {
         public final int mUserId;
 
-        public final CopyOnWriteArrayList<Service> mServices = new CopyOnWriteArrayList<Service>();
+        public final CopyOnWriteArrayList<Service> mBoundServices = new CopyOnWriteArrayList<Service>();
 
         public final RemoteCallbackList<IAccessibilityManagerClient> mClients =
             new RemoteCallbackList<IAccessibilityManagerClient>();
@@ -2596,6 +2572,8 @@
         public final List<AccessibilityServiceInfo> mInstalledServices =
                 new ArrayList<AccessibilityServiceInfo>();
 
+        public final Set<ComponentName> mBindingServices = new HashSet<ComponentName>();
+
         public final Set<ComponentName> mEnabledServices = new HashSet<ComponentName>();
 
         public final Set<ComponentName> mTouchExplorationGrantedServices =
@@ -2609,57 +2587,30 @@
 
         public int mHandledFeedbackTypes = 0;
 
+        public int mLastSentClientState;
+
         public boolean mIsAccessibilityEnabled;
         public boolean mIsTouchExplorationEnabled;
         public boolean mIsEnhancedWebAccessibilityEnabled;
         public boolean mIsDisplayMagnificationEnabled;
 
+        private Service mUiAutomationService;
+        private IAccessibilityServiceClient mUiAutomationServiceClient;
+
         public UserState(int userId) {
             mUserId = userId;
         }
-    }
 
-    private class TempUserStateChangeMemento {
-        public int mUserId = UserHandle.USER_NULL;
-        public boolean mIsAccessibilityEnabled;
-        public boolean mIsTouchExplorationEnabled;
-        public boolean mIsEnhancedWebAccessibilityEnabled;
-        public boolean mIsDisplayMagnificationEnabled;
-        public final Set<ComponentName> mEnabledServices = new HashSet<ComponentName>();
-        public final Set<ComponentName> mTouchExplorationGrantedServices =
-                new HashSet<ComponentName>();
-
-        public void initialize(UserState userState) {
-            mUserId = userState.mUserId;
-            mIsAccessibilityEnabled = userState.mIsAccessibilityEnabled;
-            mIsTouchExplorationEnabled = userState.mIsTouchExplorationEnabled;
-            mIsEnhancedWebAccessibilityEnabled = userState.mIsEnhancedWebAccessibilityEnabled;
-            mIsDisplayMagnificationEnabled = userState.mIsDisplayMagnificationEnabled;
-            mEnabledServices.clear();
-            mEnabledServices.addAll(userState.mEnabledServices);
-            mTouchExplorationGrantedServices.clear();
-            mTouchExplorationGrantedServices.addAll(userState.mTouchExplorationGrantedServices);
-        }
-
-        public void applyTo(UserState userState) {
-            userState.mIsAccessibilityEnabled = mIsAccessibilityEnabled;
-            userState.mIsTouchExplorationEnabled = mIsTouchExplorationEnabled;
-            userState.mIsEnhancedWebAccessibilityEnabled = mIsEnhancedWebAccessibilityEnabled;
-            userState.mIsDisplayMagnificationEnabled = mIsDisplayMagnificationEnabled;
-            userState.mEnabledServices.clear();
-            userState.mEnabledServices.addAll(mEnabledServices);
-            userState.mTouchExplorationGrantedServices.clear();
-            userState.mTouchExplorationGrantedServices.addAll(mTouchExplorationGrantedServices);
-        }
-
-        public void clear() {
-            mUserId = UserHandle.USER_NULL;
-            mIsAccessibilityEnabled = false;
-            mIsTouchExplorationEnabled = false;
-            mIsEnhancedWebAccessibilityEnabled = false;
-            mIsDisplayMagnificationEnabled = false;
-            mEnabledServices.clear();
-            mTouchExplorationGrantedServices.clear();
+        public int getClientState() {
+            int clientState = 0;
+            if (mIsAccessibilityEnabled) {
+                clientState |= AccessibilityManager.STATE_FLAG_ACCESSIBILITY_ENABLED;
+            }
+            // Touch exploration relies on enabled accessibility.
+            if (mIsAccessibilityEnabled && mIsTouchExplorationEnabled) {
+                clientState |= AccessibilityManager.STATE_FLAG_TOUCH_EXPLORATION_ENABLED;
+            }
+            return clientState;
         }
     }
 
@@ -2680,7 +2631,7 @@
         private final Uri mTouchExplorationGrantedAccessibilityServicesUri = Settings.Secure
                 .getUriFor(Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES);
 
-        private final Uri mAccessibilityScriptInjectionUri = Settings.Secure
+        private final Uri mEnhancedWebAccessibilityUri = Settings.Secure
                 .getUriFor(Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION);
 
         public AccessibilityContentObserver(Handler handler) {
@@ -2699,7 +2650,7 @@
             contentResolver.registerContentObserver(
                     mTouchExplorationGrantedAccessibilityServicesUri,
                     false, this, UserHandle.USER_ALL);
-            contentResolver.registerContentObserver(mAccessibilityScriptInjectionUri,
+            contentResolver.registerContentObserver(mEnhancedWebAccessibilityUri,
                     false, this, UserHandle.USER_ALL);
         }
 
@@ -2708,58 +2659,61 @@
             if (mAccessibilityEnabledUri.equals(uri)) {
                 synchronized (mLock) {
                     // We will update when the automation service dies.
-                    if (mUiAutomationService == null) {
-                        UserState userState = getCurrentUserStateLocked();
-                        handleAccessibilityEnabledSettingChangedLocked(userState);
-                        performServiceManagementLocked(userState);
-                        scheduleUpdateInputFilter(userState);
-                        scheduleSendStateToClientsLocked(userState);
+                    UserState userState = getCurrentUserStateLocked();
+                    if (userState.mUiAutomationService == null) {
+                        if (readAccessibilityEnabledSettingLocked(userState)) {
+                            onUserStateChangedLocked(userState);
+                        }
                     }
                 }
             } else if (mTouchExplorationEnabledUri.equals(uri)) {
                 synchronized (mLock) {
                     // We will update when the automation service dies.
-                    if (mUiAutomationService == null) {
-                        UserState userState = getCurrentUserStateLocked();
-                        handleTouchExplorationEnabledSettingChangedLocked(userState);
-                        scheduleUpdateInputFilter(userState);
-                        scheduleSendStateToClientsLocked(userState);
+                    UserState userState = getCurrentUserStateLocked();
+                    if (userState.mUiAutomationService == null) {
+                        if (readTouchExplorationEnabledSettingLocked(userState)) {
+                            onUserStateChangedLocked(userState);
+                        }
                     }
                 }
             } else if (mDisplayMagnificationEnabledUri.equals(uri)) {
                 synchronized (mLock) {
                     // We will update when the automation service dies.
-                    if (mUiAutomationService == null) {
-                        UserState userState = getCurrentUserStateLocked();
-                        handleDisplayMagnificationEnabledSettingChangedLocked(userState);
-                        scheduleUpdateInputFilter(userState);
-                        scheduleSendStateToClientsLocked(userState);
+                    UserState userState = getCurrentUserStateLocked();
+                    if (userState.mUiAutomationService == null) {
+                        if (readDisplayMagnificationEnabledSettingLocked(userState)) {
+                            onUserStateChangedLocked(userState);
+                        }
                     }
                 }
             } else if (mEnabledAccessibilityServicesUri.equals(uri)) {
                 synchronized (mLock) {
                     // We will update when the automation service dies.
-                    if (mUiAutomationService == null) {
-                        UserState userState = getCurrentUserStateLocked();
-                        populateEnabledAccessibilityServicesLocked(userState);
-                        manageServicesLocked(userState);
+                    UserState userState = getCurrentUserStateLocked();
+                    if (userState.mUiAutomationService == null) {
+                        if (readEnabledAccessibilityServicesLocked(userState)) {
+                            onUserStateChangedLocked(userState);
+                        }
                     }
                 }
             } else if (mTouchExplorationGrantedAccessibilityServicesUri.equals(uri)) {
                 synchronized (mLock) {
                     // We will update when the automation service dies.
-                    if (mUiAutomationService == null) {
-                        UserState userState = getCurrentUserStateLocked();
-                        populateTouchExplorationGrantedAccessibilityServicesLocked(userState);
-                        handleTouchExplorationGrantedAccessibilityServicesChangedLocked(userState);
+                    UserState userState = getCurrentUserStateLocked();
+                    if (userState.mUiAutomationService == null) {
+                        if (readTouchExplorationGrantedAccessibilityServicesLocked(userState)) {
+                            onUserStateChangedLocked(userState);
+                        }
                     }
                 }
-            } else if (mAccessibilityScriptInjectionUri.equals(uri)) {
+            } else if (mEnhancedWebAccessibilityUri.equals(uri)) {
                 synchronized (mLock) {
                     // We will update when the automation service dies.
-                    if (mUiAutomationService == null) {
-                        UserState userState = getCurrentUserStateLocked();
-                        populatedEnhancedWebAccessibilityEnabledChangedLocked(userState);
+                    UserState userState = getCurrentUserStateLocked();
+                    if (userState.mUiAutomationService == null) {
+                        if (readEnhancedWebAccessibilityEnabledChangedLocked(userState)) {
+                            onUserStateChangedLocked(userState);
+                        }
                     }
                 }
             }
diff --git a/services/java/com/android/server/accounts/AccountManagerService.java b/services/java/com/android/server/accounts/AccountManagerService.java
index 88603dc..2a62c17 100644
--- a/services/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/java/com/android/server/accounts/AccountManagerService.java
@@ -21,6 +21,7 @@
 import android.accounts.AccountAndUser;
 import android.accounts.AccountAuthenticatorResponse;
 import android.accounts.AccountManager;
+import android.accounts.AccountManagerResponse;
 import android.accounts.AuthenticatorDescription;
 import android.accounts.GrantCredentialsPermissionActivity;
 import android.accounts.IAccountAuthenticator;
@@ -526,6 +527,9 @@
         }
         if (account == null) throw new IllegalArgumentException("account is null");
         checkAuthenticateAccountsPermission(account);
+        if (!canUserModifyAccounts(Binder.getCallingUid())) {
+            return false;
+        }
 
         UserAccounts accounts = getUserAccountsForCaller();
         // fails if the account already exists
@@ -679,6 +683,14 @@
         checkManageAccountsPermission();
         UserHandle user = Binder.getCallingUserHandle();
         UserAccounts accounts = getUserAccountsForCaller();
+        if (!canUserModifyAccounts(Binder.getCallingUid())) {
+            try {
+                response.onError(AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION,
+                        "User cannot modify accounts");
+            } catch (RemoteException re) {
+            }
+        }
+
         long identityToken = clearCallingIdentity();
 
         cancelNotification(getSigninRequiredNotificationId(accounts, account), user);
@@ -2312,6 +2324,17 @@
                 Manifest.permission.USE_CREDENTIALS);
     }
 
+    private boolean canUserModifyAccounts(int callingUid) {
+        if (callingUid != android.os.Process.myUid()) {
+            Bundle restrictions = getUserManager().getUserRestrictions(
+                    new UserHandle(UserHandle.getUserId(callingUid)));
+            if (!restrictions.getBoolean(UserManager.ALLOW_MODIFY_ACCOUNTS)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     public void updateAppPermission(Account account, String authTokenType, int uid, boolean value)
             throws RemoteException {
         final int callingUid = getCallingUid();
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 252cae2..22af3d5 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -18,6 +18,7 @@
 
 import static android.content.pm.PackageManager.PERMISSION_GRANTED;
 
+import android.app.AppOpsManager;
 import com.android.internal.R;
 import com.android.internal.os.BatteryStatsImpl;
 import com.android.internal.os.ProcessStats;
@@ -36,6 +37,7 @@
 
 import android.app.Activity;
 import android.app.ActivityManager;
+import android.app.ActivityManager.RunningTaskInfo;
 import android.app.ActivityManagerNative;
 import android.app.ActivityOptions;
 import android.app.ActivityThread;
@@ -195,7 +197,7 @@
     static final boolean DEBUG_POWER_QUICK = DEBUG_POWER || false;
     static final boolean DEBUG_MU = localLOGV || false;
     static final boolean DEBUG_IMMERSIVE = localLOGV || false;
-    static final boolean VALIDATE_TOKENS = false;
+    static final boolean VALIDATE_TOKENS = true;
     static final boolean SHOW_ACTIVITY_START_TIME = true;
     
     // Control over CPU and battery monitoring.
@@ -327,7 +329,7 @@
     /**
      * List of intents that were used to start the most recent tasks.
      */
-    final ArrayList<TaskRecord> mRecentTasks = new ArrayList<TaskRecord>();
+    private final ArrayList<TaskRecord> mRecentTasks = new ArrayList<TaskRecord>();
 
     public class PendingActivityExtras extends Binder implements Runnable {
         public final ActivityRecord activity;
@@ -595,13 +597,8 @@
      * List of PendingThumbnailsRecord objects of clients who are still
      * waiting to receive all of the thumbnails for a task.
      */
-    final ArrayList mPendingThumbnails = new ArrayList();
-
-    /**
-     * List of HistoryRecord objects that have been finished and must
-     * still report back to a pending thumbnail receiver.
-     */
-    final ArrayList mCancelledThumbnails = new ArrayList();
+    final ArrayList<PendingThumbnailsRecord> mPendingThumbnails =
+            new ArrayList<PendingThumbnailsRecord>();
 
     final ProviderMap mProviderMap;
 
@@ -992,7 +989,7 @@
                                 | Intent.FLAG_RECEIVER_FOREGROUND);
                     }
                     broadcastIntentLocked(null, null, intent,
-                            null, null, 0, null, null, null,
+                            null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                             false, false, MY_PID, Process.SYSTEM_UID, 0 /* TODO: Verify */);
 
                     if (mShowDialogs) {
@@ -2841,11 +2838,8 @@
             for (int i=0; i<activities.size(); i++) {
                 ActivityRecord r = activities.get(i);
                 if (!r.finishing) {
-                    int index = mMainStack.indexOfTokenLocked(r.appToken);
-                    if (index >= 0) {
-                        mMainStack.finishActivityLocked(r, index, Activity.RESULT_CANCELED,
-                                null, "finish-heavy", true);
-                    }
+                    mMainStack.finishActivityLocked(r, Activity.RESULT_CANCELED,
+                            null, "finish-heavy", true);
                 }
             }
             
@@ -2931,22 +2925,13 @@
         }
     }
 
+    @Override
     public boolean willActivityBeVisible(IBinder token) {
         synchronized(this) {
-            int i;
-            for (i=mMainStack.mHistory.size()-1; i>=0; i--) {
-                ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i);
-                if (r.appToken == token) {
-                    return true;
-                }
-                if (r.fullscreen && !r.finishing) {
-                    return false;
-                }
-            }
-            return true;
+            return mMainStack.willActivityBeVisibleLocked(token);
         }
     }
-    
+
     public void overridePendingTransition(IBinder token, String packageName,
             int enterAnim, int exitAnim) {
         synchronized(this) {
@@ -3716,16 +3701,10 @@
         }
         mWindowManager.closeSystemDialogs(reason);
 
-        for (int i=mMainStack.mHistory.size()-1; i>=0; i--) {
-            ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i);
-            if ((r.info.flags&ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS) != 0) {
-                r.stack.finishActivityLocked(r, i,
-                        Activity.RESULT_CANCELED, null, "close-sys", true);
-            }
-        }
+        mMainStack.closeSystemDialogsLocked();
 
         broadcastIntentLocked(null, null, intent, null,
-                null, 0, null, null, null, false, false, -1,
+                null, 0, null, null, null, AppOpsManager.OP_NONE, false, false, -1,
                 Process.SYSTEM_UID, UserHandle.USER_ALL);
     }
 
@@ -3788,7 +3767,7 @@
         intent.putExtra(Intent.EXTRA_UID, uid);
         intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(uid));
         broadcastIntentLocked(null, null, intent,
-                null, null, 0, null, null, null,
+                null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                 false, false,
                 MY_PID, Process.SYSTEM_UID, UserHandle.getUserId(uid));
     }
@@ -3800,7 +3779,7 @@
                 | Intent.FLAG_RECEIVER_FOREGROUND);
         intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
         broadcastIntentLocked(null, null, intent,
-                null, null, 0, null, null, null,
+                null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                 false, false,
                 MY_PID, Process.SYSTEM_UID, UserHandle.USER_ALL);
     }
@@ -3929,37 +3908,12 @@
         boolean didSomething = killPackageProcessesLocked(name, appId, userId,
                 -100, callerWillRestart, true, doit, evenPersistent,
                 name == null ? ("force stop user " + userId) : ("force stop " + name));
-        
-        TaskRecord lastTask = null;
-        for (i=0; i<mMainStack.mHistory.size(); i++) {
-            ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i);
-            final boolean samePackage = r.packageName.equals(name)
-                    || (name == null && r.userId == userId);
-            if ((userId == UserHandle.USER_ALL || r.userId == userId)
-                    && (samePackage || r.task == lastTask)
-                    && (r.app == null || evenPersistent || !r.app.persistent)) {
-                if (!doit) {
-                    if (r.finishing) {
-                        // If this activity is just finishing, then it is not
-                        // interesting as far as something to stop.
-                        continue;
-                    }
-                    return true;
-                }
-                didSomething = true;
-                Slog.i(TAG, "  Force finishing activity " + r);
-                if (samePackage) {
-                    if (r.app != null) {
-                        r.app.removed = true;
-                    }
-                    r.app = null;
-                }
-                lastTask = r.task;
-                if (r.stack.finishActivityLocked(r, i, Activity.RESULT_CANCELED,
-                        null, "force-stop", true)) {
-                    i--;
-                }
+
+        if (mMainStack.forceStopPackageLocked(name, doit, evenPersistent, userId)) {
+            if (!doit) {
+                return true;
             }
+            didSomething = true;
         }
 
         if (mServices.forceStopLocked(name, userId, evenPersistent, doit)) {
@@ -4479,7 +4433,8 @@
                         broadcastIntentLocked(null, null, intent,
                                 null, null, 0, null, null,
                                 android.Manifest.permission.RECEIVE_BOOT_COMPLETED,
-                                false, false, MY_PID, Process.SYSTEM_UID, userId);
+                                AppOpsManager.OP_NONE, false, false, MY_PID, Process.SYSTEM_UID,
+                                userId);
                     }
                 }
             }
@@ -5668,12 +5623,12 @@
     // TASK MANAGEMENT
     // =========================================================
 
-    public List getTasks(int maxNum, int flags,
+    @Override
+    public List<RunningTaskInfo> getTasks(int maxNum, int flags,
                          IThumbnailReceiver receiver) {
-        ArrayList list = new ArrayList();
+        ArrayList<RunningTaskInfo> list = new ArrayList<RunningTaskInfo>();
 
-        PendingThumbnailsRecord pending = null;
-        IApplicationThread topThumbnail = null;
+        PendingThumbnailsRecord pending = new PendingThumbnailsRecord(receiver);
         ActivityRecord topRecord = null;
 
         synchronized(this) {
@@ -5699,88 +5654,19 @@
                 throw new SecurityException(msg);
             }
 
-            int pos = mMainStack.mHistory.size()-1;
-            ActivityRecord next =
-                pos >= 0 ? (ActivityRecord)mMainStack.mHistory.get(pos) : null;
-            ActivityRecord top = null;
-            TaskRecord curTask = null;
-            int numActivities = 0;
-            int numRunning = 0;
-            while (pos >= 0 && maxNum > 0) {
-                final ActivityRecord r = next;
-                pos--;
-                next = pos >= 0 ? (ActivityRecord)mMainStack.mHistory.get(pos) : null;
+            topRecord = mMainStack.getTasksLocked(maxNum, receiver, pending, list);
 
-                // Initialize state for next task if needed.
-                if (top == null ||
-                        (top.state == ActivityState.INITIALIZING
-                            && top.task == r.task)) {
-                    top = r;
-                    curTask = r.task;
-                    numActivities = numRunning = 0;
-                }
-
-                // Add 'r' into the current task.
-                numActivities++;
-                if (r.app != null && r.app.thread != null) {
-                    numRunning++;
-                }
-
-                if (localLOGV) Slog.v(
-                    TAG, r.intent.getComponent().flattenToShortString()
-                    + ": task=" + r.task);
-
-                // If the next one is a different task, generate a new
-                // TaskInfo entry for what we have.
-                if (next == null || next.task != curTask) {
-                    ActivityManager.RunningTaskInfo ci
-                            = new ActivityManager.RunningTaskInfo();
-                    ci.id = curTask.taskId;
-                    ci.baseActivity = r.intent.getComponent();
-                    ci.topActivity = top.intent.getComponent();
-                    if (top.thumbHolder != null) {
-                        ci.description = top.thumbHolder.lastDescription;
-                    }
-                    ci.numActivities = numActivities;
-                    ci.numRunning = numRunning;
-                    //System.out.println(
-                    //    "#" + maxNum + ": " + " descr=" + ci.description);
-                    if (ci.thumbnail == null && receiver != null) {
-                        if (localLOGV) Slog.v(
-                            TAG, "State=" + top.state + "Idle=" + top.idle
-                            + " app=" + top.app
-                            + " thr=" + (top.app != null ? top.app.thread : null));
-                        if (top.state == ActivityState.RESUMED
-                                || top.state == ActivityState.PAUSING) {
-                            if (top.idle && top.app != null
-                                && top.app.thread != null) {
-                                topRecord = top;
-                                topThumbnail = top.app.thread;
-                            } else {
-                                top.thumbnailNeeded = true;
-                            }
-                        }
-                        if (pending == null) {
-                            pending = new PendingThumbnailsRecord(receiver);
-                        }
-                        pending.pendingRecords.add(top);
-                    }
-                    list.add(ci);
-                    maxNum--;
-                    top = null;
-                }
-            }
-
-            if (pending != null) {
+            if (!pending.pendingRecords.isEmpty()) {
                 mPendingThumbnails.add(pending);
             }
         }
 
         if (localLOGV) Slog.v(TAG, "We have pending thumbnails: " + pending);
 
-        if (topThumbnail != null) {
+        if (topRecord != null) {
             if (localLOGV) Slog.v(TAG, "Requesting top thumbnail");
             try {
+                IApplicationThread topThumbnail = topRecord.app.thread;
                 topThumbnail.requestThumbnail(topRecord.appToken);
             } catch (Exception e) {
                 Slog.w(TAG, "Exception thrown when requesting thumbnail", e);
@@ -6015,43 +5901,6 @@
         return false;
     }
     
-    private final int findAffinityTaskTopLocked(int startIndex, String affinity) {
-        int j;
-        TaskRecord startTask = ((ActivityRecord)mMainStack.mHistory.get(startIndex)).task; 
-        TaskRecord jt = startTask;
-        
-        // First look backwards
-        for (j=startIndex-1; j>=0; j--) {
-            ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(j);
-            if (r.task != jt) {
-                jt = r.task;
-                if (affinity.equals(jt.affinity)) {
-                    return j;
-                }
-            }
-        }
-        
-        // Now look forwards
-        final int N = mMainStack.mHistory.size();
-        jt = startTask;
-        for (j=startIndex+1; j<N; j++) {
-            ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(j);
-            if (r.task != jt) {
-                if (affinity.equals(jt.affinity)) {
-                    return j;
-                }
-                jt = r.task;
-            }
-        }
-        
-        // Might it be at the top?
-        if (affinity.equals(((ActivityRecord)mMainStack.mHistory.get(N-1)).task.affinity)) {
-            return N-1;
-        }
-        
-        return -1;
-    }
-    
     /**
      * TODO: Add mController hook
      */
@@ -6080,20 +5929,8 @@
                     mMainStack.moveTaskToFrontLocked(tr, null, options);
                     return;
                 }
-                for (int i=mMainStack.mHistory.size()-1; i>=0; i--) {
-                    ActivityRecord hr = (ActivityRecord)mMainStack.mHistory.get(i);
-                    if (hr.task.taskId == task) {
-                        if ((flags&ActivityManager.MOVE_TASK_NO_USER_ACTION) == 0) {
-                            mMainStack.mUserLeaving = true;
-                        }
-                        if ((flags&ActivityManager.MOVE_TASK_WITH_HOME) != 0) {
-                            // Caller wants the home activity moved with it.  To accomplish this,
-                            // we'll just move the home task to the top first.
-                            mMainStack.moveHomeToFrontLocked();
-                        }
-                        mMainStack.moveTaskToFrontLocked(hr.task, null, options);
-                        return;
-                    }
+                if (mMainStack.findTaskToMoveToFrontLocked(task, flags, options)) {
+                    return;
                 }
             } finally {
                 Binder.restoreCallingIdentity(origId);
@@ -6133,7 +5970,7 @@
         enforceNotIsolatedCaller("moveActivityTaskToBack");
         synchronized(this) {
             final long origId = Binder.clearCallingIdentity();
-            int taskId = getTaskForActivityLocked(token, !nonRoot);
+            int taskId = mMainStack.getTaskForActivityLocked(token, !nonRoot);
             if (taskId >= 0) {
                 return mMainStack.moveTaskToBackLocked(taskId, null);
             }
@@ -6163,27 +6000,10 @@
 
     public int getTaskForActivity(IBinder token, boolean onlyRoot) {
         synchronized(this) {
-            return getTaskForActivityLocked(token, onlyRoot);
+            return mMainStack.getTaskForActivityLocked(token, onlyRoot);
         }
     }
 
-    int getTaskForActivityLocked(IBinder token, boolean onlyRoot) {
-        final int N = mMainStack.mHistory.size();
-        TaskRecord lastTask = null;
-        for (int i=0; i<N; i++) {
-            ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i);
-            if (r.appToken == token) {
-                if (!onlyRoot || lastTask != r.task) {
-                    return r.task.taskId;
-                }
-                return -1;
-            }
-            lastTask = r.task;
-        }
-
-        return -1;
-    }
-
     // =========================================================
     // THUMBNAILS
     // =========================================================
@@ -7089,13 +6909,10 @@
                 "unhandledBack()");
 
         synchronized(this) {
-            int count = mMainStack.mHistory.size();
-            if (DEBUG_SWITCH) Slog.d(
-                TAG, "Performing unhandledBack(): stack size = " + count);
-            if (count > 1) {
-                final long origId = Binder.clearCallingIdentity();
-                mMainStack.finishActivityLocked((ActivityRecord)mMainStack.mHistory.get(count-1),
-                        count-1, Activity.RESULT_CANCELED, null, "unhandled-back", true);
+            final long origId = Binder.clearCallingIdentity();
+            try {
+                mMainStack.unhandledBackLocked();
+            } finally {
                 Binder.restoreCallingIdentity(origId);
             }
         }
@@ -7413,9 +7230,7 @@
     }
 
     public void requestBugReport() {
-        // No permission check because this can't do anything harmful --
-        // it will just eventually cause the user to be presented with
-        // a UI to select where the bug report goes.
+        enforceCallingPermission(android.Manifest.permission.DUMP, "requestBugReport");
         SystemProperties.set("ctl.start", "bugreport");
     }
 
@@ -7911,7 +7726,8 @@
                             Slog.i(TAG, "Sending system update to " + intent.getComponent()
                                     + " for user " + users[j]);
                             broadcastIntentLocked(null, null, intent, null, finisher,
-                                    0, null, null, null, true, false, MY_PID, Process.SYSTEM_UID,
+                                    0, null, null, null, AppOpsManager.OP_NONE,
+                                    true, false, MY_PID, Process.SYSTEM_UID,
                                     users[j]);
                             if (finisher != null) {
                                 mWaitingUpdate = true;
@@ -7924,7 +7740,8 @@
                 }
                 mDidUpdate = true;
             }
-            
+
+            mAppOpsService.systemReady();
             mSystemReady = true;
             if (!mStartRunning) {
                 return;
@@ -8044,7 +7861,7 @@
                         | Intent.FLAG_RECEIVER_FOREGROUND);
                 intent.putExtra(Intent.EXTRA_USER_HANDLE, mCurrentUserId);
                 broadcastIntentLocked(null, null, intent,
-                        null, null, 0, null, null, null,
+                        null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                         false, false, MY_PID, Process.SYSTEM_UID, mCurrentUserId);
                 intent = new Intent(Intent.ACTION_USER_STARTING);
                 intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
@@ -8057,7 +7874,7 @@
                                     throws RemoteException {
                             }
                         }, 0, null, null,
-                        android.Manifest.permission.INTERACT_ACROSS_USERS,
+                        android.Manifest.permission.INTERACT_ACROSS_USERS, AppOpsManager.OP_NONE,
                         true, false, MY_PID, Process.SYSTEM_UID, UserHandle.USER_ALL);
             } finally {
                 Binder.restoreCallingIdentity(ident);
@@ -8157,15 +7974,7 @@
                     + " has crashed too many times: killing!");
             EventLog.writeEvent(EventLogTags.AM_PROCESS_CRASHED_TOO_MUCH,
                     app.userId, app.info.processName, app.uid);
-            for (int i=mMainStack.mHistory.size()-1; i>=0; i--) {
-                ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i);
-                if (r.app == app) {
-                    Slog.w(TAG, "  Force finishing activity "
-                        + r.intent.getComponent().flattenToShortString());
-                    r.stack.finishActivityLocked(r, i, Activity.RESULT_CANCELED,
-                            null, "crashed", false);
-                }
-            }
+            mMainStack.handleAppCrashLocked(app);
             if (!app.persistent) {
                 // We don't want to start this process again until the user
                 // explicitly does so...  but for persistent process, we really
@@ -8190,33 +7999,7 @@
             }
             mMainStack.resumeTopActivityLocked(null);
         } else {
-            ActivityRecord r = mMainStack.topRunningActivityLocked(null);
-            if (r != null && r.app == app) {
-                // If the top running activity is from this crashing
-                // process, then terminate it to avoid getting in a loop.
-                Slog.w(TAG, "  Force finishing activity "
-                        + r.intent.getComponent().flattenToShortString());
-                int index = mMainStack.indexOfActivityLocked(r);
-                r.stack.finishActivityLocked(r, index,
-                        Activity.RESULT_CANCELED, null, "crashed", false);
-                // Also terminate any activities below it that aren't yet
-                // stopped, to avoid a situation where one will get
-                // re-start our crashing activity once it gets resumed again.
-                index--;
-                if (index >= 0) {
-                    r = (ActivityRecord)mMainStack.mHistory.get(index);
-                    if (r.state == ActivityState.RESUMED
-                            || r.state == ActivityState.PAUSING
-                            || r.state == ActivityState.PAUSED) {
-                        if (!r.isHomeActivity || mHomeProcess != r.app) {
-                            Slog.w(TAG, "  Force finishing activity "
-                                    + r.intent.getComponent().flattenToShortString());
-                            r.stack.finishActivityLocked(r, index,
-                                    Activity.RESULT_CANCELED, null, "crashed", false);
-                        }
-                    }
-                }
-            }
+            mMainStack.finishTopRunningActivityLocked(app);
         }
 
         // Bump up the crash count of any services currently running in the proc.
@@ -9235,8 +9018,7 @@
             int opti, boolean dumpAll, boolean dumpClient, String dumpPackage) {
         pw.println("ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)");
         pw.println("  Main stack:");
-        dumpHistoryList(fd, pw, mMainStack.mHistory, "  ", "Hist", true, !dumpAll, dumpClient,
-                dumpPackage);
+        mMainStack.dumpActivitiesLocked(fd, pw, dumpAll, dumpClient, dumpPackage);
         pw.println(" ");
         pw.println("  Running activities (most recent first):");
         dumpHistoryList(fd, pw, mMainStack.mLRUActivities, "  ", "Run", false, !dumpAll, false,
@@ -9766,32 +9548,10 @@
      */
     protected boolean dumpActivity(FileDescriptor fd, PrintWriter pw, String name, String[] args,
             int opti, boolean dumpAll) {
-        ArrayList<ActivityRecord> activities = new ArrayList<ActivityRecord>();
-
-        if ("all".equals(name)) {
-            synchronized (this) {
-                for (ActivityRecord r1 : (ArrayList<ActivityRecord>)mMainStack.mHistory) {
-                    activities.add(r1);
-                }
-            }
-        } else if ("top".equals(name)) {
-            synchronized (this) {
-                final int N = mMainStack.mHistory.size();
-                if (N > 0) {
-                    activities.add((ActivityRecord)mMainStack.mHistory.get(N-1));
-                }
-            }
-        } else {
-            ItemMatcher matcher = new ItemMatcher();
-            matcher.build(name);
-
-            synchronized (this) {
-                for (ActivityRecord r1 : (ArrayList<ActivityRecord>)mMainStack.mHistory) {
-                    if (matcher.match(r1, r1.intent.getComponent())) {
-                        activities.add(r1);
-                    }
-                }
-            }
+        ArrayList<ActivityRecord> activities;
+        
+        synchronized (this) {
+            activities = mMainStack.getDumpActivitiesLocked(name);
         }
 
         if (activities.size() <= 0) {
@@ -10043,7 +9803,7 @@
         return needSep;
     }
 
-    private static final void dumpHistoryList(FileDescriptor fd, PrintWriter pw, List list,
+    static final void dumpHistoryList(FileDescriptor fd, PrintWriter pw, List list,
             String prefix, String label, boolean complete, boolean brief, boolean client,
             String dumpPackage) {
         TaskRecord lastTask = null;
@@ -11552,8 +11312,8 @@
                     Intent intent = (Intent)allSticky.get(i);
                     BroadcastQueue queue = broadcastQueueForIntent(intent);
                     BroadcastRecord r = new BroadcastRecord(queue, intent, null,
-                            null, -1, -1, null, receivers, null, 0, null, null,
-                            false, true, true, -1);
+                            null, -1, -1, null, AppOpsManager.OP_NONE, receivers, null, 0,
+                            null, null, false, true, true, -1);
                     queue.enqueueParallelBroadcastLocked(r);
                     queue.scheduleBroadcastsLocked();
                 }
@@ -11702,7 +11462,7 @@
     private final int broadcastIntentLocked(ProcessRecord callerApp,
             String callerPackage, Intent intent, String resolvedType,
             IIntentReceiver resultTo, int resultCode, String resultData,
-            Bundle map, String requiredPermission,
+            Bundle map, String requiredPermission, int appOp,
             boolean ordered, boolean sticky, int callingPid, int callingUid,
             int userId) {
         intent = new Intent(intent);
@@ -11778,6 +11538,7 @@
                         synchronized (bs) {
                             bs.removeUidStatsLocked(uid);
                         }
+                        mAppOpsService.uidRemoved(uid);
                     }
                 } else {
                     // If resources are unavailable just force stop all
@@ -11803,6 +11564,10 @@
                             if (Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) {
                                 sendPackageBroadcastLocked(IApplicationThread.PACKAGE_REMOVED,
                                         new String[] {ssp}, userId);
+                                if (!intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {
+                                    mAppOpsService.packageRemoved(
+                                            intent.getIntExtra(Intent.EXTRA_UID, -1), ssp);
+                                }
                             }
                         }
                     }
@@ -11948,7 +11713,7 @@
             // components to be launched.
             final BroadcastQueue queue = broadcastQueueForIntent(intent);
             BroadcastRecord r = new BroadcastRecord(queue, intent, callerApp,
-                    callerPackage, callingPid, callingUid, requiredPermission,
+                    callerPackage, callingPid, callingUid, requiredPermission, appOp,
                     registeredReceivers, resultTo, resultCode, resultData, map,
                     ordered, sticky, false, userId);
             if (DEBUG_BROADCAST) Slog.v(
@@ -12038,7 +11803,7 @@
                 || resultTo != null) {
             BroadcastQueue queue = broadcastQueueForIntent(intent);
             BroadcastRecord r = new BroadcastRecord(queue, intent, callerApp,
-                    callerPackage, callingPid, callingUid, requiredPermission,
+                    callerPackage, callingPid, callingUid, requiredPermission, appOp,
                     receivers, resultTo, resultCode, resultData, map, ordered,
                     sticky, false, userId);
             if (DEBUG_BROADCAST) Slog.v(
@@ -12090,7 +11855,7 @@
     public final int broadcastIntent(IApplicationThread caller,
             Intent intent, String resolvedType, IIntentReceiver resultTo,
             int resultCode, String resultData, Bundle map,
-            String requiredPermission, boolean serialized, boolean sticky, int userId) {
+            String requiredPermission, int appOp, boolean serialized, boolean sticky, int userId) {
         enforceNotIsolatedCaller("broadcastIntent");
         synchronized(this) {
             intent = verifyBroadcastLocked(intent);
@@ -12102,7 +11867,7 @@
             int res = broadcastIntentLocked(callerApp,
                     callerApp != null ? callerApp.info.packageName : null,
                     intent, resolvedType, resultTo,
-                    resultCode, resultData, map, requiredPermission, serialized, sticky,
+                    resultCode, resultData, map, requiredPermission, appOp, serialized, sticky,
                     callingPid, callingUid, userId);
             Binder.restoreCallingIdentity(origId);
             return res;
@@ -12119,7 +11884,7 @@
             final long origId = Binder.clearCallingIdentity();
             int res = broadcastIntentLocked(null, packageName, intent, resolvedType,
                     resultTo, resultCode, resultData, map, requiredPermission,
-                    serialized, sticky, -1, uid, userId);
+                    AppOpsManager.OP_NONE, serialized, sticky, -1, uid, userId);
             Binder.restoreCallingIdentity(origId);
             return res;
         }
@@ -12505,13 +12270,14 @@
                         | Intent.FLAG_RECEIVER_REPLACE_PENDING
                         | Intent.FLAG_RECEIVER_FOREGROUND);
                 broadcastIntentLocked(null, null, intent, null, null, 0, null, null,
-                        null, false, false, MY_PID, Process.SYSTEM_UID, UserHandle.USER_ALL);
+                        null, AppOpsManager.OP_NONE, false, false, MY_PID,
+                        Process.SYSTEM_UID, UserHandle.USER_ALL);
                 if ((changes&ActivityInfo.CONFIG_LOCALE) != 0) {
                     intent = new Intent(Intent.ACTION_LOCALE_CHANGED);
                     intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
                     broadcastIntentLocked(null, null, intent,
-                            null, null, 0, null, null,
-                            null, false, false, MY_PID, Process.SYSTEM_UID, UserHandle.USER_ALL);
+                            null, null, 0, null, null, null, AppOpsManager.OP_NONE,
+                            false, false, MY_PID, Process.SYSTEM_UID, UserHandle.USER_ALL);
                 }
             }
         }
@@ -12575,95 +12341,14 @@
 
     public boolean navigateUpTo(IBinder token, Intent destIntent, int resultCode,
             Intent resultData) {
-        ComponentName dest = destIntent.getComponent();
 
         synchronized (this) {
             ActivityRecord srec = ActivityRecord.forToken(token);
             if (srec == null) {
                 return false;
             }
-            ArrayList<ActivityRecord> history = srec.stack.mHistory;
-            final int start = history.indexOf(srec);
-            if (start < 0) {
-                // Current activity is not in history stack; do nothing.
-                return false;
-            }
-            int finishTo = start - 1;
-            ActivityRecord parent = null;
-            boolean foundParentInTask = false;
-            if (dest != null) {
-                TaskRecord tr = srec.task;
-                for (int i = start - 1; i >= 0; i--) {
-                    ActivityRecord r = history.get(i);
-                    if (tr != r.task) {
-                        // Couldn't find parent in the same task; stop at the one above this.
-                        // (Root of current task; in-app "home" behavior)
-                        // Always at least finish the current activity.
-                        finishTo = Math.min(start - 1, i + 1);
-                        parent = history.get(finishTo);
-                        break;
-                    } else if (r.info.packageName.equals(dest.getPackageName()) &&
-                            r.info.name.equals(dest.getClassName())) {
-                        finishTo = i;
-                        parent = r;
-                        foundParentInTask = true;
-                        break;
-                    }
-                }
-            }
-
-            if (mController != null) {
-                ActivityRecord next = mMainStack.topRunningActivityLocked(token, 0);
-                if (next != null) {
-                    // ask watcher if this is allowed
-                    boolean resumeOK = true;
-                    try {
-                        resumeOK = mController.activityResuming(next.packageName);
-                    } catch (RemoteException e) {
-                        mController = null;
-                    }
-
-                    if (!resumeOK) {
-                        return false;
-                    }
-                }
-            }
-            final long origId = Binder.clearCallingIdentity();
-            for (int i = start; i > finishTo; i--) {
-                ActivityRecord r = history.get(i);
-                mMainStack.requestFinishActivityLocked(r.appToken, resultCode, resultData,
-                        "navigate-up", true);
-                // Only return the supplied result for the first activity finished
-                resultCode = Activity.RESULT_CANCELED;
-                resultData = null;
-            }
-
-            if (parent != null && foundParentInTask) {
-                final int parentLaunchMode = parent.info.launchMode;
-                final int destIntentFlags = destIntent.getFlags();
-                if (parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE ||
-                        parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TASK ||
-                        parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TOP ||
-                        (destIntentFlags & Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0) {
-                    parent.deliverNewIntentLocked(srec.info.applicationInfo.uid, destIntent);
-                } else {
-                    try {
-                        ActivityInfo aInfo = AppGlobals.getPackageManager().getActivityInfo(
-                                destIntent.getComponent(), 0, srec.userId);
-                        int res = mMainStack.startActivityLocked(srec.app.thread, destIntent,
-                                null, aInfo, parent.appToken, null,
-                                0, -1, parent.launchedFromUid, parent.launchedFromPackage,
-                                0, null, true, null);
-                        foundParentInTask = res == ActivityManager.START_SUCCESS;
-                    } catch (RemoteException e) {
-                        foundParentInTask = false;
-                    }
-                    mMainStack.requestFinishActivityLocked(parent.appToken, resultCode,
-                            resultData, "navigate-up", true);
-                }
-            }
-            Binder.restoreCallingIdentity(origId);
-            return foundParentInTask;
+            ActivityStack stack = srec.stack;
+            return stack.navigateUpToLocked(srec, destIntent, resultCode, resultData);
         }
     }
 
@@ -14355,7 +14040,7 @@
                             | Intent.FLAG_RECEIVER_FOREGROUND);
                     intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
                     broadcastIntentLocked(null, null, intent,
-                            null, null, 0, null, null, null,
+                            null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                             false, false, MY_PID, Process.SYSTEM_UID, userId);
                 }
 
@@ -14370,7 +14055,8 @@
                                             boolean sticky, int sendingUser) {
                                         userInitialized(uss, userId);
                                     }
-                                }, 0, null, null, null, true, false, MY_PID, Process.SYSTEM_UID,
+                                }, 0, null, null, null, AppOpsManager.OP_NONE,
+                                true, false, MY_PID, Process.SYSTEM_UID,
                                 userId);
                         uss.initializing = true;
                     } else {
@@ -14398,7 +14084,7 @@
                                         throws RemoteException {
                                 }
                             }, 0, null, null,
-                            android.Manifest.permission.INTERACT_ACROSS_USERS,
+                            android.Manifest.permission.INTERACT_ACROSS_USERS, AppOpsManager.OP_NONE,
                             true, false, MY_PID, Process.SYSTEM_UID, UserHandle.USER_ALL);
                 }
             }
@@ -14419,7 +14105,7 @@
                         | Intent.FLAG_RECEIVER_FOREGROUND);
                 intent.putExtra(Intent.EXTRA_USER_HANDLE, oldUserId);
                 broadcastIntentLocked(null, null, intent,
-                        null, null, 0, null, null, null,
+                        null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                         false, false, MY_PID, Process.SYSTEM_UID, oldUserId);
             }
             if (newUserId >= 0) {
@@ -14428,7 +14114,7 @@
                         | Intent.FLAG_RECEIVER_FOREGROUND);
                 intent.putExtra(Intent.EXTRA_USER_HANDLE, newUserId);
                 broadcastIntentLocked(null, null, intent,
-                        null, null, 0, null, null, null,
+                        null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                         false, false, MY_PID, Process.SYSTEM_UID, newUserId);
                 intent = new Intent(Intent.ACTION_USER_SWITCHED);
                 intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
@@ -14436,7 +14122,7 @@
                 intent.putExtra(Intent.EXTRA_USER_HANDLE, newUserId);
                 broadcastIntentLocked(null, null, intent,
                         null, null, 0, null, null,
-                        android.Manifest.permission.MANAGE_USERS,
+                        android.Manifest.permission.MANAGE_USERS, AppOpsManager.OP_NONE,
                         false, false, MY_PID, Process.SYSTEM_UID, UserHandle.USER_ALL);
             }
         } finally {
@@ -14541,7 +14227,7 @@
                 intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
                 broadcastIntentLocked(null, null, intent,
                         null, null, 0, null, null,
-                        android.Manifest.permission.RECEIVE_BOOT_COMPLETED,
+                        android.Manifest.permission.RECEIVE_BOOT_COMPLETED, AppOpsManager.OP_NONE,
                         false, false, MY_PID, Process.SYSTEM_UID, userId);
             }
             int num = mUserLru.size();
@@ -14657,14 +14343,14 @@
                             uss.mState = UserStartedState.STATE_SHUTDOWN;
                         }
                         broadcastIntentLocked(null, null, shutdownIntent,
-                                null, shutdownReceiver, 0, null, null, null,
+                                null, shutdownReceiver, 0, null, null, null, AppOpsManager.OP_NONE,
                                 true, false, MY_PID, Process.SYSTEM_UID, userId);
                     }
                 };
                 // Kick things off.
                 broadcastIntentLocked(null, null, stoppingIntent,
                         null, stoppingReceiver, 0, null, null,
-                        android.Manifest.permission.INTERACT_ACROSS_USERS,
+                        android.Manifest.permission.INTERACT_ACROSS_USERS, AppOpsManager.OP_NONE,
                         true, false, MY_PID, Process.SYSTEM_UID, UserHandle.USER_ALL);
             } finally {
                 Binder.restoreCallingIdentity(ident);
diff --git a/services/java/com/android/server/am/ActivityRecord.java b/services/java/com/android/server/am/ActivityRecord.java
index ba2e47a..c1b406e 100644
--- a/services/java/com/android/server/am/ActivityRecord.java
+++ b/services/java/com/android/server/am/ActivityRecord.java
@@ -22,6 +22,7 @@
 
 import android.app.Activity;
 import android.app.ActivityOptions;
+import android.app.ResultInfo;
 import android.content.ComponentName;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
@@ -95,9 +96,9 @@
     ActivityRecord resultTo; // who started this entry, so will get our reply
     final String resultWho; // additional identifier for use by resultTo.
     final int requestCode;  // code given by requester (resultTo)
-    ArrayList results;      // pending ActivityResult objs we have received
+    ArrayList<ResultInfo> results; // pending ActivityResult objs we have received
     HashSet<WeakReference<PendingIntentRecord>> pendingResults; // all pending intents for this act
-    ArrayList newIntents;   // any pending new intents for single-top mode
+    ArrayList<Intent> newIntents; // any pending new intents for single-top mode
     ActivityOptions pendingOptions; // most recently given options
     HashSet<ConnectionRecord> connections; // All ConnectionRecord we hold
     UriPermissionOwner uriPermissions; // current special URI access perms.
@@ -574,6 +575,9 @@
      */
     final void deliverNewIntentLocked(int callingUid, Intent intent) {
         boolean sent = false;
+        // The activity now gets access to the data associated with this Intent.
+        service.grantUriPermissionFromIntentLocked(callingUid, packageName,
+                intent, getUriPermissionsLocked());
         // We want to immediately deliver the intent to the activity if
         // it is currently the top resumed activity...  however, if the
         // device is sleeping, then all activities are stopped, so in that
@@ -586,8 +590,6 @@
                 ArrayList<Intent> ar = new ArrayList<Intent>();
                 intent = new Intent(intent);
                 ar.add(intent);
-                service.grantUriPermissionFromIntentLocked(callingUid, packageName,
-                        intent, getUriPermissionsLocked());
                 app.thread.scheduleNewIntent(ar, appToken);
                 sent = true;
             } catch (RemoteException e) {
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java
index 526b24f..84d5a72 100644
--- a/services/java/com/android/server/am/ActivityStack.java
+++ b/services/java/com/android/server/am/ActivityStack.java
@@ -21,18 +21,23 @@
 
 import com.android.internal.app.HeavyWeightSwitcherActivity;
 import com.android.internal.os.BatteryStatsImpl;
+import com.android.server.am.ActivityManagerService.ItemMatcher;
 import com.android.server.am.ActivityManagerService.PendingActivityLaunch;
 import com.android.server.wm.AppTransition;
+import com.android.server.wm.TaskGroup;
 
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.ActivityOptions;
 import android.app.AppGlobals;
+import android.app.IActivityController;
 import android.app.IActivityManager;
+import android.app.IThumbnailReceiver;
 import android.app.IThumbnailRetriever;
 import android.app.IApplicationThread;
 import android.app.PendingIntent;
 import android.app.ResultInfo;
+import android.app.ActivityManager.RunningTaskInfo;
 import android.app.IActivityManager.WaitResult;
 import android.content.ComponentName;
 import android.content.Context;
@@ -63,7 +68,9 @@
 import android.util.Slog;
 import android.view.Display;
 
+import java.io.FileDescriptor;
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -150,14 +157,14 @@
     
     /**
      * The back history of all previous (and possibly still
-     * running) activities.  It contains HistoryRecord objects.
+     * running) activities.  It contains #ActivityRecord objects.
      */
-    final ArrayList<ActivityRecord> mHistory = new ArrayList<ActivityRecord>();
+    private final ArrayList<ActivityRecord> mHistory = new ArrayList<ActivityRecord>();
 
     /**
      * Used for validating app tokens with window manager.
      */
-    final ArrayList<IBinder> mValidateAppTokens = new ArrayList<IBinder>();
+    final ArrayList<TaskGroup> mValidateAppTokens = new ArrayList<TaskGroup>();
 
     /**
      * List of running activities, sorted by recent usage.
@@ -289,6 +296,12 @@
     private ActivityRecord mLastScreenshotActivity = null;
     private Bitmap mLastScreenshotBitmap = null;
 
+    /**
+     * List of ActivityRecord objects that have been finished and must
+     * still report back to a pending thumbnail receiver.
+     */
+    private final ArrayList<ActivityRecord> mCancelledThumbnails = new ArrayList<ActivityRecord>();
+
     int mThumbnailWidth = -1;
     int mThumbnailHeight = -1;
 
@@ -490,14 +503,10 @@
         return null;
     }
 
-    final int indexOfTokenLocked(IBinder token) {
+    private final int indexOfTokenLocked(IBinder token) {
         return mHistory.indexOf(ActivityRecord.forToken(token));
     }
 
-    final int indexOfActivityLocked(ActivityRecord r) {
-        return mHistory.indexOf(r);
-    }
-
     final ActivityRecord isInStackLocked(IBinder token) {
         ActivityRecord r = ActivityRecord.forToken(token);
         if (mHistory.contains(r)) {
@@ -506,6 +515,23 @@
         return null;
     }
 
+    int getTaskForActivityLocked(IBinder token, boolean onlyRoot) {
+        TaskRecord lastTask = null;
+        final int N = mHistory.size();
+        for (int i = 0; i < N; i++) {
+            ActivityRecord r = mHistory.get(i);
+            if (r.appToken == token) {
+                if (!onlyRoot || lastTask != r.task) {
+                    return r.task.taskId;
+                }
+                return -1;
+            }
+            lastTask = r.task;
+        }
+
+        return -1;
+    }
+
     private final boolean updateLRUListLocked(ActivityRecord r) {
         final boolean hadit = mLRUActivities.remove(r);
         mLRUActivities.add(r);
@@ -709,7 +735,13 @@
                 try {
                     profileFd = profileFd.dup();
                 } catch (IOException e) {
-                    profileFd = null;
+                    if (profileFd != null) {
+                        try {
+                            profileFd.close();
+                        } catch (IOException o) {
+                        }
+                        profileFd = null;
+                    }
                 }
             }
             app.thread.scheduleLaunchActivity(new Intent(r.intent), r.appToken,
@@ -1722,7 +1754,7 @@
             
             try {
                 // Deliver all pending results.
-                ArrayList a = next.results;
+                ArrayList<ResultInfo> a = next.results;
                 if (a != null) {
                     final int N = a.size();
                     if (!next.finishing && N > 0) {
@@ -1959,8 +1991,17 @@
     final void validateAppTokensLocked() {
         mValidateAppTokens.clear();
         mValidateAppTokens.ensureCapacity(mHistory.size());
+        int taskId = Integer.MIN_VALUE;
+        TaskGroup task = null;
         for (int i=0; i<mHistory.size(); i++) {
-            mValidateAppTokens.add(mHistory.get(i).appToken);
+            final ActivityRecord r = mHistory.get(i);
+            if (taskId != r.task.taskId) {
+                taskId = r.task.taskId;
+                task = new TaskGroup();
+                task.taskId = taskId;
+                mValidateAppTokens.add(task);
+            }
+            task.tokens.add(r.appToken);
         }
         mService.mWindowManager.validateAppTokens(mValidateAppTokens);
     }
@@ -2072,13 +2113,14 @@
                             if (DEBUG_TASKS) Slog.v(TAG, "Start pushing activity " + target
                                     + " out to new task " + target.task);
                         }
-                        mService.mWindowManager.setAppGroupId(target.appToken, task.taskId);
+                        mService.mWindowManager.setAppGroupId(target.appToken, target.task.taskId);
                         if (replyChainEnd < 0) {
                             replyChainEnd = targetI;
                         }
                         int dstPos = 0;
                         ThumbnailHolder curThumbHolder = target.thumbHolder;
                         boolean gotOptions = !canMoveOptions;
+                        final int taskId = target.task.taskId;
                         for (int srcPos=targetI; srcPos<=replyChainEnd; srcPos++) {
                             p = mHistory.get(srcPos);
                             if (p.finishing) {
@@ -2103,14 +2145,15 @@
                             }
                             mHistory.remove(srcPos);
                             mHistory.add(dstPos, p);
-                            mService.mWindowManager.moveAppToken(dstPos, p.appToken);
-                            mService.mWindowManager.setAppGroupId(p.appToken, p.task.taskId);
+//                            mService.mWindowManager.moveAppToken(dstPos, p.appToken);
+                            mService.mWindowManager.setAppGroupId(p.appToken, taskId);
                             dstPos++;
-                            if (VALIDATE_TOKENS) {
-                                validateAppTokensLocked();
-                            }
                             i++;
                         }
+                        mService.mWindowManager.moveTaskToBottom(taskId);
+                        if (VALIDATE_TOKENS) {
+                            validateAppTokensLocked();
+                        }
                         if (taskTop == p) {
                             taskTop = below;
                         }
@@ -2228,6 +2271,7 @@
                     if (replyChainEnd < 0) {
                         replyChainEnd = targetI;
                     }
+                    final int taskId = task.taskId;
                     if (DEBUG_TASKS) Slog.v(TAG, "Reparenting task at index "
                             + targetI + " to " + replyChainEnd);
                     for (int srcPos=replyChainEnd; srcPos>=targetI; srcPos--) {
@@ -2253,11 +2297,13 @@
                         if (DEBUG_TASKS) Slog.v(TAG, "Pulling activity " + p
                                 + " from " + srcPos + " to " + lastReparentPos
                                 + " in to resetting task " + task);
-                        mService.mWindowManager.moveAppToken(lastReparentPos, p.appToken);
-                        mService.mWindowManager.setAppGroupId(p.appToken, p.task.taskId);
-                        if (VALIDATE_TOKENS) {
-                            validateAppTokensLocked();
-                        }
+//                        mService.mWindowManager.moveAppToken(lastReparentPos, p.appToken);
+                        mService.mWindowManager.setAppGroupId(p.appToken, taskId);
+                    }
+                    // TODO: This is wrong because it doesn't take lastReparentPos into account.
+                    mService.mWindowManager.moveTaskToTop(taskId);
+                    if (VALIDATE_TOKENS) {
+                        validateAppTokensLocked();
                     }
                     replyChainEnd = -1;
                     
@@ -2368,7 +2414,7 @@
                 if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE
                         && (launchFlags&Intent.FLAG_ACTIVITY_SINGLE_TOP) == 0) {
                     if (!ret.finishing) {
-                        int index = indexOfTokenLocked(ret.appToken);
+                        int index = mHistory.indexOf(ret);
                         if (index >= 0) {
                             finishActivityLocked(ret, index, Activity.RESULT_CANCELED,
                                     null, "clear", false);
@@ -3523,7 +3569,7 @@
             }
 
             // Get the activity record.
-            int index = indexOfActivityLocked(r);
+            int index = mHistory.indexOf(r);
             if (index >= 0) {
                 res = r;
 
@@ -3579,9 +3625,9 @@
                 finishes = new ArrayList<ActivityRecord>(mFinishingActivities);
                 mFinishingActivities.clear();
             }
-            if ((NT=mService.mCancelledThumbnails.size()) > 0) {
-                thumbnails = new ArrayList<ActivityRecord>(mService.mCancelledThumbnails);
-                mService.mCancelledThumbnails.clear();
+            if ((NT=mCancelledThumbnails.size()) > 0) {
+                thumbnails = new ArrayList<ActivityRecord>(mCancelledThumbnails);
+                mCancelledThumbnails.clear();
             }
 
             if (mMainStack) {
@@ -3609,7 +3655,7 @@
         // Stop any activities that are scheduled to do so but have been
         // waiting for the next one to start.
         for (i=0; i<NS; i++) {
-            ActivityRecord r = (ActivityRecord)stops.get(i);
+            ActivityRecord r = stops.get(i);
             synchronized (mService) {
                 if (r.finishing) {
                     finishCurrentActivityLocked(r, FINISH_IMMEDIATELY, false);
@@ -3622,7 +3668,7 @@
         // Finish any activities that are scheduled to do so but have been
         // waiting for the next one to start.
         for (i=0; i<NF; i++) {
-            ActivityRecord r = (ActivityRecord)finishes.get(i);
+            ActivityRecord r = finishes.get(i);
             synchronized (mService) {
                 activityRemoved = destroyActivityLocked(r, true, false, "finish-idle");
             }
@@ -3630,7 +3676,7 @@
 
         // Report back to any thumbnail receivers.
         for (i=0; i<NT; i++) {
-            ActivityRecord r = (ActivityRecord)thumbnails.get(i);
+            ActivityRecord r = thumbnails.get(i);
             mService.sendPendingThumbnail(r, null, null, null, true);
         }
 
@@ -3685,7 +3731,7 @@
 
         int i;
         for (i=mHistory.size()-1; i>=0; i--) {
-            ActivityRecord r = (ActivityRecord)mHistory.get(i);
+            ActivityRecord r = mHistory.get(i);
             if (r.resultTo == self && r.requestCode == requestCode) {
                 if ((r.resultWho == null && resultWho == null) ||
                     (r.resultWho != null && r.resultWho.equals(resultWho))) {
@@ -3697,6 +3743,36 @@
         mService.updateOomAdjLocked();
     }
 
+    final void finishTopRunningActivityLocked(ProcessRecord app) {
+        ActivityRecord r = topRunningActivityLocked(null);
+        if (r != null && r.app == app) {
+            // If the top running activity is from this crashing
+            // process, then terminate it to avoid getting in a loop.
+            Slog.w(TAG, "  Force finishing activity "
+                    + r.intent.getComponent().flattenToShortString());
+            int index = mHistory.indexOf(r);
+            r.stack.finishActivityLocked(r, index,
+                    Activity.RESULT_CANCELED, null, "crashed", false);
+            // Also terminate any activities below it that aren't yet
+            // stopped, to avoid a situation where one will get
+            // re-start our crashing activity once it gets resumed again.
+            index--;
+            if (index >= 0) {
+                r = mHistory.get(index);
+                if (r.state == ActivityState.RESUMED
+                        || r.state == ActivityState.PAUSING
+                        || r.state == ActivityState.PAUSED) {
+                    if (!r.isHomeActivity || mService.mHomeProcess != r.app) {
+                        Slog.w(TAG, "  Force finishing activity "
+                                + r.intent.getComponent().flattenToShortString());
+                        r.stack.finishActivityLocked(r, index,
+                                Activity.RESULT_CANCELED, null, "crashed", false);
+                    }
+                }
+            }
+        }
+    }
+
     final boolean finishActivityAffinityLocked(IBinder token) {
         int index = indexOfTokenLocked(token);
         if (DEBUG_RESULTS) Slog.v(
@@ -3755,6 +3831,19 @@
      * @return Returns true if this activity has been removed from the history
      * list, or false if it is still in the list and will be removed later.
      */
+    final boolean finishActivityLocked(ActivityRecord r,
+            int resultCode, Intent resultData, String reason, boolean oomAdj) {
+        int index = mHistory.indexOf(r);
+        if (index >= 0) {
+            return finishActivityLocked(r, index, resultCode, resultData, reason, false, oomAdj);
+        }
+        return false;
+    }
+
+    /**
+     * @return Returns true if this activity has been removed from the history
+     * list, or false if it is still in the list and will be removed later.
+     */
     final boolean finishActivityLocked(ActivityRecord r, int index,
             int resultCode, Intent resultData, String reason, boolean oomAdj) {
         return finishActivityLocked(r, index, resultCode, resultData, reason, false, oomAdj);
@@ -3804,7 +3893,7 @@
             // There are clients waiting to receive thumbnails so, in case
             // this is an activity that someone is waiting for, add it
             // to the pending list so we can correctly update the clients.
-            mService.mCancelledThumbnails.add(r);
+            mCancelledThumbnails.add(r);
         }
 
         if (immediate) {
@@ -3847,7 +3936,7 @@
 
     private final ActivityRecord finishCurrentActivityLocked(ActivityRecord r,
             int mode, boolean oomAdj) {
-        final int index = indexOfActivityLocked(r);
+        final int index = mHistory.indexOf(r);
         if (index < 0) {
             return null;
         }
@@ -3903,16 +3992,102 @@
                 resumeTopActivityLocked(null);
             }
             return activityRemoved ? null : r;
-        } else {
-            // Need to go through the full pause cycle to get this
-            // activity into the stopped state and then finish it.
-            if (localLOGV) Slog.v(TAG, "Enqueueing pending finish: " + r);
-            mFinishingActivities.add(r);
-            resumeTopActivityLocked(null);
         }
+
+        // Need to go through the full pause cycle to get this
+        // activity into the stopped state and then finish it.
+        if (localLOGV) Slog.v(TAG, "Enqueueing pending finish: " + r);
+        mFinishingActivities.add(r);
+        resumeTopActivityLocked(null);
         return r;
     }
 
+    final boolean navigateUpToLocked(ActivityRecord srec, Intent destIntent, int resultCode,
+            Intent resultData) {
+        final int start = mHistory.indexOf(srec);
+        if (start < 0) {
+            // Current activity is not in history stack; do nothing.
+            return false;
+        }
+        int finishTo = start - 1;
+        ActivityRecord parent = null;
+        boolean foundParentInTask = false;
+        ComponentName dest = destIntent.getComponent();
+        if (dest != null) {
+            TaskRecord tr = srec.task;
+            for (int i = start - 1; i >= 0; i--) {
+                ActivityRecord r = mHistory.get(i);
+                if (tr != r.task) {
+                    // Couldn't find parent in the same task; stop at the one above this.
+                    // (Root of current task; in-app "home" behavior)
+                    // Always at least finish the current activity.
+                    finishTo = Math.min(start - 1, i + 1);
+                    parent = mHistory.get(finishTo);
+                    break;
+                } else if (r.info.packageName.equals(dest.getPackageName()) &&
+                        r.info.name.equals(dest.getClassName())) {
+                    finishTo = i;
+                    parent = r;
+                    foundParentInTask = true;
+                    break;
+                }
+            }
+        }
+
+        IActivityController controller = mService.mController;
+        if (controller != null) {
+            ActivityRecord next = topRunningActivityLocked(srec.appToken, 0);
+            if (next != null) {
+                // ask watcher if this is allowed
+                boolean resumeOK = true;
+                try {
+                    resumeOK = controller.activityResuming(next.packageName);
+                } catch (RemoteException e) {
+                    mService.mController = null;
+                }
+
+                if (!resumeOK) {
+                    return false;
+                }
+            }
+        }
+        final long origId = Binder.clearCallingIdentity();
+        for (int i = start; i > finishTo; i--) {
+            ActivityRecord r = mHistory.get(i);
+            requestFinishActivityLocked(r.appToken, resultCode, resultData,
+                    "navigate-up", true);
+            // Only return the supplied result for the first activity finished
+            resultCode = Activity.RESULT_CANCELED;
+            resultData = null;
+        }
+
+        if (parent != null && foundParentInTask) {
+            final int parentLaunchMode = parent.info.launchMode;
+            final int destIntentFlags = destIntent.getFlags();
+            if (parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE ||
+                    parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TASK ||
+                    parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TOP ||
+                    (destIntentFlags & Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0) {
+                parent.deliverNewIntentLocked(srec.info.applicationInfo.uid, destIntent);
+            } else {
+                try {
+                    ActivityInfo aInfo = AppGlobals.getPackageManager().getActivityInfo(
+                            destIntent.getComponent(), 0, srec.userId);
+                    int res = startActivityLocked(srec.app.thread, destIntent,
+                            null, aInfo, parent.appToken, null,
+                            0, -1, parent.launchedFromUid, parent.launchedFromPackage,
+                            0, null, true, null);
+                    foundParentInTask = res == ActivityManager.START_SUCCESS;
+                } catch (RemoteException e) {
+                    foundParentInTask = false;
+                }
+                requestFinishActivityLocked(parent.appToken, resultCode,
+                        resultData, "navigate-up", true);
+            }
+        }
+        Binder.restoreCallingIdentity(origId);
+        return foundParentInTask;
+    }
     /**
      * Perform the common clean-up of an activity record.  This is called both
      * as part of destroyActivityLocked() (when destroying the client-side
@@ -3964,7 +4139,7 @@
             // There are clients waiting to receive thumbnails so, in case
             // this is an activity that someone is waiting for, add it
             // to the pending list so we can correctly update the clients.
-            mService.mCancelledThumbnails.add(r);
+            mCancelledThumbnails.add(r);
         }
 
         // Get rid of any pending idle timeouts.
@@ -4171,7 +4346,7 @@
                     mHandler.removeMessages(DESTROY_TIMEOUT_MSG, r);
                 }
 
-                int index = indexOfActivityLocked(r);
+                int index = mHistory.indexOf(r);
                 if (index >= 0) {
                     if (r.state == ActivityState.DESTROYING) {
                         cleanUpActivityLocked(r, true, false);
@@ -4185,15 +4360,15 @@
         }
     }
     
-    private void removeHistoryRecordsForAppLocked(ArrayList list, ProcessRecord app,
-            String listName) {
+    private void removeHistoryRecordsForAppLocked(ArrayList<ActivityRecord> list,
+            ProcessRecord app, String listName) {
         int i = list.size();
         if (DEBUG_CLEANUP) Slog.v(
             TAG, "Removing app " + app + " from list " + listName
             + " with " + i + " entries");
         while (i > 0) {
             i--;
-            ActivityRecord r = (ActivityRecord)list.get(i);
+            ActivityRecord r = list.get(i);
             if (DEBUG_CLEANUP) Slog.v(TAG, "Record #" + i + " " + r);
             if (r.app == app) {
                 if (DEBUG_CLEANUP) Slog.v(TAG, "---> REMOVING this entry!");
@@ -4219,7 +4394,7 @@
             TAG, "Removing app " + app + " from history with " + i + " entries");
         while (i > 0) {
             i--;
-            ActivityRecord r = (ActivityRecord)mHistory.get(i);
+            ActivityRecord r = mHistory.get(i);
             if (DEBUG_CLEANUP) Slog.v(
                 TAG, "Record #" + i + " " + r + ": app=" + r.app);
             if (r.app == app) {
@@ -4312,6 +4487,25 @@
         mService.mWindowManager.prepareAppTransition(transit, false);
     }
 
+    final boolean findTaskToMoveToFrontLocked(int taskId, int flags, Bundle options) {
+        for (int i = mHistory.size() - 1; i >= 0; i--) {
+            ActivityRecord hr = mHistory.get(i);
+            if (hr.task.taskId == taskId) {
+                if ((flags & ActivityManager.MOVE_TASK_NO_USER_ACTION) == 0) {
+                    mUserLeaving = true;
+                }
+                if ((flags & ActivityManager.MOVE_TASK_WITH_HOME) != 0) {
+                    // Caller wants the home activity moved with it.  To accomplish this,
+                    // we'll just move the home task to the top first.
+                    moveHomeToFrontLocked();
+                }
+                moveTaskToFrontLocked(hr.task, null, options);
+                return true;
+            }
+        }
+        return false;
+    }
+
     final void moveTaskToFrontLocked(TaskRecord tr, ActivityRecord reason, Bundle options) {
         if (DEBUG_SWITCH) Slog.v(TAG, "moveTaskToFront: " + tr);
 
@@ -4371,8 +4565,9 @@
         } else {
             updateTransitLocked(AppTransition.TRANSIT_TASK_TO_FRONT, options);
         }
-        
-        mService.mWindowManager.moveAppTokensToTop(moved);
+
+//        mService.mWindowManager.moveAppTokensToTop(moved);
+        mService.mWindowManager.moveTaskToTop(task);
         if (VALIDATE_TOKENS) {
             validateAppTokensLocked();
         }
@@ -4464,7 +4659,8 @@
             mService.mWindowManager.prepareAppTransition(
                     AppTransition.TRANSIT_TASK_TO_BACK, false);
         }
-        mService.mWindowManager.moveAppTokensToBottom(moved);
+//        mService.mWindowManager.moveAppTokensToBottom(moved);
+        mService.mWindowManager.moveTaskToBottom(task);
         if (VALIDATE_TOKENS) {
             validateAppTokensLocked();
         }
@@ -4497,9 +4693,8 @@
         TaskAccessInfo info = getTaskAccessInfoLocked(tr.taskId, true);
         if (info.numSubThumbbails <= 0) {
             return info.mainThumbnail != null ? info.mainThumbnail : tr.lastThumbnail;
-        } else {
-            return info.subtasks.get(info.numSubThumbbails-1).holder.lastThumbnail;
         }
+        return info.subtasks.get(info.numSubThumbbails-1).holder.lastThumbnail;
     }
 
     public ActivityRecord removeTaskActivitiesLocked(int taskId, int subTaskIndex,
@@ -4579,6 +4774,7 @@
         }
         if (thumbs.numSubThumbbails > 0) {
             thumbs.retriever = new IThumbnailRetriever.Stub() {
+                @Override
                 public Bitmap getThumbnail(int index) {
                     if (index < 0 || index >= thumbs.subtasks.size()) {
                         return null;
@@ -4777,4 +4973,204 @@
     public void dismissKeyguardOnNextActivityLocked() {
         mDismissKeyguardOnNextActivity = true;
     }
+
+    boolean willActivityBeVisibleLocked(IBinder token) {
+        int i;
+        for (i = mHistory.size() - 1; i >= 0; i--) {
+            ActivityRecord r = mHistory.get(i);
+            if (r.appToken == token) {
+                    return true;
+            }
+            if (r.fullscreen && !r.finishing) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    void closeSystemDialogsLocked() {
+        for (int i = mHistory.size() - 1; i >= 0; i--) {
+            ActivityRecord r = mHistory.get(i);
+            if ((r.info.flags&ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS) != 0) {
+                r.stack.finishActivityLocked(r, i,
+                        Activity.RESULT_CANCELED, null, "close-sys", true);
+            }
+        }
+    }
+
+    boolean forceStopPackageLocked(String name, boolean doit, boolean evenPersistent, int userId) {
+        boolean didSomething = false;
+        TaskRecord lastTask = null;
+        final int N = mHistory.size();
+        for (int i = 0; i < N; i++) {
+            ActivityRecord r = mHistory.get(i);
+            final boolean samePackage = r.packageName.equals(name)
+                    || (name == null && r.userId == userId);
+            if ((userId == UserHandle.USER_ALL || r.userId == userId)
+                    && (samePackage || r.task == lastTask)
+                    && (r.app == null || evenPersistent || !r.app.persistent)) {
+                if (!doit) {
+                    if (r.finishing) {
+                        // If this activity is just finishing, then it is not
+                        // interesting as far as something to stop.
+                        continue;
+                    }
+                    return true;
+                }
+                didSomething = true;
+                Slog.i(TAG, "  Force finishing activity " + r);
+                if (samePackage) {
+                    if (r.app != null) {
+                        r.app.removed = true;
+                    }
+                    r.app = null;
+                }
+                lastTask = r.task;
+                if (r.stack.finishActivityLocked(r, i, Activity.RESULT_CANCELED,
+                        null, "force-stop", true)) {
+                    i--;
+                }
+            }
+        }
+        return didSomething;
+    }
+
+    ActivityRecord getTasksLocked(int maxNum, IThumbnailReceiver receiver,
+        PendingThumbnailsRecord pending, List<RunningTaskInfo> list) {
+        ActivityRecord topRecord = null;
+        int pos = mHistory.size() - 1;
+        ActivityRecord next = pos >= 0 ? mHistory.get(pos) : null;
+        ActivityRecord top = null;
+        TaskRecord curTask = null;
+        int numActivities = 0;
+        int numRunning = 0;
+        while (pos >= 0 && maxNum > 0) {
+            final ActivityRecord r = next;
+            pos--;
+            next = pos >= 0 ? mHistory.get(pos) : null;
+
+            // Initialize state for next task if needed.
+            if (top == null || (top.state == ActivityState.INITIALIZING && top.task == r.task)) {
+                top = r;
+                curTask = r.task;
+                numActivities = numRunning = 0;
+            }
+
+            // Add 'r' into the current task.
+            numActivities++;
+            if (r.app != null && r.app.thread != null) {
+                numRunning++;
+            }
+
+            if (localLOGV) Slog.v(
+                TAG, r.intent.getComponent().flattenToShortString()
+                + ": task=" + r.task);
+
+            // If the next one is a different task, generate a new
+            // TaskInfo entry for what we have.
+            if (next == null || next.task != curTask) {
+                RunningTaskInfo ci = new RunningTaskInfo();
+                ci.id = curTask.taskId;
+                ci.baseActivity = r.intent.getComponent();
+                ci.topActivity = top.intent.getComponent();
+                if (top.thumbHolder != null) {
+                    ci.description = top.thumbHolder.lastDescription;
+                }
+                ci.numActivities = numActivities;
+                ci.numRunning = numRunning;
+                //System.out.println(
+                //    "#" + maxNum + ": " + " descr=" + ci.description);
+                if (receiver != null) {
+                    if (localLOGV) Slog.v(
+                        TAG, "State=" + top.state + "Idle=" + top.idle
+                        + " app=" + top.app
+                        + " thr=" + (top.app != null ? top.app.thread : null));
+                    if (top.state == ActivityState.RESUMED || top.state == ActivityState.PAUSING) {
+                        if (top.idle && top.app != null && top.app.thread != null) {
+                            topRecord = top;
+                        } else {
+                            top.thumbnailNeeded = true;
+                        }
+                    }
+                    pending.pendingRecords.add(top);
+                }
+                list.add(ci);
+                maxNum--;
+                top = null;
+            }
+        }
+        return topRecord;
+    }
+
+    public void unhandledBackLocked() {
+        int top = mHistory.size() - 1;
+        if (DEBUG_SWITCH) Slog.d(
+            TAG, "Performing unhandledBack(): top activity at " + top);
+        if (top > 0) {
+            finishActivityLocked(mHistory.get(top),
+                        top, Activity.RESULT_CANCELED, null, "unhandled-back", true);
+        }
+    }
+
+    void handleAppCrashLocked(ProcessRecord app) {
+        for (int i = mHistory.size() - 1; i >= 0; i--) {
+            ActivityRecord r = mHistory.get(i);
+            if (r.app == app) {
+                Slog.w(TAG, "  Force finishing activity "
+                    + r.intent.getComponent().flattenToShortString());
+                r.stack.finishActivityLocked(r, i, Activity.RESULT_CANCELED,
+                        null, "crashed", false);
+            }
+        }
+    }
+
+    void dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, boolean dumpAll,
+            boolean dumpClient, String dumpPackage) {
+        ActivityManagerService.dumpHistoryList(fd, pw, mHistory, "  ", "Hist", true, !dumpAll,
+            dumpClient, dumpPackage);
+    }
+
+    ArrayList<ActivityRecord> getDumpActivitiesLocked(String name) {
+        ArrayList<ActivityRecord> activities = new ArrayList<ActivityRecord>();
+
+        if ("all".equals(name)) {
+            for (ActivityRecord r1 : mHistory) {
+                activities.add(r1);
+            }
+        } else if ("top".equals(name)) {
+            final int N = mHistory.size();
+            if (N > 0) {
+                activities.add(mHistory.get(N-1));
+            }
+        } else {
+            ItemMatcher matcher = new ItemMatcher();
+            matcher.build(name);
+
+            for (ActivityRecord r1 : mHistory) {
+                if (matcher.match(r1, r1.intent.getComponent())) {
+                    activities.add(r1);
+                }
+            }
+        }
+
+        return activities;
+    }
+
+    ActivityRecord restartPackage(String packageName) {
+        ActivityRecord starting = topRunningActivityLocked(null);
+
+        // All activities that came from the package must be
+        // restarted as if there was a config change.
+        for (int i = mHistory.size() - 1; i >= 0; i--) {
+            ActivityRecord a = mHistory.get(i);
+            if (a.info.packageName.equals(packageName)) {
+                a.forceNewConfig = true;
+                if (starting != null && a == starting && a.visible) {
+                    a.startFreezingScreenLocked(starting.app, ActivityInfo.CONFIG_SCREEN_LAYOUT);
+                }
+            }
+        }
+
+        return starting;
+    }
 }
diff --git a/services/java/com/android/server/am/BroadcastQueue.java b/services/java/com/android/server/am/BroadcastQueue.java
index bada7f0..e8e8f25 100644
--- a/services/java/com/android/server/am/BroadcastQueue.java
+++ b/services/java/com/android/server/am/BroadcastQueue.java
@@ -22,6 +22,7 @@
 
 import android.app.ActivityManager;
 import android.app.AppGlobals;
+import android.app.AppOpsManager;
 import android.content.ComponentName;
 import android.content.IIntentReceiver;
 import android.content.Intent;
@@ -409,6 +410,16 @@
                 skip = true;
             }
         }
+        if (r.appOp != AppOpsManager.OP_NONE) {
+            int mode = mService.mAppOpsService.checkOperation(r.appOp,
+                    filter.receiverList.uid, filter.packageName);
+            if (mode != AppOpsManager.MODE_ALLOWED) {
+                if (DEBUG_BROADCAST)  Slog.v(TAG,
+                        "App op " + r.appOp + " not allowed for broadcast to uid "
+                        + filter.receiverList.uid + " pkg " + filter.packageName);
+                skip = true;
+            }
+        }
 
         if (!skip) {
             // If this is not being sent as an ordered broadcast, then we
@@ -706,6 +717,17 @@
                     skip = true;
                 }
             }
+            if (r.appOp != AppOpsManager.OP_NONE) {
+                int mode = mService.mAppOpsService.checkOperation(r.appOp,
+                        info.activityInfo.applicationInfo.uid, info.activityInfo.packageName);
+                if (mode != AppOpsManager.MODE_ALLOWED) {
+                    if (DEBUG_BROADCAST)  Slog.v(TAG,
+                            "App op " + r.appOp + " not allowed for broadcast to uid "
+                            + info.activityInfo.applicationInfo.uid + " pkg "
+                            + info.activityInfo.packageName);
+                    skip = true;
+                }
+            }
             boolean isSingleton = false;
             try {
                 isSingleton = mService.isSingleton(info.activityInfo.processName,
diff --git a/services/java/com/android/server/am/BroadcastRecord.java b/services/java/com/android/server/am/BroadcastRecord.java
index 1cf5b9c..a98afb6 100644
--- a/services/java/com/android/server/am/BroadcastRecord.java
+++ b/services/java/com/android/server/am/BroadcastRecord.java
@@ -16,6 +16,7 @@
 
 package com.android.server.am;
 
+import android.app.AppOpsManager;
 import android.content.IIntentReceiver;
 import android.content.ComponentName;
 import android.content.Intent;
@@ -46,6 +47,7 @@
     final boolean initialSticky; // initial broadcast from register to sticky?
     final int userId;       // user id this broadcast was for
     final String requiredPermission; // a permission the caller has required
+    final int appOp;        // an app op that is associated with this broadcast
     final List receivers;   // contains BroadcastFilter and ResolveInfo
     IIntentReceiver resultTo; // who receives final result if non-null
     long dispatchTime;      // when dispatch started on this set of receivers
@@ -90,8 +92,9 @@
                 pw.print(callerApp != null ? callerApp.toShortString() : "null");
                 pw.print(" pid="); pw.print(callingPid);
                 pw.print(" uid="); pw.println(callingUid);
-        if (requiredPermission != null) {
-            pw.print(prefix); pw.print("requiredPermission="); pw.println(requiredPermission);
+        if (requiredPermission != null || appOp != AppOpsManager.OP_NONE) {
+            pw.print(prefix); pw.print("requiredPermission="); pw.print(requiredPermission);
+                    pw.print("  appOp="); pw.println(appOp);
         }
         pw.print(prefix); pw.print("dispatchClockTime=");
                 pw.println(new Date(dispatchClockTime));
@@ -164,7 +167,7 @@
 
     BroadcastRecord(BroadcastQueue _queue,
             Intent _intent, ProcessRecord _callerApp, String _callerPackage,
-            int _callingPid, int _callingUid, String _requiredPermission,
+            int _callingPid, int _callingUid, String _requiredPermission, int _appOp,
             List _receivers, IIntentReceiver _resultTo, int _resultCode,
             String _resultData, Bundle _resultExtras, boolean _serialized,
             boolean _sticky, boolean _initialSticky,
@@ -176,6 +179,7 @@
         callingPid = _callingPid;
         callingUid = _callingUid;
         requiredPermission = _requiredPermission;
+        appOp = _appOp;
         receivers = _receivers;
         resultTo = _resultTo;
         resultCode = _resultCode;
diff --git a/services/java/com/android/server/am/CompatModePackages.java b/services/java/com/android/server/am/CompatModePackages.java
index 3a6492e..863bdad 100644
--- a/services/java/com/android/server/am/CompatModePackages.java
+++ b/services/java/com/android/server/am/CompatModePackages.java
@@ -295,20 +295,8 @@
             Message msg = mHandler.obtainMessage(MSG_WRITE);
             mHandler.sendMessageDelayed(msg, 10000);
 
-            ActivityRecord starting = mService.mMainStack.topRunningActivityLocked(null);
-
-            // All activities that came from the package must be
-            // restarted as if there was a config change.
-            for (int i=mService.mMainStack.mHistory.size()-1; i>=0; i--) {
-                ActivityRecord a = (ActivityRecord)mService.mMainStack.mHistory.get(i);
-                if (a.info.packageName.equals(packageName)) {
-                    a.forceNewConfig = true;
-                    if (starting != null && a == starting && a.visible) {
-                        a.startFreezingScreenLocked(starting.app,
-                                ActivityInfo.CONFIG_SCREEN_LAYOUT);
-                    }
-                }
-            }
+            
+            ActivityRecord starting = mService.mMainStack.restartPackage(packageName);
 
             // Tell all processes that loaded this package about the change.
             for (int i=mService.mLruProcesses.size()-1; i>=0; i--) {
diff --git a/services/java/com/android/server/am/PendingThumbnailsRecord.java b/services/java/com/android/server/am/PendingThumbnailsRecord.java
index ed478c9..c460791 100644
--- a/services/java/com/android/server/am/PendingThumbnailsRecord.java
+++ b/services/java/com/android/server/am/PendingThumbnailsRecord.java
@@ -27,13 +27,13 @@
 class PendingThumbnailsRecord
 {
     final IThumbnailReceiver receiver;   // who is waiting.
-    HashSet pendingRecords; // HistoryRecord objects we still wait for.
+    final HashSet<ActivityRecord> pendingRecords; // HistoryRecord objects we still wait for.
     boolean finished;       // Is pendingRecords empty?
 
     PendingThumbnailsRecord(IThumbnailReceiver _receiver)
     {
         receiver = _receiver;
-        pendingRecords = new HashSet();
+        pendingRecords = new HashSet<ActivityRecord>();
         finished = false;
     }
 }
diff --git a/services/java/com/android/server/location/GeocoderProxy.java b/services/java/com/android/server/location/GeocoderProxy.java
index cdbfcbc..8103695 100644
--- a/services/java/com/android/server/location/GeocoderProxy.java
+++ b/services/java/com/android/server/location/GeocoderProxy.java
@@ -40,8 +40,8 @@
     private final ServiceWatcher mServiceWatcher;
 
     public static GeocoderProxy createAndBind(Context context,
-            List<String> initialPackageNames, Handler handler, int userId) {
-        GeocoderProxy proxy = new GeocoderProxy(context, initialPackageNames, handler, userId);
+            List<String> initialPackageNames, Handler handler) {
+        GeocoderProxy proxy = new GeocoderProxy(context, initialPackageNames, handler);
         if (proxy.bind()) {
             return proxy;
         } else {
@@ -49,12 +49,11 @@
         }
     }
 
-    public GeocoderProxy(Context context, List<String> initialPackageNames, Handler handler,
-            int userId) {
+    public GeocoderProxy(Context context, List<String> initialPackageNames, Handler handler) {
         mContext = context;
 
         mServiceWatcher = new ServiceWatcher(mContext, TAG, SERVICE_ACTION, initialPackageNames,
-                null, handler, userId);
+                null, handler);
     }
 
     private boolean bind () {
diff --git a/services/java/com/android/server/location/GpsLocationProvider.java b/services/java/com/android/server/location/GpsLocationProvider.java
index da150d9..3552b6a 100644
--- a/services/java/com/android/server/location/GpsLocationProvider.java
+++ b/services/java/com/android/server/location/GpsLocationProvider.java
@@ -793,11 +793,6 @@
         sendMessage(SET_REQUEST, 0, new GpsRequest(request, source));
     }
 
-    @Override
-    public void switchUser(int userId) {
-        // nothing to do here
-    }
-
     private void handleSetRequest(ProviderRequest request, WorkSource source) {
         if (DEBUG) Log.d(TAG, "setRequest " + request);
 
@@ -1473,7 +1468,8 @@
                 if (networkType == TelephonyManager.NETWORK_TYPE_UMTS
                     || networkType == TelephonyManager.NETWORK_TYPE_HSDPA
                     || networkType == TelephonyManager.NETWORK_TYPE_HSUPA
-                    || networkType == TelephonyManager.NETWORK_TYPE_HSPA) {
+                    || networkType == TelephonyManager.NETWORK_TYPE_HSPA
+                    || networkType == TelephonyManager.NETWORK_TYPE_HSPAP) {
                     type = AGPS_REF_LOCATION_TYPE_UMTS_CELLID;
                 } else {
                     type = AGPS_REF_LOCATION_TYPE_GSM_CELLID;
diff --git a/services/java/com/android/server/location/LocationProviderInterface.java b/services/java/com/android/server/location/LocationProviderInterface.java
index 80e71f1..6f09232 100644
--- a/services/java/com/android/server/location/LocationProviderInterface.java
+++ b/services/java/com/android/server/location/LocationProviderInterface.java
@@ -38,8 +38,6 @@
     public boolean isEnabled();
     public void setRequest(ProviderRequest request, WorkSource source);
 
-    public void switchUser(int userId);
-
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args);
 
     // --- deprecated (but still supported) ---
diff --git a/services/java/com/android/server/location/LocationProviderProxy.java b/services/java/com/android/server/location/LocationProviderProxy.java
index cec77a8..7faf72c 100644
--- a/services/java/com/android/server/location/LocationProviderProxy.java
+++ b/services/java/com/android/server/location/LocationProviderProxy.java
@@ -54,9 +54,9 @@
     private WorkSource mWorksource = new WorkSource();
 
     public static LocationProviderProxy createAndBind(Context context, String name, String action,
-            List<String> initialPackageNames, Handler handler, int userId) {
+            List<String> initialPackageNames, Handler handler) {
         LocationProviderProxy proxy = new LocationProviderProxy(context, name, action,
-                initialPackageNames, handler, userId);
+                initialPackageNames, handler);
         if (proxy.bind()) {
             return proxy;
         } else {
@@ -65,11 +65,11 @@
     }
 
     private LocationProviderProxy(Context context, String name, String action,
-            List<String> initialPackageNames, Handler handler, int userId) {
+            List<String> initialPackageNames, Handler handler) {
         mContext = context;
         mName = name;
         mServiceWatcher = new ServiceWatcher(mContext, TAG, action, initialPackageNames,
-                mNewServiceWork, handler, userId);
+                mNewServiceWork, handler);
     }
 
     private boolean bind () {
@@ -211,11 +211,6 @@
     }
 
     @Override
-    public void switchUser(int userId) {
-        mServiceWatcher.switchUser(userId);
-    }
-
-    @Override
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
         pw.append("REMOTE SERVICE");
         pw.append(" name=").append(mName);
diff --git a/services/java/com/android/server/location/MockProvider.java b/services/java/com/android/server/location/MockProvider.java
index 1194cbc..36c43ff 100644
--- a/services/java/com/android/server/location/MockProvider.java
+++ b/services/java/com/android/server/location/MockProvider.java
@@ -156,11 +156,6 @@
     public void setRequest(ProviderRequest request, WorkSource source) { }
 
     @Override
-    public void switchUser(int userId) {
-        // nothing to do here
-    }
-
-    @Override
     public boolean sendExtraCommand(String command, Bundle extras) {
         return false;
     }
diff --git a/services/java/com/android/server/location/PassiveProvider.java b/services/java/com/android/server/location/PassiveProvider.java
index 734c572..71bae07 100644
--- a/services/java/com/android/server/location/PassiveProvider.java
+++ b/services/java/com/android/server/location/PassiveProvider.java
@@ -96,11 +96,6 @@
         mReportLocation = request.reportLocation;
     }
 
-    @Override
-    public void switchUser(int userId) {
-        // nothing to do here
-    }
-
     public void updateLocation(Location location) {
         if (mReportLocation) {
             try {
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 829e67a..5f44ff4 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -25,7 +25,6 @@
 import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
 import static com.android.internal.util.ArrayUtils.appendInt;
 import static com.android.internal.util.ArrayUtils.removeInt;
-import static libcore.io.OsConstants.S_ISLNK;
 import static libcore.io.OsConstants.S_IRWXU;
 import static libcore.io.OsConstants.S_IRGRP;
 import static libcore.io.OsConstants.S_IXGRP;
@@ -111,8 +110,8 @@
 import android.os.SystemClock;
 import android.os.SystemProperties;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.os.Environment.UserEnvironment;
-import android.provider.Settings.Secure;
 import android.security.SystemKeyStore;
 import android.util.DisplayMetrics;
 import android.util.EventLog;
@@ -149,13 +148,11 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Set;
 
 import libcore.io.ErrnoException;
 import libcore.io.IoUtils;
 import libcore.io.Libcore;
-import libcore.io.OsConstants;
 import libcore.io.StructStat;
 
 /**
@@ -189,6 +186,7 @@
     private static final int LOG_UID = Process.LOG_UID;
     private static final int NFC_UID = Process.NFC_UID;
     private static final int BLUETOOTH_UID = Process.BLUETOOTH_UID;
+    private static final int SHELL_UID = Process.SHELL_UID;
 
     private static final boolean GET_CERTIFICATES = true;
 
@@ -978,6 +976,7 @@
         mSettings.addSharedUserLPw("android.uid.log", LOG_UID, ApplicationInfo.FLAG_SYSTEM);
         mSettings.addSharedUserLPw("android.uid.nfc", NFC_UID, ApplicationInfo.FLAG_SYSTEM);
         mSettings.addSharedUserLPw("android.uid.bluetooth", BLUETOOTH_UID, ApplicationInfo.FLAG_SYSTEM);
+        mSettings.addSharedUserLPw("android.uid.shell", SHELL_UID, ApplicationInfo.FLAG_SYSTEM);
 
         String separateProcesses = SystemProperties.get("debug.separate_processes");
         if (separateProcesses != null && separateProcesses.length() > 0) {
@@ -5441,7 +5440,8 @@
                                 + " " + intent.getExtras(), here);
                     }
                     am.broadcastIntent(null, intent, null, finishedReceiver,
-                            0, null, null, null, finishedReceiver != null, false, id);
+                            0, null, null, null, android.app.AppOpsManager.OP_NONE,
+                            finishedReceiver != null, false, id);
                 }
             } catch (RemoteException ex) {
             }
@@ -5652,6 +5652,14 @@
                 null);
 
         final int uid = Binder.getCallingUid();
+        if (!isUserAllowed(uid, UserManager.ALLOW_INSTALL_APPS)) {
+            try {
+                observer.packageInstalled("", PackageManager.INSTALL_FAILED_USER_RESTRICTED);
+            } catch (RemoteException re) {
+            }
+            return;
+        }
+
         UserHandle user;
         if ((flags&PackageManager.INSTALL_ALL_USERS) != 0) {
             user = UserHandle.ALL;
@@ -5688,6 +5696,9 @@
         PackageSetting pkgSetting;
         final int uid = Binder.getCallingUid();
         final int userId = UserHandle.getUserId(uid);
+        if (!isUserAllowed(uid, UserManager.ALLOW_INSTALL_APPS)) {
+            return PackageManager.INSTALL_FAILED_USER_RESTRICTED;
+        }
 
         long callingId = Binder.clearCallingIdentity();
         try {
@@ -5718,7 +5729,19 @@
 
         return PackageManager.INSTALL_SUCCEEDED;
     }
-    
+
+    private boolean isUserAllowed(int callingUid, String restrictionKey) {
+        if (callingUid != android.os.Process.myUid()) {
+            Bundle restrictions = sUserManager.getUserRestrictions(
+                    UserHandle.getUserId(callingUid));
+            if (!restrictions.getBoolean(UserManager.ALLOW_INSTALL_APPS)) {
+                Log.w(TAG, "User does not have permission to: " + restrictionKey);
+                return false;
+            }
+        }
+        return true;
+    }
+
     @Override
     public void verifyPendingInstall(int id, int verificationCode) throws RemoteException {
         mContext.enforceCallingOrSelfPermission(
@@ -8074,6 +8097,14 @@
                 android.Manifest.permission.DELETE_PACKAGES, null);
         // Queue up an async operation since the package deletion may take a little while.
         final int uid = Binder.getCallingUid();
+        if (!isUserAllowed(uid, UserManager.ALLOW_UNINSTALL_APPS)) {
+            try {
+                observer.packageDeleted(packageName, PackageManager.DELETE_FAILED_USER_RESTRICTED);
+            } catch (RemoteException re) {
+            }
+            return;
+        }
+
         mHandler.post(new Runnable() {
             public void run() {
                 mHandler.removeCallbacks(this);
diff --git a/services/java/com/android/server/pm/UserManagerService.java b/services/java/com/android/server/pm/UserManagerService.java
index dbfe34d..18ccf75 100644
--- a/services/java/com/android/server/pm/UserManagerService.java
+++ b/services/java/com/android/server/pm/UserManagerService.java
@@ -30,6 +30,7 @@
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.os.Binder;
+import android.os.Bundle;
 import android.os.Environment;
 import android.os.FileUtils;
 import android.os.Handler;
@@ -81,6 +82,7 @@
     private static final String ATTR_USER_VERSION = "version";
     private static final String TAG_USERS = "users";
     private static final String TAG_USER = "user";
+    private static final String TAG_RESTRICTIONS = "restrictions";
 
     private static final String USER_INFO_DIR = "system" + File.separator + "users";
     private static final String USER_LIST_FILENAME = "userlist.xml";
@@ -104,6 +106,7 @@
     private final File mBaseUserPath;
 
     private final SparseArray<UserInfo> mUsers = new SparseArray<UserInfo>();
+    private final SparseArray<Bundle> mUserRestrictions = new SparseArray<Bundle>();
 
     /**
      * Set of user IDs being actively removed. Removed IDs linger in this set
@@ -343,6 +346,26 @@
         }
     }
 
+    @Override
+    public Bundle getUserRestrictions(int userId) {
+        // checkManageUsersPermission("getUserRestrictions");
+
+        synchronized (mPackagesLock) {
+            Bundle restrictions = mUserRestrictions.get(userId);
+            return restrictions != null ? restrictions : Bundle.EMPTY;
+        }
+    }
+
+    @Override
+    public void setUserRestrictions(Bundle restrictions, int userId) {
+        checkManageUsersPermission("setUserRestrictions");
+
+        synchronized (mPackagesLock) {
+            mUserRestrictions.get(userId).putAll(restrictions);
+            writeUserLocked(mUsers.get(userId));
+        }
+    }
+
     /**
      * Check if we've hit the limit of how many users can be created.
      */
@@ -454,7 +477,7 @@
             while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) {
                 if (type == XmlPullParser.START_TAG && parser.getName().equals(TAG_USER)) {
                     String id = parser.getAttributeValue(null, ATTR_ID);
-                    UserInfo user = readUser(Integer.parseInt(id));
+                    UserInfo user = readUserLocked(Integer.parseInt(id));
 
                     if (user != null) {
                         mUsers.put(user.id, user);
@@ -524,6 +547,11 @@
                 UserInfo.FLAG_ADMIN | UserInfo.FLAG_PRIMARY | UserInfo.FLAG_INITIALIZED);
         mUsers.put(0, primary);
         mNextSerialNumber = MIN_USER_ID;
+        
+        Bundle restrictions = new Bundle();
+        initRestrictionsToDefaults(restrictions);
+        mUserRestrictions.append(0, restrictions);
+        
         updateUserIdsLocked();
 
         writeUserListLocked();
@@ -568,6 +596,15 @@
             serializer.text(userInfo.name);
             serializer.endTag(null, TAG_NAME);
 
+            Bundle restrictions = mUserRestrictions.get(userInfo.id);
+            if (restrictions != null) {
+                serializer.startTag(null, TAG_RESTRICTIONS);
+                writeBoolean(serializer, restrictions, UserManager.ALLOW_CONFIG_WIFI);
+                writeBoolean(serializer, restrictions, UserManager.ALLOW_MODIFY_ACCOUNTS);
+                writeBoolean(serializer, restrictions, UserManager.ALLOW_INSTALL_APPS);
+                writeBoolean(serializer, restrictions, UserManager.ALLOW_UNINSTALL_APPS);
+                serializer.endTag(null, TAG_RESTRICTIONS);
+            }
             serializer.endTag(null, TAG_USER);
 
             serializer.endDocument();
@@ -620,7 +657,7 @@
         }
     }
 
-    private UserInfo readUser(int id) {
+    private UserInfo readUserLocked(int id) {
         int flags = 0;
         int serialNumber = id;
         String name = null;
@@ -628,6 +665,8 @@
         long creationTime = 0L;
         long lastLoggedInTime = 0L;
         boolean partial = false;
+        Bundle restrictions = new Bundle();
+        initRestrictionsToDefaults(restrictions);
 
         FileInputStream fis = null;
         try {
@@ -663,13 +702,23 @@
                     partial = true;
                 }
 
-                while ((type = parser.next()) != XmlPullParser.START_TAG
-                        && type != XmlPullParser.END_DOCUMENT) {
-                }
-                if (type == XmlPullParser.START_TAG && parser.getName().equals(TAG_NAME)) {
-                    type = parser.next();
-                    if (type == XmlPullParser.TEXT) {
-                        name = parser.getText();
+                int outerDepth = parser.getDepth();
+                while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                       && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
+                    if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
+                        continue;
+                    }
+                    String tag = parser.getName();
+                    if (TAG_NAME.equals(tag)) {
+                        type = parser.next();
+                        if (type == XmlPullParser.TEXT) {
+                            name = parser.getText();
+                        }
+                    } else if (TAG_RESTRICTIONS.equals(tag)) {
+                        readBoolean(parser, restrictions, UserManager.ALLOW_CONFIG_WIFI);
+                        readBoolean(parser, restrictions, UserManager.ALLOW_MODIFY_ACCOUNTS);
+                        readBoolean(parser, restrictions, UserManager.ALLOW_INSTALL_APPS);
+                        readBoolean(parser, restrictions, UserManager.ALLOW_UNINSTALL_APPS);
                     }
                 }
             }
@@ -679,6 +728,7 @@
             userInfo.creationTime = creationTime;
             userInfo.lastLoggedInTime = lastLoggedInTime;
             userInfo.partial = partial;
+            mUserRestrictions.append(id, restrictions);
             return userInfo;
 
         } catch (IOException ioe) {
@@ -694,6 +744,27 @@
         return null;
     }
 
+    private void readBoolean(XmlPullParser parser, Bundle restrictions,
+            String restrictionKey) {
+        String value = parser.getAttributeValue(null, restrictionKey);
+        restrictions.putBoolean(restrictionKey, value == null ? true : Boolean.parseBoolean(value));
+    }
+
+    private void writeBoolean(XmlSerializer xml, Bundle restrictions, String restrictionKey)
+            throws IOException {
+        if (restrictions.containsKey(restrictionKey)) {
+            xml.attribute(null, restrictionKey,
+                    Boolean.toString(restrictions.getBoolean(restrictionKey)));
+        }
+    }
+
+    private void initRestrictionsToDefaults(Bundle restrictions) {
+        restrictions.putBoolean(UserManager.ALLOW_CONFIG_WIFI, true);
+        restrictions.putBoolean(UserManager.ALLOW_MODIFY_ACCOUNTS, true);
+        restrictions.putBoolean(UserManager.ALLOW_INSTALL_APPS, true);
+        restrictions.putBoolean(UserManager.ALLOW_UNINSTALL_APPS, true);
+    }
+
     private int readIntAttribute(XmlPullParser parser, String attr, int defaultValue) {
         String valueString = parser.getAttributeValue(null, attr);
         if (valueString == null) return defaultValue;
@@ -739,6 +810,9 @@
                     userInfo.partial = false;
                     writeUserLocked(userInfo);
                     updateUserIdsLocked();
+                    Bundle restrictions = new Bundle();
+                    initRestrictionsToDefaults(restrictions);
+                    mUserRestrictions.append(userId, restrictions);
                 }
             }
             if (userInfo != null) {
diff --git a/services/java/com/android/server/wm/AppWindowToken.java b/services/java/com/android/server/wm/AppWindowToken.java
index 0ada604..8fd5209 100644
--- a/services/java/com/android/server/wm/AppWindowToken.java
+++ b/services/java/com/android/server/wm/AppWindowToken.java
@@ -30,6 +30,10 @@
 import android.view.WindowManager;
 
 import java.io.PrintWriter;
+import java.util.ArrayList;
+
+class AppTokenList extends ArrayList<AppWindowToken> {
+}
 
 /**
  * Version of WindowToken that is specifically for a particular application (or
diff --git a/services/java/com/android/server/wm/DisplayContent.java b/services/java/com/android/server/wm/DisplayContent.java
index 59e4b0e..f8e779d 100644
--- a/services/java/com/android/server/wm/DisplayContent.java
+++ b/services/java/com/android/server/wm/DisplayContent.java
@@ -16,11 +16,16 @@
 
 package com.android.server.wm;
 
+import android.os.Debug;
+import android.util.Slog;
+import android.util.SparseArray;
 import android.view.Display;
 import android.view.DisplayInfo;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
 
 class DisplayContentList extends ArrayList<DisplayContent> {
 }
@@ -33,6 +38,7 @@
  * WindowManagerService.mWindowMap.
  */
 class DisplayContent {
+    private final static String TAG = "DisplayContent";
 
     /** Unique identifier of this stack. */
     private final int mDisplayId;
@@ -67,6 +73,38 @@
     final boolean isDefaultDisplay;
 
     /**
+     * List controlling the ordering of windows in different applications which must
+     * be kept in sync with ActivityManager.
+     */
+    final AppTokenList mAppTokens = new AppTokenList();
+
+    /**
+     * AppWindowTokens in the Z order they were in at the start of an animation. Between
+     * animations this list is maintained in the exact order of mAppTokens. If tokens
+     * are added to mAppTokens during an animation an attempt is made to insert them at the same
+     * logical location in this list. Note that this list is always in sync with mWindows.
+     */
+    AppTokenList mAnimatingAppTokens = new AppTokenList();
+
+    /**
+     * Window tokens that are in the process of exiting, but still
+     * on screen for animations.
+     */
+    final ArrayList<WindowToken> mExitingTokens = new ArrayList<WindowToken>();
+
+    /**
+     * Application tokens that are in the process of exiting, but still
+     * on screen for animations.
+     */
+    final AppTokenList mExitingAppTokens = new AppTokenList();
+
+    /**
+     * Sorted most recent at top, oldest at [0].
+     */
+    ArrayList<TaskList> mTaskLists = new ArrayList<TaskList>();
+    SparseArray<TaskList> mTaskIdToTaskList = new SparseArray<TaskList>();
+
+    /**
      * @param display May not be null.
      */
     DisplayContent(Display display) {
@@ -96,6 +134,204 @@
         mDisplay.getDisplayInfo(mDisplayInfo);
     }
 
+    /**
+     *  Find the location to insert a new AppWindowToken into the window-ordered app token list.
+     * @param addPos The location the token was inserted into in mAppTokens.
+     * @param wtoken The token to insert.
+     */
+    void addAppToken(final int addPos, final AppWindowToken wtoken) {
+        mAppTokens.add(addPos, wtoken);
+
+        if (addPos == 0 || addPos == mAnimatingAppTokens.size()) {
+            // It was inserted into the beginning or end of mAppTokens. Honor that.
+            mAnimatingAppTokens.add(addPos, wtoken);
+        } else {
+            // Find the item immediately above the mAppTokens insertion point and put the token
+            // immediately below that one in mAnimatingAppTokens.
+            final AppWindowToken aboveAnchor = mAppTokens.get(addPos + 1);
+            mAnimatingAppTokens.add(mAnimatingAppTokens.indexOf(aboveAnchor), wtoken);
+        }
+
+        TaskList task = mTaskIdToTaskList.get(wtoken.groupId);
+        if (task == null) {
+            task = new TaskList(wtoken, this);
+            mTaskIdToTaskList.put(wtoken.groupId, task);
+            mTaskLists.add(task);
+        } else {
+            task.mAppTokens.add(wtoken);
+        }
+    }
+
+    void removeAppToken(final AppWindowToken wtoken) {
+        mAppTokens.remove(wtoken);
+        mAnimatingAppTokens.remove(wtoken);
+        final int taskId = wtoken.groupId;
+        final TaskList task = mTaskIdToTaskList.get(taskId);
+        if (task != null) {
+            AppTokenList appTokens = task.mAppTokens;
+            appTokens.remove(wtoken);
+            if (appTokens.size() == 0) {
+                mTaskLists.remove(task);
+                mTaskIdToTaskList.delete(taskId);
+            }
+        }
+    }
+
+    void refillAnimatingAppTokens() {
+        mAnimatingAppTokens.clear();
+        AppTokenIterator iterator = new AppTokenIterator();
+        while (iterator.hasNext()) {
+            mAnimatingAppTokens.add(iterator.next());
+        }
+    }
+
+    void setAppTaskId(AppWindowToken wtoken, int newTaskId) {
+        final int taskId = wtoken.groupId;
+        TaskList task = mTaskIdToTaskList.get(taskId);
+        if (task != null) {
+            AppTokenList appTokens = task.mAppTokens;
+            appTokens.remove(wtoken);
+            if (appTokens.size() == 0) {
+                mTaskIdToTaskList.delete(taskId);
+            }
+        }
+
+        task = mTaskIdToTaskList.get(newTaskId);
+        if (task == null) {
+            task = new TaskList(wtoken, this);
+            mTaskIdToTaskList.put(newTaskId, task);
+        } else {
+            task.mAppTokens.add(wtoken);
+        }
+
+        wtoken.groupId = newTaskId;
+    }
+
+    class TaskListsIterator implements Iterator<TaskList> {
+        private int mCur;
+        private boolean mReverse;
+
+        TaskListsIterator() {
+            this(false);
+        }
+
+        TaskListsIterator(boolean reverse) {
+            mReverse = reverse;
+            int numTaskLists = mTaskLists.size();
+            mCur = reverse ? numTaskLists - 1 : 0;
+        }
+
+        @Override
+        public boolean hasNext() {
+            if (mReverse) {
+                return mCur >= 0;
+            }
+            return mCur < mTaskLists.size();
+        }
+
+        @Override
+        public TaskList next() {
+            if (hasNext()) {
+                TaskList taskList = mTaskLists.get(mCur);
+                mCur += (mReverse ? -1 : 1);
+                return taskList;
+            }
+            throw new NoSuchElementException();
+        }
+
+        @Override
+        public void remove() {
+            throw new IllegalArgumentException();
+        }
+    }
+
+    class AppTokenIterator implements Iterator<AppWindowToken> {
+        final TaskListsIterator mIterator;
+        final boolean mReverse;
+        int mCur;
+        TaskList mTaskList;
+
+        public AppTokenIterator() {
+            this(false);
+        }
+
+        public AppTokenIterator(boolean reverse) {
+            mReverse = reverse;
+            mIterator = new TaskListsIterator(reverse);
+            getNextTaskList();
+        }
+
+        private void getNextTaskList() {
+            if (mIterator.hasNext()) {
+                mTaskList = mIterator.next();
+                mCur = mReverse ? mTaskList.mAppTokens.size() - 1 : 0;
+            }
+        }
+
+        @Override
+        public boolean hasNext() {
+            if (mTaskList == null) {
+                return false;
+            }
+            if (mReverse) {
+                return mCur >= 0;
+            }
+            return mCur < mTaskList.mAppTokens.size();
+        }
+
+        @Override
+        public AppWindowToken next() {
+            if (hasNext()) {
+                AppWindowToken wtoken = mTaskList.mAppTokens.get(mCur);
+                mCur += mReverse ? -1 : 1;
+                if (!hasNext()) {
+                    getNextTaskList();
+                }
+                return wtoken;
+            }
+            throw new NoSuchElementException();
+        }
+
+        @Override
+        public void remove() {
+            throw new IllegalArgumentException();
+        }
+
+        int size() {
+            int size = 0;
+            final TaskListsIterator iterator = new TaskListsIterator();
+            while (iterator.hasNext()) {
+                size += iterator.next().mAppTokens.size();
+            }
+            return size;
+        }
+    }
+
+    void verifyAppTokens() {
+        AppTokenIterator iterator = new AppTokenIterator();
+        for (int i = 0; i < mAppTokens.size(); ++i) {
+            if (!iterator.hasNext()) {
+                Slog.e(TAG, "compareAppTokens: More mAppTokens than TaskList tokens. Callers="
+                        + Debug.getCallers(4));
+                while (i < mAppTokens.size()) {
+                    Slog.e(TAG, "compareAppTokens: mAppTokens[" + i + "]=" + mAppTokens.get(i));
+                    i++;
+                }
+                return;
+            }
+            AppWindowToken appToken = mAppTokens.get(i);
+            AppWindowToken taskListToken = iterator.next();
+            if (appToken != taskListToken) {
+                Slog.e(TAG, "compareAppTokens: Mismatch at " + i + " appToken=" + appToken
+                        + " taskListToken=" + taskListToken + ". Callers=" + Debug.getCallers(4));
+            }
+        }
+        if (iterator.hasNext()) {
+            Slog.e(TAG, "compareAppTokens: More TaskList tokens than mAppTokens Callers="
+                    + Debug.getCallers(4));
+        }
+    }
+
     public void dump(String prefix, PrintWriter pw) {
         pw.print(prefix); pw.print("Display: mDisplayId="); pw.println(mDisplayId);
         final String subPrefix = "  " + prefix;
@@ -119,7 +355,51 @@
             pw.print("x"); pw.print(mDisplayInfo.smallestNominalAppHeight);
             pw.print("-"); pw.print(mDisplayInfo.largestNominalAppWidth);
             pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight);
-        pw.print(subPrefix); pw.print("layoutNeeded="); pw.print(layoutNeeded);
+            AppTokenIterator iterator = new AppTokenIterator(true);
+            int ndx = iterator.size() - 1;
+            if (ndx >= 0) {
+                pw.println();
+                pw.println("  Application tokens in Z order:");
+                while (iterator.hasNext()) {
+                    AppWindowToken wtoken = iterator.next();
+                    pw.print("  App #"); pw.print(ndx--);
+                            pw.print(' '); pw.print(wtoken); pw.println(":");
+                    wtoken.dump(pw, "    ");
+                }
+            }
+            if (mExitingTokens.size() > 0) {
+                pw.println();
+                pw.println("  Exiting tokens:");
+                for (int i=mExitingTokens.size()-1; i>=0; i--) {
+                    WindowToken token = mExitingTokens.get(i);
+                    pw.print("  Exiting #"); pw.print(i);
+                    pw.print(' '); pw.print(token);
+                    pw.println(':');
+                    token.dump(pw, "    ");
+                }
+            }
+            if (mExitingAppTokens.size() > 0) {
+                pw.println();
+                pw.println("  Exiting application tokens:");
+                for (int i=mExitingAppTokens.size()-1; i>=0; i--) {
+                    WindowToken token = mExitingAppTokens.get(i);
+                    pw.print("  Exiting App #"); pw.print(i);
+                      pw.print(' '); pw.print(token);
+                      pw.println(':');
+                      token.dump(pw, "    ");
+                }
+            }
+            if (mTaskIdToTaskList.size() > 0) {
+                pw.println();
+                for (int i = 0; i < mTaskIdToTaskList.size(); ++i) {
+                    pw.print("  TaskList #"); pw.print(i);
+                      pw.print(" taskId="); pw.println(mTaskIdToTaskList.keyAt(i));
+                    pw.print("    mAppTokens=");
+                      pw.println(mTaskIdToTaskList.valueAt(i).mAppTokens);
+                    pw.println();
+                }
+            }
+        pw.print(subPrefix); pw.print("layoutNeeded="); pw.println(layoutNeeded);
         pw.println();
     }
 }
diff --git a/services/java/com/android/server/wm/DisplayMagnifier.java b/services/java/com/android/server/wm/DisplayMagnifier.java
index 6e876f6..61093ad 100644
--- a/services/java/com/android/server/wm/DisplayMagnifier.java
+++ b/services/java/com/android/server/wm/DisplayMagnifier.java
@@ -86,8 +86,8 @@
         mContext = windowManagerService.mContext;
         mWindowManagerService = windowManagerService;
         mCallbacks = callbacks;
-        mMagnifedViewport = new MagnifiedViewport();
         mHandler = new MyHandler(mWindowManagerService.mH.getLooper());
+        mMagnifedViewport = new MagnifiedViewport();
         mLongAnimationDuration = mContext.getResources().getInteger(
                 com.android.internal.R.integer.config_longAnimTime);
     }
@@ -273,6 +273,7 @@
                             mContext.getResources().getDisplayMetrics());
             mHalfBorderWidth = (int) (mBorderWidth + 0.5) / 2;
             mWindow = new ViewportWindow(mContext);
+            recomputeBoundsLocked();
         }
 
         public void updateMagnificationSpecLocked(MagnificationSpec spec) {
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs b/services/java/com/android/server/wm/TaskGroup.java
similarity index 65%
rename from tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs
rename to services/java/com/android/server/wm/TaskGroup.java
index 1a19ffc..5e82af2 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs
+++ b/services/java/com/android/server/wm/TaskGroup.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * 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.
@@ -14,10 +14,13 @@
  * limitations under the License.
  */
 
-#pragma version(1)
-#pragma rs java_package_name(com.android.rs.image)
+package com.android.server.wm;
 
-void sendMsg() {
-    rsSendToClientBlocking(0);
+import android.view.IApplicationToken;
+
+import java.util.ArrayList;
+
+public class TaskGroup {
+    public int taskId = -1;
+    public ArrayList<IApplicationToken> tokens = new ArrayList<IApplicationToken>();
 }
-
diff --git a/services/java/com/android/server/wm/TaskList.java b/services/java/com/android/server/wm/TaskList.java
new file mode 100644
index 0000000..88791f2
--- /dev/null
+++ b/services/java/com/android/server/wm/TaskList.java
@@ -0,0 +1,30 @@
+/*
+ * 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.wm;
+
+class TaskList {
+//    private final String TAG = "TaskGroup";
+    DisplayContent mDisplayContent;
+    final AppTokenList mAppTokens = new AppTokenList();
+    final int taskId;
+
+    TaskList(AppWindowToken wtoken, DisplayContent displayContent) {
+        taskId = wtoken.groupId;
+        mAppTokens.add(wtoken);
+        mDisplayContent = displayContent;
+    }
+}
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java
index d42221e..546bf2f 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/java/com/android/server/wm/WindowAnimator.java
@@ -171,9 +171,10 @@
         }
     }
 
-    private void updateAppWindowsLocked() {
+    private void updateAppWindowsLocked(int displayId) {
         int i;
-        final ArrayList<AppWindowToken> appTokens = mService.mAnimatingAppTokens;
+        final DisplayContent displayContent = mService.getDisplayContentLocked(displayId);
+        final AppTokenList appTokens = displayContent.mAnimatingAppTokens;
         final int NAT = appTokens.size();
         for (i=0; i<NAT; i++) {
             final AppWindowAnimator appAnimator = appTokens.get(i).mAppAnimator;
@@ -190,9 +191,10 @@
             }
         }
 
-        final int NEAT = mService.mExitingAppTokens.size();
+        final AppTokenList exitingAppTokens = displayContent.mExitingAppTokens;
+        final int NEAT = exitingAppTokens.size();
         for (i=0; i<NEAT; i++) {
-            final AppWindowAnimator appAnimator = mService.mExitingAppTokens.get(i).mAppAnimator;
+            final AppWindowAnimator appAnimator = exitingAppTokens.get(i).mAppAnimator;
             final boolean wasAnimating = appAnimator.animation != null
                     && appAnimator.animation != AppWindowAnimator.sDummyAnimation;
             if (appAnimator.stepAnimationLocked(mCurrentTime)) {
@@ -453,10 +455,11 @@
 
     /** See if any windows have been drawn, so they (and others associated with them) can now be
      *  shown. */
-    private void testTokenMayBeDrawnLocked() {
+    private void testTokenMayBeDrawnLocked(int displayId) {
         // See if any windows have been drawn, so they (and others
         // associated with them) can now be shown.
-        final ArrayList<AppWindowToken> appTokens = mService.mAnimatingAppTokens;
+        final AppTokenList appTokens =
+                mService.getDisplayContentLocked(displayId).mAnimatingAppTokens;
         final int NT = appTokens.size();
         for (int i=0; i<NT; i++) {
             AppWindowToken wtoken = appTokens.get(i);
@@ -529,11 +532,10 @@
         Surface.openTransaction();
         Surface.setAnimationTransaction();
         try {
-            updateAppWindowsLocked();
-
             final int numDisplays = mDisplayContentsAnimators.size();
             for (int i = 0; i < numDisplays; i++) {
                 final int displayId = mDisplayContentsAnimators.keyAt(i);
+                updateAppWindowsLocked(displayId);
                 DisplayContentsAnimator displayAnimator = mDisplayContentsAnimators.valueAt(i);
 
                 final ScreenRotationAnimation screenRotationAnimation =
@@ -559,10 +561,11 @@
                 }
             }
 
-            testTokenMayBeDrawnLocked();
-
             for (int i = 0; i < numDisplays; i++) {
                 final int displayId = mDisplayContentsAnimators.keyAt(i);
+
+                testTokenMayBeDrawnLocked(displayId);
+
                 DisplayContentsAnimator displayAnimator = mDisplayContentsAnimators.valueAt(i);
 
                 final ScreenRotationAnimation screenRotationAnimation =
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 1e5cd54..a4b5a56 100644
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -42,6 +42,7 @@
 
 import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
 
+import android.app.AppOpsManager;
 import com.android.internal.app.IBatteryStats;
 import com.android.internal.policy.PolicyManager;
 import com.android.internal.policy.impl.PhoneWindowManager;
@@ -57,6 +58,7 @@
 import com.android.server.input.InputManagerService;
 import com.android.server.power.PowerManagerService;
 import com.android.server.power.ShutdownThread;
+import com.android.server.wm.DisplayContent.AppTokenIterator;
 
 import android.Manifest;
 import android.app.ActivityManagerNative;
@@ -179,7 +181,7 @@
     static final boolean DEBUG_INPUT_METHOD = false;
     static final boolean DEBUG_VISIBILITY = false;
     static final boolean DEBUG_WINDOW_MOVEMENT = false;
-    static final boolean DEBUG_TOKEN_MOVEMENT = false;
+    static final boolean DEBUG_TOKEN_MOVEMENT = true;
     static final boolean DEBUG_ORIENTATION = false;
     static final boolean DEBUG_APP_ORIENTATION = false;
     static final boolean DEBUG_CONFIGURATION = false;
@@ -195,6 +197,7 @@
     static final boolean DEBUG_LAYOUT_REPEATS = true;
     static final boolean DEBUG_SURFACE_TRACE = false;
     static final boolean DEBUG_WINDOW_TRACE = false;
+    static final boolean DEBUG_TASK_MOVEMENT = false;
     static final boolean SHOW_SURFACE_ALLOC = false;
     static final boolean SHOW_TRANSACTIONS = false;
     static final boolean SHOW_LIGHT_TRANSACTIONS = false || SHOW_TRANSACTIONS;
@@ -311,6 +314,8 @@
 
     final IBatteryStats mBatteryStats;
 
+    final AppOpsManager mAppOps;
+
     /**
      * All currently active sessions with clients.
      */
@@ -326,34 +331,7 @@
     /**
      * Mapping from a token IBinder to a WindowToken object.
      */
-    final HashMap<IBinder, WindowToken> mTokenMap =
-            new HashMap<IBinder, WindowToken>();
-
-    /**
-     * Window tokens that are in the process of exiting, but still
-     * on screen for animations.
-     */
-    final ArrayList<WindowToken> mExitingTokens = new ArrayList<WindowToken>();
-
-    /**
-     * List controlling the ordering of windows in different applications which must
-     * be kept in sync with ActivityManager.
-     */
-    final ArrayList<AppWindowToken> mAppTokens = new ArrayList<AppWindowToken>();
-
-    /**
-     * AppWindowTokens in the Z order they were in at the start of an animation. Between
-     * animations this list is maintained in the exact order of mAppTokens. If tokens
-     * are added to mAppTokens during an animation an attempt is made to insert them at the same
-     * logical location in this list. Note that this list is always in sync with mWindows.
-     */
-    ArrayList<AppWindowToken> mAnimatingAppTokens = new ArrayList<AppWindowToken>();
-
-    /**
-     * Application tokens that are in the process of exiting, but still
-     * on screen for animations.
-     */
-    final ArrayList<AppWindowToken> mExitingAppTokens = new ArrayList<AppWindowToken>();
+    final HashMap<IBinder, WindowToken> mTokenMap = new HashMap<IBinder, WindowToken>();
 
     /**
      * List of window tokens that have finished starting their application,
@@ -438,8 +416,10 @@
 
     String mLastANRState;
 
-    /** All DisplayDontents in the world, kept here */
+    /** All DisplayContents in the world, kept here */
     private SparseArray<DisplayContent> mDisplayContents = new SparseArray<DisplayContent>();
+    private SparseArray<DisplayContent> mTaskIdToDisplayContents =
+            new SparseArray<DisplayContent>();
 
     int mRotation = 0;
     int mForcedAppOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
@@ -765,6 +745,15 @@
 
         mActivityManager = ActivityManagerNative.getDefault();
         mBatteryStats = BatteryStatsService.getService();
+        mAppOps = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE);
+        mAppOps.startWatchingMode(AppOpsManager.OP_SYSTEM_ALERT_WINDOW, null,
+                new AppOpsManager.Callback() {
+                    @Override
+                    public void opChanged(int op, String packageName) {
+                        updateAppOpsState();
+                    }
+                }
+        );
 
         // Get persisted window scale setting
         mWindowAnimationScale = Settings.Global.getFloat(context.getContentResolver(),
@@ -949,10 +938,11 @@
                         + client.asBinder() + " (token=" + token + ")");
                     // Figure out where the window should go, based on the
                     // order of applications.
-                    final int NA = mAnimatingAppTokens.size();
+                    AppTokenList animatingAppTokens = displayContent.mAnimatingAppTokens;
+                    final int NA = animatingAppTokens.size();
                     WindowState pos = null;
                     for (i=NA-1; i>=0; i--) {
-                        AppWindowToken t = mAnimatingAppTokens.get(i);
+                        AppWindowToken t = animatingAppTokens.get(i);
                         if (t == token) {
                             i--;
                             break;
@@ -988,8 +978,8 @@
                         // Continue looking down until we find the first
                         // token that has windows on this display.
                         while (i >= 0) {
-                            AppWindowToken t = mAnimatingAppTokens.get(i);
-                            tokenWindowList = getTokenWindowsOnDisplay(t, win.mDisplayContent);
+                            AppWindowToken t = animatingAppTokens.get(i);
+                            tokenWindowList = getTokenWindowsOnDisplay(t, displayContent);
                             final int NW = tokenWindowList.size();
                             if (NW > 0) {
                                 pos = tokenWindowList.get(NW-1);
@@ -2024,7 +2014,8 @@
     public int addWindow(Session session, IWindow client, int seq,
             WindowManager.LayoutParams attrs, int viewVisibility, int displayId,
             Rect outContentInsets, InputChannel outInputChannel) {
-        int res = mPolicy.checkAddPermission(attrs);
+        int[] appOp = new int[1];
+        int res = mPolicy.checkAddPermission(attrs, appOp);
         if (res != WindowManagerGlobal.ADD_OKAY) {
             return res;
         }
@@ -2128,7 +2119,7 @@
             }
 
             win = new WindowState(this, session, client, token,
-                    attachedWindow, seq, attrs, viewVisibility, displayContent);
+                    attachedWindow, appOp[0], seq, attrs, viewVisibility, displayContent);
             if (win.mDeathRecipient == null) {
                 // Client has apparently died, so there is no reason to
                 // continue.
@@ -2166,6 +2157,12 @@
             }
             win.attach();
             mWindowMap.put(client.asBinder(), win);
+            if (win.mAppOp != AppOpsManager.OP_NONE) {
+                if (mAppOps.startOpNoThrow(win.mAppOp, win.getOwningUid(), win.getOwningPackage())
+                        != AppOpsManager.MODE_ALLOWED) {
+                    win.setAppOpVisibilityLw(false);
+                }
+            }
 
             if (type == TYPE_APPLICATION_STARTING && token.appWindowToken != null) {
                 token.appWindowToken.startingWindow = win;
@@ -2376,6 +2373,9 @@
 
         if (DEBUG_ADD_REMOVE) Slog.v(TAG, "removeWindowInnerLocked: " + win);
         mWindowMap.remove(win.mClient.asBinder());
+        if (win.mAppOp != AppOpsManager.OP_NONE) {
+            mAppOps.finishOp(win.mAppOp, win.getOwningUid(), win.getOwningPackage());
+        }
 
         final WindowList windows = win.getWindowList();
         windows.remove(win);
@@ -2450,6 +2450,27 @@
         mInputMonitor.updateInputWindowsLw(true /*force*/);
     }
 
+    public void updateAppOpsState() {
+        synchronized(mWindowMap) {
+            boolean changed = false;
+            for (int i=0; i<mDisplayContents.size(); i++) {
+                DisplayContent display = mDisplayContents.valueAt(i);
+                WindowList windows = display.getWindowList();
+                for (int j=0; j<windows.size(); j++) {
+                    final WindowState win = windows.get(j);
+                    if (win.mAppOp != AppOpsManager.OP_NONE) {
+                        changed |= win.setAppOpVisibilityLw(mAppOps.checkOpNoThrow(win.mAppOp,
+                                win.getOwningUid(),
+                                win.getOwningPackage()) == AppOpsManager.MODE_ALLOWED);
+                    }
+                }
+            }
+            if (changed) {
+                scheduleAnimationLocked();
+            }
+        }
+    }
+
     static void logSurface(WindowState w, String msg, RuntimeException where) {
         String str = "  SURFACE " + msg + ": " + w;
         if (where != null) {
@@ -3085,32 +3106,56 @@
     // Application Window Tokens
     // -------------------------------------------------------------
 
-    public void validateAppTokens(List<IBinder> tokens) {
-        int v = tokens.size()-1;
-        int m = mAppTokens.size()-1;
-        while (v >= 0 && m >= 0) {
-            AppWindowToken atoken = mAppTokens.get(m);
-            if (atoken.removed) {
-                m--;
-                continue;
-            }
-            if (tokens.get(v) != atoken.token) {
-                Slog.w(TAG, "Tokens out of sync: external is " + tokens.get(v)
-                      + " @ " + v + ", internal is " + atoken.token + " @ " + m);
-            }
-            v--;
-            m--;
+    public void validateAppTokens(List<TaskGroup> tasks) {
+        int t = tasks.size() - 1;
+        if (t < 0) {
+            Slog.w(TAG, "validateAppTokens: empty task list");
+            return;
         }
-        while (v >= 0) {
-            Slog.w(TAG, "External token not found: " + tokens.get(v) + " @ " + v);
-            v--;
+
+        TaskGroup task = tasks.get(0);
+        int taskId = task.taskId;
+        DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId);
+        if (displayContent == null) {
+            Slog.w(TAG, "validateAppTokens: no Display for taskId=" + taskId);
+            return;
         }
-        while (m >= 0) {
-            AppWindowToken atoken = mAppTokens.get(m);
+
+        AppTokenIterator iterator = displayContent.new AppTokenIterator(true);
+        for ( ; t >= 0; --t) {
+            task = tasks.get(t);
+            List<IApplicationToken> tokens = task.tokens;
+            int v = task.tokens.size() - 1;
+
+            DisplayContent lastDisplayContent = displayContent;
+            displayContent = mTaskIdToDisplayContents.get(taskId);
+            if (displayContent != lastDisplayContent) {
+                Slog.w(TAG, "validateAppTokens: displayContent changed in TaskGroup list!");
+                return;
+            }
+
+            while (v >= 0 && iterator.hasNext()) {
+                AppWindowToken atoken = iterator.next();
+                if (atoken.removed) {
+                    continue;
+                }
+                if (tokens.get(v) != atoken.token) {
+                    Slog.w(TAG, "Tokens out of sync: external is " + tokens.get(v)
+                          + " @ " + v + ", internal is " + atoken.token);
+                }
+                v--;
+            }
+            while (v >= 0) {
+                Slog.w(TAG, "External token not found: " + tokens.get(v) + " @ " + v);
+                v--;
+            }
+        }
+
+        while (iterator.hasNext()) {
+            AppWindowToken atoken = iterator.next();
             if (!atoken.removed) {
-                Slog.w(TAG, "Invalid internal atoken: " + atoken.token + " @ " + m);
+                Slog.w(TAG, "Invalid internal atoken: " + atoken.token);
             }
-            m--;
         }
     }
 
@@ -3174,6 +3219,7 @@
 
         final long origId = Binder.clearCallingIdentity();
         synchronized(mWindowMap) {
+            DisplayContent displayContent = null;
             WindowToken wtoken = mTokenMap.remove(token);
             if (wtoken != null) {
                 boolean delayed = false;
@@ -3183,6 +3229,7 @@
 
                     for (int i=0; i<N; i++) {
                         WindowState win = wtoken.windows.get(i);
+                        displayContent = win.mDisplayContent;
 
                         if (win.mWinAnimator.isAnimating()) {
                             delayed = true;
@@ -3192,13 +3239,12 @@
                             win.mWinAnimator.applyAnimationLocked(WindowManagerPolicy.TRANSIT_EXIT,
                                     false);
                             //TODO (multidisplay): Magnification is supported only for the default
-                            if (mDisplayMagnifier != null
-                                    && win.getDisplayId() == Display.DEFAULT_DISPLAY) {
+                            if (mDisplayMagnifier != null && win.isDefaultDisplay()) {
                                 mDisplayMagnifier.onWindowTransitionLocked(win,
                                         WindowManagerPolicy.TRANSIT_EXIT);
                             }
                             changed = true;
-                            win.mDisplayContent.layoutNeeded = true;
+                            displayContent.layoutNeeded = true;
                         }
                     }
 
@@ -3211,7 +3257,7 @@
                     }
 
                     if (delayed) {
-                        mExitingTokens.add(wtoken);
+                        displayContent.mExitingTokens.add(wtoken);
                     } else if (wtoken.windowType == TYPE_WALLPAPER) {
                         mWallpaperTokens.remove(wtoken);
                     }
@@ -3225,27 +3271,9 @@
         Binder.restoreCallingIdentity(origId);
     }
 
-    /**
-     *  Find the location to insert a new AppWindowToken into the window-ordered app token list.
-     *  Note that mAppTokens.size() == mAnimatingAppTokens.size() + 1.
-     * @param addPos The location the token was inserted into in mAppTokens.
-     * @param atoken The token to insert.
-     */
-    private void addAppTokenToAnimating(final int addPos, final AppWindowToken atoken) {
-        if (addPos == 0 || addPos == mAnimatingAppTokens.size()) {
-            // It was inserted into the beginning or end of mAppTokens. Honor that.
-            mAnimatingAppTokens.add(addPos, atoken);
-            return;
-        }
-        // Find the item immediately above the mAppTokens insertion point and put the token
-        // immediately below that one in mAnimatingAppTokens.
-        final AppWindowToken aboveAnchor = mAppTokens.get(addPos + 1);
-        mAnimatingAppTokens.add(mAnimatingAppTokens.indexOf(aboveAnchor), atoken);
-    }
-
     @Override
     public void addAppToken(int addPos, IApplicationToken token,
-            int groupId, int requestedOrientation, boolean fullscreen, boolean showWhenLocked) {
+            int taskId, int requestedOrientation, boolean fullscreen, boolean showWhenLocked) {
         if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
                 "addAppToken()")) {
             throw new SecurityException("Requires MANAGE_APP_TOKENS permission");
@@ -3273,15 +3301,21 @@
             }
             atoken = new AppWindowToken(this, token);
             atoken.inputDispatchingTimeoutNanos = inputDispatchingTimeoutNanos;
-            atoken.groupId = groupId;
+            atoken.groupId = taskId;
             atoken.appFullscreen = fullscreen;
             atoken.showWhenLocked = showWhenLocked;
             atoken.requestedOrientation = requestedOrientation;
             if (DEBUG_TOKEN_MOVEMENT || DEBUG_ADD_REMOVE) Slog.v(TAG, "addAppToken: " + atoken
                     + " at " + addPos);
-            mAppTokens.add(addPos, atoken);
-            addAppTokenToAnimating(addPos, atoken);
+
+            DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId);
+            if (displayContent == null) {
+                displayContent = getDefaultDisplayContentLocked();
+                mTaskIdToDisplayContents.put(taskId, displayContent);
+            }
+            displayContent.addAppToken(addPos, atoken);
             mTokenMap.put(token.asBinder(), atoken);
+            mTaskIdToDisplayContents.put(taskId, displayContent);
 
             // Application tokens start out hidden.
             atoken.hidden = true;
@@ -3304,7 +3338,7 @@
                 Slog.w(TAG, "Attempted to set group id of non-existing app token: " + token);
                 return;
             }
-            atoken.groupId = groupId;
+            mTaskIdToDisplayContents.get(atoken.groupId).setAppTaskId(atoken, groupId);
         }
     }
 
@@ -3350,8 +3384,11 @@
         boolean findingBehind = false;
         boolean haveGroup = false;
         boolean lastFullscreen = false;
-        for (int pos = mAppTokens.size() - 1; pos >= 0; pos--) {
-            AppWindowToken atoken = mAppTokens.get(pos);
+        // TODO: Multi window.
+        DisplayContent displayContent = getDefaultDisplayContentLocked();
+        AppTokenIterator iterator = displayContent.new AppTokenIterator(true);
+        while (iterator.hasNext()) {
+            AppWindowToken atoken = iterator.next();
 
             if (DEBUG_APP_ORIENTATION) Slog.v(TAG, "Checking app orientation: " + atoken);
 
@@ -4260,11 +4297,12 @@
                         TAG, "Removing app " + wtoken + " delayed=" + delayed
                         + " animation=" + wtoken.mAppAnimator.animation
                         + " animating=" + wtoken.mAppAnimator.animating);
+                DisplayContent displayContent = mTaskIdToDisplayContents.get(wtoken.groupId);
                 if (delayed) {
                     // set the token aside because it has an active animation to be finished
                     if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG,
                             "removeAppToken make exiting: " + wtoken);
-                    mExitingAppTokens.add(wtoken);
+                    displayContent.mExitingAppTokens.add(wtoken);
                 } else {
                     // Make sure there is no animation running on this token,
                     // so any windows associated with it will be removed as
@@ -4274,8 +4312,7 @@
                 }
                 if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG,
                         "removeAppToken: " + wtoken);
-                mAppTokens.remove(wtoken);
-                mAnimatingAppTokens.remove(wtoken);
+                displayContent.removeAppToken(wtoken);
                 wtoken.removed = true;
                 if (wtoken.startingData != null) {
                     startingToken = wtoken;
@@ -4327,14 +4364,27 @@
     }
 
     void dumpAppTokensLocked() {
-        for (int i=mAppTokens.size()-1; i>=0; i--) {
-            Slog.v(TAG, "  #" + i + ": " + mAppTokens.get(i).token);
+        DisplayContentsIterator iterator = new DisplayContentsIterator();
+        while (iterator.hasNext()) {
+            DisplayContent displayContent = iterator.next();
+            Slog.v(TAG, "  Display " + displayContent.getDisplayId());
+            AppTokenIterator appIterator = displayContent.new AppTokenIterator(true);
+            int i = appIterator.size();
+            while (appIterator.hasNext()) {
+                Slog.v(TAG, "  #" + --i + ": " + appIterator.next().token);
+            }
         }
     }
 
     void dumpAnimatingAppTokensLocked() {
-        for (int i=mAnimatingAppTokens.size()-1; i>=0; i--) {
-            Slog.v(TAG, "  #" + i + ": " + mAnimatingAppTokens.get(i).token);
+        DisplayContentsIterator iterator = new DisplayContentsIterator();
+        while (iterator.hasNext()) {
+            DisplayContent displayContent = iterator.next();
+            Slog.v(TAG, "  Display " + displayContent.getDisplayId());
+            AppTokenList appTokens = displayContent.mAnimatingAppTokens;
+            for (int i=appTokens.size()-1; i>=0; i--) {
+                Slog.v(TAG, "  #" + i + ": " + appTokens.get(i).token);
+            }
         }
     }
 
@@ -4347,10 +4397,11 @@
         }
     }
 
-    private int findWindowOffsetLocked(WindowList windows, int tokenPos) {
+    private int findWindowOffsetLocked(DisplayContent displayContent, int tokenPos) {
+        final WindowList windows = displayContent.getWindowList();
         final int NW = windows.size();
 
-        if (tokenPos >= mAnimatingAppTokens.size()) {
+        if (tokenPos >= displayContent.mAnimatingAppTokens.size()) {
             int i = NW;
             while (i > 0) {
                 i--;
@@ -4361,10 +4412,11 @@
             }
         }
 
+        final AppTokenList appTokens = displayContent.mAppTokens;
         while (tokenPos > 0) {
             // Find the first app token below the new position that has
             // a window displayed.
-            final AppWindowToken wtoken = mAppTokens.get(tokenPos-1);
+            final AppWindowToken wtoken = appTokens.get(tokenPos-1);
             if (DEBUG_REORDER) Slog.v(TAG, "Looking for lower windows @ "
                     + tokenPos + " -- " + wtoken.token);
             if (wtoken.sendingToBottom) {
@@ -4373,28 +4425,24 @@
                 tokenPos--;
                 continue;
             }
-            int i = wtoken.windows.size();
-            while (i > 0) {
-                i--;
+            for (int i = wtoken.windows.size() - 1; i >= 0; --i) {
                 WindowState win = wtoken.windows.get(i);
-                int j = win.mChildWindows.size();
-                while (j > 0) {
-                    j--;
+                for (int j = win.mChildWindows.size() - 1; j >= 0; --j) {
                     WindowState cwin = win.mChildWindows.get(j);
                     if (cwin.mSubLayer >= 0) {
-                        for (int pos=NW-1; pos>=0; pos--) {
+                        for (int pos = NW - 1; pos >= 0; pos--) {
                             if (windows.get(pos) == cwin) {
                                 if (DEBUG_REORDER) Slog.v(TAG,
-                                        "Found child win @" + (pos+1));
-                                return pos+1;
+                                        "Found child win @" + (pos + 1));
+                                return pos + 1;
                             }
                         }
                     }
                 }
-                for (int pos=NW-1; pos>=0; pos--) {
+                for (int pos = NW - 1; pos >= 0; pos--) {
                     if (windows.get(pos) == win) {
-                        if (DEBUG_REORDER) Slog.v(TAG, "Found win @" + (pos+1));
-                        return pos+1;
+                        if (DEBUG_REORDER) Slog.v(TAG, "Found win @" + (pos + 1));
+                        return pos + 1;
                     }
                 }
             }
@@ -4404,6 +4452,58 @@
         return 0;
     }
 
+    private int findAppWindowInsertionPointLocked(AppWindowToken target) {
+        final int taskId = target.groupId;
+        DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId);
+        if (displayContent == null) {
+            Slog.w(TAG, "findTopAppWindowLocked: no DisplayContent for " + target);
+            return 0;
+        }
+        final WindowList windows = displayContent.getWindowList();
+        final int NW = windows.size();
+
+        AppTokenIterator iterator = displayContent.new AppTokenIterator(true);
+        while (iterator.hasNext()) {
+            if (iterator.next() == target) {
+                break;
+            }
+        }
+
+        while (iterator.hasNext()) {
+            // Find the first app token below the new position that has
+            // a window displayed.
+            final AppWindowToken wtoken = iterator.next();
+            if (DEBUG_REORDER) Slog.v(TAG, "Looking for lower windows in " + wtoken.token);
+            if (wtoken.sendingToBottom) {
+                if (DEBUG_REORDER) Slog.v(TAG, "Skipping token -- currently sending to bottom");
+                continue;
+            }
+            for (int i = wtoken.windows.size() - 1; i >= 0; --i) {
+                WindowState win = wtoken.windows.get(i);
+                for (int j = win.mChildWindows.size() - 1; j >= 0; --j) {
+                    WindowState cwin = win.mChildWindows.get(j);
+                    if (cwin.mSubLayer >= 0) {
+                        for (int pos = NW - 1; pos >= 0; pos--) {
+                            if (windows.get(pos) == cwin) {
+                                if (DEBUG_REORDER) Slog.v(TAG,
+                                        "Found child win @" + (pos + 1));
+                                return pos + 1;
+                            }
+                        }
+                    }
+                }
+                for (int pos = NW - 1; pos >= 0; pos--) {
+                    if (windows.get(pos) == win) {
+                        if (DEBUG_REORDER) Slog.v(TAG, "Found win @" + (pos + 1));
+                        return pos + 1;
+                    }
+                }
+            }
+        }
+
+        return 0;
+    }
+
     private final int reAddWindowLocked(int index, WindowState win) {
         final WindowList windows = win.getWindowList();
         final int NCW = win.mChildWindows.size();
@@ -4458,28 +4558,28 @@
             if (DEBUG_REORDER) Slog.v(TAG, "Initial app tokens:");
             if (DEBUG_REORDER) dumpAppTokensLocked();
             final AppWindowToken wtoken = findAppWindowToken(token);
-            final int oldIndex = mAppTokens.indexOf(wtoken);
+            DisplayContent displayContent = mTaskIdToDisplayContents.get(wtoken.groupId);
+            final AppTokenList appTokens = displayContent.mAppTokens;
+            final int oldIndex = appTokens.indexOf(wtoken);
             if (DEBUG_TOKEN_MOVEMENT || DEBUG_REORDER) Slog.v(TAG,
                     "Start moving token " + wtoken + " initially at "
                     + oldIndex);
             if (oldIndex > index && mAppTransition.isTransitionSet()) {
                 // animation towards back has not started, copy old list for duration of animation.
-                mAnimatingAppTokens.clear();
-                mAnimatingAppTokens.addAll(mAppTokens);
+                displayContent.refillAnimatingAppTokens();
             }
-            if (wtoken == null || !mAppTokens.remove(wtoken)) {
+            if (wtoken == null || !appTokens.remove(wtoken)) {
                 Slog.w(TAG, "Attempting to reorder token that doesn't exist: "
                       + token + " (" + wtoken + ")");
                 return;
             }
-            mAppTokens.add(index, wtoken);
+            appTokens.add(index, wtoken);
             if (DEBUG_REORDER) Slog.v(TAG, "Moved " + token + " to " + index + ":");
             else if (DEBUG_TOKEN_MOVEMENT) Slog.v(TAG, "Moved " + token + " to " + index);
             if (DEBUG_REORDER) dumpAppTokensLocked();
             if (!mAppTransition.isTransitionSet()) {
                 // Not animating, bring animating app list in line with mAppTokens.
-                mAnimatingAppTokens.clear();
-                mAnimatingAppTokens.addAll(mAppTokens);
+                displayContent.refillAnimatingAppTokens();
 
                 // Bring window ordering, window focus and input window in line with new app token
                 final long origId = Binder.clearCallingIdentity();
@@ -4490,9 +4590,8 @@
                     if (DEBUG_REORDER) dumpWindowsLocked();
                     DisplayContentsIterator iterator = new DisplayContentsIterator();
                     while(iterator.hasNext()) {
-                        final DisplayContent displayContent = iterator.next();
-                        final WindowList windows = displayContent.getWindowList();
-                        final int pos = findWindowOffsetLocked(windows, index);
+                        displayContent = iterator.next();
+                        final int pos = findWindowOffsetLocked(displayContent, index);
                         final int newPos = reAddAppWindowsLocked(displayContent, pos, wtoken);
                         if (pos != newPos) {
                             displayContent.layoutNeeded = true;
@@ -4519,18 +4618,26 @@
         for (int i=0; i<N; i++) {
             IBinder token = tokens.get(i);
             final AppWindowToken wtoken = findAppWindowToken(token);
-            if (DEBUG_REORDER || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG,
-                    "Temporarily removing " + wtoken + " from " + mAppTokens.indexOf(wtoken));
-            if (!mAppTokens.remove(wtoken)) {
-                Slog.w(TAG, "Attempting to reorder token that doesn't exist: "
-                      + token + " (" + wtoken + ")");
-                i--;
-                N--;
+            if (wtoken != null) {
+                final DisplayContent displayContent = mTaskIdToDisplayContents.get(wtoken.groupId);
+                if (DEBUG_REORDER || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG, "Temporarily removing "
+                        + wtoken);
+                if (!displayContent.mAppTokens.remove(wtoken)) {
+                    Slog.w(TAG, "Attempting to reorder token that doesn't exist: "
+                            + token + " (" + wtoken + ")");
+                    i--;
+                    N--;
+                }
             }
         }
     }
 
-    private void moveAppWindowsLocked(List<IBinder> tokens, int tokenPos) {
+    WindowList mSavedWindows;
+    private void moveAppWindowsLocked(List<IBinder> tokens, DisplayContent displayContent,
+            int tokenPos) {
+        if (DEBUG_TASK_MOVEMENT) {
+            mSavedWindows = new WindowList(displayContent.getWindowList());
+        }
         // First remove all of the windows from the list.
         final int N = tokens.size();
         int i;
@@ -4542,26 +4649,21 @@
         }
 
         // And now add them back at the correct place.
-        DisplayContentsIterator iterator = new DisplayContentsIterator();
-        while (iterator.hasNext()) {
-            final DisplayContent displayContent = iterator.next();
-            final WindowList windows = displayContent.getWindowList();
-            // Where to start adding?
-            int pos = findWindowOffsetLocked(windows, tokenPos);
-            for (i=0; i<N; i++) {
-                WindowToken token = mTokenMap.get(tokens.get(i));
-                if (token != null) {
-                    final int newPos = reAddAppWindowsLocked(displayContent, pos, token);
-                    if (newPos != pos) {
-                        displayContent.layoutNeeded = true;
-                    }
-                    pos = newPos;
+        // Where to start adding?
+        int pos = findWindowOffsetLocked(displayContent, tokenPos);
+        for (i=0; i<N; i++) {
+            WindowToken token = mTokenMap.get(tokens.get(i));
+            if (token != null) {
+                final int newPos = reAddAppWindowsLocked(displayContent, pos, token);
+                if (newPos != pos) {
+                    displayContent.layoutNeeded = true;
                 }
+                pos = newPos;
             }
-            if (!updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES,
-                    false /*updateInputWindows*/)) {
-                assignLayersLocked(windows);
-            }
+        }
+        if (!updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES,
+            false /*updateInputWindows*/)) {
+            assignLayersLocked(displayContent.getWindowList());
         }
 
         mInputMonitor.setUpdateInputWindowsNeededLw();
@@ -4583,23 +4685,28 @@
 
         final long origId = Binder.clearCallingIdentity();
         synchronized(mWindowMap) {
+            DisplayContent displayContent = null;
             removeAppTokensLocked(tokens);
             final int N = tokens.size();
             for (int i=0; i<N; i++) {
                 AppWindowToken wt = findAppWindowToken(tokens.get(i));
                 if (wt != null) {
-                    if (DEBUG_TOKEN_MOVEMENT || DEBUG_REORDER) Slog.v(TAG,
-                            "Adding next to top: " + wt);
-                    mAppTokens.add(wt);
+                    if (DEBUG_TOKEN_MOVEMENT || DEBUG_REORDER) {
+                        Slog.v(TAG, "Adding next to top: " + wt);
+                        if (displayContent != null &&
+                                displayContent != mTaskIdToDisplayContents.get(wt.groupId)) Slog.e(
+                                    TAG, "moveAppTokensToTop: Not all tokens on same display");
+                    }
+                    displayContent = mTaskIdToDisplayContents.get(wt.groupId);
+                    displayContent.mAppTokens.add(wt);
                     if (mAppTransition.isTransitionSet()) {
                         wt.sendingToBottom = false;
                     }
                 }
             }
 
-            mAnimatingAppTokens.clear();
-            mAnimatingAppTokens.addAll(mAppTokens);
-            moveAppWindowsLocked(tokens, mAppTokens.size());
+            displayContent.refillAnimatingAppTokens();
+            moveAppWindowsLocked(tokens, displayContent, displayContent.mAppTokens.size());
         }
         Binder.restoreCallingIdentity(origId);
     }
@@ -4613,20 +4720,29 @@
 
         final long origId = Binder.clearCallingIdentity();
         synchronized(mWindowMap) {
+            DisplayContent displayContent = null;
             final int N = tokens.size();
             if (N > 0) {
                 // animating towards back, hang onto old list for duration of animation.
-                mAnimatingAppTokens.clear();
-                mAnimatingAppTokens.addAll(mAppTokens);
+                AppWindowToken wt = findAppWindowToken(tokens.get(0));
+                if (wt != null) {
+                    displayContent = mTaskIdToDisplayContents.get(wt.groupId);
+                    displayContent.refillAnimatingAppTokens();
+                }
             }
             removeAppTokensLocked(tokens);
             int pos = 0;
             for (int i=0; i<N; i++) {
                 AppWindowToken wt = findAppWindowToken(tokens.get(i));
                 if (wt != null) {
-                    if (DEBUG_TOKEN_MOVEMENT) Slog.v(TAG,
-                            "Adding next to bottom: " + wt + " at " + pos);
-                    mAppTokens.add(pos, wt);
+                    if (DEBUG_TOKEN_MOVEMENT) {
+                        Slog.v(TAG, "Adding next to bottom: " + wt + " at " + pos);
+                        if (displayContent != null &&
+                                displayContent != mTaskIdToDisplayContents.get(wt.groupId)) Slog.e(
+                                    TAG, "moveAppTokensToBottom: Not all tokens on same display");
+                    }
+                    displayContent = mTaskIdToDisplayContents.get(wt.groupId);
+                    displayContent.mAppTokens.add(pos, wt);
                     if (mAppTransition.isTransitionSet()) {
                         wt.sendingToBottom = true;
                     }
@@ -4634,13 +4750,138 @@
                 }
             }
 
-            mAnimatingAppTokens.clear();
-            mAnimatingAppTokens.addAll(mAppTokens);
-            moveAppWindowsLocked(tokens, 0);
+            displayContent.refillAnimatingAppTokens();
+            moveAppWindowsLocked(tokens, displayContent, 0);
         }
         Binder.restoreCallingIdentity(origId);
     }
 
+    private void moveTaskWindowsLocked(int taskId) {
+        DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId);
+        if (displayContent == null) {
+            Slog.w(TAG, "moveTaskWindowsLocked: can't find DisplayContent for taskId=" + taskId);
+            return;
+        }
+
+        WindowList windows;
+        WindowList windowsAtStart;
+        if (DEBUG_TASK_MOVEMENT) {
+            windows = displayContent.getWindowList();
+            windowsAtStart = new WindowList(windows);
+            windows.clear();
+            windows.addAll(mSavedWindows);
+        }
+
+        TaskList taskList = displayContent.mTaskIdToTaskList.get(taskId);
+        if (taskList == null) {
+            Slog.w(TAG, "moveTaskWindowsLocked: can't find TaskList for taskId=" + taskId);
+            return;
+        }
+
+        // First remove all of the windows from the list.
+        for (AppWindowToken wtoken : taskList.mAppTokens) {
+            tmpRemoveAppWindowsLocked(wtoken);
+        }
+
+        // And now add them back at the correct place.
+        // Where to start adding?
+        int pos = findAppWindowInsertionPointLocked(taskList.mAppTokens.get(0));
+        for (AppWindowToken wtoken : taskList.mAppTokens) {
+            if (wtoken != null) {
+                final int newPos = reAddAppWindowsLocked(displayContent, pos, wtoken);
+                if (newPos != pos) {
+                    displayContent.layoutNeeded = true;
+                }
+                pos = newPos;
+            }
+        }
+        if (!updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES,
+            false /*updateInputWindows*/)) {
+            assignLayersLocked(displayContent.getWindowList());
+        }
+
+        if (DEBUG_TASK_MOVEMENT) {
+            // Compare windowsAtStart with current windows.
+            if (windowsAtStart.size() != windows.size()) {
+                Slog.e(TAG, "moveTaskWindowsLocked: Mismatch in size!");
+            }
+            for (int i = 0; i < windowsAtStart.size(); i++) {
+                if (windowsAtStart.get(i) != windows.get(i)) {
+                    Slog.e(TAG, "moveTaskWindowsLocked: Mismatch at " + i
+                            + " app=" + windowsAtStart.get(i) + " task=" + windows.get(i));
+                }
+            }
+        }
+
+        updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES,
+                false /*updateInputWindows*/);
+        mInputMonitor.setUpdateInputWindowsNeededLw();
+        performLayoutAndPlaceSurfacesLocked();
+        mInputMonitor.updateInputWindowsLw(false /*force*/);
+
+        //dump();
+    }
+
+    public void moveTaskToTop(int taskId) {
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            synchronized(mWindowMap) {
+                DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId);
+                if (displayContent == null) {
+                    Slog.e(TAG, "moveTaskToTop: taskId=" + taskId
+                            + " not found in mTaskIdToDisplayContents");
+                    return;
+                }
+                TaskList taskList = displayContent.mTaskIdToTaskList.get(taskId);
+                if (taskList == null) {
+                    Slog.e(TAG, "moveTaskToTop: taskId=" + taskId
+                            + " not found in mTaskIdToTaskLists");
+                    return;
+                }
+                if (!displayContent.mTaskLists.remove(taskList)) {
+                    Slog.e(TAG, "moveTaskToTop: taskId=" + taskId + " not found in mTaskLists");
+                }
+                displayContent.mTaskLists.add(taskList);
+                displayContent.verifyAppTokens();
+
+                displayContent.refillAnimatingAppTokens();
+                moveTaskWindowsLocked(taskId);
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+    }
+
+    public void moveTaskToBottom(int taskId) {
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            synchronized(mWindowMap) {
+                DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId);
+                if (displayContent == null) {
+                    Slog.e(TAG, "moveTaskToBottom: taskId=" + taskId
+                            + " not found in mTaskIdToDisplayContents");
+                    return;
+                }
+                TaskList taskList = displayContent.mTaskIdToTaskList.get(taskId);
+                if (taskList == null) {
+                    Slog.e(TAG, "moveTaskToTopBottom: taskId=" + taskId
+                            + " not found in mTaskIdToTaskLists");
+                    return;
+                }
+                if (!displayContent.mTaskLists.remove(taskList)) {
+                    Slog.e(TAG, "moveTaskToBottom: taskId=" + taskId + " not found in mTaskLists");
+                }
+                displayContent.mTaskLists.add(0, taskList);
+                displayContent.verifyAppTokens();
+
+                displayContent.refillAnimatingAppTokens();
+                moveTaskWindowsLocked(taskId);
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+    }
+
     // -------------------------------------------------------------
     // Misc IWindowSession methods
     // -------------------------------------------------------------
@@ -6883,8 +7124,7 @@
                         if (mAppTransition.isTransitionSet()) {
                             if (DEBUG_APP_TRANSITIONS) Slog.v(TAG, "*** APP TRANSITION TIMEOUT");
                             mAppTransition.setTimeout();
-                            mAnimatingAppTokens.clear();
-                            mAnimatingAppTokens.addAll(mAppTokens);
+                            getDefaultDisplayContentLocked().refillAnimatingAppTokens();
                             performLayoutAndPlaceSurfacesLocked();
                         }
                     }
@@ -6929,10 +7169,10 @@
                 case APP_FREEZE_TIMEOUT: {
                     synchronized (mWindowMap) {
                         Slog.w(TAG, "App freeze timeout expired.");
-                        int i = mAppTokens.size();
-                        while (i > 0) {
-                            i--;
-                            AppWindowToken tok = mAppTokens.get(i);
+                        DisplayContent displayContent = getDefaultDisplayContentLocked();
+                        AppTokenIterator iterator = displayContent.new AppTokenIterator(true);
+                        while (iterator.hasNext()) {
+                            AppWindowToken tok = iterator.next();
                             if (tok.mAppAnimator.freezingScreen) {
                                 Slog.w(TAG, "Force clearing freeze: " + tok);
                                 unsetAppFreezingScreenLocked(tok, true, true);
@@ -7386,15 +7626,17 @@
         // in the main app list, but still have windows shown.  We put them
         // in the back because now that the animation is over we no longer
         // will care about them.
-        int NT = mExitingAppTokens.size();
+        AppTokenList exitingAppTokens = displayContent.mExitingAppTokens;
+        int NT = exitingAppTokens.size();
         for (int j=0; j<NT; j++) {
-            i = reAddAppWindowsLocked(displayContent, i, mExitingAppTokens.get(j));
+            i = reAddAppWindowsLocked(displayContent, i, exitingAppTokens.get(j));
         }
 
         // And add in the still active app tokens in Z order.
-        NT = mAnimatingAppTokens.size();
+        AppTokenList animatingAppTokens = displayContent.mAnimatingAppTokens;
+        NT = animatingAppTokens.size();
         for (int j=0; j<NT; j++) {
-            i = reAddAppWindowsLocked(displayContent, i, mAnimatingAppTokens.get(j));
+            i = reAddAppWindowsLocked(displayContent, i, animatingAppTokens.get(j));
         }
 
         i -= lastBelow;
@@ -8060,11 +8302,12 @@
 
         mAppTransition.setIdle();
         // Restore window app tokens to the ActivityManager views
-        for (int i = mAnimatingAppTokens.size() - 1; i >= 0; i--) {
-            mAnimatingAppTokens.get(i).sendingToBottom = false;
+        final DisplayContent displayContent = getDefaultDisplayContentLocked();
+        final AppTokenList animatingAppTokens = displayContent.mAnimatingAppTokens;
+        for (int i = animatingAppTokens.size() - 1; i >= 0; i--) {
+            animatingAppTokens.get(i).sendingToBottom = false;
         }
-        mAnimatingAppTokens.clear();
-        mAnimatingAppTokens.addAll(mAppTokens);
+        displayContent.refillAnimatingAppTokens();
         rebuildAppWindowListLocked();
 
         changes |= PhoneWindowManager.FINISH_LAYOUT_REDO_LAYOUT;
@@ -8218,10 +8461,10 @@
         }
     }
 
-    private void updateAllDrawnLocked() {
+    private void updateAllDrawnLocked(DisplayContent displayContent) {
         // See if any windows have been drawn, so they (and others
         // associated with them) can now be shown.
-        final ArrayList<AppWindowToken> appTokens = mAnimatingAppTokens;
+        final AppTokenList appTokens = displayContent.mAnimatingAppTokens;
         final int NT = appTokens.size();
         for (int i=0; i<NT; i++) {
             AppWindowToken wtoken = appTokens.get(i);
@@ -8256,13 +8499,17 @@
         }
 
         // Initialize state of exiting tokens.
-        for (i=mExitingTokens.size()-1; i>=0; i--) {
-            mExitingTokens.get(i).hasVisible = false;
-        }
+        DisplayContentsIterator iterator = new DisplayContentsIterator();
+        while (iterator.hasNext()) {
+            final DisplayContent displayContent = iterator.next();
+            for (i=displayContent.mExitingTokens.size()-1; i>=0; i--) {
+                displayContent.mExitingTokens.get(i).hasVisible = false;
+            }
 
-        // Initialize state of exiting applications.
-        for (i=mExitingAppTokens.size()-1; i>=0; i--) {
-            mExitingAppTokens.get(i).hasVisible = false;
+            // Initialize state of exiting applications.
+            for (i=displayContent.mExitingAppTokens.size()-1; i>=0; i--) {
+                displayContent.mExitingAppTokens.get(i).hasVisible = false;
+            }
         }
 
         mInnerFields.mHoldScreen = null;
@@ -8291,10 +8538,10 @@
             }
 
             boolean focusDisplayed = false;
-            boolean updateAllDrawn = false;
 
-            DisplayContentsIterator iterator = new DisplayContentsIterator();
+            iterator = new DisplayContentsIterator();
             while (iterator.hasNext()) {
+                boolean updateAllDrawn = false;
                 final DisplayContent displayContent = iterator.next();
                 WindowList windows = displayContent.getWindowList();
                 DisplayInfo displayInfo = displayContent.getDisplayInfo();
@@ -8538,10 +8785,10 @@
                 if (!mInnerFields.mDimming && mAnimator.isDimmingLocked(displayId)) {
                     stopDimmingLocked(displayId);
                 }
-            }
 
-            if (updateAllDrawn) {
-                updateAllDrawnLocked();
+                if (updateAllDrawn) {
+                    updateAllDrawnLocked(displayContent);
+                }
             }
 
             if (focusDisplayed) {
@@ -8686,30 +8933,35 @@
         }
 
         // Time to remove any exiting tokens?
-        for (i=mExitingTokens.size()-1; i>=0; i--) {
-            WindowToken token = mExitingTokens.get(i);
-            if (!token.hasVisible) {
-                mExitingTokens.remove(i);
-                if (token.windowType == TYPE_WALLPAPER) {
-                    mWallpaperTokens.remove(token);
+        iterator = new DisplayContentsIterator();
+        while (iterator.hasNext()) {
+            final DisplayContent displayContent = iterator.next();
+            ArrayList<WindowToken> exitingTokens = displayContent.mExitingTokens;
+            for (i = exitingTokens.size() - 1; i >= 0; i--) {
+                WindowToken token = exitingTokens.get(i);
+                if (!token.hasVisible) {
+                    exitingTokens.remove(i);
+                    if (token.windowType == TYPE_WALLPAPER) {
+                        mWallpaperTokens.remove(token);
+                    }
                 }
             }
-        }
 
-        // Time to remove any exiting applications?
-        for (i=mExitingAppTokens.size()-1; i>=0; i--) {
-            AppWindowToken token = mExitingAppTokens.get(i);
-            if (!token.hasVisible && !mClosingApps.contains(token)) {
-                // 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
-                token.mAppAnimator.clearAnimation();
-                token.mAppAnimator.animating = false;
-                if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG,
-                        "performLayout: App token exiting now removed" + token);
-                mAppTokens.remove(token);
-                mAnimatingAppTokens.remove(token);
-                mExitingAppTokens.remove(i);
+            // Time to remove any exiting applications?
+            AppTokenList exitingAppTokens = displayContent.mExitingAppTokens;
+            for (i = exitingAppTokens.size() - 1; i >= 0; i--) {
+                AppWindowToken token = exitingAppTokens.get(i);
+                if (!token.hasVisible && !mClosingApps.contains(token)) {
+                    // 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
+                    token.mAppAnimator.clearAnimation();
+                    token.mAppAnimator.animating = false;
+                    if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG,
+                            "performLayout: App token exiting now removed" + token);
+                    displayContent.removeAppToken(token);
+                    exitingAppTokens.remove(i);
+                }
             }
         }
 
@@ -8729,7 +8981,7 @@
             defaultDisplay.layoutNeeded = true;
         }
 
-        DisplayContentsIterator iterator = new DisplayContentsIterator();
+        iterator = new DisplayContentsIterator();
         while (iterator.hasNext()) {
             DisplayContent displayContent = iterator.next();
             if (displayContent.pendingLayoutChanges != 0) {
@@ -9144,8 +9396,8 @@
     }
 
     private WindowState findFocusedWindowLocked(DisplayContent displayContent) {
-        int nextAppIndex = mAppTokens.size()-1;
-        WindowToken nextApp = nextAppIndex >= 0 ? mAppTokens.get(nextAppIndex) : null;
+        AppTokenIterator iterator = displayContent.new AppTokenIterator(true);
+        WindowToken nextApp = iterator.hasNext() ? iterator.next() : null;
 
         final WindowList windows = displayContent.getWindowList();
         for (int i = windows.size() - 1; i >= 0; i--) {
@@ -9171,8 +9423,8 @@
             // through the app tokens until we find its app.
             if (thisApp != null && nextApp != null && thisApp != nextApp
                     && win.mAttrs.type != TYPE_APPLICATION_STARTING) {
-                int origAppIndex = nextAppIndex;
-                while (nextAppIndex > 0) {
+                final WindowToken origAppToken = nextApp;
+                while (iterator.hasNext()) {
                     if (nextApp == mFocusedApp) {
                         // Whoops, we are below the focused app...  no focus
                         // for you!
@@ -9180,8 +9432,7 @@
                             TAG, "Reached focused app: " + mFocusedApp);
                         return null;
                     }
-                    nextAppIndex--;
-                    nextApp = mAppTokens.get(nextAppIndex);
+                    nextApp = iterator.next();
                     if (nextApp == thisApp) {
                         break;
                     }
@@ -9190,8 +9441,14 @@
                     // Uh oh, the app token doesn't exist!  This shouldn't
                     // happen, but if it does we can get totally hosed...
                     // so restart at the original app.
-                    nextAppIndex = origAppIndex;
-                    nextApp = mAppTokens.get(nextAppIndex);
+                    nextApp = origAppToken;
+                    iterator = displayContent.new AppTokenIterator(true);
+                    while (iterator.hasNext()) {
+                        // return iterator to same place.
+                        if (iterator.next() == origAppToken) {
+                            break;
+                        }
+                    } 
                 }
             }
 
@@ -9556,15 +9813,6 @@
                 }
             }
         }
-        if (mAppTokens.size() > 0) {
-            pw.println();
-            pw.println("  Application tokens in Z order:");
-            for (int i=mAppTokens.size()-1; i>=0; i--) {
-                pw.print("  App #"); pw.print(i);
-                        pw.print(' '); pw.print(mAppTokens.get(i)); pw.println(":");
-                mAppTokens.get(i).dump(pw, "    ");
-            }
-        }
         if (mFinishedStarting.size() > 0) {
             pw.println();
             pw.println("  Finishing start of application tokens:");
@@ -9580,41 +9828,13 @@
                 }
             }
         }
-        if (mExitingTokens.size() > 0) {
-            pw.println();
-            pw.println("  Exiting tokens:");
-            for (int i=mExitingTokens.size()-1; i>=0; i--) {
-                WindowToken token = mExitingTokens.get(i);
-                pw.print("  Exiting #"); pw.print(i);
-                        pw.print(' '); pw.print(token);
-                if (dumpAll) {
-                    pw.println(':');
-                    token.dump(pw, "    ");
-                } else {
-                    pw.println();
-                }
-            }
-        }
-        if (mExitingAppTokens.size() > 0) {
-            pw.println();
-            pw.println("  Exiting application tokens:");
-            for (int i=mExitingAppTokens.size()-1; i>=0; i--) {
-                WindowToken token = mExitingAppTokens.get(i);
-                pw.print("  Exiting App #"); pw.print(i);
-                        pw.print(' '); pw.print(token);
-                if (dumpAll) {
-                    pw.println(':');
-                    token.dump(pw, "    ");
-                } else {
-                    pw.println();
-                }
-            }
-        }
-        if (mAppTransition.isRunning() && mAnimatingAppTokens.size() > 0) {
+        final AppTokenList animatingAppTokens =
+                getDefaultDisplayContentLocked().mAnimatingAppTokens;
+        if (mAppTransition.isRunning() && animatingAppTokens.size() > 0) {
             pw.println();
             pw.println("  Application tokens during animation:");
-            for (int i=mAnimatingAppTokens.size()-1; i>=0; i--) {
-                WindowToken token = mAnimatingAppTokens.get(i);
+            for (int i=animatingAppTokens.size()-1; i>=0; i--) {
+                WindowToken token = animatingAppTokens.get(i);
                 pw.print("  App moving to bottom #"); pw.print(i);
                         pw.print(' '); pw.print(token);
                 if (dumpAll) {
diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java
index a335958..e49d20b 100644
--- a/services/java/com/android/server/wm/WindowState.java
+++ b/services/java/com/android/server/wm/WindowState.java
@@ -24,6 +24,7 @@
 import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD;
 import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
 
+import android.app.AppOpsManager;
 import com.android.server.input.InputWindowHandle;
 
 import android.content.Context;
@@ -51,6 +52,12 @@
 import java.util.ArrayList;
 
 class WindowList extends ArrayList<WindowState> {
+    WindowList() {
+        super();
+    }
+    WindowList(WindowList windows) {
+        super(windows);
+    }
 }
 
 /**
@@ -69,6 +76,9 @@
     final Context mContext;
     final Session mSession;
     final IWindow mClient;
+    final int mAppOp;
+    // UserId and appId of the owner. Don't display windows of non-current user.
+    final int mOwnerUid;
     WindowToken mToken;
     WindowToken mRootToken;
     AppWindowToken mAppToken;
@@ -92,6 +102,7 @@
     int mSystemUiVisibility;
     boolean mPolicyVisibility = true;
     boolean mPolicyVisibilityAfterAnim = true;
+    boolean mAppOpVisibility = true;
     boolean mAppFreezing;
     boolean mAttachedHidden;    // is our parent window hidden?
     boolean mWallpaperVisible;  // for wallpaper, what was last vis report?
@@ -270,18 +281,16 @@
 
     DisplayContent  mDisplayContent;
 
-    // UserId and appId of the owner. Don't display windows of non-current user.
-    int mOwnerUid;
-
     /** When true this window can be displayed on screens owther than mOwnerUid's */
     private boolean mShowToOwnerOnly;
 
     WindowState(WindowManagerService service, Session s, IWindow c, WindowToken token,
-           WindowState attachedWindow, int seq, WindowManager.LayoutParams a,
+           WindowState attachedWindow, int appOp, int seq, WindowManager.LayoutParams a,
            int viewVisibility, final DisplayContent displayContent) {
         mService = service;
         mSession = s;
         mClient = c;
+        mAppOp = appOp;
         mToken = token;
         mOwnerUid = s.mUid;
         mAttrs.copyFrom(a);
@@ -383,7 +392,7 @@
 
     @Override
     public int getOwningUid() {
-        return mSession.mUid;
+        return mOwnerUid;
     }
 
     @Override
@@ -980,6 +989,10 @@
                     + this + ", type " + mAttrs.type + ", belonging to " + mOwnerUid);
             return false;
         }
+        if (!mAppOpVisibility) {
+            // Being hidden due to app op request.
+            return false;
+        }
         if (mPolicyVisibility && mPolicyVisibilityAfterAnim) {
             // Already showing.
             return false;
@@ -1051,6 +1064,25 @@
         return true;
     }
 
+    public boolean setAppOpVisibilityLw(boolean state) {
+        if (mAppOpVisibility != state) {
+            mAppOpVisibility = state;
+            if (state) {
+                // If the policy visibility had last been to hide, then this
+                // will incorrectly show at this point since we lost that
+                // information.  Not a big deal -- for the windows that have app
+                // ops modifies they should only be hidden by policy due to the
+                // lock screen, and the user won't be changing this if locked.
+                // Plus it will quickly be fixed the next time we do a layout.
+                showLw(true, false);
+            } else {
+                hideLw(true, false);
+            }
+            return true;
+        }
+        return false;
+    }
+
     @Override
     public boolean isAlive() {
         return mClient.asBinder().isBinderAlive();
@@ -1129,7 +1161,9 @@
                 pw.print(" mSession="); pw.print(mSession);
                 pw.print(" mClient="); pw.println(mClient.asBinder());
         pw.print(prefix); pw.print("mOwnerUid="); pw.print(mOwnerUid);
-                pw.print(" mShowToOwnerOnly="); pw.println(mShowToOwnerOnly);
+                pw.print(" mShowToOwnerOnly="); pw.print(mShowToOwnerOnly);
+                pw.print(" package="); pw.print(mAttrs.packageName);
+                pw.print(" appop="); pw.println(AppOpsManager.opToName(mAppOp));
         pw.print(prefix); pw.print("mAttrs="); pw.println(mAttrs);
         pw.print(prefix); pw.print("Requested w="); pw.print(mRequestedWidth);
                 pw.print(" h="); pw.print(mRequestedHeight);
@@ -1175,11 +1209,14 @@
             pw.print(" mSystemUiVisibility=0x");
             pw.println(Integer.toHexString(mSystemUiVisibility));
         }
-        if (!mPolicyVisibility || !mPolicyVisibilityAfterAnim || mAttachedHidden) {
+        if (!mPolicyVisibility || !mPolicyVisibilityAfterAnim || !mAppOpVisibility
+                || mAttachedHidden) {
             pw.print(prefix); pw.print("mPolicyVisibility=");
                     pw.print(mPolicyVisibility);
                     pw.print(" mPolicyVisibilityAfterAnim=");
                     pw.print(mPolicyVisibilityAfterAnim);
+                    pw.print(" mAppOpVisibility=");
+                    pw.print(mAppOpVisibility);
                     pw.print(" mAttachedHidden="); pw.println(mAttachedHidden);
         }
         if (!mRelayoutCalled || mLayoutNeeded) {
@@ -1273,9 +1310,12 @@
 
     @Override
     public String toString() {
-        if (mStringNameCache == null || mLastTitle != mAttrs.getTitle()
-                || mWasExiting != mExiting) {
-            mLastTitle = mAttrs.getTitle();
+        CharSequence title = mAttrs.getTitle();
+        if (title == null || title.length() <= 0) {
+            title = mAttrs.packageName;
+        }
+        if (mStringNameCache == null || mLastTitle != title || mWasExiting != mExiting) {
+            mLastTitle = title;
             mWasExiting = mExiting;
             mStringNameCache = "Window{" + Integer.toHexString(System.identityHashCode(this))
                     + " u" + UserHandle.getUserId(mSession.mUid)
diff --git a/services/java/com/android/server/wm/WindowToken.java b/services/java/com/android/server/wm/WindowToken.java
index bd0ace8..2267123 100644
--- a/services/java/com/android/server/wm/WindowToken.java
+++ b/services/java/com/android/server/wm/WindowToken.java
@@ -19,7 +19,6 @@
 import android.os.IBinder;
 
 import java.io.PrintWriter;
-import java.util.ArrayList;
 
 /**
  * Container of a set of related windows in the window manager.  Often this
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
index 1758d93..c4911a0 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
@@ -21,8 +21,10 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.UserInfo;
+import android.os.Bundle;
 import android.os.Debug;
 import android.os.Environment;
+import android.os.UserHandle;
 import android.os.UserManager;
 import android.test.AndroidTestCase;
 
@@ -140,6 +142,20 @@
         }
     }
 
+    public void testRestrictions() {
+        List<UserInfo> users = mUserManager.getUsers();
+        if (users.size() > 1) {
+            Bundle restrictions = new Bundle();
+            restrictions.putBoolean(UserManager.ALLOW_INSTALL_APPS, false);
+            restrictions.putBoolean(UserManager.ALLOW_CONFIG_WIFI, true);
+            mUserManager.setUserRestrictions(restrictions, new UserHandle(users.get(1).id));
+            Bundle stored = mUserManager.getUserRestrictions(new UserHandle(users.get(1).id));
+            assertEquals(stored.getBoolean(UserManager.ALLOW_CONFIG_WIFI), true);
+            assertEquals(stored.getBoolean(UserManager.ALLOW_UNINSTALL_APPS), true);
+            assertEquals(stored.getBoolean(UserManager.ALLOW_INSTALL_APPS), false);
+        }
+    }
+
     private void removeUser(int userId) {
         synchronized (mUserLock) {
             mUserManager.removeUser(userId);
@@ -151,4 +167,5 @@
             }
         }
     }
+
 }
diff --git a/telephony/java/android/telephony/CellInfoLte.java b/telephony/java/android/telephony/CellInfoLte.java
index 35dea24..d7a58b6 100644
--- a/telephony/java/android/telephony/CellInfoLte.java
+++ b/telephony/java/android/telephony/CellInfoLte.java
@@ -26,7 +26,7 @@
 public final class CellInfoLte extends CellInfo implements Parcelable {
 
     private static final String LOG_TAG = "CellInfoLte";
-    private static final boolean DBG = true;
+    private static final boolean DBG = false;
 
     private CellIdentityLte mCellIdentityLte;
     private CellSignalStrengthLte mCellSignalStrengthLte;
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index cd2a600..8c47332 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -126,6 +126,28 @@
             "android.intent.action.PHONE_STATE";
 
     /**
+     * The Phone app sends this intent when a user opts to respond-via-message during an incoming
+     * call. By default, the MMS app consumes this message and sends a text message to the caller. A
+     * third party app can provide this functionality in lieu of MMS app by consuming this Intent
+     * and sending the message using their own messaging system.  The intent contains a URI
+     * describing the recipient, and an EXTRA containg the message itself.
+     * <p>
+     * The intent-filter which consumes this Intent needs to be in a service which requires the
+     * permission SEND_RESPOND_VIA_MESSAGE.
+     *
+     * <p>
+     * {@link android.content.Intent#getData} is a URI describing the recipient of the message.
+     * <p>
+     * The {@link android.content.Intent#EXTRA_TEXT} extra contains the message
+     * to send.
+     * <p>
+     * Output: nothing.
+     */
+    @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+    public static final String ACTION_RESPOND_VIA_MESSAGE =
+            "android.intent.action.RESPOND_VIA_MESSAGE";
+
+    /**
      * The lookup key used with the {@link #ACTION_PHONE_STATE_CHANGED} broadcast
      * for a String containing the new call state.
      *
diff --git a/telephony/java/com/android/internal/telephony/ISms.aidl b/telephony/java/com/android/internal/telephony/ISms.aidl
new file mode 100644
index 0000000..647f014
--- /dev/null
+++ b/telephony/java/com/android/internal/telephony/ISms.aidl
@@ -0,0 +1,218 @@
+/*
+** Copyright 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.internal.telephony;
+
+import android.app.PendingIntent;
+import com.android.internal.telephony.SmsRawData;
+
+/** Interface for applications to access the ICC phone book.
+ *
+ * <p>The following code snippet demonstrates a static method to
+ * retrieve the ISms interface from Android:</p>
+ * <pre>private static ISms getSmsInterface()
+            throws DeadObjectException {
+    IServiceManager sm = ServiceManagerNative.getDefault();
+    ISms ss;
+    ss = ISms.Stub.asInterface(sm.getService("isms"));
+    return ss;
+}
+ * </pre>
+ */
+
+interface ISms {
+    /**
+     * Retrieves all messages currently stored on ICC.
+     *
+     * @return list of SmsRawData of all sms on ICC
+     */
+     List<SmsRawData> getAllMessagesFromIccEf(String callingPkg);
+
+    /**
+     * Update the specified message on the ICC.
+     *
+     * @param messageIndex record index of message to update
+     * @param newStatus new message status (STATUS_ON_ICC_READ,
+     *                  STATUS_ON_ICC_UNREAD, STATUS_ON_ICC_SENT,
+     *                  STATUS_ON_ICC_UNSENT, STATUS_ON_ICC_FREE)
+     * @param pdu the raw PDU to store
+     * @return success or not
+     *
+     */
+     boolean updateMessageOnIccEf(String callingPkg, int messageIndex, int newStatus,
+            in byte[] pdu);
+
+    /**
+     * Copy a raw SMS PDU to the ICC.
+     *
+     * @param pdu the raw PDU to store
+     * @param status message status (STATUS_ON_ICC_READ, STATUS_ON_ICC_UNREAD,
+     *               STATUS_ON_ICC_SENT, STATUS_ON_ICC_UNSENT)
+     * @return success or not
+     *
+     */
+    boolean copyMessageToIccEf(String callingPkg, int status, in byte[] pdu, in byte[] smsc);
+
+    /**
+     * Send a data SMS.
+     *
+     * @param smsc the SMSC to send the message through, or NULL for the
+     *  default SMSC
+     * @param data the body of the message to send
+     * @param sentIntent if not NULL this <code>PendingIntent</code> is
+     *  broadcast when the message is sucessfully sent, or failed.
+     *  The result code will be <code>Activity.RESULT_OK<code> for success,
+     *  or one of these errors:<br>
+     *  <code>RESULT_ERROR_GENERIC_FAILURE</code><br>
+     *  <code>RESULT_ERROR_RADIO_OFF</code><br>
+     *  <code>RESULT_ERROR_NULL_PDU</code><br>
+     *  For <code>RESULT_ERROR_GENERIC_FAILURE</code> the sentIntent may include
+     *  the extra "errorCode" containing a radio technology specific value,
+     *  generally only useful for troubleshooting.<br>
+     *  The per-application based SMS control checks sentIntent. If sentIntent
+     *  is NULL the caller will be checked against all unknown applicaitons,
+     *  which cause smaller number of SMS to be sent in checking period.
+     * @param deliveryIntent if not NULL this <code>PendingIntent</code> is
+     *  broadcast when the message is delivered to the recipient.  The
+     *  raw pdu of the status report is in the extended data ("pdu").
+     */
+    void sendData(String callingPkg, in String destAddr, in String scAddr, in int destPort,
+            in byte[] data, in PendingIntent sentIntent, in PendingIntent deliveryIntent);
+
+    /**
+     * Send an SMS.
+     *
+     * @param smsc the SMSC to send the message through, or NULL for the
+     *  default SMSC
+     * @param text the body of the message to send
+     * @param sentIntent if not NULL this <code>PendingIntent</code> is
+     *  broadcast when the message is sucessfully sent, or failed.
+     *  The result code will be <code>Activity.RESULT_OK<code> for success,
+     *  or one of these errors:<br>
+     *  <code>RESULT_ERROR_GENERIC_FAILURE</code><br>
+     *  <code>RESULT_ERROR_RADIO_OFF</code><br>
+     *  <code>RESULT_ERROR_NULL_PDU</code><br>
+     *  For <code>RESULT_ERROR_GENERIC_FAILURE</code> the sentIntent may include
+     *  the extra "errorCode" containing a radio technology specific value,
+     *  generally only useful for troubleshooting.<br>
+     *  The per-application based SMS control checks sentIntent. If sentIntent
+     *  is NULL the caller will be checked against all unknown applications,
+     *  which cause smaller number of SMS to be sent in checking period.
+     * @param deliveryIntent if not NULL this <code>PendingIntent</code> is
+     *  broadcast when the message is delivered to the recipient.  The
+     *  raw pdu of the status report is in the extended data ("pdu").
+     */
+    void sendText(String callingPkg, in String destAddr, in String scAddr, in String text,
+            in PendingIntent sentIntent, in PendingIntent deliveryIntent);
+
+    /**
+     * Send a multi-part text based SMS.
+     *
+     * @param destinationAddress the address to send the message to
+     * @param scAddress is the service center address or null to use
+     *   the current default SMSC
+     * @param parts an <code>ArrayList</code> of strings that, in order,
+     *   comprise the original message
+     * @param sentIntents if not null, an <code>ArrayList</code> of
+     *   <code>PendingIntent</code>s (one for each message part) that is
+     *   broadcast when the corresponding message part has been sent.
+     *   The result code will be <code>Activity.RESULT_OK<code> for success,
+     *   or one of these errors:
+     *   <code>RESULT_ERROR_GENERIC_FAILURE</code>
+     *   <code>RESULT_ERROR_RADIO_OFF</code>
+     *   <code>RESULT_ERROR_NULL_PDU</code>.
+     * @param deliveryIntents if not null, an <code>ArrayList</code> of
+     *   <code>PendingIntent</code>s (one for each message part) that is
+     *   broadcast when the corresponding message part has been delivered
+     *   to the recipient.  The raw pdu of the status report is in the
+     *   extended data ("pdu").
+     */
+    void sendMultipartText(String callingPkg, in String destinationAddress, in String scAddress,
+            in List<String> parts, in List<PendingIntent> sentIntents,
+            in List<PendingIntent> deliveryIntents);
+
+    /**
+     * Enable reception of cell broadcast (SMS-CB) messages with the given
+     * message identifier. Note that if two different clients enable the same
+     * message identifier, they must both disable it for the device to stop
+     * receiving those messages.
+     *
+     * @param messageIdentifier Message identifier as specified in TS 23.041 (3GPP) or
+     *   C.R1001-G (3GPP2)
+     * @return true if successful, false otherwise
+     *
+     * @see #disableCellBroadcast(int)
+     */
+    boolean enableCellBroadcast(int messageIdentifier);
+
+    /**
+     * Disable reception of cell broadcast (SMS-CB) messages with the given
+     * message identifier. Note that if two different clients enable the same
+     * message identifier, they must both disable it for the device to stop
+     * receiving those messages.
+     *
+     * @param messageIdentifier Message identifier as specified in TS 23.041 (3GPP) or
+     *   C.R1001-G (3GPP2)
+     * @return true if successful, false otherwise
+     *
+     * @see #enableCellBroadcast(int)
+     */
+    boolean disableCellBroadcast(int messageIdentifier);
+
+    /*
+     * Enable reception of cell broadcast (SMS-CB) messages with the given
+     * message identifier range. Note that if two different clients enable
+     * a message identifier range, they must both disable it for the device
+     * to stop receiving those messages.
+     *
+     * @param startMessageId first message identifier as specified in TS 23.041 (3GPP) or
+     *   C.R1001-G (3GPP2)
+     * @param endMessageId last message identifier as specified in TS 23.041 (3GPP) or
+     *   C.R1001-G (3GPP2)
+     * @return true if successful, false otherwise
+     *
+     * @see #disableCellBroadcastRange(int, int)
+     */
+    boolean enableCellBroadcastRange(int startMessageId, int endMessageId);
+
+    /**
+     * Disable reception of cell broadcast (SMS-CB) messages with the given
+     * message identifier range. Note that if two different clients enable
+     * a message identifier range, they must both disable it for the device
+     * to stop receiving those messages.
+     *
+     * @param startMessageId first message identifier as specified in TS 23.041 (3GPP) or
+     *   C.R1001-G (3GPP2)
+     * @param endMessageId last message identifier as specified in TS 23.041 (3GPP) or
+     *   C.R1001-G (3GPP2)
+     * @return true if successful, false otherwise
+     *
+     * @see #enableCellBroadcastRange(int, int)
+     */
+    boolean disableCellBroadcastRange(int startMessageId, int endMessageId);
+
+    /**
+     * Returns the premium SMS send permission for the specified package.
+     * Requires system permission.
+     */
+    int getPremiumSmsPermission(String packageName);
+
+    /**
+     * Set the SMS send permission for the specified package.
+     * Requires system permission.
+     */
+    void setPremiumSmsPermission(String packageName, int permission);
+}
diff --git a/telephony/java/com/android/internal/telephony/SmsRawData.aidl b/telephony/java/com/android/internal/telephony/SmsRawData.aidl
new file mode 100644
index 0000000..b0b3e4f
--- /dev/null
+++ b/telephony/java/com/android/internal/telephony/SmsRawData.aidl
@@ -0,0 +1,19 @@
+/*
+** Copyright 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.internal.telephony;
+
+parcelable SmsRawData;
diff --git a/telephony/java/com/android/internal/telephony/SmsRawData.java b/telephony/java/com/android/internal/telephony/SmsRawData.java
new file mode 100644
index 0000000..891d942
--- /dev/null
+++ b/telephony/java/com/android/internal/telephony/SmsRawData.java
@@ -0,0 +1,62 @@
+/*
+** Copyright 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.internal.telephony;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ *  A parcelable holder class of byte[] for ISms aidl implementation
+ */
+public class SmsRawData implements Parcelable {
+    byte[] data;
+
+    //Static Methods
+    public static final Parcelable.Creator<SmsRawData> CREATOR
+            = new Parcelable.Creator<SmsRawData> (){
+        public SmsRawData createFromParcel(Parcel source) {
+            int size;
+            size = source.readInt();
+            byte[] data = new byte[size];
+            source.readByteArray(data);
+            return new SmsRawData(data);
+        }
+
+        public SmsRawData[] newArray(int size) {
+            return new SmsRawData[size];
+        }
+    };
+
+    // Constructor
+    public SmsRawData(byte[] data) {
+        this.data = data;
+    }
+
+    public byte[] getBytes() {
+        return data;
+    }
+
+    public int describeContents() {
+        return 0;
+    }
+
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(data.length);
+        dest.writeByteArray(data);
+    }
+}
diff --git a/test-runner/src/android/test/mock/MockContext.java b/test-runner/src/android/test/mock/MockContext.java
index 248fbf1..cfc6bd7 100644
--- a/test-runner/src/android/test/mock/MockContext.java
+++ b/test-runner/src/android/test/mock/MockContext.java
@@ -299,6 +299,12 @@
         throw new UnsupportedOperationException();
     }
 
+    /** @hide */
+    @Override
+    public void sendBroadcast(Intent intent, String receiverPermission, int appOp) {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public void sendOrderedBroadcast(Intent intent,
             String receiverPermission) {
@@ -312,6 +318,14 @@
         throw new UnsupportedOperationException();
     }
 
+    /** @hide */
+    @Override
+    public void sendOrderedBroadcast(Intent intent, String receiverPermission, int appOp,
+            BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData,
+           Bundle initialExtras) {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public void sendBroadcastAsUser(Intent intent, UserHandle user) {
         throw new UnsupportedOperationException();
diff --git a/tests/BiDiTests/res/layout/canvas.xml b/tests/BiDiTests/res/layout/canvas.xml
deleted file mode 100644
index 0319a83..0000000
--- a/tests/BiDiTests/res/layout/canvas.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/canvas"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent">
-
-    <LinearLayout android:orientation="vertical"
-                  android:layout_width="match_parent"
-                  android:layout_height="match_parent">
-
-        <SeekBar android:id="@+id/seekbar"
-                 android:layout_height="wrap_content"
-                 android:layout_width="match_parent"
-                />
-
-        <view class="com.android.bidi.BiDiTestView"
-              android:id="@+id/testview"
-              android:layout_width="match_parent"
-              android:layout_height="wrap_content"
-              android:background="#FF0000"
-                />
-
-    </LinearLayout>
-
-</FrameLayout>
\ No newline at end of file
diff --git a/tests/BiDiTests/src/com/android/bidi/BiDiTestActivity.java b/tests/BiDiTests/src/com/android/bidi/BiDiTestActivity.java
index 209597e..b88a885 100644
--- a/tests/BiDiTests/src/com/android/bidi/BiDiTestActivity.java
+++ b/tests/BiDiTests/src/com/android/bidi/BiDiTestActivity.java
@@ -101,7 +101,6 @@
 
         addItem(result, "Basic", BiDiTestBasic.class, R.id.basic);
 
-        addItem(result, "Canvas", BiDiTestCanvas.class, R.id.canvas);
         addItem(result, "Canvas2", BiDiTestCanvas2.class, R.id.canvas2);
 
         addItem(result, "TextView LTR", BiDiTestTextViewLtr.class, R.id.textview_ltr);
diff --git a/tests/BiDiTests/src/com/android/bidi/BiDiTestCanvas.java b/tests/BiDiTests/src/com/android/bidi/BiDiTestCanvas.java
deleted file mode 100644
index 33ed731..0000000
--- a/tests/BiDiTests/src/com/android/bidi/BiDiTestCanvas.java
+++ /dev/null
@@ -1,67 +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.bidi;
-
-import android.app.Fragment;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.SeekBar;
-
-import static com.android.bidi.BiDiTestConstants.FONT_MAX_SIZE;
-import static com.android.bidi.BiDiTestConstants.FONT_MIN_SIZE;
-
-public class BiDiTestCanvas extends Fragment {
-
-    static final int INIT_TEXT_SIZE = (FONT_MAX_SIZE - FONT_MIN_SIZE) / 2;
-
-    private BiDiTestView testView;
-    private SeekBar textSizeSeekBar;
-    private View currentView;
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        currentView = inflater.inflate(R.layout.canvas, container, false);
-        return currentView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        testView = (BiDiTestView) currentView.findViewById(R.id.testview);
-        testView.setCurrentTextSize(INIT_TEXT_SIZE);
-
-        textSizeSeekBar = (SeekBar) currentView.findViewById(R.id.seekbar);
-        textSizeSeekBar.setProgress(INIT_TEXT_SIZE);
-        textSizeSeekBar.setMax(FONT_MAX_SIZE - FONT_MIN_SIZE);
-
-        textSizeSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
-            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
-                testView.setCurrentTextSize(FONT_MIN_SIZE + progress);
-            }
-
-            public void onStartTrackingTouch(SeekBar seekBar) {
-            }
-
-            public void onStopTrackingTouch(SeekBar seekBar) {
-            }
-        });
-    }
-}
diff --git a/tests/BiDiTests/src/com/android/bidi/BiDiTestView.java b/tests/BiDiTests/src/com/android/bidi/BiDiTestView.java
deleted file mode 100644
index 0b1974a..0000000
--- a/tests/BiDiTests/src/com/android/bidi/BiDiTestView.java
+++ /dev/null
@@ -1,212 +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.bidi;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.Rect;
-import android.text.TextPaint;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.View;
-
-public class BiDiTestView extends View {
-
-    private static final String TAG = "BiDiTestView";
-
-    private static final int BORDER_PADDING = 4;
-    private static final int TEXT_PADDING = 16;
-    private static final int TEXT_SIZE = 16;
-    private static final int ORIGIN = 80;
-
-    private static final float DEFAULT_ITALIC_SKEW_X = -0.25f;
-
-    private Rect rect = new Rect();
-
-    private String NORMAL_TEXT;
-    private String NORMAL_LONG_TEXT;
-    private String NORMAL_LONG_TEXT_2;
-    private String NORMAL_LONG_TEXT_3;
-    private String ITALIC_TEXT;
-    private String BOLD_TEXT;
-    private String BOLD_ITALIC_TEXT;
-    private String ARABIC_TEXT;
-    private String CHINESE_TEXT;
-    private String MIXED_TEXT_1;
-    private String HEBREW_TEXT;
-    private String RTL_TEXT;
-    private String THAI_TEXT;
-
-    private int currentTextSize;
-
-    public BiDiTestView(Context context) {
-        super(context);
-        init(context);
-    }
-
-    public BiDiTestView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        init(context);
-    }
-
-    public BiDiTestView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-        init(context);
-    }
-
-    private void init(Context context) {
-        NORMAL_TEXT = context.getString(R.string.normal_text);
-        NORMAL_LONG_TEXT = context.getString(R.string.normal_long_text);
-        NORMAL_LONG_TEXT_2 = context.getString(R.string.normal_long_text_2);
-        NORMAL_LONG_TEXT_3 = context.getString(R.string.normal_long_text_3);
-        ITALIC_TEXT = context.getString(R.string.italic_text);
-        BOLD_TEXT = context.getString(R.string.bold_text);
-        BOLD_ITALIC_TEXT = context.getString(R.string.bold_italic_text);
-        ARABIC_TEXT = context.getString(R.string.arabic_text);
-        CHINESE_TEXT = context.getString(R.string.chinese_text);
-        MIXED_TEXT_1 = context.getString(R.string.mixed_text_1);
-        HEBREW_TEXT = context.getString(R.string.hebrew_text);
-        RTL_TEXT = context.getString(R.string.rtl);
-        THAI_TEXT = context.getString(R.string.pointer_location);
-    }
-
-    public void setCurrentTextSize(int size) {
-        currentTextSize = size;
-        invalidate();
-    }
-
-    @Override
-    public void onDraw(Canvas canvas) {
-        drawInsideRect(canvas, new Paint(), Color.BLACK);
-
-        int deltaX = 0;
-
-        deltaX  = testString(canvas, NORMAL_TEXT, ORIGIN, ORIGIN,
-                false, false,  Paint.DIRECTION_LTR, currentTextSize);
-
-        deltaX += testString(canvas, ITALIC_TEXT, ORIGIN + deltaX, ORIGIN,
-                true, false,  Paint.DIRECTION_LTR, currentTextSize);
-
-        deltaX += testString(canvas, BOLD_TEXT, ORIGIN + deltaX, ORIGIN,
-                false, true,  Paint.DIRECTION_LTR, currentTextSize);
-
-        deltaX += testString(canvas, BOLD_ITALIC_TEXT, ORIGIN + deltaX, ORIGIN,
-                true, true,  Paint.DIRECTION_LTR, currentTextSize);
-
-        // Test with a long string
-        deltaX = testString(canvas, NORMAL_LONG_TEXT, ORIGIN, ORIGIN + 2 * currentTextSize,
-                false, false,  Paint.DIRECTION_LTR, currentTextSize);
-
-        // Test with a long string
-        deltaX = testString(canvas, NORMAL_LONG_TEXT_2, ORIGIN, ORIGIN + 4 * currentTextSize,
-                false, false,  Paint.DIRECTION_LTR, currentTextSize);
-
-        // Test with a long string
-        deltaX = testString(canvas, NORMAL_LONG_TEXT_3, ORIGIN, ORIGIN + 6 * currentTextSize,
-                false, false,  Paint.DIRECTION_LTR, currentTextSize);
-
-        // Test Arabic ligature
-        deltaX = testString(canvas, ARABIC_TEXT, ORIGIN, ORIGIN + 8 * currentTextSize,
-                false, false,  Paint.DIRECTION_RTL, currentTextSize);
-
-        // Test Chinese
-        deltaX = testString(canvas, CHINESE_TEXT, ORIGIN, ORIGIN + 10 * currentTextSize,
-                false, false,  Paint.DIRECTION_LTR, currentTextSize);
-
-        // Test Mixed (English and Arabic)
-        deltaX = testString(canvas, MIXED_TEXT_1, ORIGIN, ORIGIN + 12 * currentTextSize,
-                false, false,  Paint.DIRECTION_LTR, currentTextSize);
-
-        // Test Hebrew
-        deltaX = testString(canvas, RTL_TEXT, ORIGIN, ORIGIN + 14 * currentTextSize,
-                false, false,  Paint.DIRECTION_RTL, currentTextSize);
-
-        // Test Thai
-        deltaX = testString(canvas, THAI_TEXT, ORIGIN, ORIGIN + 16 * currentTextSize,
-                false, false,  Paint.DIRECTION_LTR, currentTextSize);
-    }
-
-    private int testString(Canvas canvas, String text, int x, int y,
-            boolean isItalic, boolean isBold, int dir, int textSize) {
-
-        TextPaint paint = new TextPaint();
-        paint.setAntiAlias(true);
-
-        // Set paint properties
-        boolean oldFakeBold = paint.isFakeBoldText();
-        paint.setFakeBoldText(isBold);
-
-        float oldTextSkewX = paint.getTextSkewX();
-        if (isItalic) {
-            paint.setTextSkewX(DEFAULT_ITALIC_SKEW_X);
-        }
-
-        paint.setTextSize(textSize);
-        paint.setColor(Color.WHITE);
-        canvas.drawText(text, x, y, paint);
-
-        int length = text.length();
-        float[] advances = new float[length];
-        float textWidthHB = paint.getTextRunAdvances(text, 0, length, 0, length, dir, advances, 0);
-        setPaintDir(paint, dir);
-        float textWidthICU = paint.getTextRunAdvances(text, 0, length, 0, length, dir, advances, 0,
-                1 /* use ICU */);
-
-        logAdvances(text, textWidthHB, textWidthICU, advances);
-        drawMetricsAroundText(canvas, x, y, textWidthHB, textWidthICU, textSize, Color.RED, Color.GREEN);
-
-        // Restore old paint properties
-        paint.setFakeBoldText(oldFakeBold);
-        paint.setTextSkewX(oldTextSkewX);
-
-        return (int) Math.ceil(textWidthHB) + TEXT_PADDING;
-    }
-
-    private void setPaintDir(Paint paint, int dir) {
-        Log.v(TAG, "Setting Paint dir=" + dir);
-        paint.setBidiFlags(dir);
-    }
-
-    private void drawInsideRect(Canvas canvas, Paint paint, int color) {
-        paint.setColor(color);
-        int width = getWidth();
-        int height = getHeight();
-        rect.set(BORDER_PADDING, BORDER_PADDING, width - BORDER_PADDING, height - BORDER_PADDING);
-        canvas.drawRect(rect, paint);
-    }
-
-    private void drawMetricsAroundText(Canvas canvas, int x, int y, float textWidthHB,
-            float textWidthICU, int textSize, int color, int colorICU) {
-        Paint paint = new Paint();
-        paint.setColor(color);
-        canvas.drawLine(x, y - textSize, x, y + 8, paint);
-        canvas.drawLine(x, y + 8, x + textWidthHB, y + 8, paint);
-        canvas.drawLine(x + textWidthHB, y - textSize, x + textWidthHB, y + 8, paint);
-        paint.setColor(colorICU);
-        canvas.drawLine(x + textWidthICU, y - textSize, x + textWidthICU, y + 8, paint);
-    }
-
-    private void logAdvances(String text, float textWidth, float textWidthICU, float[] advances) {
-        Log.v(TAG, "Advances for text: " + text + " total= " + textWidth + " - totalICU= " + textWidthICU);
-//        int length = advances.length;
-//        for(int n=0; n<length; n++){
-//            Log.v(TAG, "adv[" + n + "]=" + advances[n]);
-//        }
-    }
-}
diff --git a/tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java b/tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java
index 6022141..fb818d4 100644
--- a/tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java
+++ b/tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java
@@ -122,6 +122,12 @@
                             paint.setStrokeWidth(5);
                         }
                     });
+                    put("30", new DisplayModifier() {
+                        @Override
+                        public void modifyDrawing(Paint paint, Canvas canvas) {
+                            paint.setStrokeWidth(30);
+                        }
+                    });
                 }
             });
             put("strokeCap", new LinkedHashMap<String, DisplayModifier>() {
diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml
index 57ce1d6..2a9016b 100644
--- a/tests/HwAccelerationTest/AndroidManifest.xml
+++ b/tests/HwAccelerationTest/AndroidManifest.xml
@@ -42,6 +42,15 @@
         </activity>
 
         <activity
+                android:name="NoAATextActivity"
+                android:label="_NoAAText">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <activity
                 android:name="ScaledPathsActivity"
                 android:label="_ScaledPaths">
             <intent-filter>
@@ -159,6 +168,15 @@
         </activity>
 
         <activity
+                android:name="ClipRegion3Activity"
+                android:label="_ClipRegion3">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <activity
                 android:name="DisplayListLayersActivity"
                 android:label="__DisplayListLayers">
             <intent-filter>
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegion3Activity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegion3Activity.java
new file mode 100644
index 0000000..6fd03fb
--- /dev/null
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegion3Activity.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2010 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.test.hwui;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Path;
+import android.os.Bundle;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+@SuppressWarnings({"UnusedDeclaration"})
+public class ClipRegion3Activity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        final RegionView group = new RegionView(this);
+
+        final TextView text = new TextView(this);
+        text.setText(buildText());
+        group.addView(text);
+
+        setContentView(group);
+    }
+
+    private static CharSequence buildText() {
+        StringBuffer buffer = new StringBuffer();
+        for (int i = 0; i < 10; i++) {
+            buffer.append(LOREM_IPSUM);
+        }
+        return buffer;
+    }
+
+    public static class RegionView extends FrameLayout {
+        private final Path mClipPath = new Path();
+        private float mClipPosition = 0.5f;
+
+        public RegionView(Context c) {
+            super(c);
+            setAlpha(0.5f);
+        }
+
+        @Override
+        protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+            super.onSizeChanged(w, h, oldw, oldh);
+            mClipPath.reset();
+            mClipPath.addCircle(0.0f, 0.0f, getWidth() / 4.0f, Path.Direction.CW);
+        }
+
+        @Override
+        protected void dispatchDraw(Canvas canvas) {
+            canvas.drawARGB(255, 255, 255, 255);
+
+            canvas.save(Canvas.MATRIX_SAVE_FLAG);
+            canvas.translate(mClipPosition * getWidth(), getHeight() / 2.0f);
+            canvas.clipPath(mClipPath);
+            canvas.restore();
+
+            super.dispatchDraw(canvas);
+
+            invalidate();
+        }
+    }
+
+    private static final String LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sagittis molestie aliquam. Donec metus metus, laoreet nec sagittis vitae, ultricies sit amet eros. Suspendisse sed massa sit amet felis consectetur gravida. In vitae erat mi, in egestas nisl. Phasellus quis ipsum massa, at scelerisque arcu. Nam lectus est, pellentesque eget lacinia non, congue vitae augue. Aliquam erat volutpat. Pellentesque bibendum tincidunt viverra. Aliquam erat volutpat. Maecenas pretium vulputate placerat. Nulla varius elementum rutrum. Aenean mollis blandit imperdiet. Pellentesque interdum fringilla ligula.";
+}
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/NoAATextActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/NoAATextActivity.java
new file mode 100644
index 0000000..5bd2f583
--- /dev/null
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/NoAATextActivity.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2010 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.test.hwui;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.os.Bundle;
+import android.view.View;
+
+@SuppressWarnings({"UnusedDeclaration"})
+public class NoAATextActivity extends Activity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        final ScaledNoAA view = new ScaledNoAA(this);
+        setContentView(view);
+    }
+
+    public static class ScaledNoAA extends View {
+        private static final String TEXT = "Hello libhwui!";
+
+        private final Paint mPaint;
+
+        public ScaledNoAA(Context c) {
+            super(c);
+
+            mPaint = new Paint();
+            mPaint.setTextSize(60.0f);
+        }
+
+        @Override
+        protected void onDraw(Canvas canvas) {
+            super.onDraw(canvas);
+
+            canvas.drawARGB(255, 255, 255, 255);
+            canvas.drawText(TEXT, 30.0f, 150.0f, mPaint);
+        }
+    }
+}
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
index 32b2771..0a78908 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
@@ -32,6 +32,12 @@
 import android.widget.TextView;
 import android.view.View;
 import android.util.Log;
+import android.renderscript.ScriptC;
+import android.renderscript.RenderScript;
+import android.renderscript.Type;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.Script;
 
 import android.os.Environment;
 import java.io.BufferedWriter;
@@ -44,6 +50,11 @@
     private final String TAG = "Img";
     public final String RESULT_FILE = "image_processing_result.csv";
 
+    RenderScript mRS;
+    Allocation mInPixelsAllocation;
+    Allocation mInPixelsAllocation2;
+    Allocation mOutPixelsAllocation;
+
     /**
      * Define enum type for test names
      */
@@ -408,6 +419,13 @@
         mBenchmarkResult = (TextView) findViewById(R.id.benchmarkText);
         mBenchmarkResult.setText("Result: not run");
 
+
+        mRS = RenderScript.create(this);
+        mInPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapIn);
+        mInPixelsAllocation2 = Allocation.createFromBitmap(mRS, mBitmapIn2);
+        mOutPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapOut);
+
+
         setupTests();
         changeTest(TestName.LEVELS_VEC3_RELAXED);
     }
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/TestBase.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/TestBase.java
index b5df38d..a353d9c 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/TestBase.java
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/TestBase.java
@@ -45,8 +45,6 @@
     protected Allocation mInPixelsAllocation;
     protected Allocation mInPixelsAllocation2;
     protected Allocation mOutPixelsAllocation;
-    protected ScriptC_msg mMessageScript;
-
     protected ImageProcessingActivity act;
 
     private class MessageProcessor extends RenderScript.RSMessageHandler {
@@ -108,13 +106,12 @@
 
     public final void createBaseTest(ImageProcessingActivity ipact, Bitmap b, Bitmap b2, Bitmap outb) {
         act = ipact;
-        mRS = RenderScript.create(act);
+        mRS = ipact.mRS;
         mRS.setMessageHandler(new MessageProcessor(act));
-        mMessageScript = new ScriptC_msg(mRS);
 
-        mInPixelsAllocation = Allocation.createFromBitmap(mRS, b);
-        mInPixelsAllocation2 = Allocation.createFromBitmap(mRS, b2);
-        mOutPixelsAllocation = Allocation.createFromBitmap(mRS, outb);
+        mInPixelsAllocation = ipact.mInPixelsAllocation;
+        mInPixelsAllocation2 = ipact.mInPixelsAllocation2;
+        mOutPixelsAllocation = ipact.mOutPixelsAllocation;
 
         createTest(act.getResources());
     }
@@ -129,7 +126,7 @@
 
     final public void runTestSendMessage() {
         runTest();
-        mMessageScript.invoke_sendMsg();
+        mRS.sendMessage(0, null);
     }
 
     public void finish() {
@@ -137,8 +134,7 @@
     }
 
     public void destroy() {
-        mRS.destroy();
-        mRS = null;
+        mRS.setMessageHandler(null);
     }
 
     public void updateBitmap(Bitmap b) {
diff --git a/tests/RenderScriptTests/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java b/tests/RenderScriptTests/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java
index 7635e13..d4852f0 100644
--- a/tests/RenderScriptTests/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java
+++ b/tests/RenderScriptTests/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java
@@ -22,7 +22,7 @@
 import android.util.Log;
 
 public class Convolve3x3 extends TestBase {
-    private ScriptC_convolve3x3 mScript;
+    private ScriptC_ip2_convolve3x3 mScript;
     private ScriptIntrinsicConvolve3x3 mIntrinsic;
 
     private int mWidth;
@@ -47,7 +47,7 @@
             mIntrinsic.setCoefficients(f);
             mIntrinsic.setInput(mInPixelsAllocation);
         } else {
-            mScript = new ScriptC_convolve3x3(mRS, res, R.raw.convolve3x3);
+            mScript = new ScriptC_ip2_convolve3x3(mRS, res, R.raw.ip2_convolve3x3);
             mScript.set_gCoeffs(f);
             mScript.set_gIn(mInPixelsAllocation);
             mScript.set_gWidth(mWidth);
diff --git a/tests/RenderScriptTests/ImageProcessing2/src/com/android/rs/image/convolve3x3.rs b/tests/RenderScriptTests/ImageProcessing2/src/com/android/rs/image/ip2_convolve3x3.rs
similarity index 100%
rename from tests/RenderScriptTests/ImageProcessing2/src/com/android/rs/image/convolve3x3.rs
rename to tests/RenderScriptTests/ImageProcessing2/src/com/android/rs/image/ip2_convolve3x3.rs
diff --git a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_alloc.java b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_alloc.java
index ddc6a99..3af3745 100644
--- a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_alloc.java
+++ b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_alloc.java
@@ -39,6 +39,7 @@
         typeBuilder.setX(X).setY(Y);
         Allocation A = Allocation.createTyped(RS, typeBuilder.create());
         s.bind_a(A);
+        s.set_aRaw(A);
 
         typeBuilder = new Type.Builder(RS, Element.I32(RS));
         typeBuilder.setX(X).setY(Y).setFaces(true);
@@ -59,6 +60,7 @@
         ScriptC_alloc s = new ScriptC_alloc(pRS);
         pRS.setMessageHandler(mRsMessage);
         initializeGlobals(pRS, s);
+        s.forEach_root(s.get_aRaw());
         s.invoke_alloc_test();
         pRS.finish();
         waitForMessage();
diff --git a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach.java b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach.java
index c3f3ca0..fd18f93 100644
--- a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach.java
+++ b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach.java
@@ -37,7 +37,7 @@
         s.set_dimY(Y);
         typeBuilder.setX(X).setY(Y);
         A = Allocation.createTyped(RS, typeBuilder.create());
-        s.bind_a(A);
+        s.set_aRaw(A);
 
         return;
     }
diff --git a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach_bounds.java b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach_bounds.java
index 653ebd5..13fefe7 100644
--- a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach_bounds.java
+++ b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach_bounds.java
@@ -37,7 +37,7 @@
         s.set_dimY(Y);
         typeBuilder.setX(X).setY(Y);
         A = Allocation.createTyped(RS, typeBuilder.create());
-        s.bind_a(A);
+        s.set_aRaw(A);
         s.set_s(s);
         s.set_ain(A);
         s.set_aout(A);
diff --git a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_noroot.java b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_noroot.java
index 69fc97f..606af4d 100644
--- a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_noroot.java
+++ b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/UT_noroot.java
@@ -37,7 +37,7 @@
         s.set_dimY(Y);
         typeBuilder.setX(X).setY(Y);
         A = Allocation.createTyped(RS, typeBuilder.create());
-        s.bind_a(A);
+        s.set_aRaw(A);
 
         return;
     }
diff --git a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/alloc.rs b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/alloc.rs
index 3116e5a..1b5e2ac 100644
--- a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/alloc.rs
+++ b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/alloc.rs
@@ -5,39 +5,37 @@
 int dimY;
 int dimZ;
 
+rs_allocation aRaw;
 rs_allocation aFaces;
 rs_allocation aLOD;
 rs_allocation aFacesLOD;
 
+void root(int *o, uint32_t x, uint32_t y) {
+    *o = x + y * dimX;
+}
+
 static bool test_alloc_dims() {
     bool failed = false;
     int i, j;
 
-    for (j = 0; j < dimY; j++) {
-        for (i = 0; i < dimX; i++) {
-            a[i + j * dimX] = i + j * dimX;
-        }
-    }
-
-    rs_allocation alloc = rsGetAllocation(a);
-    _RS_ASSERT(rsAllocationGetDimX(alloc) == dimX);
-    _RS_ASSERT(rsAllocationGetDimY(alloc) == dimY);
-    _RS_ASSERT(rsAllocationGetDimZ(alloc) == dimZ);
+    _RS_ASSERT(rsAllocationGetDimX(aRaw) == dimX);
+    _RS_ASSERT(rsAllocationGetDimY(aRaw) == dimY);
+    _RS_ASSERT(rsAllocationGetDimZ(aRaw) == dimZ);
 
     // Test 2D addressing
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
             rsDebug("Verifying ", i + j * dimX);
-            const void *p = rsGetElementAt(alloc, i, j);
+            const void *p = rsGetElementAt(aRaw, i, j);
             int val = *(const int *)p;
             _RS_ASSERT(val == (i + j * dimX));
         }
     }
 
     // Test 1D addressing
-    for (i = 0; i < dimX * dimY; i++) {
+    for (i = 0; i < dimX; i++) {
         rsDebug("Verifying ", i);
-        const void *p = rsGetElementAt(alloc, i);
+        const void *p = rsGetElementAt(aRaw, i);
         int val = *(const int *)p;
         _RS_ASSERT(val == i);
     }
@@ -46,7 +44,7 @@
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
             rsDebug("Verifying ", i + j * dimX);
-            const void *p = rsGetElementAt(alloc, i, j, 0);
+            const void *p = rsGetElementAt(aRaw, i, j, 0);
             int val = *(const int *)p;
             _RS_ASSERT(val == (i + j * dimX));
         }
diff --git a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/foreach.rs b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/foreach.rs
index ac527b5..08e6bed 100644
--- a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/foreach.rs
+++ b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/foreach.rs
@@ -1,6 +1,6 @@
 #include "shared.rsh"
 
-int *a;
+rs_allocation aRaw;
 int dimX;
 int dimY;
 static bool failed = false;
@@ -21,7 +21,8 @@
 
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
-            _RS_ASSERT(a[i + j * dimX] == (i + j * dimX));
+            int v = rsGetElementAt_int(aRaw, i, j);
+            _RS_ASSERT(v == (i + j * dimX));
         }
     }
 
@@ -41,7 +42,8 @@
 
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
-            _RS_ASSERT(a[i + j * dimX] == (99 + i + j * dimX));
+            int v = rsGetElementAt_int(aRaw, i, j);
+            _RS_ASSERT(v == (99 + i + j * dimX));
         }
     }
 
diff --git a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/foreach_bounds.rs b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/foreach_bounds.rs
index ddf17f8..89df090 100644
--- a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/foreach_bounds.rs
+++ b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/foreach_bounds.rs
@@ -1,6 +1,5 @@
 #include "shared.rsh"
 
-int *a;
 int dimX;
 int dimY;
 int xStart = 0;
@@ -9,6 +8,7 @@
 int yEnd = 0;
 
 rs_script s;
+rs_allocation aRaw;
 rs_allocation ain;
 rs_allocation aout;
 
@@ -26,13 +26,14 @@
 
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
+            int v = rsGetElementAt_int(aRaw, i, j);
             rsDebug("i: ", i);
             rsDebug("j: ", j);
-            rsDebug("a[j][i]: ", a[i + j * dimX]);
+            rsDebug("a[j][i]: ", v);
             if (i < xStart || i >= xEnd || j < yStart || j >= yEnd) {
-                _RS_ASSERT(a[i + j * dimX] == 0);
+                _RS_ASSERT(v == 0);
             } else {
-                _RS_ASSERT(a[i + j * dimX] == (i + j * dimX));
+                _RS_ASSERT(v == (i + j * dimX));
             }
         }
     }
diff --git a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/noroot.rs b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/noroot.rs
index 33944aa..2c807bd 100644
--- a/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/noroot.rs
+++ b/tests/RenderScriptTests/RSTest_CompatLib/src/com/android/rs/test/noroot.rs
@@ -1,6 +1,6 @@
 #include "shared.rsh"
 
-int *a;
+rs_allocation aRaw;
 int dimX;
 int dimY;
 static bool failed = false;
@@ -15,7 +15,8 @@
 
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
-            _RS_ASSERT(a[i + j * dimX] == (99 + i + j * dimX));
+            int v = rsGetElementAt_int(aRaw, i, j);
+            _RS_ASSERT(v == (99 + i + j * dimX));
         }
     }
 
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_alloc.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_alloc.java
index a06d820..3ea942c 100644
--- a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_alloc.java
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_alloc.java
@@ -39,6 +39,7 @@
         typeBuilder.setX(X).setY(Y);
         Allocation A = Allocation.createTyped(RS, typeBuilder.create());
         s.bind_a(A);
+        s.set_aRaw(A);
 
         typeBuilder = new Type.Builder(RS, Element.I32(RS));
         typeBuilder.setX(X).setY(Y).setFaces(true);
@@ -59,6 +60,7 @@
         ScriptC_alloc s = new ScriptC_alloc(pRS);
         pRS.setMessageHandler(mRsMessage);
         initializeGlobals(pRS, s);
+        s.forEach_root(s.get_aRaw());
         s.invoke_alloc_test();
         pRS.finish();
         waitForMessage();
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_foreach.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_foreach.java
index 4951970..6c95109 100644
--- a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_foreach.java
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_foreach.java
@@ -37,7 +37,7 @@
         s.set_dimY(Y);
         typeBuilder.setX(X).setY(Y);
         A = Allocation.createTyped(RS, typeBuilder.create());
-        s.bind_a(A);
+        s.set_aRaw(A);
 
         return;
     }
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_foreach_bounds.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_foreach_bounds.java
index bda055b..97f3a32 100644
--- a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_foreach_bounds.java
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_foreach_bounds.java
@@ -33,20 +33,28 @@
         Type.Builder typeBuilder = new Type.Builder(RS, Element.I32(RS));
         int X = 5;
         int Y = 7;
+        final int xStart = 2;
+        final int xEnd = 5;
+        final int yStart = 3;
+        final int yEnd = 6;
         s.set_dimX(X);
         s.set_dimY(Y);
         typeBuilder.setX(X).setY(Y);
         A = Allocation.createTyped(RS, typeBuilder.create());
-        s.bind_a(A);
+        s.set_aRaw(A);
         s.set_s(s);
         s.set_ain(A);
         s.set_aout(A);
-        s.set_xStart(2);
-        s.set_xEnd(5);
-        s.set_yStart(3);
-        s.set_yEnd(6);
+        s.set_xStart(xStart);
+        s.set_xEnd(xEnd);
+        s.set_yStart(yStart);
+        s.set_yEnd(yEnd);
         s.forEach_zero(A);
 
+        Script.LaunchOptions sc = new Script.LaunchOptions();
+        sc.setX(xStart, xEnd).setY(yStart, yEnd);
+        s.forEach_root(A, sc);
+
         return;
     }
 
@@ -55,6 +63,7 @@
         ScriptC_foreach_bounds s = new ScriptC_foreach_bounds(pRS);
         pRS.setMessageHandler(mRsMessage);
         initializeGlobals(pRS, s);
+        s.invoke_verify_root();
         s.invoke_foreach_bounds_test();
         pRS.finish();
         waitForMessage();
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_noroot.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_noroot.java
index cc48591..69526a8 100644
--- a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_noroot.java
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_noroot.java
@@ -37,7 +37,7 @@
         s.set_dimY(Y);
         typeBuilder.setX(X).setY(Y);
         A = Allocation.createTyped(RS, typeBuilder.create());
-        s.bind_a(A);
+        s.set_aRaw(A);
 
         return;
     }
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/alloc.rs b/tests/RenderScriptTests/tests/src/com/android/rs/test/alloc.rs
index 3116e5a..1b5e2ac 100644
--- a/tests/RenderScriptTests/tests/src/com/android/rs/test/alloc.rs
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/alloc.rs
@@ -5,39 +5,37 @@
 int dimY;
 int dimZ;
 
+rs_allocation aRaw;
 rs_allocation aFaces;
 rs_allocation aLOD;
 rs_allocation aFacesLOD;
 
+void root(int *o, uint32_t x, uint32_t y) {
+    *o = x + y * dimX;
+}
+
 static bool test_alloc_dims() {
     bool failed = false;
     int i, j;
 
-    for (j = 0; j < dimY; j++) {
-        for (i = 0; i < dimX; i++) {
-            a[i + j * dimX] = i + j * dimX;
-        }
-    }
-
-    rs_allocation alloc = rsGetAllocation(a);
-    _RS_ASSERT(rsAllocationGetDimX(alloc) == dimX);
-    _RS_ASSERT(rsAllocationGetDimY(alloc) == dimY);
-    _RS_ASSERT(rsAllocationGetDimZ(alloc) == dimZ);
+    _RS_ASSERT(rsAllocationGetDimX(aRaw) == dimX);
+    _RS_ASSERT(rsAllocationGetDimY(aRaw) == dimY);
+    _RS_ASSERT(rsAllocationGetDimZ(aRaw) == dimZ);
 
     // Test 2D addressing
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
             rsDebug("Verifying ", i + j * dimX);
-            const void *p = rsGetElementAt(alloc, i, j);
+            const void *p = rsGetElementAt(aRaw, i, j);
             int val = *(const int *)p;
             _RS_ASSERT(val == (i + j * dimX));
         }
     }
 
     // Test 1D addressing
-    for (i = 0; i < dimX * dimY; i++) {
+    for (i = 0; i < dimX; i++) {
         rsDebug("Verifying ", i);
-        const void *p = rsGetElementAt(alloc, i);
+        const void *p = rsGetElementAt(aRaw, i);
         int val = *(const int *)p;
         _RS_ASSERT(val == i);
     }
@@ -46,7 +44,7 @@
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
             rsDebug("Verifying ", i + j * dimX);
-            const void *p = rsGetElementAt(alloc, i, j, 0);
+            const void *p = rsGetElementAt(aRaw, i, j, 0);
             int val = *(const int *)p;
             _RS_ASSERT(val == (i + j * dimX));
         }
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/foreach.rs b/tests/RenderScriptTests/tests/src/com/android/rs/test/foreach.rs
index ac527b5..08e6bed 100644
--- a/tests/RenderScriptTests/tests/src/com/android/rs/test/foreach.rs
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/foreach.rs
@@ -1,6 +1,6 @@
 #include "shared.rsh"
 
-int *a;
+rs_allocation aRaw;
 int dimX;
 int dimY;
 static bool failed = false;
@@ -21,7 +21,8 @@
 
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
-            _RS_ASSERT(a[i + j * dimX] == (i + j * dimX));
+            int v = rsGetElementAt_int(aRaw, i, j);
+            _RS_ASSERT(v == (i + j * dimX));
         }
     }
 
@@ -41,7 +42,8 @@
 
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
-            _RS_ASSERT(a[i + j * dimX] == (99 + i + j * dimX));
+            int v = rsGetElementAt_int(aRaw, i, j);
+            _RS_ASSERT(v == (99 + i + j * dimX));
         }
     }
 
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/foreach_bounds.rs b/tests/RenderScriptTests/tests/src/com/android/rs/test/foreach_bounds.rs
index ddf17f8..fa76390 100644
--- a/tests/RenderScriptTests/tests/src/com/android/rs/test/foreach_bounds.rs
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/foreach_bounds.rs
@@ -1,6 +1,5 @@
 #include "shared.rsh"
 
-int *a;
 int dimX;
 int dimY;
 int xStart = 0;
@@ -8,7 +7,10 @@
 int yStart = 0;
 int yEnd = 0;
 
+static bool failed = false;
+
 rs_script s;
+rs_allocation aRaw;
 rs_allocation ain;
 rs_allocation aout;
 
@@ -26,13 +28,11 @@
 
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
-            rsDebug("i: ", i);
-            rsDebug("j: ", j);
-            rsDebug("a[j][i]: ", a[i + j * dimX]);
+            int v = rsGetElementAt_int(aRaw, i, j);
             if (i < xStart || i >= xEnd || j < yStart || j >= yEnd) {
-                _RS_ASSERT(a[i + j * dimX] == 0);
+                _RS_ASSERT(v == 0);
             } else {
-                _RS_ASSERT(a[i + j * dimX] == (i + j * dimX));
+                _RS_ASSERT(v == (i + j * dimX));
             }
         }
     }
@@ -47,20 +47,11 @@
     return failed;
 }
 
-void foreach_bounds_test() {
-    static bool failed = false;
-
-    rs_script_call_t rssc = {0};
-    rssc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE;
-    rssc.xStart = xStart;
-    rssc.xEnd = xEnd;
-    rssc.yStart = yStart;
-    rssc.yEnd = yEnd;
-
-    rsForEach(s, ain, aout, NULL, 0, &rssc);
-
+void verify_root() {
     failed |= test_root_output();
+}
 
+void foreach_bounds_test() {
     if (failed) {
         rsSendToClientBlocking(RS_MSG_TEST_FAILED);
     }
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/noroot.rs b/tests/RenderScriptTests/tests/src/com/android/rs/test/noroot.rs
index 33944aa..2c807bd 100644
--- a/tests/RenderScriptTests/tests/src/com/android/rs/test/noroot.rs
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/noroot.rs
@@ -1,6 +1,6 @@
 #include "shared.rsh"
 
-int *a;
+rs_allocation aRaw;
 int dimX;
 int dimY;
 static bool failed = false;
@@ -15,7 +15,8 @@
 
     for (j = 0; j < dimY; j++) {
         for (i = 0; i < dimX; i++) {
-            _RS_ASSERT(a[i + j * dimX] == (99 + i + j * dimX));
+            int v = rsGetElementAt_int(aRaw, i, j);
+            _RS_ASSERT(v == (99 + i + j * dimX));
         }
     }
 
diff --git a/tools/aapt/AaptAssets.cpp b/tools/aapt/AaptAssets.cpp
index 5b71adc..2149190 100644
--- a/tools/aapt/AaptAssets.cpp
+++ b/tools/aapt/AaptAssets.cpp
@@ -1185,6 +1185,11 @@
         return true;
     }
 
+    if (strcmp(name, "xxxhdpi") == 0) {
+        if (out) out->density = ResTable_config::DENSITY_XXXHIGH;
+        return true;
+    }
+
     char* c = (char*)name;
     while (*c >= '0' && *c <= '9') {
         c++;
diff --git a/tools/layoutlib/bridge/src/android/text/format/DateFormat_Delegate.java b/tools/layoutlib/bridge/src/android/text/format/DateFormat_Delegate.java
new file mode 100644
index 0000000..8cd1a69
--- /dev/null
+++ b/tools/layoutlib/bridge/src/android/text/format/DateFormat_Delegate.java
@@ -0,0 +1,37 @@
+/*
+ * 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.text.format;
+
+import com.android.tools.layoutlib.annotations.LayoutlibDelegate;
+
+import android.content.Context;
+
+
+/**
+ * Delegate used to provide new implementation for the native methods of {@link DateFormat}
+ *
+ * Through the layoutlib_create tool, the original  methods of DateFormat have been replaced
+ * by calls to methods of the same name in this delegate class.
+ *
+ */
+public class DateFormat_Delegate {
+
+    @LayoutlibDelegate
+    /*package*/ static boolean is24HourFormat(Context context) {
+        return false;
+    }
+}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
index e682da7..8b643c0 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
@@ -1206,6 +1206,11 @@
     }
 
     @Override
+    public void sendBroadcast(Intent intent, String receiverPermission, int appOp) {
+        // pass
+    }
+
+    @Override
     public void sendOrderedBroadcast(Intent arg0, String arg1) {
         // pass
 
@@ -1220,6 +1225,13 @@
     }
 
     @Override
+    public void sendOrderedBroadcast(Intent intent, String receiverPermission, int appOp,
+            BroadcastReceiver resultReceiver, Handler scheduler, int initialCode,
+            String initialData, Bundle initialExtras) {
+        // pass
+    }
+
+    @Override
     public void sendBroadcastAsUser(Intent intent, UserHandle user) {
         // pass
     }
diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
index 80a1a60..d955040 100644
--- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
+++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
@@ -110,6 +110,7 @@
         "android.os.Handler#sendMessageAtTime",
         "android.os.HandlerThread#run",
         "android.os.Build#getString",
+        "android.text.format.DateFormat#is24HourFormat",
         "android.view.Choreographer#getRefreshRate",
         "android.view.Display#updateDisplayInfoLocked",
         "android.view.LayoutInflater#rInflate",
diff --git a/wifi/java/android/net/wifi/WifiConfigStore.java b/wifi/java/android/net/wifi/WifiConfigStore.java
index 66c2f3f..eb2f74c 100644
--- a/wifi/java/android/net/wifi/WifiConfigStore.java
+++ b/wifi/java/android/net/wifi/WifiConfigStore.java
@@ -35,6 +35,7 @@
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.UserHandle;
+import android.security.KeyStore;
 import android.text.TextUtils;
 import android.util.Log;
 
@@ -144,6 +145,7 @@
     private static final String EOS = "eos";
 
     private WifiNative mWifiNative;
+    private final KeyStore mKeyStore = KeyStore.getInstance();
 
     WifiConfigStore(Context c, WifiNative wn) {
         mContext = c;
@@ -295,16 +297,7 @@
     boolean forgetNetwork(int netId) {
         if (mWifiNative.removeNetwork(netId)) {
             mWifiNative.saveConfig();
-            WifiConfiguration target = null;
-            WifiConfiguration config = mConfiguredNetworks.get(netId);
-            if (config != null) {
-                target = mConfiguredNetworks.remove(netId);
-                mNetworkIds.remove(configKey(config));
-            }
-            if (target != null) {
-                writeIpAndProxyConfigurations();
-                sendConfiguredNetworksChangedBroadcast(target, WifiManager.CHANGE_REASON_REMOVED);
-            }
+            removeConfigAndSendBroadcastIfNeeded(netId);
             return true;
         } else {
             loge("Failed to remove network " + netId);
@@ -342,20 +335,27 @@
      */
     boolean removeNetwork(int netId) {
         boolean ret = mWifiNative.removeNetwork(netId);
-        WifiConfiguration config = null;
         if (ret) {
-            config = mConfiguredNetworks.get(netId);
-            if (config != null) {
-                config = mConfiguredNetworks.remove(netId);
-                mNetworkIds.remove(configKey(config));
-            }
-        }
-        if (config != null) {
-            sendConfiguredNetworksChangedBroadcast(config, WifiManager.CHANGE_REASON_REMOVED);
+            removeConfigAndSendBroadcastIfNeeded(netId);
         }
         return ret;
     }
 
+    private void removeConfigAndSendBroadcastIfNeeded(int netId) {
+        WifiConfiguration config = mConfiguredNetworks.get(netId);
+        if (config != null) {
+            // Remove any associated keys
+            if (config.enterpriseConfig != null) {
+                config.enterpriseConfig.removeKeys(mKeyStore);
+            }
+            mConfiguredNetworks.remove(netId);
+            mNetworkIds.remove(configKey(config));
+
+            writeIpAndProxyConfigurations();
+            sendConfiguredNetworksChangedBroadcast(config, WifiManager.CHANGE_REASON_REMOVED);
+        }
+    }
+
     /**
      * Enable a network. Note that there is no saveConfig operation.
      * This function is retained for compatibility with the public
@@ -1090,13 +1090,48 @@
             }
 
             if (config.enterpriseConfig != null) {
-                HashMap<String, String> enterpriseFields = config.enterpriseConfig.getFields();
+
+                WifiEnterpriseConfig enterpriseConfig = config.enterpriseConfig;
+
+                if (enterpriseConfig.needsKeyStore()) {
+                    /**
+                     * Keyguard settings may eventually be controlled by device policy.
+                     * We check here if keystore is unlocked before installing
+                     * credentials.
+                     * TODO: Figure a way to store these credentials for wifi alone
+                     * TODO: Do we need a dialog here ?
+                     */
+                    if (mKeyStore.state() != KeyStore.State.UNLOCKED) {
+                        loge(config.SSID + ": key store is locked");
+                        break setVariables;
+                    }
+
+                    try {
+                        /* config passed may include only fields being updated.
+                         * In order to generate the key id, fetch uninitialized
+                         * fields from the currently tracked configuration
+                         */
+                        WifiConfiguration currentConfig = mConfiguredNetworks.get(netId);
+                        String keyId = config.getKeyIdForCredentials(currentConfig);
+
+                        if (!enterpriseConfig.installKeys(mKeyStore, keyId)) {
+                            loge(config.SSID + ": failed to install keys");
+                            break setVariables;
+                        }
+                    } catch (IllegalStateException e) {
+                        loge(config.SSID + " invalid config for key installation");
+                        break setVariables;
+                    }
+                }
+
+                HashMap<String, String> enterpriseFields = enterpriseConfig.getFields();
                 for (String key : enterpriseFields.keySet()) {
                         String value = enterpriseFields.get(key);
                         if (!mWifiNative.setNetworkVariable(
                                     netId,
                                     key,
                                     value)) {
+                            enterpriseConfig.removeKeys(mKeyStore);
                             loge(config.SSID + ": failed to set " + key +
                                     ": " + value);
                             break setVariables;
@@ -1104,7 +1139,7 @@
                 }
             }
             updateFailed = false;
-        }
+        } //end of setVariables
 
         if (updateFailed) {
             if (newNetwork) {
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java
index 552356c..b971fc33 100644
--- a/wifi/java/android/net/wifi/WifiConfiguration.java
+++ b/wifi/java/android/net/wifi/WifiConfiguration.java
@@ -19,6 +19,7 @@
 import android.net.LinkProperties;
 import android.os.Parcelable;
 import android.os.Parcel;
+import android.text.TextUtils;
 
 import java.util.BitSet;
 
@@ -274,8 +275,8 @@
      */
     public BitSet allowedGroupCiphers;
     /**
-     * The enterprise configuration details
-     * @hide
+     * The enterprise configuration details specifying the EAP method,
+     * certificates and other settings associated with the EAP.
      */
     public WifiEnterpriseConfig enterpriseConfig;
 
@@ -462,6 +463,47 @@
         return SSID;
     }
 
+    /**
+     * Get an identifier for associating credentials with this config
+     * @param current configuration contains values for additional fields
+     *                that are not part of this configuration. Used
+     *                when a config with some fields is passed by an application.
+     * @throws IllegalStateException if config is invalid for key id generation
+     * @hide
+     */
+    String getKeyIdForCredentials(WifiConfiguration current) {
+        String keyMgmt = null;
+
+        try {
+            // Get current config details for fields that are not initialized
+            if (TextUtils.isEmpty(SSID)) SSID = current.SSID;
+            if (allowedKeyManagement.cardinality() == 0) {
+                allowedKeyManagement = current.allowedKeyManagement;
+            }
+            if (allowedKeyManagement.get(KeyMgmt.WPA_EAP)) {
+                keyMgmt = KeyMgmt.strings[KeyMgmt.WPA_EAP];
+            }
+            if (allowedKeyManagement.get(KeyMgmt.IEEE8021X)) {
+                keyMgmt += KeyMgmt.strings[KeyMgmt.IEEE8021X];
+            }
+
+            if (TextUtils.isEmpty(keyMgmt)) {
+                throw new IllegalStateException("Not an EAP network");
+            }
+
+            return trimStringForKeyId(SSID) + "_" + keyMgmt + "_" +
+                    trimStringForKeyId(enterpriseConfig.getKeyId(current != null ?
+                            current.enterpriseConfig : null));
+        } catch (NullPointerException e) {
+            throw new IllegalStateException("Invalid config details");
+        }
+    }
+
+    private String trimStringForKeyId(String string) {
+        // Remove quotes and spaces
+        return string.replace("\"", "").replace(" ", "");
+    }
+
     private static BitSet readBitSet(Parcel src) {
         int cardinality = src.readInt();
 
@@ -485,6 +527,9 @@
 
     /** @hide */
     public int getAuthType() {
+        if (allowedKeyManagement.cardinality() > 1) {
+            throw new IllegalStateException("More than one auth type set");
+        }
         if (allowedKeyManagement.get(KeyMgmt.WPA_PSK)) {
             return KeyMgmt.WPA_PSK;
         } else if (allowedKeyManagement.get(KeyMgmt.WPA2_PSK)) {
diff --git a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
index 4dca7ac..95ffb1c 100644
--- a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
+++ b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
@@ -19,11 +19,33 @@
 import android.os.Parcelable;
 import android.security.Credentials;
 import android.text.TextUtils;
+import android.util.Log;
 
+import com.android.org.bouncycastle.asn1.ASN1InputStream;
+import com.android.org.bouncycastle.asn1.ASN1Sequence;
+import com.android.org.bouncycastle.asn1.DEROctetString;
+import com.android.org.bouncycastle.asn1.x509.BasicConstraints;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.security.KeyFactory;
+import java.security.KeyStore;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateEncodingException;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.PKCS8EncodedKeySpec;
 import java.util.HashMap;
 import java.util.Map;
 
-/** Enterprise configuration details for Wi-Fi @hide */
+/** 
+ * Enterprise configuration details for Wi-Fi. Stores details about the EAP method
+ * and any associated credentials.
+ */
 public class WifiEnterpriseConfig implements Parcelable {
     private static final String TAG = "WifiEnterpriseConfig";
     /**
@@ -70,6 +92,9 @@
     private static final String PRIVATE_KEY_ID_KEY  = "key_id";
 
     private HashMap<String, String> mFields = new HashMap<String, String>();
+    private X509Certificate mCaCert;
+    private PrivateKey mClientPrivateKey;
+    private X509Certificate mClientCertificate;
 
     /** This represents an empty value of an enterprise field.
      * NULL is used at wpa_supplicant to indicate an empty value
@@ -103,6 +128,34 @@
             dest.writeString(entry.getKey());
             dest.writeString(entry.getValue());
         }
+
+        writeCertificate(dest, mCaCert);
+
+        if (mClientPrivateKey != null) {
+            String algorithm = mClientPrivateKey.getAlgorithm();
+            byte[] userKeyBytes = mClientPrivateKey.getEncoded();
+            dest.writeInt(userKeyBytes.length);
+            dest.writeByteArray(userKeyBytes);
+            dest.writeString(algorithm);
+        } else {
+            dest.writeInt(0);
+        }
+
+        writeCertificate(dest, mClientCertificate);
+    }
+
+    private void writeCertificate(Parcel dest, X509Certificate cert) {
+        if (cert != null) {
+            try {
+                byte[] certBytes = cert.getEncoded();
+                dest.writeInt(certBytes.length);
+                dest.writeByteArray(certBytes);
+            } catch (CertificateEncodingException e) {
+                dest.writeInt(0);
+            }
+        } else {
+            dest.writeInt(0);
+        }
     }
 
     public static final Creator<WifiEnterpriseConfig> CREATOR =
@@ -115,43 +168,91 @@
                         String value = in.readString();
                         enterpriseConfig.mFields.put(key, value);
                     }
+
+                    enterpriseConfig.mCaCert = readCertificate(in);
+
+                    PrivateKey userKey = null;
+                    int len = in.readInt();
+                    if (len > 0) {
+                        try {
+                            byte[] bytes = new byte[len];
+                            in.readByteArray(bytes);
+                            String algorithm = in.readString();
+                            KeyFactory keyFactory = KeyFactory.getInstance(algorithm);
+                            userKey = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(bytes));
+                        } catch (NoSuchAlgorithmException e) {
+                            userKey = null;
+                        } catch (InvalidKeySpecException e) {
+                            userKey = null;
+                        }
+                    }
+
+                    enterpriseConfig.mClientPrivateKey = userKey;
+                    enterpriseConfig.mClientCertificate = readCertificate(in);
                     return enterpriseConfig;
                 }
 
+                private X509Certificate readCertificate(Parcel in) {
+                    X509Certificate cert = null;
+                    int len = in.readInt();
+                    if (len > 0) {
+                        try {
+                            byte[] bytes = new byte[len];
+                            in.readByteArray(bytes);
+                            CertificateFactory cFactory = CertificateFactory.getInstance("X.509");
+                            cert = (X509Certificate) cFactory
+                                    .generateCertificate(new ByteArrayInputStream(bytes));
+                        } catch (CertificateException e) {
+                            cert = null;
+                        }
+                    }
+                    return cert;
+                }
+
                 public WifiEnterpriseConfig[] newArray(int size) {
                     return new WifiEnterpriseConfig[size];
                 }
             };
 
+    /** The Extensible Authentication Protocol method used */
     public static final class Eap {
-        /* NONE represents an empty enterprise config */
+        /** No EAP method used. Represents an empty config */
         public static final int NONE    = -1;
+        /** Protected EAP */
         public static final int PEAP    = 0;
+        /** EAP-Transport Layer Security */
         public static final int TLS     = 1;
+        /** EAP-Tunneled Transport Layer Security */
         public static final int TTLS    = 2;
+        /** EAP-Password */
         public static final int PWD     = 3;
         /** @hide */
         public static final String[] strings = { "PEAP", "TLS", "TTLS", "PWD" };
     }
 
+    /** The inner authentication method used */
     public static final class Phase2 {
         public static final int NONE        = 0;
+        /** Password Authentication Protocol */
         public static final int PAP         = 1;
+        /** Microsoft Challenge Handshake Authentication Protocol */
         public static final int MSCHAP      = 2;
+        /** Microsoft Challenge Handshake Authentication Protocol v2 */
         public static final int MSCHAPV2    = 3;
+        /** Generic Token Card */
         public static final int GTC         = 4;
         private static final String PREFIX = "auth=";
         /** @hide */
         public static final String[] strings = {EMPTY_VALUE, "PAP", "MSCHAP", "MSCHAPV2", "GTC" };
     }
 
-    /** Internal use only @hide */
-    public HashMap<String, String> getFields() {
+    /** Internal use only */
+    HashMap<String, String> getFields() {
         return mFields;
     }
 
-    /** Internal use only @hide */
-    public static String[] getSupplicantKeys() {
+    /** Internal use only */
+    static String[] getSupplicantKeys() {
         return new String[] { EAP_KEY, PHASE2_KEY, IDENTITY_KEY, ANON_IDENTITY_KEY, PASSWORD_KEY,
                 CLIENT_CERT_KEY, CA_CERT_KEY, SUBJECT_MATCH_KEY, ENGINE_KEY, ENGINE_ID_KEY,
                 PRIVATE_KEY_ID_KEY };
@@ -161,6 +262,7 @@
      * Set the EAP authentication method.
      * @param  eapMethod is one {@link Eap#PEAP}, {@link Eap#TLS}, {@link Eap#TTLS} or
      *                   {@link Eap#PWD}
+     * @throws IllegalArgumentException on an invalid eap method
      */
     public void setEapMethod(int eapMethod) {
         switch (eapMethod) {
@@ -191,6 +293,7 @@
      * @param phase2Method is the inner authentication method and can be one of {@link Phase2#NONE},
      *                     {@link Phase2#PAP}, {@link Phase2#MSCHAP}, {@link Phase2#MSCHAPV2},
      *                     {@link Phase2#GTC}
+     * @throws IllegalArgumentException on an invalid phase2 method
      *
      */
     public void setPhase2Method(int phase2Method) {
@@ -271,28 +374,50 @@
      * a certificate
      * </p>
      * @param alias identifies the certificate
+     * @hide
      */
-    public void setCaCertificate(String alias) {
+    public void setCaCertificateAlias(String alias) {
         setFieldValue(CA_CERT_KEY, alias, CA_CERT_PREFIX);
     }
 
     /**
      * Get CA certificate alias
      * @return alias to the CA certificate
+     * @hide
      */
-    public String getCaCertificate() {
+    public String getCaCertificateAlias() {
         return getFieldValue(CA_CERT_KEY, CA_CERT_PREFIX);
     }
 
     /**
+     * Specify a X.509 certificate that identifies the server.
+     *
+     * <p>A default name is automatically assigned to the certificate and used
+     * with this configuration. The framework takes care of installing the
+     * certificate when the config is saved and removing the certificate when
+     * the config is removed.
+     *
+     * @param cert X.509 CA certificate
+     * @throws IllegalArgumentException if not a CA certificate
+     */
+    public void setCaCertificate(X509Certificate cert) {
+        if (cert.getBasicConstraints() >= 0) {
+            mCaCert = cert;
+        } else {
+            throw new IllegalArgumentException("Not a CA certificate");
+        }
+    }
+
+    /**
      * Set Client certificate alias.
      *
      * <p> See the {@link android.security.KeyChain} for details on installing or choosing
      * a certificate
      * </p>
      * @param alias identifies the certificate
+     * @hide
      */
-    public void setClientCertificate(String alias) {
+    public void setClientCertificateAlias(String alias) {
         setFieldValue(CLIENT_CERT_KEY, alias, CLIENT_CERT_PREFIX);
         setFieldValue(PRIVATE_KEY_ID_KEY, alias, Credentials.USER_PRIVATE_KEY);
         // Also, set engine parameters
@@ -308,12 +433,122 @@
     /**
      * Get client certificate alias
      * @return alias to the client certificate
+     * @hide
      */
-    public String getClientCertificate() {
+    public String getClientCertificateAlias() {
         return getFieldValue(CLIENT_CERT_KEY, CLIENT_CERT_PREFIX);
     }
 
     /**
+     * Specify a private key and client certificate for client authorization.
+     *
+     * <p>A default name is automatically assigned to the key entry and used
+     * with this configuration.  The framework takes care of installing the
+     * key entry when the config is saved and removing the key entry when
+     * the config is removed.
+
+     * @param privateKey
+     * @param clientCertificate
+     * @throws IllegalArgumentException for an invalid key or certificate.
+     */
+    public void setClientKeyEntry(PrivateKey privateKey, X509Certificate clientCertificate) {
+        if (clientCertificate != null) {
+            if (clientCertificate.getBasicConstraints() != -1) {
+                throw new IllegalArgumentException("Cannot be a CA certificate");
+            }
+            if (privateKey == null) {
+                throw new IllegalArgumentException("Client cert without a private key");
+            }
+            if (privateKey.getEncoded() == null) {
+                throw new IllegalArgumentException("Private key cannot be encoded");
+            }
+        }
+
+        mClientPrivateKey = privateKey;
+        mClientCertificate = clientCertificate;
+    }
+
+    boolean needsKeyStore() {
+        // Has no keys to be installed
+        if (mClientCertificate == null && mCaCert == null) return false;
+        return true;
+    }
+
+    boolean installKeys(android.security.KeyStore keyStore, String name) {
+        boolean ret = true;
+        String privKeyName = Credentials.USER_PRIVATE_KEY + name;
+        String userCertName = Credentials.USER_CERTIFICATE + name;
+        String caCertName = Credentials.CA_CERTIFICATE + name;
+        if (mClientCertificate != null) {
+            byte[] privKeyData = mClientPrivateKey.getEncoded();
+            ret = keyStore.importKey(privKeyName, privKeyData);
+            if (ret == false) {
+                return ret;
+            }
+
+            ret = putCertInKeyStore(keyStore, userCertName, mClientCertificate);
+            if (ret == false) {
+                // Remove private key installed
+                keyStore.delKey(privKeyName);
+                return ret;
+            }
+        }
+
+        if (mCaCert != null) {
+            ret = putCertInKeyStore(keyStore, caCertName, mCaCert);
+            if (ret == false) {
+                if (mClientCertificate != null) {
+                    // Remove client key+cert
+                    keyStore.delKey(privKeyName);
+                    keyStore.delete(userCertName);
+                }
+                return ret;
+            }
+        }
+
+        // Set alias names
+        if (mClientCertificate != null) {
+            setClientCertificateAlias(name);
+            mClientPrivateKey = null;
+            mClientCertificate = null;
+        }
+
+        if (mCaCert != null) {
+            setCaCertificateAlias(name);
+            mCaCert = null;
+        }
+
+        return ret;
+    }
+
+    private boolean putCertInKeyStore(android.security.KeyStore keyStore, String name,
+            Certificate cert) {
+        try {
+            byte[] certData = Credentials.convertToPem(cert);
+            return keyStore.put(name, certData);
+        } catch (IOException e1) {
+            return false;
+        } catch (CertificateException e2) {
+            return false;
+        }
+    }
+
+    void removeKeys(android.security.KeyStore keyStore) {
+        String client = getFieldValue(CLIENT_CERT_KEY, CLIENT_CERT_PREFIX);
+        // a valid client certificate is configured
+        if (!TextUtils.isEmpty(client)) {
+            keyStore.delKey(Credentials.USER_PRIVATE_KEY + client);
+            keyStore.delete(Credentials.USER_CERTIFICATE + client);
+        }
+
+        String ca = getFieldValue(CA_CERT_KEY, CA_CERT_PREFIX);
+        // a valid ca certificate is configured
+        if (!TextUtils.isEmpty(ca)) {
+            keyStore.delete(Credentials.CA_CERTIFICATE + ca);
+        }
+    }
+
+    /**
      * Set subject match. This is the substring to be matched against the subject of the
      * authentication server certificate.
      * @param subjectMatch substring to be matched
@@ -330,13 +565,28 @@
         return getFieldValue(SUBJECT_MATCH_KEY, "");
     }
 
+    /** See {@link WifiConfiguration#getKeyIdForCredentials} @hide */
+    String getKeyId(WifiEnterpriseConfig current) {
+        String eap = mFields.get(EAP_KEY);
+        String phase2 = mFields.get(PHASE2_KEY);
+
+        // If either eap or phase2 are not initialized, use current config details
+        if (TextUtils.isEmpty((eap))) {
+            eap = current.mFields.get(EAP_KEY);
+        }
+        if (TextUtils.isEmpty(phase2)) {
+            phase2 = current.mFields.get(PHASE2_KEY);
+        }
+        return eap + "_" + phase2;
+    }
+
     /** Migrates the old style TLS config to the new config style. This should only be used
      * when restoring an old wpa_supplicant.conf or upgrading from a previous
      * platform version.
      * @return true if the config was updated
      * @hide
      */
-    public boolean migrateOldEapTlsNative(WifiNative wifiNative, int netId) {
+    boolean migrateOldEapTlsNative(WifiNative wifiNative, int netId) {
         String oldPrivateKey = wifiNative.getNetworkVariable(netId, OLD_PRIVATE_KEY_NAME);
         /*
          * If the old configuration value is not present, then there is nothing
@@ -395,6 +645,7 @@
      * @return the index into array
      */
     private int getStringIndex(String arr[], String toBeFound, int defaultIndex) {
+        if (TextUtils.isEmpty(toBeFound)) return defaultIndex;
         for (int i = 0; i < arr.length; i++) {
             if (toBeFound.equals(arr[i])) return i;
         }
@@ -408,7 +659,8 @@
      */
     private String getFieldValue(String key, String prefix) {
         String value = mFields.get(key);
-        if (EMPTY_VALUE.equals(value)) return "";
+        // Uninitialized or known to be empty after reading from supplicant
+        if (TextUtils.isEmpty(value) || EMPTY_VALUE.equals(value)) return "";
         return removeDoubleQuotes(value).substring(prefix.length());
     }
 
diff --git a/wifi/java/android/net/wifi/WifiNative.java b/wifi/java/android/net/wifi/WifiNative.java
index 5e25623..7a9f106 100644
--- a/wifi/java/android/net/wifi/WifiNative.java
+++ b/wifi/java/android/net/wifi/WifiNative.java
@@ -42,7 +42,7 @@
 
     private static final boolean DBG = false;
     private final String mTAG;
-    private static final int DEFAULT_GROUP_OWNER_INTENT = 7;
+    private static final int DEFAULT_GROUP_OWNER_INTENT = 6;
 
     static final int BLUETOOTH_COEXISTENCE_MODE_ENABLED = 0;
     static final int BLUETOOTH_COEXISTENCE_MODE_DISABLED = 1;
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 9c59f63..ed8b99b 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -1767,9 +1767,6 @@
     private void handleSuccessfulIpConfiguration(DhcpResults dhcpResults) {
         mLastSignalLevel = -1; // force update of signal strength
         mReconnectCount = 0; //Reset IP failure tracking
-        if (dhcpResults.serverAddress == null) {
-            dhcpResults = null;
-        }
         synchronized (mDhcpResultsLock) {
             mDhcpResults = dhcpResults;
         }
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pService.java b/wifi/java/android/net/wifi/p2p/WifiP2pService.java
index 77604a4..1589fec 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pService.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pService.java
@@ -1332,10 +1332,19 @@
                                 P2pStateMachine.this, mGroup.getInterface());
                         mDhcpStateMachine.sendMessage(DhcpStateMachine.CMD_START_DHCP);
                         WifiP2pDevice groupOwner = mGroup.getOwner();
-                        /* update group owner details with the ones found at discovery */
-                        groupOwner.updateSupplicantDetails(mPeers.get(groupOwner.deviceAddress));
-                        mPeers.updateStatus(groupOwner.deviceAddress, WifiP2pDevice.CONNECTED);
-                        sendPeersChangedBroadcast();
+                        WifiP2pDevice peer = mPeers.get(groupOwner.deviceAddress);
+                        if (peer != null) {
+                            // update group owner details with peer details found at discovery
+                            groupOwner.updateSupplicantDetails(peer);
+                            mPeers.updateStatus(groupOwner.deviceAddress, WifiP2pDevice.CONNECTED);
+                            sendPeersChangedBroadcast();
+                        } else {
+                            // A supplicant bug can lead to reporting an invalid
+                            // group owner address (all zeroes) at times. Avoid a
+                            // crash, but continue group creation since it is not
+                            // essential.
+                            logw("Unknown group owner " + groupOwner);
+                        }
                     }
                     transitionTo(mGroupCreatedState);
                     break;