Merge "Import translations. DO NOT MERGE" into klp-dev
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 0d5590d..215d108 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -174,6 +174,7 @@
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/src/core/java/android/print/IPrinterDiscoverySessionObserver.*)
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/src/core/java/android/print/IPrinterDiscoverySessionClient.*)
 $(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)
 # ************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
 # ************************************************
diff --git a/docs/html/distribute/googleplay/policies/ads.jd b/docs/html/distribute/googleplay/policies/ads.jd
index 8920499..815dd08 100644
--- a/docs/html/distribute/googleplay/policies/ads.jd
+++ b/docs/html/distribute/googleplay/policies/ads.jd
@@ -9,8 +9,8 @@
     <li><a href="#context">Context and Behavior</a></li>
     <li><a href="#disclosure" style="clear:right">Disclosure</a></li>
     <li><a href="#impersonation">Impersonation of System UI</a></li>
-    <li><a href="#adwalls">Adwalls</a></li>
-    <li><a href="#interfering" style="clear:right;">Interference with Ads and Websites</a></li>
+    <li><a href="#adwalls">Adwalls and Interstitial Ads</a></li>
+    <li><a href="#interfering" style="clear:right;">Interference with Apps and Third-Party Ads</a></li>
   </ol>
 
   <h2>More Resources</h2>
@@ -130,22 +130,20 @@
   </li>
 
   <li>
-    <strong>Make sure app origin is clear</strong>&mdash;When you display an
-    ad, it must be clear to the user that the ad has originated from your app.
-    If you show the ad in your app's UI while your app has focus, the user
-    understands the ad origin without explicit attribution. However, if you
-    display the ad outside of your app, such as in a notification, you must
-    explicitly indicate the origin.
-  </li>
-
-  <li>
     <strong>Don't make changes outside of the app without consent</strong>
    &mdash;Ads must not make changes outside of the app without the user's
-    full knowledge and consent. For example, ads should not install shortcuts,
-    bookmarks, or icons, or change default settings without user consent.
+    full knowledge and consent.
   </li>
 
   <li>
+  <div class="example-block bad" style="width:360px;margin:1em 0 0 2em;">
+    <div class="heading">Ads through system-level notifications</div>
+    <img src="{@docRoot}images/gp-policy-ads-notif-attr-violation.png">
+  </div>
+  <div class="example-block good" style="width:360px;margin:.5em 0 0 2em;">
+    <div class="heading">Notification that's part of the app's feature set</div>
+    <img src="{@docRoot}images/gp-policy-ads-notif-attr.png">
+  </div>
     <strong>Changes outside the app must be reversible</strong>&mdash;If an
     ad makes changes outside the app as described above, the changes (and
     origin app) must be evident and easily reversible. For example, the user
@@ -154,51 +152,31 @@
   </li>
 
   <li>
-    <strong>Notification ads require user opt-in</strong>&mdash;Your app
-    should not create <a href=
+    <strong>Notification ads are prohibited</strong>&mdash;Your app
+    should not create system-level <a href=
     "{@docRoot}design/patterns/notifications.html">notifications</a>
-    containing ads unless the user has specifically opted-in to this behavior
-    and is able to easily opt-out.
+    containing ads unless the notifications are part of the explicit
+    feature set of the app.
   </li>
 
   <li>
-    <strong>Use low priority for notification ads</strong>&mdash;Always
-    assign your notification ads <a href="
-    {@docRoot}reference/android/app/Notification.html#PRIORITY_LOW">low
-    priority</a> (for API level 16 and above).
+    <strong>Don't add shortcuts, bookmarks, or icons</strong>&mdash;Your app
+    and its ads must not add homescreen shortcuts, browser bookmarks, or icons
+    on the user's device as a service to third parties or for advertising 
+    purposes.
   </li>
 </ul>
 
-<div class="example-block bad" style="width:400px;margin:.5em 0 0 2em;">
-    <div class="heading">Does not fully indicate origin app</div>
-    <img src="{@docRoot}images/gp-policy-ads-notif-attr-violation.png">
-</div>
-<div class="example-block good" style="width:400px;margin:.5em 0 0 2em;">
-    <div class="heading">Indicates origin app by name and icon</div>
-    <img src="{@docRoot}images/gp-policy-ads-notif-attr.png">
-</div>
-
 <p>
