Merge "Added support for supports-input manifest element" into klp-dev
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 39742db6..8809bc7 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -176,6 +176,9 @@
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/src/core/java/android/os/IBattery*)
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates)
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/usr/idc/frameworks)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/usr/keylayout/frameworks)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/usr/keychars/frameworks)
 # ************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
 # ************************************************
diff --git a/api/current.txt b/api/current.txt
index 5b2543b..8366333 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -6375,7 +6375,6 @@
     field public static final java.lang.String ACTION_PROVIDER_CHANGED = "android.intent.action.PROVIDER_CHANGED";
     field public static final java.lang.String ACTION_QUICK_CLOCK = "android.intent.action.QUICK_CLOCK";
     field public static final java.lang.String ACTION_REBOOT = "android.intent.action.REBOOT";
-    field public static final java.lang.String ACTION_RESTRICTIONS_PIN_CHALLENGE = "android.intent.action.RESTRICTIONS_PIN_CHALLENGE";
     field public static final java.lang.String ACTION_RUN = "android.intent.action.RUN";
     field public static final java.lang.String ACTION_SCREEN_OFF = "android.intent.action.SCREEN_OFF";
     field public static final java.lang.String ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON";
@@ -18552,14 +18551,13 @@
     method public java.lang.String getUserName();
     method public android.os.Bundle getUserRestrictions();
     method public android.os.Bundle getUserRestrictions(android.os.UserHandle);
-    method public boolean hasRestrictionsPin();
     method public boolean isUserAGoat();
     method public boolean isUserRunning(android.os.UserHandle);
     method public boolean isUserRunningOrStopping(android.os.UserHandle);
+    method public boolean setRestrictionsChallenge(java.lang.String);
     method public void setUserRestriction(java.lang.String, boolean);
     method public void setUserRestrictions(android.os.Bundle);
     method public void setUserRestrictions(android.os.Bundle, android.os.UserHandle);
-    field public static final java.lang.String DISALLOW_APP_RESTRICTIONS = "no_app_restrictions";
     field public static final java.lang.String DISALLOW_CONFIG_BLUETOOTH = "no_config_bluetooth";
     field public static final java.lang.String DISALLOW_CONFIG_CREDENTIALS = "no_config_credentials";
     field public static final java.lang.String DISALLOW_CONFIG_WIFI = "no_config_wifi";
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index dfc0412..2f2aae4 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -2469,16 +2469,19 @@
             "android.intent.action.GET_RESTRICTION_ENTRIES";
 
     /**
+     * @hide
      * Activity to challenge the user for a PIN that was configured when setting up
-     * restrictions. Launch the activity using
+     * restrictions. Restrictions include blocking of apps and preventing certain user operations,
+     * controlled by {@link android.os.UserManager#setUserRestrictions(Bundle).
+     * Launch the activity using
      * {@link android.app.Activity#startActivityForResult(Intent, int)} and check if the
      * result is {@link android.app.Activity#RESULT_OK} for a successful response to the
      * challenge.<p/>
      * Before launching this activity, make sure that there is a PIN in effect, by calling
-     * {@link android.os.UserManager#hasRestrictionsPin()}.
+     * {@link android.os.UserManager#hasRestrictionsChallenge()}.
      */
-    public static final String ACTION_RESTRICTIONS_PIN_CHALLENGE =
-            "android.intent.action.RESTRICTIONS_PIN_CHALLENGE";
+    public static final String ACTION_RESTRICTIONS_CHALLENGE =
+            "android.intent.action.RESTRICTIONS_CHALLENGE";
 
     /**
      * Sent the first time a user is starting, to allow system apps to
diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java
index 1f73c4a..43d6b71 100644
--- a/core/java/android/net/LinkProperties.java
+++ b/core/java/android/net/LinkProperties.java
@@ -197,6 +197,16 @@
         return addresses;
     }
 
+    /**
+     * Replaces the LinkAddresses on this link with the given collection of addresses.
+     */
+    public void setLinkAddresses(Collection<LinkAddress> addresses) {
+        mLinkAddresses.clear();
+        for (LinkAddress address: addresses) {
+            addLinkAddress(address);
+        }
+    }
+
     public void addDns(InetAddress dns) {
         if (dns != null) mDnses.add(dns);
     }
diff --git a/core/java/android/os/IUserManager.aidl b/core/java/android/os/IUserManager.aidl
index bd2d9ac..3c9d0d9 100644
--- a/core/java/android/os/IUserManager.aidl
+++ b/core/java/android/os/IUserManager.aidl
@@ -46,8 +46,8 @@
             int userHandle);
     Bundle getApplicationRestrictions(in String packageName);
     Bundle getApplicationRestrictionsForUser(in String packageName, int userHandle);
-    boolean changeRestrictionsPin(in String newPin);
-    int checkRestrictionsPin(in String pin);
-    boolean hasRestrictionsPin();
+    boolean setRestrictionsChallenge(in String newPin);
+    int checkRestrictionsChallenge(in String pin);
+    boolean hasRestrictionsChallenge();
     void removeRestrictions();
 }
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 10b9765..a3752a1 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -140,16 +140,6 @@
      */
     public static final String DISALLOW_REMOVE_USER = "no_remove_user";
 
-    /**
-     * Key for user restrictions. Specifies if a user is disallowed from setting app restrictions
-     * via a restrictions PIN. The default is <code>false</code>. If app restrictions have already
-     * been set up, then this user restriction cannot be set to true.
-     * <p/>
-     * Type: Boolean
-     * @see #hasRestrictionsPin()
-     */
-    public static final String DISALLOW_APP_RESTRICTIONS = "no_app_restrictions";
-
     /** @hide */
     public static final int PIN_VERIFICATION_FAILED_INCORRECT = -3;
     /** @hide */
@@ -650,15 +640,14 @@
     }
 
     /**
-     * @hide
-     * Sets a new restrictions PIN. This should only be called after verifying that there
-     * currently isn't a PIN set, or after the user successfully enters the current PIN.
-     * @param newPin
-     * @return Returns true if the PIN was changed successfully.
+     * Sets a new challenge PIN for restrictions. This is only for use by pre-installed
+     * apps and requires the MANAGE_USERS permission.
+     * @param newPin the PIN to use for challenge dialogs.
+     * @return Returns true if the challenge PIN was set successfully.
      */
