merge in klp-release history after reset to klp-dev
diff --git a/apps/SettingInjectorSample/src/com/example/android/injector/DisabledInjectorService.java b/apps/SettingInjectorSample/src/com/example/android/injector/DisabledInjectorService.java
index 70e3615..c122639 100644
--- a/apps/SettingInjectorSample/src/com/example/android/injector/DisabledInjectorService.java
+++ b/apps/SettingInjectorSample/src/com/example/android/injector/DisabledInjectorService.java
@@ -31,14 +31,18 @@
     }
 
     @Override
-    protected Status getStatus() {
+    protected String onGetSummary() {
         try {
             // Simulate a delay while reading the setting from disk
             Thread.sleep(500);
         } catch (InterruptedException e) {
             Log.e(TAG, "", e);
         }
+        return null;
+    }
 
-        return new Status(null, false);
+    @Override
+    protected boolean onGetEnabled() {
+        return false;
     }
 }
diff --git a/apps/SettingInjectorSample/src/com/example/android/injector/FailingInjectorService.java b/apps/SettingInjectorSample/src/com/example/android/injector/FailingInjectorService.java
index f13d7e0..bdd15eb 100644
--- a/apps/SettingInjectorSample/src/com/example/android/injector/FailingInjectorService.java
+++ b/apps/SettingInjectorSample/src/com/example/android/injector/FailingInjectorService.java
@@ -26,12 +26,20 @@
 
     private static final String TAG = "FailingInjectorService";
 
+    /**
+     * Whether to actually throw an exception here. Pretty disruptive when true, because it causes
+     * a "Unfortunately, My Setting Activity! has stopped" dialog to appear and also blocks the
+     * update of other settings from this app. So only set true when need to test the handling
+     * of the exception.
+     */
+    private static final boolean ACTUALLY_THROW = false;
+
     public FailingInjectorService() {
         super(TAG);
     }
 
     @Override
-    protected Status getStatus() {
+    protected String onGetSummary() {
         try {
             // Simulate a delay while reading the setting from disk
             Thread.sleep(100);
@@ -39,6 +47,14 @@
             Log.e(TAG, "", e);
         }
 
-        throw new RuntimeException("Simulated failure reading setting");
+        if (ACTUALLY_THROW) {
+            throw new RuntimeException("Simulated failure reading setting");
+        }
+        return "Decided not to throw exception after all";
+    }
+
+    @Override
+    protected boolean onGetEnabled() {
+        return false;
     }
 }
diff --git a/apps/SettingInjectorSample/src/com/example/android/injector/MyInjectorService.java b/apps/SettingInjectorSample/src/com/example/android/injector/MyInjectorService.java
index 3318bc2..8797d69 100644
--- a/apps/SettingInjectorSample/src/com/example/android/injector/MyInjectorService.java
+++ b/apps/SettingInjectorSample/src/com/example/android/injector/MyInjectorService.java
@@ -31,14 +31,18 @@
     }
 
     @Override
-    protected Status getStatus() {
+    protected String onGetSummary() {
         try {
             // Simulate a delay while reading the setting from disk
             Thread.sleep(500);
         } catch (InterruptedException e) {
             Log.e(TAG, "", e);
         }
+        return "Example status value";
+    }
 
-        return new Status("Example status value", true);
+    @Override
+    protected boolean onGetEnabled() {
+        return true;
     }
 }
diff --git a/apps/SettingInjectorSample/src/com/example/android/injector/SlowInjectorService.java b/apps/SettingInjectorSample/src/com/example/android/injector/SlowInjectorService.java
index 9984df0..7cb32c9 100644
--- a/apps/SettingInjectorSample/src/com/example/android/injector/SlowInjectorService.java
+++ b/apps/SettingInjectorSample/src/com/example/android/injector/SlowInjectorService.java
@@ -31,14 +31,18 @@
     }
 
     @Override
-    protected Status getStatus() {
+    protected String onGetSummary() {
         try {
             // Simulate a delay while reading the setting from disk
             Thread.sleep(5000);
         } catch (InterruptedException e) {
             Log.e(TAG, "", e);
         }
+        return "Dang that took a long time!";
+    }
 
-        return new Status("Dang that took a long time!", true);
+    @Override
+    protected boolean onGetEnabled() {
+        return true;
     }
 }
diff --git a/apps/SettingInjectorSample/src/com/example/android/injector/UpdatingInjectorService.java b/apps/SettingInjectorSample/src/com/example/android/injector/UpdatingInjectorService.java
index 6320667..3db619a 100644
--- a/apps/SettingInjectorSample/src/com/example/android/injector/UpdatingInjectorService.java
+++ b/apps/SettingInjectorSample/src/com/example/android/injector/UpdatingInjectorService.java
@@ -32,13 +32,18 @@
     }
 
     @Override