-  In particular, note that notification ads must clearly identify your app as
-  the ad origin. If your app sends notification ads that do not sufficiently
-  identify your app as the origin, the app will be in violation of policy.
+  Above right is an example notification ad that violates ad policy by
+  providing ads through system level notification.
 </p>
-
 <p>
-  To identify your app as the origin, you should display the <strong>app's full
-  name and and icon</strong> in the notification to provide the clearest
-  identification and best policy compliance. Displaying a partial app name can
-  also be sufficient, provided the name unambiguously identifies your app.
+  Below right, the notification ad complies with policy because the
+  nature of the notification is part of the explicit feature set of the app,
+  and it also provides attribution of the origin app. 
 </p>
 
-<p>
-  Above right is an example notification ad that violates ad policy by not
-  providing attribution of the origin app. Below right, the notification ads
-  comply with policy by providing both the app icon and full app name (in this
-  case, "Turtle Test").
-</p>
-
-
 <h2 id="disclosure" style="clear:right">Disclosure of Ads to Users</h2>
 
 <p>
@@ -218,6 +196,14 @@
   </li>
 
   <li>
+    <div class="example-block good" style="width:213px;margin-left:.5em;">
+      <div class="heading">Disclosure in Terms</div>
+      <img src="{@docRoot}images/gp-policy-ads-terms.png">
+    </div>
+    <div class="example-block bad" style="width:213px;">
+      <div class="heading">Disclosure is hidden</div>
+      <img src="{@docRoot}images/gp-policy-ads-eula-violation.png">
+    </div>
     <strong>Make sure users know</strong>&mdash;Present your ads disclosure
     is an easy-to-see location, rather than hiding it where users are not
     likely to find it.
@@ -240,53 +226,40 @@
 </p>
 
 <p>
-  If your app adds homescreen icons and/or browser bookmarks, an acceptable
-  practice for revealing that behavior is to provide a disclosure in both the
-  app description and an opt-in EULA on app launch. This ensures that the
-  behaviors are clearly explained to the user up-front and requires the user’s
-  consent in a pop-up EULA to continue using the app.
-</p>
-
-<div class="example-block good" style="width:213px;margin-right:2em;">
-  <div class="heading">Disclosure in Terms</div>
-  <img src="{@docRoot}images/gp-policy-ads-terms.png">
-</div>
-
-<div class="example-block good" style="width:213px;">
-  <div class="heading">Disclosure in EULA</div>
-  <img src="{@docRoot}images/gp-policy-ads-eula.png">
-</div>
-
-<div class="example-block bad" style="width:213px;margin-left:0em;">
-  <div class="heading">Disclosure is hidden</div>
-  <img src="{@docRoot}images/gp-policy-ads-eula-violation.png">
-</div>
-
-<p style="clear:right">
   Above left is an example of ads disclosure that is hidden in a long EULA. The
   disclosure information itself is not clearly indicated in the document text
   and it's not visible unless the user happens to scroll down far enough in the
-  EULA. Above middle and right show two alternative approaches that
-  present the disclosure in an obvious and clear manner at the top of a
-  EULA and in a dedicated Terms agreement. 
+  EULA. 
+</p>
+<p>
+  Above right shows an approach that presents the disclosure in an obvious
+  and clear manner in a EULA and a dedicated Terms agreement. 
 </p>
 
 
 <h2 id="impersonation">Impersonation of System UI</h2>
 
-<div class="example-block bad">
-  <div class="heading">Ad impersonates system dialog</div>
-  <img src="{@docRoot}images/gp-policy-ads-impersonate-violation.png">
-</div>
+
+
+
+
+
+
 
 <p>
-  Your app must not display any ad that attempts to impersonate or represent a
+  Ads must not simulate or impersonate the user interface of any app, or
+  notification and warning elements of an operating system. Your app must not
+  display any ad that attempts to impersonate or represent a
   system function or UI component. If such an ad is displayed in your app, your
   app will be in violation of policy and subject to suspension. Here are some
   guidelines:
 </p>
 