-    public boolean changeRestrictionsPin(String newPin) {
+    public boolean setRestrictionsChallenge(String newPin) {
         try {
-            return mService.changeRestrictionsPin(newPin);
+            return mService.setRestrictionsChallenge(newPin);
         } catch (RemoteException re) {
             Log.w(TAG, "Could not change restrictions pin");
         }
@@ -674,9 +663,9 @@
      * Returns {@link #PIN_VERIFICATION_SUCCESS} if the input matches the saved PIN. Returns
      * {@link #PIN_VERIFICATION_FAILED_NOT_SET} if there is no PIN set.
      */
-    public int checkRestrictionsPin(String pin) {
+    public int checkRestrictionsChallenge(String pin) {
         try {
-            return mService.checkRestrictionsPin(pin);
+            return mService.checkRestrictionsChallenge(pin);
         } catch (RemoteException re) {
             Log.w(TAG, "Could not check restrictions pin");
         }
@@ -684,16 +673,17 @@
     }
 
     /**
+     * @hide
      * Checks whether the user has restrictions that are PIN-protected. An application that
      * participates in restrictions can check if the owner has requested a PIN challenge for
      * any restricted operations. If there is a PIN in effect, the application should launch
-     * the PIN challenge activity {@link android.content.Intent#ACTION_RESTRICTIONS_PIN_CHALLENGE}.
-     * @see android.content.Intent#ACTION_RESTRICTIONS_PIN_CHALLENGE
+     * the PIN challenge activity {@link android.content.Intent#ACTION_RESTRICTIONS_CHALLENGE}.
+     * @see android.content.Intent#ACTION_RESTRICTIONS_CHALLENGE
      * @return whether a restrictions PIN is in effect.
      */
-    public boolean hasRestrictionsPin() {
+    public boolean hasRestrictionsChallenge() {
         try {
-            return mService.hasRestrictionsPin();
+            return mService.hasRestrictionsChallenge();
         } catch (RemoteException re) {
             Log.w(TAG, "Could not change restrictions pin");
         }
diff --git a/core/java/android/preference/PreferenceGroup.java b/core/java/android/preference/PreferenceGroup.java
index a5e05ba..5f8c78d 100644
--- a/core/java/android/preference/PreferenceGroup.java
+++ b/core/java/android/preference/PreferenceGroup.java
@@ -210,10 +210,7 @@
      * @return Whether to allow adding the preference (true), or not (false).
      */
     protected boolean onPrepareAddPreference(Preference preference) {
-        if (!super.isEnabled()) {
-            preference.setEnabled(false);
-        }
-        
+        preference.onParentChanged(this, shouldDisableDependents());
         return true;
     }
 
diff --git a/core/java/android/security/IKeystoreService.java b/core/java/android/security/IKeystoreService.java
index bf8d4e5..f8bf45b 100644
--- a/core/java/android/security/IKeystoreService.java
+++ b/core/java/android/security/IKeystoreService.java
@@ -444,12 +444,13 @@
             }
 
             @Override
-            public int is_hardware_backed() throws RemoteException {
+            public int is_hardware_backed(String keyType) throws RemoteException {
                 Parcel _data = Parcel.obtain();
                 Parcel _reply = Parcel.obtain();
                 int _result;
                 try {
                     _data.writeInterfaceToken(DESCRIPTOR);
+                    _data.writeString(keyType);
                     mRemote.transact(Stub.TRANSACTION_is_hardware_backed, _data, _reply, 0);
                     _reply.readException();
                     _result = _reply.readInt();
@@ -593,7 +594,7 @@
     public int duplicate(String srcKey, int srcUid, String destKey, int destUid)
             throws RemoteException;
 
-    public int is_hardware_backed() throws RemoteException;
+    public int is_hardware_backed(String string) throws RemoteException;
 
     public int clear_uid(long uid) throws RemoteException;
 }
diff --git a/core/java/android/util/MapCollections.java b/core/java/android/util/MapCollections.java
index 09f1f8e..f4a9b0b 100644
--- a/core/java/android/util/MapCollections.java
+++ b/core/java/android/util/MapCollections.java
@@ -328,12 +328,12 @@
 
         @Override
         public Object[] toArray() {
-            return toArrayHelper(1);
+            return toArrayHelper(0);
         }
 
         @Override
         public <T> T[] toArray(T[] array) {
-            return toArrayHelper(array, 1);
+            return toArrayHelper(array, 0);
         }
 
         @Override
diff --git a/core/java/com/android/internal/app/RestrictionsPinActivity.java b/core/java/com/android/internal/app/RestrictionsPinActivity.java
index 2112474..66585c6 100644
--- a/core/java/com/android/internal/app/RestrictionsPinActivity.java
+++ b/core/java/com/android/internal/app/RestrictionsPinActivity.java
@@ -52,7 +52,7 @@
         super.onCreate(icicle);
 
         mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
-        mHasRestrictionsPin = mUserManager.hasRestrictionsPin();
+        mHasRestrictionsPin = mUserManager.hasRestrictionsChallenge();
         initUi();
         setupAlert();
     }
@@ -83,7 +83,7 @@
         super.onResume();
 
         setPositiveButtonState(false);
-        boolean hasPin = mUserManager.hasRestrictionsPin();
+        boolean hasPin = mUserManager.hasRestrictionsChallenge();
         if (hasPin) {
             mPinErrorMessage.setVisibility(View.INVISIBLE);
             mPinText.setOnEditorActionListener(this);
@@ -100,7 +100,7 @@
 
     private boolean updatePinTimer(int pinTimerMs) {
         if (pinTimerMs < 0) {
-            pinTimerMs = mUserManager.checkRestrictionsPin(null);
+            pinTimerMs = mUserManager.checkRestrictionsChallenge(null);
         }
         boolean enableInput;
         if (pinTimerMs >= 200) {
@@ -128,7 +128,7 @@
     }
 
     protected void performPositiveButtonAction() {
-        int result = mUserManager.checkRestrictionsPin(mPinText.getText().toString());
+        int result = mUserManager.checkRestrictionsChallenge(mPinText.getText().toString());
         if (result == UserManager.PIN_VERIFICATION_SUCCESS) {
             setResult(RESULT_OK);
             finish();
diff --git a/core/java/com/android/internal/app/RestrictionsPinSetupActivity.java b/core/java/com/android/internal/app/RestrictionsPinSetupActivity.java
deleted file mode 100644
index f7fc6c6..0000000
--- a/core/java/com/android/internal/app/RestrictionsPinSetupActivity.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.internal.app;
-
-import android.content.Context;
-import android.os.UserManager;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.EditText;
-import android.widget.TextView;
-
-import com.android.internal.R;
-
-/**
- * This activity is launched by Settings and other apps to either create a new PIN or
- * change an existing PIN. The PIN is maintained by UserManager.
- */
-public class RestrictionsPinSetupActivity extends RestrictionsPinActivity {
-
-    private EditText mNewPinText;
-    private EditText mConfirmPinText;
-
-    protected void initUi() {
-        AlertController.AlertParams ap = mAlertParams;
-        ap.mTitle = getString(R.string.restr_pin_enter_pin);
-        ap.mPositiveButtonText = getString(R.string.ok);
-        ap.mNegativeButtonText = getString(R.string.cancel);
-        LayoutInflater inflater =
-                (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        ap.mView = inflater.inflate(R.layout.restrictions_pin_setup, null);
-
-        mPinText = (EditText) ap.mView.findViewById(R.id.pin_text);
-        mNewPinText = (EditText) ap.mView.findViewById(R.id.pin_new_text);
-        mConfirmPinText = (EditText) ap.mView.findViewById(R.id.pin_confirm_text);
-        mNewPinText.addTextChangedListener(this);
-        mConfirmPinText.addTextChangedListener(this);
-
-        if (!mHasRestrictionsPin) {
-            mPinText.setVisibility(View.GONE);
-        }
-    }
-
-    public void onResume() {
-        super.onResume();
-        setPositiveButtonState(false);
-    }
-
-    protected boolean verifyingPin() {
-        return false;
-    }
-
-    @Override
-    protected void performPositiveButtonAction() {
-        if (mHasRestrictionsPin) {
-            int result = mUserManager.checkRestrictionsPin(mPinText.getText().toString());
-            if (result != UserManager.PIN_VERIFICATION_SUCCESS) {
-                // TODO: Set message that existing pin doesn't match
-                return;
-            }
-        }
-        if (mUserManager.changeRestrictionsPin(mNewPinText.getText().toString())) {
-            // TODO: Send message to PIN recovery agent about the recovery email address
-            setResult(RESULT_OK);
-            finish();
-        }
-    }
-
-    @Override
-    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-    }
-
-    @Override
-    public void onTextChanged(CharSequence s, int start, int before, int count) {
-        CharSequence pin = mPinText.getText();
-        CharSequence pin1 = mNewPinText.getText();
-        CharSequence pin2 = mConfirmPinText.getText();
-        boolean match = pin1 != null && pin2 != null && pin1.length() >= 4
-                && pin1.toString().equals(pin2.toString())
-                && (!mHasRestrictionsPin || (pin != null && pin.length() >= 4));
-        boolean showError = !TextUtils.isEmpty(pin1) && !TextUtils.isEmpty(pin2);
-        // TODO: Check recovery email address as well
-        setPositiveButtonState(match);
-    }
-
-    @Override
-    public void afterTextChanged(Editable s) {
-    }
-
-    @Override
-    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-        performPositiveButtonAction();
-        return true;
-    }
-}
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 49945f0..83a0c56 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -2546,25 +2546,13 @@
                 android:process=":ui">
         </activity>
 
-        <activity android:name="com.android.internal.app.RestrictionsPinSetupActivity"
-                android:theme="@style/Theme.Holo.Dialog.Alert"
-                android:permission="android.permission.MANAGE_USERS"
-                android:excludeFromRecents="true"
-                android:windowSoftInputMode="adjustPan"
-                android:process=":ui">
-            <intent-filter android:priority="100">
-                <action android:name="android.intent.action.RESTRICTIONS_PIN_CREATE" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-
         <activity android:name="com.android.internal.app.RestrictionsPinActivity"
                 android:theme="@style/Theme.Holo.Dialog.Alert"
                 android:excludeFromRecents="true"
                 android:windowSoftInputMode="adjustPan"
                 android:process=":ui">
             <intent-filter android:priority="100">
-                <action android:name="android.intent.action.RESTRICTIONS_PIN_CHALLENGE" />
+                <action android:name="android.intent.action.RESTRICTIONS_CHALLENGE" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
diff --git a/core/tests/coretests/src/android/net/LinkPropertiesTest.java b/core/tests/coretests/src/android/net/LinkPropertiesTest.java
index a570802..7e70c6b 100644
--- a/core/tests/coretests/src/android/net/LinkPropertiesTest.java
+++ b/core/tests/coretests/src/android/net/LinkPropertiesTest.java
@@ -363,4 +363,19 @@
         assertFalse(lp.hasIPv4Address());
         assertFalse(lp.removeLinkAddress(LINKADDRV4));
     }
+
+    @SmallTest
+    public void testSetLinkAddresses() {
+        LinkProperties lp = new LinkProperties();
+        lp.addLinkAddress(LINKADDRV4);
+        lp.addLinkAddress(LINKADDRV6);
+
+        LinkProperties lp2 = new LinkProperties();
+        lp2.addLinkAddress(LINKADDRV6);
+
+        assertFalse(lp.equals(lp2));
+
+        lp2.setLinkAddresses(lp.getLinkAddresses());
+        assertTrue(lp.equals(lp));
+    }
 }
diff --git a/data/keyboards/keyboards.mk b/data/keyboards/keyboards.mk
index d545241..68cbd29 100644
--- a/data/keyboards/keyboards.mk
+++ b/data/keyboards/keyboards.mk
@@ -17,10 +17,10 @@
 include $(LOCAL_PATH)/common.mk
 
 PRODUCT_COPY_FILES := $(foreach file,$(framework_keylayouts),\
-    $(file):system/usr/keylayout/$(file))
+    $(file):system/usr/keylayout/$(notdir $(file)))
 
 PRODUCT_COPY_FILES += $(foreach file,$(framework_keycharmaps),\
-    $(file):system/usr/keychars/$(file))
+    $(file):system/usr/keychars/$(notdir $(file)))
 
 PRODUCT_COPY_FILES += $(foreach file,$(framework_keyconfigs),\
-    $(file):system/usr/idc/$(file))
+    $(file):system/usr/idc/$(notdir $(file)))
diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java
index 9ea325a..8ad973d 100644
--- a/keystore/java/android/security/KeyChain.java
+++ b/keystore/java/android/security/KeyChain.java
@@ -34,6 +34,7 @@
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
 import java.util.List;
+import java.util.Locale;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 
@@ -364,7 +365,8 @@
      * "RSA").
      */
     public static boolean isKeyAlgorithmSupported(String algorithm) {
-        return "RSA".equals(algorithm);
+        final String algUpper = algorithm.toUpperCase(Locale.US);
+        return "DSA".equals(algUpper) || "EC".equals(algUpper) || "RSA".equals(algUpper);
     }
 
     /**
@@ -379,7 +381,7 @@
             return false;
         }
 
-        return KeyStore.getInstance().isHardwareBacked();
+        return KeyStore.getInstance().isHardwareBacked(algorithm);
     }
 
     private static X509Certificate toCertificate(byte[] bytes) {
diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java
index 9babb94..6ac49ee 100644
--- a/keystore/java/android/security/KeyStore.java
+++ b/keystore/java/android/security/KeyStore.java
@@ -22,6 +22,8 @@
 import android.os.ServiceManager;
 import android.util.Log;
 
+import java.util.Locale;
+
 /**
  * @hide This should not be made public in its present form because it
  * assumes that private and secret key bytes are available and would
@@ -306,9 +308,14 @@
         }
     }
 
+    // TODO remove this when it's removed from Settings
     public boolean isHardwareBacked() {
+        return isHardwareBacked("RSA");
+    }
+
+    public boolean isHardwareBacked(String keyType) {
         try {
-            return mBinder.is_hardware_backed() == NO_ERROR;
+            return mBinder.is_hardware_backed(keyType.toUpperCase(Locale.US)) == NO_ERROR;
         } catch (RemoteException e) {
             Log.w(TAG, "Cannot connect to keystore", e);
             return false;
diff --git a/packages/DocumentsUI/res/values-af/strings.xml b/packages/DocumentsUI/res/values-af/strings.xml
index ece6673..a2c3023 100644
--- a/packages/DocumentsUI/res/values-af/strings.xml
+++ b/packages/DocumentsUI/res/values-af/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Kan sommige dokumente nie uitvee nie"</string>
     <string name="more" msgid="7117420986529297171">"Nog"</string>
     <string name="loading" msgid="7933681260296021180">"Laai tans..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Deel via"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-am/strings.xml b/packages/DocumentsUI/res/values-am/strings.xml
index 8761a27..1e845b2 100644
--- a/packages/DocumentsUI/res/values-am/strings.xml
+++ b/packages/DocumentsUI/res/values-am/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"አንዳንድ ሰነዶችን መሰረዝ አልተቻለም"</string>
     <string name="more" msgid="7117420986529297171">"ተጨማሪ"</string>
     <string name="loading" msgid="7933681260296021180">"በመጫን ላይ…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"በሚከተለው በኩል ያጋሩ"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-ar/strings.xml b/packages/DocumentsUI/res/values-ar/strings.xml
index febc6dc..279c0e6 100644
--- a/packages/DocumentsUI/res/values-ar/strings.xml
+++ b/packages/DocumentsUI/res/values-ar/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"تعذر حذف بعض المستندات"</string>
     <string name="more" msgid="7117420986529297171">"المزيد"</string>
     <string name="loading" msgid="7933681260296021180">"جارٍ التحميل…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"مشاركة عبر"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-az-rAZ/strings.xml b/packages/DocumentsUI/res/values-az-rAZ/strings.xml
index a301b66..d405fe2 100644
--- a/packages/DocumentsUI/res/values-az-rAZ/strings.xml
+++ b/packages/DocumentsUI/res/values-az-rAZ/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Bəzi sənədləri silə bilmir"</string>
     <string name="more" msgid="7117420986529297171">"Daha çox"</string>
     <string name="loading" msgid="7933681260296021180">"Yüklənir…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Bunun vasitəsilə paylaş:"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-bg/strings.xml b/packages/DocumentsUI/res/values-bg/strings.xml
index bf399d2..5ba9107 100644
--- a/packages/DocumentsUI/res/values-bg/strings.xml
+++ b/packages/DocumentsUI/res/values-bg/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Някои документи не могат да бъдат изтрити"</string>
     <string name="more" msgid="7117420986529297171">"Още"</string>
     <string name="loading" msgid="7933681260296021180">"Зарежда се..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Споделяне чрез"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-ca/strings.xml b/packages/DocumentsUI/res/values-ca/strings.xml
index 22c12fc..dfaead5 100644
--- a/packages/DocumentsUI/res/values-ca/strings.xml
+++ b/packages/DocumentsUI/res/values-ca/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"No es poden suprimir alguns documents."</string>
     <string name="more" msgid="7117420986529297171">"Més"</string>
     <string name="loading" msgid="7933681260296021180">"S\'està carregant…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Comparteix mitjançant"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-cs/strings.xml b/packages/DocumentsUI/res/values-cs/strings.xml
index 42a5a2b..053a19a 100644
--- a/packages/DocumentsUI/res/values-cs/strings.xml
+++ b/packages/DocumentsUI/res/values-cs/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Některé dokumenty nelze smazat"</string>
     <string name="more" msgid="7117420986529297171">"Více"</string>
     <string name="loading" msgid="7933681260296021180">"Načítání..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Sdílet pomocí"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-da/strings.xml b/packages/DocumentsUI/res/values-da/strings.xml
index 41b1aac..1c53326 100644
--- a/packages/DocumentsUI/res/values-da/strings.xml
+++ b/packages/DocumentsUI/res/values-da/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Nogle dokumenter kan ikke slettes"</string>
     <string name="more" msgid="7117420986529297171">"Mere"</string>
     <string name="loading" msgid="7933681260296021180">"Indlæser…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Del via"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-de/strings.xml b/packages/DocumentsUI/res/values-de/strings.xml
index bd54545..3bbb35a 100644
--- a/packages/DocumentsUI/res/values-de/strings.xml
+++ b/packages/DocumentsUI/res/values-de/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Einige Dokumente konnten nicht gelöscht werden."</string>
     <string name="more" msgid="7117420986529297171">"Mehr"</string>
     <string name="loading" msgid="7933681260296021180">"Wird geladen…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Teilen über"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-el/strings.xml b/packages/DocumentsUI/res/values-el/strings.xml
index c15eb1f..a31aa13 100644
--- a/packages/DocumentsUI/res/values-el/strings.xml
+++ b/packages/DocumentsUI/res/values-el/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Δεν είναι δυνατή η διαγραφή ορισμένων εγγράφων"</string>
     <string name="more" msgid="7117420986529297171">"Περισσότερα"</string>
     <string name="loading" msgid="7933681260296021180">"Φόρτωση…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Κοινή χρήση μέσω"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-en-rGB/strings.xml b/packages/DocumentsUI/res/values-en-rGB/strings.xml
index b1693b0..b8f2926 100644
--- a/packages/DocumentsUI/res/values-en-rGB/strings.xml
+++ b/packages/DocumentsUI/res/values-en-rGB/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Unable to delete some documents"</string>
     <string name="more" msgid="7117420986529297171">"More"</string>
     <string name="loading" msgid="7933681260296021180">"Loading…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Share via"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-en-rIN/strings.xml b/packages/DocumentsUI/res/values-en-rIN/strings.xml
index b1693b0..b8f2926 100644
--- a/packages/DocumentsUI/res/values-en-rIN/strings.xml
+++ b/packages/DocumentsUI/res/values-en-rIN/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Unable to delete some documents"</string>
     <string name="more" msgid="7117420986529297171">"More"</string>
     <string name="loading" msgid="7933681260296021180">"Loading…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Share via"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-es-rUS/strings.xml b/packages/DocumentsUI/res/values-es-rUS/strings.xml
index d556667..91b0098 100644
--- a/packages/DocumentsUI/res/values-es-rUS/strings.xml
+++ b/packages/DocumentsUI/res/values-es-rUS/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"No es posible eliminar algunos documentos."</string>
     <string name="more" msgid="7117420986529297171">"Más"</string>
     <string name="loading" msgid="7933681260296021180">"Cargando…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Compartir mediante"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-es/strings.xml b/packages/DocumentsUI/res/values-es/strings.xml
index 723a0ec..099ccad 100644
--- a/packages/DocumentsUI/res/values-es/strings.xml
+++ b/packages/DocumentsUI/res/values-es/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"No es posible eliminar algunos documentos"</string>
     <string name="more" msgid="7117420986529297171">"Más"</string>
     <string name="loading" msgid="7933681260296021180">"Cargando..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Compartir a través de"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-et-rEE/strings.xml b/packages/DocumentsUI/res/values-et-rEE/strings.xml
index 7c298de..0c21faa 100644
--- a/packages/DocumentsUI/res/values-et-rEE/strings.xml
+++ b/packages/DocumentsUI/res/values-et-rEE/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Mõnda dokumenti ei õnnestu kustutada"</string>
     <string name="more" msgid="7117420986529297171">"Rohkem"</string>
     <string name="loading" msgid="7933681260296021180">"Laadimine ..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Jagage teenusega"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-fa/strings.xml b/packages/DocumentsUI/res/values-fa/strings.xml
index 418a08f..9961af5 100644
--- a/packages/DocumentsUI/res/values-fa/strings.xml
+++ b/packages/DocumentsUI/res/values-fa/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"برخی از اسناد حذف نمی‌شوند"</string>
     <string name="more" msgid="7117420986529297171">"بیشتر"</string>
     <string name="loading" msgid="7933681260296021180">"در حال بارگیری..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"اشتراک‌گذاری از طریق"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-fi/strings.xml b/packages/DocumentsUI/res/values-fi/strings.xml
index 0d9d883..c5c5eba 100644
--- a/packages/DocumentsUI/res/values-fi/strings.xml
+++ b/packages/DocumentsUI/res/values-fi/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Joitakin asiakirjoja ei voi poistaa"</string>
     <string name="more" msgid="7117420986529297171">"Lisää"</string>
     <string name="loading" msgid="7933681260296021180">"Ladataan…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Jaa sovelluksessa"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-fr-rCA/strings.xml b/packages/DocumentsUI/res/values-fr-rCA/strings.xml
index 086b82c..5bcc399 100644
--- a/packages/DocumentsUI/res/values-fr-rCA/strings.xml
+++ b/packages/DocumentsUI/res/values-fr-rCA/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Impossible de supprimer certains documents"</string>
     <string name="more" msgid="7117420986529297171">"Plus"</string>
     <string name="loading" msgid="7933681260296021180">"Chargement en cours..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Partager par"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-fr/strings.xml b/packages/DocumentsUI/res/values-fr/strings.xml
index d70877a..0b83f02 100644
--- a/packages/DocumentsUI/res/values-fr/strings.xml
+++ b/packages/DocumentsUI/res/values-fr/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Impossible de supprimer certains documents."</string>
     <string name="more" msgid="7117420986529297171">"Plus"</string>
     <string name="loading" msgid="7933681260296021180">"Chargement…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Partager via"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-hi/strings.xml b/packages/DocumentsUI/res/values-hi/strings.xml
index d45e9bb..290eff7 100644
--- a/packages/DocumentsUI/res/values-hi/strings.xml
+++ b/packages/DocumentsUI/res/values-hi/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"कुछ दस्तावेज़ों को हटाने में अक्षम"</string>
     <string name="more" msgid="7117420986529297171">"अधिक"</string>
     <string name="loading" msgid="7933681260296021180">"लोड हो रहे हैं..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"इसके द्वारा साझा करें"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-hr/strings.xml b/packages/DocumentsUI/res/values-hr/strings.xml
index 01be538..f47a0f7 100644
--- a/packages/DocumentsUI/res/values-hr/strings.xml
+++ b/packages/DocumentsUI/res/values-hr/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Nije moguće izbrisati neke dokumente"</string>
     <string name="more" msgid="7117420986529297171">"Više"</string>
     <string name="loading" msgid="7933681260296021180">"Učitavanje…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Dijeli putem"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-hu/strings.xml b/packages/DocumentsUI/res/values-hu/strings.xml
index 2648f82..1187760 100644
--- a/packages/DocumentsUI/res/values-hu/strings.xml
+++ b/packages/DocumentsUI/res/values-hu/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Néhány dokumentumot nem lehet törölni"</string>
     <string name="more" msgid="7117420986529297171">"Továbbiak"</string>
     <string name="loading" msgid="7933681260296021180">"Betöltés..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Megosztás itt:"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-hy-rAM/strings.xml b/packages/DocumentsUI/res/values-hy-rAM/strings.xml
index ed026c2..38bf8b6 100644
--- a/packages/DocumentsUI/res/values-hy-rAM/strings.xml
+++ b/packages/DocumentsUI/res/values-hy-rAM/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Անհնար է ջնջել որոշ փաստաթղթեր"</string>
     <string name="more" msgid="7117420986529297171">"Ավելին"</string>
     <string name="loading" msgid="7933681260296021180">"Բեռնում..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Տարածել"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-in/strings.xml b/packages/DocumentsUI/res/values-in/strings.xml
index a1cefc2..0857869 100644
--- a/packages/DocumentsUI/res/values-in/strings.xml
+++ b/packages/DocumentsUI/res/values-in/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Tidak dapat menghapus beberapa dokumen"</string>
     <string name="more" msgid="7117420986529297171">"Lainnya"</string>
     <string name="loading" msgid="7933681260296021180">"Memuat..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Bagikan melalui"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-it/strings.xml b/packages/DocumentsUI/res/values-it/strings.xml
index 6b1bb8b..9f97c1e 100644
--- a/packages/DocumentsUI/res/values-it/strings.xml
+++ b/packages/DocumentsUI/res/values-it/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Impossibile eliminare alcuni documenti"</string>
     <string name="more" msgid="7117420986529297171">"Altro"</string>
     <string name="loading" msgid="7933681260296021180">"Caricamento..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Condividi via"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-iw/strings.xml b/packages/DocumentsUI/res/values-iw/strings.xml
index 98bfa87..904efb0 100644
--- a/packages/DocumentsUI/res/values-iw/strings.xml
+++ b/packages/DocumentsUI/res/values-iw/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"לא ניתן למחוק חלק מהמסמכים"</string>
     <string name="more" msgid="7117420986529297171">"עוד"</string>
     <string name="loading" msgid="7933681260296021180">"טוען..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"שתף באמצעות"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-ja/strings.xml b/packages/DocumentsUI/res/values-ja/strings.xml
index 9a83c1f..3e473ab 100644
--- a/packages/DocumentsUI/res/values-ja/strings.xml
+++ b/packages/DocumentsUI/res/values-ja/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"一部のドキュメントを削除できません"</string>
     <string name="more" msgid="7117420986529297171">"その他"</string>
     <string name="loading" msgid="7933681260296021180">"読み込んでいます..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"共有ツール"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-ka-rGE/strings.xml b/packages/DocumentsUI/res/values-ka-rGE/strings.xml
index 2b9338d..26a83d7 100644
--- a/packages/DocumentsUI/res/values-ka-rGE/strings.xml
+++ b/packages/DocumentsUI/res/values-ka-rGE/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"ზოგიერთი დოკუმენტის წაშლა ვერ ხერხდება"</string>
     <string name="more" msgid="7117420986529297171">"მეტი"</string>
     <string name="loading" msgid="7933681260296021180">"ჩატვირთვა…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"გაზიარება:"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-km-rKH/strings.xml b/packages/DocumentsUI/res/values-km-rKH/strings.xml
index 7455ef4..12a82ba 100644
--- a/packages/DocumentsUI/res/values-km-rKH/strings.xml
+++ b/packages/DocumentsUI/res/values-km-rKH/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"មិន​អាច​លុប​ឯកសារ​មួយ​ចំនួន"</string>
     <string name="more" msgid="7117420986529297171">"ច្រើន​ទៀត"</string>
     <string name="loading" msgid="7933681260296021180">"កំពុង​ផ្ទុក..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"ចែករំលែក​តាម"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-ko/strings.xml b/packages/DocumentsUI/res/values-ko/strings.xml
index b96ae3b..6e90ff7 100644
--- a/packages/DocumentsUI/res/values-ko/strings.xml
+++ b/packages/DocumentsUI/res/values-ko/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"일부 문서를 삭제할 수 없음"</string>
     <string name="more" msgid="7117420986529297171">"더보기"</string>
     <string name="loading" msgid="7933681260296021180">"로드 중.."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"공유 방법"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-lo-rLA/strings.xml b/packages/DocumentsUI/res/values-lo-rLA/strings.xml
index 6f889ea..e805643 100644
--- a/packages/DocumentsUI/res/values-lo-rLA/strings.xml
+++ b/packages/DocumentsUI/res/values-lo-rLA/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"ບໍ່ສາມາດລຶບບາງເອກະສານໄດ້"</string>
     <string name="more" msgid="7117420986529297171">"ເພີ່ມເຕີມ"</string>
     <string name="loading" msgid="7933681260296021180">"ກຳລັງໂຫລດ..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"ແບ່ງປັນຜ່ານ"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-lt/strings.xml b/packages/DocumentsUI/res/values-lt/strings.xml
index 6bbc2ce..a5f9402 100644
--- a/packages/DocumentsUI/res/values-lt/strings.xml
+++ b/packages/DocumentsUI/res/values-lt/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Nepavyko ištrinti kai kurių dokumentų"</string>
     <string name="more" msgid="7117420986529297171">"Daugiau"</string>
     <string name="loading" msgid="7933681260296021180">"Įkeliama..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Bendrinti naudojant"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-lv/strings.xml b/packages/DocumentsUI/res/values-lv/strings.xml
index 425c9a6..05470e8 100644
--- a/packages/DocumentsUI/res/values-lv/strings.xml
+++ b/packages/DocumentsUI/res/values-lv/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Nevar dzēst dažus dokumentus."</string>
     <string name="more" msgid="7117420986529297171">"Vēl"</string>
     <string name="loading" msgid="7933681260296021180">"Notiek ielāde..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Kopīgot, izmantojot"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-mn-rMN/strings.xml b/packages/DocumentsUI/res/values-mn-rMN/strings.xml
index 49b12c9..12cf6e1 100644
--- a/packages/DocumentsUI/res/values-mn-rMN/strings.xml
+++ b/packages/DocumentsUI/res/values-mn-rMN/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Зарим документуудыг устгах боломжгүй"</string>
     <string name="more" msgid="7117420986529297171">"Цааш"</string>
     <string name="loading" msgid="7933681260296021180">"Ачааллаж байна..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Дараахаар дамжуулан хуваалцах"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-ms-rMY/strings.xml b/packages/DocumentsUI/res/values-ms-rMY/strings.xml
index f013e7a..ba93dd1 100644
--- a/packages/DocumentsUI/res/values-ms-rMY/strings.xml
+++ b/packages/DocumentsUI/res/values-ms-rMY/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Tidak dapat memadam beberapa dokumen"</string>
     <string name="more" msgid="7117420986529297171">"Lagi"</string>
     <string name="loading" msgid="7933681260296021180">"Memuatkan…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Kongsi melalui"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-nb/strings.xml b/packages/DocumentsUI/res/values-nb/strings.xml
index fc5d0ce4f..987b52da 100644
--- a/packages/DocumentsUI/res/values-nb/strings.xml
+++ b/packages/DocumentsUI/res/values-nb/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Enkelte dokumenter kunne ikke slettes"</string>
     <string name="more" msgid="7117420986529297171">"Mer"</string>
     <string name="loading" msgid="7933681260296021180">"Laster inn …"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Del via"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-ne-rNP/strings.xml b/packages/DocumentsUI/res/values-ne-rNP/strings.xml
index c7aac6b..6130b58 100644
--- a/packages/DocumentsUI/res/values-ne-rNP/strings.xml
+++ b/packages/DocumentsUI/res/values-ne-rNP/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"केही कागजातहरू मेट्न असमर्थ छ"</string>
     <string name="more" msgid="7117420986529297171">"थप"</string>
     <string name="loading" msgid="7933681260296021180">"लोड हुँदै..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"माध्यमबाट साझेदारी गर्नुहोस्"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-nl/strings.xml b/packages/DocumentsUI/res/values-nl/strings.xml
index 60a61bf..03ba12c 100644
--- a/packages/DocumentsUI/res/values-nl/strings.xml
+++ b/packages/DocumentsUI/res/values-nl/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Kan bepaalde documenten niet verwijderen"</string>
     <string name="more" msgid="7117420986529297171">"Meer"</string>
     <string name="loading" msgid="7933681260296021180">"Laden..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Delen via"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-pl/strings.xml b/packages/DocumentsUI/res/values-pl/strings.xml
index 923e7ac..8ef3e6f 100644
--- a/packages/DocumentsUI/res/values-pl/strings.xml
+++ b/packages/DocumentsUI/res/values-pl/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Nie można usunąć niektórych dokumentów"</string>
     <string name="more" msgid="7117420986529297171">"Więcej"</string>
     <string name="loading" msgid="7933681260296021180">"Wczytywanie…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Udostępnij przez"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-pt-rPT/strings.xml b/packages/DocumentsUI/res/values-pt-rPT/strings.xml
index 93b3ca9..7ae43db 100644
--- a/packages/DocumentsUI/res/values-pt-rPT/strings.xml
+++ b/packages/DocumentsUI/res/values-pt-rPT/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Não é possível eliminar alguns documentos"</string>
     <string name="more" msgid="7117420986529297171">"Mais"</string>
     <string name="loading" msgid="7933681260296021180">"A carregar…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Partilhar através de"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-pt/strings.xml b/packages/DocumentsUI/res/values-pt/strings.xml
index 79dc36e..d07f78f 100644
--- a/packages/DocumentsUI/res/values-pt/strings.xml
+++ b/packages/DocumentsUI/res/values-pt/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Não foi possível excluir alguns documentos"</string>
     <string name="more" msgid="7117420986529297171">"Mais"</string>
     <string name="loading" msgid="7933681260296021180">"Carregando…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Compartilhar via"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-ro/strings.xml b/packages/DocumentsUI/res/values-ro/strings.xml
index 01fc980..06ab5ff 100644
--- a/packages/DocumentsUI/res/values-ro/strings.xml
+++ b/packages/DocumentsUI/res/values-ro/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Unele documente nu au putut fi șterse"</string>
     <string name="more" msgid="7117420986529297171">"Mai multe"</string>
     <string name="loading" msgid="7933681260296021180">"Se încarcă…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Distribuiţi prin"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-ru/strings.xml b/packages/DocumentsUI/res/values-ru/strings.xml
index 587a057..3b9c3f3 100644
--- a/packages/DocumentsUI/res/values-ru/strings.xml
+++ b/packages/DocumentsUI/res/values-ru/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Не удалось удалить некоторые документы"</string>
     <string name="more" msgid="7117420986529297171">"Ещё"</string>
     <string name="loading" msgid="7933681260296021180">"Загрузка…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Способ отправки"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-si-rLK/strings.xml b/packages/DocumentsUI/res/values-si-rLK/strings.xml
index fefa4dd..9b1fb9b 100644
--- a/packages/DocumentsUI/res/values-si-rLK/strings.xml
+++ b/packages/DocumentsUI/res/values-si-rLK/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"සමහර ලේඛන මැකීමට නොහැකි විය"</string>
     <string name="more" msgid="7117420986529297171">"තව"</string>
     <string name="loading" msgid="7933681260296021180">"පූරණය වෙමින්..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"හරහා බෙදාගන්න"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-sk/strings.xml b/packages/DocumentsUI/res/values-sk/strings.xml
index 2b073db..a4850c1 100644
--- a/packages/DocumentsUI/res/values-sk/strings.xml
+++ b/packages/DocumentsUI/res/values-sk/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Niektoré dokumenty sa nepodarilo odstrániť"</string>
     <string name="more" msgid="7117420986529297171">"Viac"</string>
     <string name="loading" msgid="7933681260296021180">"Prebieha načítavanie..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Zdieľať pomocou"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-sl/strings.xml b/packages/DocumentsUI/res/values-sl/strings.xml
index b5ee908..c1cfbd9 100644
--- a/packages/DocumentsUI/res/values-sl/strings.xml
+++ b/packages/DocumentsUI/res/values-sl/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Nekaterih dokumentov ni mogoče izbrisati"</string>
     <string name="more" msgid="7117420986529297171">"Več"</string>
     <string name="loading" msgid="7933681260296021180">"Nalaganje …"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Deli z drugimi prek"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-sr/strings.xml b/packages/DocumentsUI/res/values-sr/strings.xml
index 3310f3e..eaec4e5 100644
--- a/packages/DocumentsUI/res/values-sr/strings.xml
+++ b/packages/DocumentsUI/res/values-sr/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Није могуће избрисати неке документе"</string>
     <string name="more" msgid="7117420986529297171">"Још"</string>
     <string name="loading" msgid="7933681260296021180">"Учитавање…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Дељење преко"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-sv/strings.xml b/packages/DocumentsUI/res/values-sv/strings.xml
index 55f3f54..6d93d4d 100644
--- a/packages/DocumentsUI/res/values-sv/strings.xml
+++ b/packages/DocumentsUI/res/values-sv/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Det gick inte att ta bort vissa dokument"</string>
     <string name="more" msgid="7117420986529297171">"Mer"</string>
     <string name="loading" msgid="7933681260296021180">"Läser in …"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Dela via"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-sw/strings.xml b/packages/DocumentsUI/res/values-sw/strings.xml
index b6e128f..915f851 100644
--- a/packages/DocumentsUI/res/values-sw/strings.xml
+++ b/packages/DocumentsUI/res/values-sw/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Imeshindwa kufuta baadhi ya hati"</string>
     <string name="more" msgid="7117420986529297171">"Zaidi"</string>
     <string name="loading" msgid="7933681260296021180">"Inapakia…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Shiriki kupitia"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-th/strings.xml b/packages/DocumentsUI/res/values-th/strings.xml
index 08dc27b..b1603f0 100644
--- a/packages/DocumentsUI/res/values-th/strings.xml
+++ b/packages/DocumentsUI/res/values-th/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"ไม่สามารถลบเอกสารบางรายการ"</string>
     <string name="more" msgid="7117420986529297171">"เพิ่มเติม"</string>
     <string name="loading" msgid="7933681260296021180">"กำลังโหลด..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"แชร์ผ่าน"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-tl/strings.xml b/packages/DocumentsUI/res/values-tl/strings.xml
index 57e6380..d47be6f 100644
--- a/packages/DocumentsUI/res/values-tl/strings.xml
+++ b/packages/DocumentsUI/res/values-tl/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Hindi matanggal ang ilang dokumento"</string>
     <string name="more" msgid="7117420986529297171">"Higit pa"</string>
     <string name="loading" msgid="7933681260296021180">"Naglo-load…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Ibahagi sa pamamagitan ng"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-tr/strings.xml b/packages/DocumentsUI/res/values-tr/strings.xml
index 0c87107..46688bd 100644
--- a/packages/DocumentsUI/res/values-tr/strings.xml
+++ b/packages/DocumentsUI/res/values-tr/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Bazı dokümanlar silinemiyor"</string>
     <string name="more" msgid="7117420986529297171">"Diğer"</string>
     <string name="loading" msgid="7933681260296021180">"Yükleniyor..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Şunu kullanarak paylaş:"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-uk/strings.xml b/packages/DocumentsUI/res/values-uk/strings.xml
index bdaab59..1d793a1 100644
--- a/packages/DocumentsUI/res/values-uk/strings.xml
+++ b/packages/DocumentsUI/res/values-uk/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Не вдалося видалити деякі документи"</string>
     <string name="more" msgid="7117420986529297171">"Більше"</string>
     <string name="loading" msgid="7933681260296021180">"Завантаження..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Надіслати через"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-vi/strings.xml b/packages/DocumentsUI/res/values-vi/strings.xml
index 8257d9b..5a7e6cc 100644
--- a/packages/DocumentsUI/res/values-vi/strings.xml
+++ b/packages/DocumentsUI/res/values-vi/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Không thể xóa một số tài liệu"</string>
     <string name="more" msgid="7117420986529297171">"Thêm"</string>
     <string name="loading" msgid="7933681260296021180">"Đang tải…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Chia sẻ qua"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-zh-rCN/strings.xml b/packages/DocumentsUI/res/values-zh-rCN/strings.xml
index 882aee2..7b8f2f9 100644
--- a/packages/DocumentsUI/res/values-zh-rCN/strings.xml
+++ b/packages/DocumentsUI/res/values-zh-rCN/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"无法删除部分文档"</string>
     <string name="more" msgid="7117420986529297171">"更多"</string>
     <string name="loading" msgid="7933681260296021180">"正在加载..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"分享方式:"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-zh-rHK/strings.xml b/packages/DocumentsUI/res/values-zh-rHK/strings.xml
index 773b8b3..6fc0503 100644
--- a/packages/DocumentsUI/res/values-zh-rHK/strings.xml
+++ b/packages/DocumentsUI/res/values-zh-rHK/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"無法刪除部分文件"</string>
     <string name="more" msgid="7117420986529297171">"更多"</string>
     <string name="loading" msgid="7933681260296021180">"正在載入..."</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"分享方式:"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-zh-rTW/strings.xml b/packages/DocumentsUI/res/values-zh-rTW/strings.xml
index 0852a1b..8ca664d 100644
--- a/packages/DocumentsUI/res/values-zh-rTW/strings.xml
+++ b/packages/DocumentsUI/res/values-zh-rTW/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"無法刪除部分文件"</string>
     <string name="more" msgid="7117420986529297171">"更多"</string>
     <string name="loading" msgid="7933681260296021180">"載入中…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"分享方式:"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-zu/strings.xml b/packages/DocumentsUI/res/values-zu/strings.xml
index d4ad405..02db890 100644
--- a/packages/DocumentsUI/res/values-zu/strings.xml
+++ b/packages/DocumentsUI/res/values-zu/strings.xml
@@ -50,6 +50,5 @@
     <string name="toast_failed_delete" msgid="2180678019407244069">"Ayikwazi ukususa amanye amadokhumenti"</string>
     <string name="more" msgid="7117420986529297171">"Okuningi"</string>
     <string name="loading" msgid="7933681260296021180">"Iyalayisha…"</string>
-    <!-- no translation found for share_via (8966594246261344259) -->
-    <skip />
+    <string name="share_via" msgid="8966594246261344259">"Yabelana nge-"</string>
 </resources>
diff --git a/packages/PrintSpooler/AndroidManifest.xml b/packages/PrintSpooler/AndroidManifest.xml
index 6fa3ed4..83ec1ad 100644
--- a/packages/PrintSpooler/AndroidManifest.xml
+++ b/packages/PrintSpooler/AndroidManifest.xml
@@ -18,7 +18,6 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.printspooler"
-        android:sharedUserId="android.uid.printspooler"
         android:versionName="1"
         android:versionCode="1">
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index ff85cb4..54c9f5d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -1097,7 +1097,7 @@
         return km.inKeyguardRestrictedInputMode();
     }
 
-    public void setInteracting(boolean interacting) {
+    public void setInteracting(int barWindow, boolean interacting) {
         // hook for subclasses
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java
index eef4f44..900e1e0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.statusbar;
 
+import android.app.StatusBarManager;
 import android.graphics.RectF;
 import android.view.MotionEvent;
 import android.view.View;
@@ -86,9 +87,9 @@
         }
 
         if (action == MotionEvent.ACTION_DOWN) {
-            mBar.setInteracting(true);
+            mBar.setInteracting(StatusBarManager.WINDOW_NAVIGATION_BAR, true);
         } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
-            mBar.setInteracting(false);
+            mBar.setInteracting(StatusBarManager.WINDOW_NAVIGATION_BAR, false);
         }
 
         mDelegateView.getLocationOnScreen(mTempPoint);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 01e6c84..9db2805 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -306,7 +306,7 @@
         }
     };
 
-    private boolean mInteracting;
+    private int mInteractingWindows;
     private boolean mAutohideSuspended;
     private int mStatusBarMode;
     private int mNavigationBarMode;
@@ -1378,7 +1378,7 @@
 
         visibilityChanged(true);
 
-        setInteracting(true);
+        setInteracting(StatusBarManager.WINDOW_STATUS_BAR, true);
     }
 
     public void animateCollapsePanels() {
@@ -1662,7 +1662,7 @@
             mPostCollapseCleanup = null;
         }
 
-        setInteracting(false);
+        setInteracting(StatusBarManager.WINDOW_STATUS_BAR, false);
     }
 
     /**
@@ -1738,7 +1738,7 @@
         }
 
         if (mStatusBarWindowState == WINDOW_STATE_SHOWING) {
-            setInteracting(true);
+            setInteracting(StatusBarManager.WINDOW_STATUS_BAR, true);
         }
         return false;
     }
@@ -1871,7 +1871,8 @@
 
     private void checkBarModes() {
         if (mDemoMode) return;
-        checkBarMode(mStatusBarMode, mStatusBarWindowState, mStatusBarView.getBarTransitions());
+        checkBarMode((mInteractingWindows & StatusBarManager.WINDOW_STATUS_BAR) != 0 ? MODE_OPAQUE
+                : mStatusBarMode, mStatusBarWindowState, mStatusBarView.getBarTransitions());
         if (mNavigationBarView != null) {
             checkBarMode(mNavigationBarMode,
                     mNavigationBarWindowState, mNavigationBarView.getBarTransitions());
@@ -1880,7 +1881,7 @@
 
     private void checkBarMode(int mode, int windowState, BarTransitions transitions) {
         final boolean imeVisible = (mNavigationIconHints & NAVIGATION_HINT_BACK_ALT) != 0;
-        final int finalMode = imeVisible || mInteracting ? MODE_OPAQUE : mode;
+        final int finalMode = imeVisible ? MODE_OPAQUE : mode;
         final boolean animate = windowState == WINDOW_STATE_SHOWING;
         transitions.transitionTo(finalMode, animate);
     }
@@ -1892,9 +1893,11 @@
         }};
 
     @Override
-    public void setInteracting(boolean interacting) {
-        mInteracting = interacting;
-        if (mInteracting) {
+    public void setInteracting(int barWindow, boolean interacting) {
+        mInteractingWindows = interacting
+                ? (mInteractingWindows | barWindow)
+                : (mInteractingWindows & ~barWindow);
+        if (mInteractingWindows != 0) {
             suspendAutohide();
         } else {
             resumeSuspendedAutohide();
@@ -2117,7 +2120,7 @@
                     + " scroll " + mScrollView.getScrollX() + "," + mScrollView.getScrollY());
         }
 
-        pw.print("  mInteracting="); pw.println(mInteracting);
+        pw.print("  mInteractingWindows="); pw.println(mInteractingWindows);
         pw.print("  mStatusBarWindowState=");
         pw.println(windowStateToString(mStatusBarWindowState));
         pw.print("  mStatusBarMode=");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
index fa494c2..63e0c7a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
@@ -95,6 +95,7 @@
         }
 
         private void applyMode(int mode, boolean animate) {
+            if (mLeftSide == null || mRightSide == null) return;
             float newAlpha = getAlphaFor(mode);
             if (animate) {
                 ObjectAnimator lhs = animateTransitionTo(mLeftSide, newAlpha);
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index cd8da69..d377902 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -5056,7 +5056,9 @@
         if (statusBarHasFocus) {
             int flags = View.SYSTEM_UI_FLAG_FULLSCREEN
                     | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
-                    | View.SYSTEM_UI_FLAG_IMMERSIVE;
+                    | View.SYSTEM_UI_FLAG_IMMERSIVE
+                    | View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS
+                    | View.SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION;
             vis = (vis & ~flags) | (mLastSystemUiFlags & flags);
         }
 
diff --git a/services/java/com/android/server/AlarmManagerService.java b/services/java/com/android/server/AlarmManagerService.java
index 212796c..98b5f66 100644
--- a/services/java/com/android/server/AlarmManagerService.java
+++ b/services/java/com/android/server/AlarmManagerService.java
@@ -91,7 +91,7 @@
             = new Intent().addFlags(Intent.FLAG_FROM_BACKGROUND);
     private static final IncreasingTimeOrder sIncreasingTimeOrder = new IncreasingTimeOrder();
     
-    private static final boolean WAKEUP_STATS = true;
+    private static final boolean WAKEUP_STATS = false;
 
     private final Context mContext;
 
diff --git a/services/java/com/android/server/am/ReceiverList.java b/services/java/com/android/server/am/ReceiverList.java
index b19cc5d..fa8c1df 100644
--- a/services/java/com/android/server/am/ReceiverList.java
+++ b/services/java/com/android/server/am/ReceiverList.java
@@ -69,7 +69,7 @@
     }
     
     void dumpLocal(PrintWriter pw, String prefix) {
-        pw.print(prefix); pw.print("app="); pw.print(app.toShortString());
+        pw.print(prefix); pw.print("app="); pw.print(app != null ? app.toShortString() : null);
             pw.print(" pid="); pw.print(pid); pw.print(" uid="); pw.print(uid);
             pw.print(" user="); pw.println(userId);
         if (curBroadcast != null || linkedToDeath) {
diff --git a/services/java/com/android/server/pm/UserManagerService.java b/services/java/com/android/server/pm/UserManagerService.java
index af60f84..d0e9fe1 100644
--- a/services/java/com/android/server/pm/UserManagerService.java
+++ b/services/java/com/android/server/pm/UserManagerService.java
@@ -416,12 +416,6 @@
         if (restrictions == null) return;
 
         synchronized (mPackagesLock) {
-            // If the user has restrictions already and call is trying to disallow restrictions,
-            // don't modify the flag.
-            if (hasRestrictionsPinLocked(userId)
-                    && restrictions.getBoolean(UserManager.DISALLOW_APP_RESTRICTIONS, false)) {
-                restrictions.putBoolean(UserManager.DISALLOW_APP_RESTRICTIONS, false);
-            }
             mUserRestrictions.get(userId).clear();
             mUserRestrictions.get(userId).putAll(restrictions);
             writeUserLocked(mUsers.get(userId));
@@ -686,7 +680,6 @@
                 writeBoolean(serializer, restrictions, UserManager.DISALLOW_USB_FILE_TRANSFER);
                 writeBoolean(serializer, restrictions, UserManager.DISALLOW_CONFIG_CREDENTIALS);
                 writeBoolean(serializer, restrictions, UserManager.DISALLOW_REMOVE_USER);
-                writeBoolean(serializer, restrictions, UserManager.DISALLOW_APP_RESTRICTIONS);
                 serializer.endTag(null, TAG_RESTRICTIONS);
             }
             serializer.endTag(null, TAG_USER);
@@ -817,7 +810,6 @@
                         readBoolean(parser, restrictions, UserManager.DISALLOW_USB_FILE_TRANSFER);
                         readBoolean(parser, restrictions, UserManager.DISALLOW_CONFIG_CREDENTIALS);
                         readBoolean(parser, restrictions, UserManager.DISALLOW_REMOVE_USER);
-                        readBoolean(parser, restrictions, UserManager.DISALLOW_APP_RESTRICTIONS);
                     }
                 }
             }
@@ -1130,7 +1122,7 @@
     }
 
     @Override
-    public boolean changeRestrictionsPin(String newPin) {
+    public boolean setRestrictionsChallenge(String newPin) {
         checkManageUsersPermission("Only system can modify the restrictions pin");
         int userId = UserHandle.getCallingUserId();
         synchronized (mPackagesLock) {
@@ -1157,7 +1149,7 @@
     }
 
     @Override
-    public int checkRestrictionsPin(String pin) {
+    public int checkRestrictionsChallenge(String pin) {
         checkManageUsersPermission("Only system can verify the restrictions pin");
         int userId = UserHandle.getCallingUserId();
         synchronized (mPackagesLock) {
@@ -1200,7 +1192,7 @@
     }
 
     @Override
-    public boolean hasRestrictionsPin() {
+    public boolean hasRestrictionsChallenge() {
         int userId = UserHandle.getCallingUserId();
         synchronized (mPackagesLock) {
             return hasRestrictionsPinLocked(userId);
@@ -1227,7 +1219,7 @@
             // Remove all user restrictions
             setUserRestrictions(new Bundle(), userHandle);
             // Remove restrictions pin
-            changeRestrictionsPin(null);
+            setRestrictionsChallenge(null);
             // Remove any app restrictions
             cleanAppRestrictions(userHandle, true);
         }