-    protected Status getStatus() {
+    protected String onGetSummary() {
         // Every time it asks for our status, we tell it the setting has just changed. This will
         // test the handling of races where we're getting many UPDATE_INTENT broadcasts in a short
         // period of time
         Intent intent = new Intent(ACTION_INJECTED_SETTING_CHANGED);
         sendBroadcast(intent);
         Log.d(TAG, "Broadcasting: " + intent);
-        return new Status(String.valueOf(System.currentTimeMillis()), true);
+        return String.valueOf(System.currentTimeMillis());
+    }
+
+    @Override
+    protected boolean onGetEnabled() {
+        return true;
     }
 }
diff --git a/build/sdk.atree b/build/sdk.atree
index 909e6b7..86ce9fa 100644
--- a/build/sdk.atree
+++ b/build/sdk.atree
@@ -156,6 +156,7 @@
 
 # Eclipse Editors support
 framework/layoutlib.jar       platforms/${PLATFORM_NAME}/data/layoutlib.jar
+framework/icu4j.jar           platforms/${PLATFORM_NAME}/data/icu4j.jar
 frameworks/base/core/res/res  platforms/${PLATFORM_NAME}/data/res
 docs/activity_actions.txt     platforms/${PLATFORM_NAME}/data/activity_actions.txt
 docs/broadcast_actions.txt    platforms/${PLATFORM_NAME}/data/broadcast_actions.txt
diff --git a/samples/AccelerometerPlay/_index.jd b/samples/AccelerometerPlay/_index.jd
index 197e453..cdca3a6 100644
--- a/samples/AccelerometerPlay/_index.jd
+++ b/samples/AccelerometerPlay/_index.jd
@@ -1,6 +1,5 @@
-page.tags="Sensor", "Accelerometer"
-sample.tags="Accelerometer", "Games"
-sample.groups="Sensors"
+page.tags="Sensor", "Games", "Accelerometer"
+sample.group=Sensors
 @jd:body
 
 <p>Example code that shows how to use the device accelerometer in apps and games.</p>
diff --git a/samples/ActionBarCompat/_index.jd b/samples/ActionBarCompat/_index.jd
index 946570b..61b5e5e 100644
--- a/samples/ActionBarCompat/_index.jd
+++ b/samples/ActionBarCompat/_index.jd
@@ -1,6 +1,5 @@
-page.tags="ActionBar", "Compatibility", "Support Library"
-sample.tags="UI", "ActionBar", "Support Library"
-sample.group="Input"
+page.tags="ActionBar", "UI", "Compatibility", "Support Library"
+sample.group=Input
 @jd:body
 
 <p>This sample shows how to use the action bar design pattern on pre-API 11 devices and the built-in
diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml
index a24af29..bbb01b4 100644
--- a/samples/ApiDemos/AndroidManifest.xml
+++ b/samples/ApiDemos/AndroidManifest.xml
@@ -1254,7 +1254,6 @@
 
         <activity android:name=".animation.AnimationLoading"
                 android:label="Animation/Loading"
-                android:hardwareAccelerated="false"
                 android:enabled="@bool/atLeastHoneycomb">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -1264,7 +1263,6 @@
 
         <activity android:name=".animation.AnimationCloning"
                 android:label="Animation/Cloning"
-                android:hardwareAccelerated="false"
                 android:enabled="@bool/atLeastHoneycomb">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -1274,7 +1272,6 @@
 
         <activity android:name=".animation.AnimationSeeking"
                 android:label="Animation/Seeking"
-                android:hardwareAccelerated="false"
                 android:enabled="@bool/atLeastHoneycomb">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -1284,7 +1281,6 @@
 
         <activity android:name=".animation.AnimatorEvents"
                 android:label="Animation/Events"
-                android:hardwareAccelerated="false"
                 android:enabled="@bool/atLeastHoneycomb">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -1294,7 +1290,6 @@
 
         <activity android:name=".animation.BouncingBalls"
                 android:label="Animation/Bouncing Balls"
-                android:hardwareAccelerated="false"
                 android:enabled="@bool/atLeastHoneycomb">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -1304,7 +1299,6 @@
 
         <activity android:name=".animation.CustomEvaluator"
                 android:label="Animation/Custom Evaluator"
-                android:hardwareAccelerated="false"
                 android:enabled="@bool/atLeastHoneycomb">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -1323,7 +1317,6 @@
 
         <activity android:name=".animation.ReversingAnimation"
                 android:label="Animation/Reversing"