-<ul>
+<ul>  
+  <li>
+    <strong>No fake app UI notifications</strong>&mdash;Ads should not impersonate
+    the interface of an application for advertising purposes.
+  </li>
   <li>
     <strong>No fake system dialogs or warnings</strong>&mdash;Any ad that
     presents itself as a system dialog or warning and asks for user input is in
@@ -299,23 +272,26 @@
   </li>
 </ul>
 
-<p>
-  At right is an example of a pop-up ad impersonating a system dialog, warning
-  the user about viruses. This is a violation of policy.
+<div class="example-block bad" style="width:213px;">
+  <div class="heading">Ad impersonates app UI</div>
+  <img src="{@docRoot}images/gp-policy-ads-impersonate-violation-app-ui.png">
+</div>
+<div class="example-block bad" style="width:213px;">
+  <div class="heading">Ad impersonates system warning</div>
+  <img src="{@docRoot}images/gp-policy-ads-impersonate-violation-sys-warning.png">
+</div>
+<div class="example-block bad" style="width:213px;">
+  <div class="heading">Ad impersonates system dialog</div>
+  <img src="{@docRoot}images/gp-policy-ads-impersonate-violation.png">
+</div>
+<p style="clear:both">
+  Above are examples of impersonations &mdash; a pop-up ad that impersonates a
+  system dialog, an ad that impersonates a system warning, and an ad that impersonates
+  an application UI. All of these are in violation of policy.
 </p>
 
 
-<h2 id="adwalls">Adwalls</h2>
-
-<div class="example-block good" style="width:213px;">
-  <div class="heading">Adwall lets user cancel</div>
-  <img src="{@docRoot}images/gp-policy-ads-paywall.png">
-</div>
-
-<div class="example-block bad" style="width:213px;">
-  <div class="heading">Adwall forces user action</div>
-  <img src="{@docRoot}images/gp-policy-ads-paywall-violation.png">
-</div>
+<h2 id="adwalls">Adwalls and Interstitial Ads</h2>
 
 <p>
   If your app uses adwalls to drive affiliate traffic, those adwalls must not
@@ -330,23 +306,45 @@
 
 <p>
   For this reason, <strong>all adwalls must give the user the option to
-  cancel</strong> or otherwise dismiss the ad without penalty.
+  cancel</strong> or otherwise dismiss the ad without penalty. Interstitial ads
+  may only be displayed inside of the app they came with. Forcing the user to
+  click on ads or submit personal information for advertising purposes in order
+  to fully use an app is prohibited.
 </p>
 
-<p>
-  At right is an example of an app that requires the user to click through the
+<div class="example-block bad" style="width:213px;">
+  <div class="heading">Interstitial, modal ad</div>
+  <img src="{@docRoot}images/gp-policy-ads-interstitial-violation.png">
+</div>
+
+<div class="example-block good" style="width:213px;">
+  <div class="heading">Adwall lets user cancel</div>
+  <img src="{@docRoot}images/gp-policy-ads-paywall.png">
+</div>
+
+<div class="example-block bad" style="width:213px;">
+  <div class="heading">Adwall forces user action</div>
+  <img src="{@docRoot}images/gp-policy-ads-paywall-violation.png">
+</div>
+
+<p style="clear:both">
+  At left is an example of an app that requires the user to click through the
   ad to fully use the app. This is a violation of policy.
 </p>
 
 <p>
-  The adjacent example demonstrates an adequate option to let the user dismiss
-  the ad wall easily by cancelling.
+  The center example demonstrates an adequate option to let the user dismiss
+  the ad wall easily by cancelling. This is not a violation of policy.
 </p>
 
+<p>
+  At right is an example of an interstitial, modal ad that is displayed outside
+  of the app. This is no a violation of policy.
+</p>
 
-<h2 id="interfering" style="clear:right;">Interference with Third-party Ads and Websites</h2>
+<h2 id="interfering" style="clear:right;">Interfering with Apps and Third-Party Ads</h2>
 
 <p>
-  Ads associated with your app <strong>must not interfere</strong> with any
-  other ads originating in other applications.
+  Ads associated with your app <strong>must not interfere</strong> with other
+  apps or their ads.
 </p>
\ No newline at end of file
diff --git a/docs/html/distribute/googleplay/policies/spam.jd b/docs/html/distribute/googleplay/policies/spam.jd
index 602c89a..f4d303c 100644
--- a/docs/html/distribute/googleplay/policies/spam.jd
+++ b/docs/html/distribute/googleplay/policies/spam.jd
@@ -251,6 +251,11 @@
 
 <h2 id="ratings">Spam in Ratings and Reviews</h2>
 
+<div class="example-block bad" style="width:440px;">
+  <div class="heading">Inappropriate content in a review</div>
+  <img src="{@docRoot}images/gp-policy-spam-negreview.png">
+</div>
+
 <p>
   Ratings and reviews are benchmarks of app quality and users depend on them to
   be authentic and relevant. As an app developer, you should not attempt to
@@ -276,12 +281,7 @@
   more information.
 </p>
 
-<div class="example-block bad" style="width:440px;">
-  <div class="heading">Inappropriate content in a review</div>
-  <img src="{@docRoot}images/gp-policy-spam-negreview.png">
-</div>
-
-<div class="example-block bad" style="margin-top:3em;">
+<div class="example-block bad" style="margin-top:3em;width:213px;">
   <div class="heading">Soliciting ratings</div>
   <img src="{@docRoot}images/gp-policy-spam-reqrating.png">
 </div>
diff --git a/docs/html/images/gp-policy-ads-eula-violation.png b/docs/html/images/gp-policy-ads-eula-violation.png
index e8ffa5b..204c320 100644
--- a/docs/html/images/gp-policy-ads-eula-violation.png
+++ b/docs/html/images/gp-policy-ads-eula-violation.png
Binary files differ
diff --git a/docs/html/images/gp-policy-ads-eula.png b/docs/html/images/gp-policy-ads-eula.png
deleted file mode 100644
index 68a6b95..0000000
--- a/docs/html/images/gp-policy-ads-eula.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/gp-policy-ads-impersonate-violation-app-ui.png b/docs/html/images/gp-policy-ads-impersonate-violation-app-ui.png
new file mode 100644
index 0000000..a2a39a9
--- /dev/null
+++ b/docs/html/images/gp-policy-ads-impersonate-violation-app-ui.png
Binary files differ
diff --git a/docs/html/images/gp-policy-ads-impersonate-violation-sys-warning.png b/docs/html/images/gp-policy-ads-impersonate-violation-sys-warning.png
new file mode 100644
index 0000000..f323b06
--- /dev/null
+++ b/docs/html/images/gp-policy-ads-impersonate-violation-sys-warning.png
Binary files differ
diff --git a/docs/html/images/gp-policy-ads-interstitial-violation.png b/docs/html/images/gp-policy-ads-interstitial-violation.png
new file mode 100644
index 0000000..4871493
--- /dev/null
+++ b/docs/html/images/gp-policy-ads-interstitial-violation.png
Binary files differ
diff --git a/docs/html/images/gp-policy-ads-notif-attr-violation.png b/docs/html/images/gp-policy-ads-notif-attr-violation.png
index af53f10..3d6393b 100644
--- a/docs/html/images/gp-policy-ads-notif-attr-violation.png
+++ b/docs/html/images/gp-policy-ads-notif-attr-violation.png
Binary files differ
diff --git a/docs/html/images/gp-policy-ads-notif-attr.png b/docs/html/images/gp-policy-ads-notif-attr.png
index 4934d21..da39cfb 100644
--- a/docs/html/images/gp-policy-ads-notif-attr.png
+++ b/docs/html/images/gp-policy-ads-notif-attr.png
Binary files differ
diff --git a/docs/html/images/gp-policy-spam-reqrating.png b/docs/html/images/gp-policy-spam-reqrating.png
index aaf9e53..3dc7d6f 100644
--- a/docs/html/images/gp-policy-spam-reqrating.png
+++ b/docs/html/images/gp-policy-spam-reqrating.png
Binary files differ
diff --git a/media/java/android/media/Image.java b/media/java/android/media/Image.java
index d06eeb31..9f442f5 100644
--- a/media/java/android/media/Image.java
+++ b/media/java/android/media/Image.java
@@ -55,11 +55,11 @@
      * the planes is as follows:
      *
      * <table>