-                android:hardwareAccelerated="false"
                 android:enabled="@bool/atLeastHoneycomb">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -1333,7 +1326,6 @@
 
         <activity android:name=".animation.MultiPropertyAnimation"
                 android:label="Animation/Multiple Properties"
-                android:hardwareAccelerated="false"
                 android:enabled="@bool/atLeastHoneycomb">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/samples/ApiDemos/src/com/example/android/apis/animation/Transitions.java b/samples/ApiDemos/src/com/example/android/apis/animation/Transitions.java
index b2983cd..4878c5f 100644
--- a/samples/ApiDemos/src/com/example/android/apis/animation/Transitions.java
+++ b/samples/ApiDemos/src/com/example/android/apis/animation/Transitions.java
@@ -24,6 +24,12 @@
 import android.transition.TransitionManager;
 import com.example.android.apis.R;
 
+/**
+ * This application demonstrates some of the capabilities and uses of the
+ * {@link android.transition transitions} APIs. Scenes and a TransitionManager
+ * are loaded from resource files and transitions are run between those scenes
+ * as well as a dynamically-configured scene.
+ */
 public class Transitions extends Activity {
 
     Scene mScene1, mScene2, mScene3;
@@ -39,6 +45,11 @@
 
         TransitionInflater inflater = TransitionInflater.from(this);
 
+        // Note that this is not the only way to create a Scene object, but that
+        // loading them from layout resources cooperates with the
+        // TransitionManager that we are also loading from resources, and which
+        // uses the same layout resource files to determine the scenes to transition
+        // from/to.
         mScene1 = Scene.getSceneForLayout(mSceneRoot, R.layout.transition_scene1, this);
         mScene2 = Scene.getSceneForLayout(mSceneRoot, R.layout.transition_scene2, this);
         mScene3 = Scene.getSceneForLayout(mSceneRoot, R.layout.transition_scene3, this);
@@ -58,7 +69,10 @@
                 mTransitionManager.transitionTo(mScene3);
                 break;
             case R.id.scene4:
-                TransitionManager.beginDelayedTransition(mSceneRoot, null);
+                // scene4 is not an actual 'Scene', but rather a dynamic change in the UI,
+                // transitioned to using beginDelayedTransition() to tell the TransitionManager
+                // to get ready to run a transition at the next frame
+                TransitionManager.beginDelayedTransition(mSceneRoot);
                 setNewSize(R.id.view1, 150, 25);
                 setNewSize(R.id.view2, 150, 25);
                 setNewSize(R.id.view3, 150, 25);
diff --git a/samples/BluetoothHDP/_index.jd b/samples/BluetoothHDP/_index.jd
index cf5f555..526e318 100644
--- a/samples/BluetoothHDP/_index.jd
+++ b/samples/BluetoothHDP/_index.jd
@@ -1,6 +1,5 @@
-page.tags="Bluetooth", "HDP"
-sample.tags="Bluetooth", "Health"
-sample.group="Connectivity"
+page.tags="Bluetooth", "HDP", "Health"
+sample.group=Connectivity
 @jd:body
 
 <p>A sample application that demonstrates how to communicate with a Bluetooth Health Device Profile (HDP) device.  This feature is available on Android 4.0 (API level 14) or above platforms. The Android Bluetooth Health API lets you create
diff --git a/samples/BluetoothLeGatt/_index.jd b/samples/BluetoothLeGatt/_index.jd
index b73d519..110ca4a 100644
--- a/samples/BluetoothLeGatt/_index.jd
+++ b/samples/BluetoothLeGatt/_index.jd
@@ -1,6 +1,5 @@
 page.tags="Bluetooth", "LE", "SMART"
-sample.tags="Bluetooth", "LE"
-sample.group="Connectivity"
+sample.group=Connectivity
 @jd:body
 
 <p>A sample application that demonstrates how to communicate with
diff --git a/testrunner/test_defs.xml b/testrunner/test_defs.xml
index 24e4dca..421641f 100644
--- a/testrunner/test_defs.xml
+++ b/testrunner/test_defs.xml
@@ -533,6 +533,13 @@
     continuous="true"
     description="SystemUI tests" />
 
+<test name="documentsui"
+    build_path="frameworks/base/packages/DocumentsUI/tests"
+    package="com.android.documentsui.tests"
+    coverage_target="DocumentsUI"
+    continuous="true"
+    description="DocumentsUI tests" />
+
 <!--  native tests  -->
 
 <!-- Bionic C++ -->