-     * <th>
-     *   <td>Format</td>
-     *   <td>Plane count</td>
-     *   <td>Layout details</td>
-     * </th>
+     * <tr>
+     *   <th>Format</th>
+     *   <th>Plane count</th>
+     *   <th>Layout details</th>
+     * </tr>
      * <tr>
      *   <td>{@link android.graphics.ImageFormat#JPEG}</td>
      *   <td>1</td>
diff --git a/media/jni/android_media_ImageReader.cpp b/media/jni/android_media_ImageReader.cpp
index 7d914d2..7f1d946 100644
--- a/media/jni/android_media_ImageReader.cpp
+++ b/media/jni/android_media_ImageReader.cpp
@@ -35,7 +35,6 @@
 
 #define ALIGN(x, mask) ( ((x) + (mask) - 1) & ~((mask) - 1) )
 
-#define ANDROID_MEDIA_IMAGEREADER_JNI_ID           "mCpuConsumer"
 #define ANDROID_MEDIA_IMAGEREADER_CTX_JNI_ID       "mNativeContext"
 #define ANDROID_MEDIA_SURFACEIMAGE_BUFFER_JNI_ID   "mLockedBuffer"
 #define ANDROID_MEDIA_SURFACEIMAGE_TS_JNI_ID       "mTimestamp"
diff --git a/packages/ExternalStorageProvider/res/values-af/strings.xml b/packages/ExternalStorageProvider/res/values-af/strings.xml
new file mode 100644
index 0000000..56552fd
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-af/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"Eksterne berging"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"Interne berging"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-da/strings.xml b/packages/ExternalStorageProvider/res/values-da/strings.xml
new file mode 100644
index 0000000..b94e665
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-da/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"Ekstern lagerplads"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"Intern lagerplads"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-el/strings.xml b/packages/ExternalStorageProvider/res/values-el/strings.xml
new file mode 100644
index 0000000..06e26d7
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-el/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"Εξωτερικός αποθηκευτικός χώρος"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"Εσωτερικός αποθηκευτικός χώρος"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-en-rGB/strings.xml b/packages/ExternalStorageProvider/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..360d941
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-en-rGB/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"External Storage"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"Internal storage"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-en-rIN/strings.xml b/packages/ExternalStorageProvider/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..360d941
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-en-rIN/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"External Storage"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"Internal storage"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-es/strings.xml b/packages/ExternalStorageProvider/res/values-es/strings.xml
new file mode 100644
index 0000000..8e35245
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-es/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"Almacenamiento externo"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"Almacenamiento interno"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-it/strings.xml b/packages/ExternalStorageProvider/res/values-it/strings.xml
new file mode 100644
index 0000000..c5dcacd
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-it/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"Archivio esterno"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"Memoria interna"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-iw/strings.xml b/packages/ExternalStorageProvider/res/values-iw/strings.xml
new file mode 100644
index 0000000..62f4471
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-iw/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"אחסון חיצוני"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"אחסון פנימי"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-lo-rLA/strings.xml b/packages/ExternalStorageProvider/res/values-lo-rLA/strings.xml
new file mode 100644
index 0000000..dd6e55a
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-lo-rLA/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"ບ່ອນຈັດເກັບຂໍ້ມູນພາຍນອກ"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"ບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-nb/strings.xml b/packages/ExternalStorageProvider/res/values-nb/strings.xml
new file mode 100644
index 0000000..223eb7a
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-nb/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"Ekstern lagring"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"Intern lagring"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-nl/strings.xml b/packages/ExternalStorageProvider/res/values-nl/strings.xml
new file mode 100644
index 0000000..402c94b
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-nl/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"Externe opslag"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"Interne opslag"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-sv/strings.xml b/packages/ExternalStorageProvider/res/values-sv/strings.xml
new file mode 100644
index 0000000..6b82ab3
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-sv/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"Extern lagring"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"Intern lagring"</string>
+</resources>
diff --git a/packages/ExternalStorageProvider/res/values-uk/strings.xml b/packages/ExternalStorageProvider/res/values-uk/strings.xml
new file mode 100644
index 0000000..7a8c161
--- /dev/null
+++ b/packages/ExternalStorageProvider/res/values-uk/strings.xml
@@ -0,0 +1,21 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_label" msgid="7123375275748530234">"Зовнішня пам’ять"</string>
+    <string name="root_internal_storage" msgid="827844243068584127">"Внутрішня пам’ять"</string>
+</resources>
diff --git a/packages/services/Proxy/AndroidManifest.xml b/packages/services/Proxy/AndroidManifest.xml
index 09b8327..bbcd6b9 100644
--- a/packages/services/Proxy/AndroidManifest.xml
+++ b/packages/services/Proxy/AndroidManifest.xml
@@ -13,12 +13,5 @@
             android:exported="true">
         </service>
 
-        <receiver android:name=".ProxyServiceReceiver">
-
-            <intent-filter>
-                <action android:name="android.intent.action.PROXY_CHANGE" />
-            </intent-filter>
-        </receiver>
-
     </application>
 </manifest>
diff --git a/packages/services/Proxy/src/com/android/proxyhandler/ProxyServer.java b/packages/services/Proxy/src/com/android/proxyhandler/ProxyServer.java
index 5d8689e..77f3c8c 100644
--- a/packages/services/Proxy/src/com/android/proxyhandler/ProxyServer.java
+++ b/packages/services/Proxy/src/com/android/proxyhandler/ProxyServer.java
@@ -1,7 +1,20 @@
-
+/**
+ * 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.proxyhandler;
 
-import android.net.ProxyProperties;
 import android.util.Log;
 
 import com.google.android.collect.Lists;
@@ -36,7 +49,6 @@
     public boolean mIsRunning = false;
 
     private ServerSocket serverSocket;
-    private ProxyProperties mProxy;
 
     private class ProxyConnection implements Runnable {
         private Socket connection;
@@ -48,8 +60,6 @@
         @Override
         public void run() {
             try {
-                android.net.Proxy.setHttpProxySystemProperty(mProxy);
-
                 String requestLine = getLine(connection.getInputStream());
                 if (requestLine == null) {
                     connection.close();
@@ -212,8 +222,4 @@
             }
         }
     }
-
-    public void setProxy(ProxyProperties proxy) {
-        mProxy = proxy;
-    }
 }
diff --git a/packages/services/Proxy/src/com/android/proxyhandler/ProxyService.java b/packages/services/Proxy/src/com/android/proxyhandler/ProxyService.java
index 18ed645..cef3659 100644
--- a/packages/services/Proxy/src/com/android/proxyhandler/ProxyService.java
+++ b/packages/services/Proxy/src/com/android/proxyhandler/ProxyService.java
@@ -1,3 +1,18 @@
+/**
+ * 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.proxyhandler;
 
 import android.app.Service;
@@ -18,43 +33,17 @@
     /** Keep these values up-to-date with PacManager.java */
     public static final String KEY_PROXY = "keyProxy";
     public static final String HOST = "localhost";
+    // STOPSHIP This being a static port means it can be hijacked by other apps.
     public static final int PORT = 8182;
     public static final String EXCL_LIST = "";
 
     @Override
-    public int onStartCommand(Intent intent, int flags, int startId) {
-        if (intent != null) {
-            if (handleCommand(intent)) {
-                return START_REDELIVER_INTENT;
-            }
-        }
-        return START_NOT_STICKY;
-    }
-
-    private boolean handleCommand(Intent intent) {
-        Bundle bundle = intent.getExtras();
-        ProxyProperties proxy = null;
-        if ((bundle != null) && bundle.containsKey(Proxy.EXTRA_PROXY_INFO)) {
-            proxy = bundle.getParcelable(Proxy.EXTRA_PROXY_INFO);
-            if ((proxy != null) && !TextUtils.isEmpty(proxy.getPacFileUrl())) {
-                startProxy(proxy);
-                return true;
-            } else {
-                stopSelf();
-            }
-        } else {
-            stopSelf();
-        }
-        return false;
-    }
-
-
-    private void startProxy(ProxyProperties proxy) {
+    public void onCreate() {
+        super.onCreate();
         if (server == null) {
             server = new ProxyServer();
             server.startServer();
         }
-        server.setProxy(proxy);
     }
 
     @Override
diff --git a/packages/services/Proxy/src/com/android/proxyhandler/ProxyServiceReceiver.java b/packages/services/Proxy/src/com/android/proxyhandler/ProxyServiceReceiver.java
deleted file mode 100644
index 4638def..0000000
--- a/packages/services/Proxy/src/com/android/proxyhandler/ProxyServiceReceiver.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.android.proxyhandler;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Proxy;
-import android.net.ProxyProperties;
-import android.os.Bundle;
-import android.text.TextUtils;
-
-public class ProxyServiceReceiver extends BroadcastReceiver {
-
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        Intent service = new Intent(context, ProxyService.class);
-        Bundle bundle = intent.getExtras();
-        ProxyProperties proxy = null;
-        if (bundle != null) {
-            proxy = bundle.getParcelable(Proxy.EXTRA_PROXY_INFO);
-            service.putExtra(Proxy.EXTRA_PROXY_INFO, proxy);
-        }
-        if ((proxy != null) && (!TextUtils.isEmpty(proxy.getPacFileUrl()))) {
-            context.startService(service);
-        } else {
-            context.stopService(service);
-        }
-    }
-
-}
diff --git a/services/java/com/android/server/connectivity/PacManager.java b/services/java/com/android/server/connectivity/PacManager.java
index 0b68ff5..c8cc85e 100644
--- a/services/java/com/android/server/connectivity/PacManager.java
+++ b/services/java/com/android/server/connectivity/PacManager.java
@@ -48,10 +48,12 @@
  * @hide
  */
 public class PacManager {
-    public static final String PROXY_PACKAGE = "com.android.pacprocessor";
-    public static final String PROXY_SERVICE = "com.android.pacprocessor.PacService";
-    public static final String PROXY_SERVICE_NAME = "com.android.net.IProxyService";
+    public static final String PAC_PACKAGE = "com.android.pacprocessor";
+    public static final String PAC_SERVICE = "com.android.pacprocessor.PacService";
+    public static final String PAC_SERVICE_NAME = "com.android.net.IProxyService";
 
+    public static final String PROXY_PACKAGE = "com.android.proxyhandler";
+    public static final String PROXY_SERVICE = "com.android.proxyhandler.ProxyService";
 
     private static final String TAG = "PacManager";
 
@@ -73,6 +75,7 @@
     private IProxyService mProxyService;
     private PendingIntent mPacRefreshIntent;
     private ServiceConnection mConnection;
+    private ServiceConnection mProxyConnection;
     private Context mContext;
 
     private int mCurrentDelay;
@@ -229,7 +232,7 @@
             return;
         }
         Intent intent = new Intent();
-        intent.setClassName(PROXY_PACKAGE, PROXY_SERVICE);
+        intent.setClassName(PAC_PACKAGE, PAC_SERVICE);
         mConnection = new ServiceConnection() {
             @Override
             public void onServiceDisconnected(ComponentName component) {
@@ -242,12 +245,12 @@
             public void onServiceConnected(ComponentName component, IBinder binder) {
                 synchronized (mProxyLock) {
                     try {
-                        Log.d(TAG, "Adding service " + PROXY_SERVICE_NAME + " "
+                        Log.d(TAG, "Adding service " + PAC_SERVICE_NAME + " "
                                 + binder.getInterfaceDescriptor());
                     } catch (RemoteException e1) {
                         Log.e(TAG, "Remote Exception", e1);
                     }
-                    ServiceManager.addService(PROXY_SERVICE_NAME, binder);
+                    ServiceManager.addService(PAC_SERVICE_NAME, binder);
                     mProxyService = IProxyService.Stub.asInterface(binder);
                     if (mProxyService == null) {
                         Log.e(TAG, "No proxy service");
@@ -262,13 +265,27 @@
                 }
             }
         };
-        Log.e(TAG, "Attempting to bind");
         mContext.bindService(intent, mConnection,
                 Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND | Context.BIND_NOT_VISIBLE);
+
+        intent = new Intent();
+        intent.setClassName(PROXY_PACKAGE, PROXY_SERVICE);
+        mProxyConnection = new ServiceConnection() {
+            @Override
+            public void onServiceDisconnected(ComponentName component) {
+            }
+
+            @Override
+            public void onServiceConnected(ComponentName component, IBinder binder) {
+            }
+        };
+        mContext.bindService(intent, mProxyConnection,
+                Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND | Context.BIND_NOT_VISIBLE);
     }
 
     private void unbind() {
         mContext.unbindService(mConnection);
+        mContext.unbindService(mProxyConnection);
         mConnection = null;
     }
 }