Merge "Fix inverted release-EGLContext-on-pause logic."
diff --git a/Android.mk b/Android.mk
index 8a8678d..35ee3fd 100644
--- a/Android.mk
+++ b/Android.mk
@@ -93,9 +93,9 @@
core/java/android/app/IWallpaperManager.aidl \
core/java/android/app/IWallpaperManagerCallback.aidl \
core/java/android/app/admin/IDevicePolicyManager.aidl \
- core/java/android/backup/IBackupManager.aidl \
- core/java/android/backup/IRestoreObserver.aidl \
- core/java/android/backup/IRestoreSession.aidl \
+ core/java/android/app/backup/IBackupManager.aidl \
+ core/java/android/app/backup/IRestoreObserver.aidl \
+ core/java/android/app/backup/IRestoreSession.aidl \
core/java/android/bluetooth/IBluetooth.aidl \
core/java/android/bluetooth/IBluetoothA2dp.aidl \
core/java/android/bluetooth/IBluetoothCallback.aidl \
diff --git a/CleanSpec.mk b/CleanSpec.mk
new file mode 100644
index 0000000..b6b8640
--- /dev/null
+++ b/CleanSpec.mk
@@ -0,0 +1,6 @@
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/com/android/internal/os/IDropBoxService.java)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/backup)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/com/android/internal/backup)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/backup)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/com/android/internal/backup)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/app)
diff --git a/api/current.xml b/api/current.xml
index fd8a180..4146859 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -19916,83 +19916,6 @@
>
</method>
</class>
-<class name="BackupAgent"
- extends="android.content.ContextWrapper"
- abstract="true"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<constructor name="BackupAgent"
- type="android.app.BackupAgent"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</constructor>
-<method name="onBackup"
- return="void"
- abstract="true"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="oldState" type="android.os.ParcelFileDescriptor">
-</parameter>
-<parameter name="data" type="android.backup.BackupDataOutput">
-</parameter>
-<parameter name="newState" type="android.os.ParcelFileDescriptor">
-</parameter>
-<exception name="IOException" type="java.io.IOException">
-</exception>
-</method>
-<method name="onCreate"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="onDestroy"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="onRestore"
- return="void"
- abstract="true"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="data" type="android.backup.BackupDataInput">
-</parameter>
-<parameter name="appVersionCode" type="int">
-</parameter>
-<parameter name="newState" type="android.os.ParcelFileDescriptor">
-</parameter>
-<exception name="IOException" type="java.io.IOException">
-</exception>
-</method>
-</class>
<class name="DatePickerDialog"
extends="android.app.AlertDialog"
abstract="false"
@@ -26974,6 +26897,692 @@
</field>
</class>
</package>
+<package name="android.app.backup"
+>
+<class name="AbsoluteFileBackupHelper"
+ extends="android.app.backup.FileBackupHelperBase"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.app.backup.BackupHelper">
+</implements>
+<constructor name="AbsoluteFileBackupHelper"
+ type="android.app.backup.AbsoluteFileBackupHelper"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="files" type="java.lang.String...">
+</parameter>
+</constructor>
+<method name="performBackup"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="oldState" type="android.os.ParcelFileDescriptor">
+</parameter>
+<parameter name="data" type="android.app.backup.BackupDataOutput">
+</parameter>
+<parameter name="newState" type="android.os.ParcelFileDescriptor">
+</parameter>
+</method>
+<method name="restoreEntity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="data" type="android.app.backup.BackupDataInputStream">
+</parameter>
+</method>
+</class>
+<class name="BackupAgent"
+ extends="android.content.ContextWrapper"
+ abstract="true"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="BackupAgent"
+ type="android.app.backup.BackupAgent"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="onBackup"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="oldState" type="android.os.ParcelFileDescriptor">
+</parameter>
+<parameter name="data" type="android.app.backup.BackupDataOutput">
+</parameter>
+<parameter name="newState" type="android.os.ParcelFileDescriptor">
+</parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+<method name="onCreate"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="onDestroy"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="onRestore"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="data" type="android.app.backup.BackupDataInput">
+</parameter>
+<parameter name="appVersionCode" type="int">
+</parameter>
+<parameter name="newState" type="android.os.ParcelFileDescriptor">
+</parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+</class>
+<class name="BackupDataInput"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="getDataSize"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getKey"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="readEntityData"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="data" type="byte[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+<parameter name="size" type="int">
+</parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+<method name="readNextHeader"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+<method name="skipEntityData"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+</class>
+<class name="BackupDataInputStream"
+ extends="java.io.InputStream"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="getKey"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="read"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+<method name="size"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+</class>
+<class name="BackupDataOutput"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="setKeyPrefix"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="keyPrefix" type="java.lang.String">
+</parameter>
+</method>
+<method name="writeEntityData"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="data" type="byte[]">
+</parameter>
+<parameter name="size" type="int">
+</parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+<method name="writeEntityHeader"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="key" type="java.lang.String">
+</parameter>
+<parameter name="dataSize" type="int">
+</parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+<field name="OP_DELETE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="OP_UPDATE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<interface name="BackupHelper"
+ abstract="true"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="performBackup"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="oldState" type="android.os.ParcelFileDescriptor">
+</parameter>
+<parameter name="data" type="android.app.backup.BackupDataOutput">
+</parameter>
+<parameter name="newState" type="android.os.ParcelFileDescriptor">
+</parameter>
+</method>
+<method name="restoreEntity"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="data" type="android.app.backup.BackupDataInputStream">
+</parameter>
+</method>
+<method name="writeNewStateDescription"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="fd" type="android.os.ParcelFileDescriptor">
+</parameter>
+</method>
+</interface>
+<class name="BackupHelperAgent"
+ extends="android.app.backup.BackupAgent"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="BackupHelperAgent"
+ type="android.app.backup.BackupHelperAgent"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="addHelper"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="keyPrefix" type="java.lang.String">
+</parameter>
+<parameter name="helper" type="android.app.backup.BackupHelper">
+</parameter>
+</method>
+<method name="onBackup"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="oldState" type="android.os.ParcelFileDescriptor">
+</parameter>
+<parameter name="data" type="android.app.backup.BackupDataOutput">
+</parameter>
+<parameter name="newState" type="android.os.ParcelFileDescriptor">
+</parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+<method name="onRestore"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="data" type="android.app.backup.BackupDataInput">
+</parameter>
+<parameter name="appVersionCode" type="int">
+</parameter>
+<parameter name="newState" type="android.os.ParcelFileDescriptor">
+</parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+</class>
+<class name="BackupManager"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="BackupManager"
+ type="android.app.backup.BackupManager"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+</constructor>
+<method name="beginRestoreSession"
+ return="android.app.backup.RestoreSession"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="dataChanged"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="dataChanged"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="packageName" type="java.lang.String">
+</parameter>
+</method>
+</class>
+<class name="FileBackupHelper"
+ extends="android.app.backup.FileBackupHelperBase"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.app.backup.BackupHelper">
+</implements>
+<constructor name="FileBackupHelper"
+ type="android.app.backup.FileBackupHelper"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="files" type="java.lang.String...">
+</parameter>
+</constructor>
+<method name="performBackup"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="oldState" type="android.os.ParcelFileDescriptor">
+</parameter>
+<parameter name="data" type="android.app.backup.BackupDataOutput">
+</parameter>
+<parameter name="newState" type="android.os.ParcelFileDescriptor">
+</parameter>
+</method>
+<method name="restoreEntity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="data" type="android.app.backup.BackupDataInputStream">
+</parameter>
+</method>
+</class>
+<class name="FileBackupHelperBase"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility=""
+>
+<method name="writeNewStateDescription"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="fd" type="android.os.ParcelFileDescriptor">
+</parameter>
+</method>
+</class>
+<class name="RestoreObserver"
+ extends="java.lang.Object"
+ abstract="true"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="RestoreObserver"
+ type="android.app.backup.RestoreObserver"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+</class>
+<class name="RestoreSession"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="endRestoreSession"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="restorePackage"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="packageName" type="java.lang.String">
+</parameter>
+<parameter name="observer" type="android.app.backup.RestoreObserver">
+</parameter>
+</method>
+</class>
+<class name="SharedPreferencesBackupHelper"
+ extends="android.app.backup.FileBackupHelperBase"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.app.backup.BackupHelper">
+</implements>
+<constructor name="SharedPreferencesBackupHelper"
+ type="android.app.backup.SharedPreferencesBackupHelper"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="prefGroups" type="java.lang.String...">
+</parameter>
+</constructor>
+<method name="performBackup"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="oldState" type="android.os.ParcelFileDescriptor">
+</parameter>
+<parameter name="data" type="android.app.backup.BackupDataOutput">
+</parameter>
+<parameter name="newState" type="android.os.ParcelFileDescriptor">
+</parameter>
+</method>
+<method name="restoreEntity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="data" type="android.app.backup.BackupDataInputStream">
+</parameter>
+</method>
+</class>
+</package>
<package name="android.appwidget"
>
<class name="AppWidgetHost"
@@ -27719,615 +28328,6 @@
</field>
</class>
</package>
-<package name="android.backup"
->
-<class name="AbsoluteFileBackupHelper"
- extends="android.backup.FileBackupHelperBase"
- abstract="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<implements name="android.backup.BackupHelper">
-</implements>
-<constructor name="AbsoluteFileBackupHelper"
- type="android.backup.AbsoluteFileBackupHelper"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="context" type="android.content.Context">
-</parameter>
-<parameter name="files" type="java.lang.String...">
-</parameter>
-</constructor>
-<method name="performBackup"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="oldState" type="android.os.ParcelFileDescriptor">
-</parameter>
-<parameter name="data" type="android.backup.BackupDataOutput">
-</parameter>
-<parameter name="newState" type="android.os.ParcelFileDescriptor">
-</parameter>
-</method>
-<method name="restoreEntity"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="data" type="android.backup.BackupDataInputStream">
-</parameter>
-</method>
-</class>
-<class name="BackupDataInput"
- extends="java.lang.Object"
- abstract="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<method name="getDataSize"
- return="int"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="getKey"
- return="java.lang.String"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="readEntityData"
- return="int"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="data" type="byte[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-<parameter name="size" type="int">
-</parameter>
-<exception name="IOException" type="java.io.IOException">
-</exception>
-</method>
-<method name="readNextHeader"
- return="boolean"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<exception name="IOException" type="java.io.IOException">
-</exception>
-</method>
-<method name="skipEntityData"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<exception name="IOException" type="java.io.IOException">
-</exception>
-</method>
-</class>
-<class name="BackupDataInputStream"
- extends="java.io.InputStream"
- abstract="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<method name="getKey"
- return="java.lang.String"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="read"
- return="int"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<exception name="IOException" type="java.io.IOException">
-</exception>
-</method>
-<method name="size"
- return="int"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-</class>
-<class name="BackupDataOutput"
- extends="java.lang.Object"
- abstract="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<method name="setKeyPrefix"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="keyPrefix" type="java.lang.String">
-</parameter>
-</method>
-<method name="writeEntityData"
- return="int"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="data" type="byte[]">
-</parameter>
-<parameter name="size" type="int">
-</parameter>
-<exception name="IOException" type="java.io.IOException">
-</exception>
-</method>
-<method name="writeEntityHeader"
- return="int"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="key" type="java.lang.String">
-</parameter>
-<parameter name="dataSize" type="int">
-</parameter>
-<exception name="IOException" type="java.io.IOException">
-</exception>
-</method>
-<field name="OP_DELETE"
- type="int"
- transient="false"
- volatile="false"
- value="2"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="OP_UPDATE"
- type="int"
- transient="false"
- volatile="false"
- value="1"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-</class>
-<interface name="BackupHelper"
- abstract="true"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<method name="performBackup"
- return="void"
- abstract="true"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="oldState" type="android.os.ParcelFileDescriptor">
-</parameter>
-<parameter name="data" type="android.backup.BackupDataOutput">
-</parameter>
-<parameter name="newState" type="android.os.ParcelFileDescriptor">
-</parameter>
-</method>
-<method name="restoreEntity"
- return="void"
- abstract="true"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="data" type="android.backup.BackupDataInputStream">
-</parameter>
-</method>
-<method name="writeNewStateDescription"
- return="void"
- abstract="true"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="fd" type="android.os.ParcelFileDescriptor">
-</parameter>
-</method>
-</interface>
-<class name="BackupHelperAgent"
- extends="android.app.BackupAgent"
- abstract="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<constructor name="BackupHelperAgent"
- type="android.backup.BackupHelperAgent"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</constructor>
-<method name="addHelper"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="keyPrefix" type="java.lang.String">
-</parameter>
-<parameter name="helper" type="android.backup.BackupHelper">
-</parameter>
-</method>
-<method name="onBackup"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="oldState" type="android.os.ParcelFileDescriptor">
-</parameter>
-<parameter name="data" type="android.backup.BackupDataOutput">
-</parameter>
-<parameter name="newState" type="android.os.ParcelFileDescriptor">
-</parameter>
-<exception name="IOException" type="java.io.IOException">
-</exception>
-</method>
-<method name="onRestore"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="data" type="android.backup.BackupDataInput">
-</parameter>
-<parameter name="appVersionCode" type="int">
-</parameter>
-<parameter name="newState" type="android.os.ParcelFileDescriptor">
-</parameter>
-<exception name="IOException" type="java.io.IOException">
-</exception>
-</method>
-</class>
-<class name="BackupManager"
- extends="java.lang.Object"
- abstract="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<constructor name="BackupManager"
- type="android.backup.BackupManager"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="context" type="android.content.Context">
-</parameter>
-</constructor>
-<method name="beginRestoreSession"
- return="android.backup.RestoreSession"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="dataChanged"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="dataChanged"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="packageName" type="java.lang.String">
-</parameter>
-</method>
-</class>
-<class name="FileBackupHelper"
- extends="android.backup.FileBackupHelperBase"
- abstract="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<implements name="android.backup.BackupHelper">
-</implements>
-<constructor name="FileBackupHelper"
- type="android.backup.FileBackupHelper"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="context" type="android.content.Context">
-</parameter>
-<parameter name="files" type="java.lang.String...">
-</parameter>
-</constructor>
-<method name="performBackup"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="oldState" type="android.os.ParcelFileDescriptor">
-</parameter>
-<parameter name="data" type="android.backup.BackupDataOutput">
-</parameter>
-<parameter name="newState" type="android.os.ParcelFileDescriptor">
-</parameter>
-</method>
-<method name="restoreEntity"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="data" type="android.backup.BackupDataInputStream">
-</parameter>
-</method>
-</class>
-<class name="FileBackupHelperBase"
- extends="java.lang.Object"
- abstract="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility=""
->
-<method name="writeNewStateDescription"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="fd" type="android.os.ParcelFileDescriptor">
-</parameter>
-</method>
-</class>
-<class name="RestoreObserver"
- extends="java.lang.Object"
- abstract="true"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<constructor name="RestoreObserver"
- type="android.backup.RestoreObserver"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</constructor>
-</class>
-<class name="RestoreSession"
- extends="java.lang.Object"
- abstract="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<method name="endRestoreSession"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="restorePackage"
- return="int"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="packageName" type="java.lang.String">
-</parameter>
-<parameter name="observer" type="android.backup.RestoreObserver">
-</parameter>
-</method>
-</class>
-<class name="SharedPreferencesBackupHelper"
- extends="android.backup.FileBackupHelperBase"
- abstract="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<implements name="android.backup.BackupHelper">
-</implements>
-<constructor name="SharedPreferencesBackupHelper"
- type="android.backup.SharedPreferencesBackupHelper"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="context" type="android.content.Context">
-</parameter>
-<parameter name="prefGroups" type="java.lang.String...">
-</parameter>
-</constructor>
-<method name="performBackup"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="oldState" type="android.os.ParcelFileDescriptor">
-</parameter>
-<parameter name="data" type="android.backup.BackupDataOutput">
-</parameter>
-<parameter name="newState" type="android.os.ParcelFileDescriptor">
-</parameter>
-</method>
-<method name="restoreEntity"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="data" type="android.backup.BackupDataInputStream">
-</parameter>
-</method>
-</class>
-</package>
<package name="android.bluetooth"
>
<class name="BluetoothAdapter"
@@ -204064,6 +204064,17 @@
synchronized="false"
static="false"
final="false"
+ deprecated="deprecated"
+ visibility="public"
+>
+</method>
+<method name="getCheckedItemIds"
+ return="long[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
deprecated="not deprecated"
visibility="public"
>
diff --git a/camera/libcameraservice/CameraService.cpp b/camera/libcameraservice/CameraService.cpp
index 7e81e90..00bd54e 100644
--- a/camera/libcameraservice/CameraService.cpp
+++ b/camera/libcameraservice/CameraService.cpp
@@ -1291,8 +1291,26 @@
client->dataCallback(CAMERA_MSG_PREVIEW_FRAME, frame);
}
+static const int kDumpLockRetries = 50;
+static const int kDumpLockSleep = 60000;
+
+static bool tryLock(Mutex& mutex)
+{
+ bool locked = false;
+ for (int i = 0; i < kDumpLockRetries; ++i) {
+ if (mutex.tryLock() == NO_ERROR) {
+ locked = true;
+ break;
+ }
+ usleep(kDumpLockSleep);
+ }
+ return locked;
+}
+
status_t CameraService::dump(int fd, const Vector<String16>& args)
{
+ static const char* kDeadlockedString = "CameraService may be deadlocked\n";
+
const size_t SIZE = 256;
char buffer[SIZE];
String8 result;
@@ -1304,7 +1322,13 @@
result.append(buffer);
write(fd, result.string(), result.size());
} else {
- AutoMutex lock(&mServiceLock);
+ bool locked = tryLock(mServiceLock);
+ // failed to lock - CameraService is probably deadlocked
+ if (!locked) {
+ String8 result(kDeadlockedString);
+ write(fd, result.string(), result.size());
+ }
+
if (mClient != 0) {
sp<Client> currentClient = mClient.promote();
sprintf(buffer, "Client (%p) PID: %d\n",
@@ -1317,6 +1341,8 @@
result.append("No camera client yet.\n");
write(fd, result.string(), result.size());
}
+
+ if (locked) mServiceLock.unlock();
}
return NO_ERROR;
}
diff --git a/cleanspec.mk b/cleanspec.mk
deleted file mode 100644
index 683e303..0000000
--- a/cleanspec.mk
+++ /dev/null
@@ -1 +0,0 @@
-$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/com/android/internal/os/IDropBoxService.java)
diff --git a/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java b/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java
index 67c658d..d040b44 100644
--- a/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java
+++ b/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java
@@ -16,10 +16,10 @@
package com.android.commands.bmgr;
-import android.backup.IBackupManager;
-import android.backup.IRestoreObserver;
-import android.backup.IRestoreSession;
-import android.backup.RestoreSet;
+import android.app.backup.RestoreSet;
+import android.app.backup.IBackupManager;
+import android.app.backup.IRestoreObserver;
+import android.app.backup.IRestoreSession;
import android.os.RemoteException;
import android.os.ServiceManager;
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 0756c71..7c49bb7 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -16,6 +16,7 @@
package android.app;
+import android.app.backup.BackupAgent;
import android.content.BroadcastReceiver;
import android.content.ComponentCallbacks;
import android.content.ComponentName;
diff --git a/core/java/android/app/FullBackupAgent.java b/core/java/android/app/FullBackupAgent.java
index db198ad..dcfa63f 100644
--- a/core/java/android/app/FullBackupAgent.java
+++ b/core/java/android/app/FullBackupAgent.java
@@ -1,8 +1,9 @@
package android.app;
-import android.backup.BackupDataInput;
-import android.backup.BackupDataOutput;
-import android.backup.FileBackupHelper;
+import android.app.backup.BackupAgent;
+import android.app.backup.BackupDataInput;
+import android.app.backup.BackupDataOutput;
+import android.app.backup.FileBackupHelper;
import android.os.ParcelFileDescriptor;
import android.util.Log;
diff --git a/core/java/android/app/IBackupAgent.aidl b/core/java/android/app/IBackupAgent.aidl
index 0de6ad9..fed2bc5 100644
--- a/core/java/android/app/IBackupAgent.aidl
+++ b/core/java/android/app/IBackupAgent.aidl
@@ -16,13 +16,13 @@
package android.app;
-import android.backup.IBackupManager;
+import android.app.backup.IBackupManager;
import android.os.ParcelFileDescriptor;
/**
* Interface presented by applications being asked to participate in the
- * backup & restore mechanism. End user code does not typically implement
- * this interface; they subclass BackupAgent instead.
+ * backup & restore mechanism. End user code will not typically implement
+ * this interface directly; they subclass BackupAgent instead.
*
* {@hide}
*/
diff --git a/core/java/android/backup/AbsoluteFileBackupHelper.java b/core/java/android/app/backup/AbsoluteFileBackupHelper.java
similarity index 98%
rename from core/java/android/backup/AbsoluteFileBackupHelper.java
rename to core/java/android/app/backup/AbsoluteFileBackupHelper.java
index 5a8034b..677224c 100644
--- a/core/java/android/backup/AbsoluteFileBackupHelper.java
+++ b/core/java/android/app/backup/AbsoluteFileBackupHelper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
import android.content.Context;
import android.os.ParcelFileDescriptor;
diff --git a/core/java/android/app/BackupAgent.java b/core/java/android/app/backup/BackupAgent.java
similarity index 96%
rename from core/java/android/app/BackupAgent.java
rename to core/java/android/app/backup/BackupAgent.java
index 4695c21..d0cb148 100644
--- a/core/java/android/app/BackupAgent.java
+++ b/core/java/android/app/backup/BackupAgent.java
@@ -14,12 +14,10 @@
* limitations under the License.
*/
-package android.app;
+package android.app.backup;
import android.app.IBackupAgent;
-import android.backup.BackupDataInput;
-import android.backup.BackupDataOutput;
-import android.backup.IBackupManager;
+import android.app.backup.IBackupManager;
import android.content.Context;
import android.content.ContextWrapper;
import android.os.Binder;
@@ -39,7 +37,7 @@
* respectively.
* <p>
* A backup agent based on convenient helper classes is available in
- * {@link android.backup.BackupHelperAgent} for less complex implementation
+ * {@link android.app.backup.BackupHelperAgent} for less complex implementation
* requirements.
* <p>
* STOPSHIP write more documentation about the backup process here.
@@ -87,7 +85,7 @@
* The application is being restored from backup and should replace any
* existing data with the contents of the backup. The backup data is
* provided in the file descriptor pointed to by the
- * {@link android.backup.BackupDataInput} instance <code>data</code>. Once
+ * {@link android.app.backup.BackupDataInput} instance <code>data</code>. Once
* the restore is finished, the application should write a representation of
* the final state to the <code>newState</code> file descriptor.
* <p>
diff --git a/core/java/android/backup/BackupDataInput.java b/core/java/android/app/backup/BackupDataInput.java
similarity index 98%
rename from core/java/android/backup/BackupDataInput.java
rename to core/java/android/app/backup/BackupDataInput.java
index a08ee75..2da0c11 100644
--- a/core/java/android/backup/BackupDataInput.java
+++ b/core/java/android/app/backup/BackupDataInput.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
import java.io.FileDescriptor;
import java.io.IOException;
@@ -131,7 +131,7 @@
/**
* Consume the current record's data without actually reading it into a buffer
- * for further processing. This allows a {@link android.app.BackupAgent} to
+ * for further processing. This allows a {@link android.app.backup.BackupAgent} to
* efficiently discard obsolete or otherwise uninteresting records during the
* restore operation.
*
diff --git a/core/java/android/backup/BackupDataInputStream.java b/core/java/android/app/backup/BackupDataInputStream.java
similarity index 97%
rename from core/java/android/backup/BackupDataInputStream.java
rename to core/java/android/app/backup/BackupDataInputStream.java
index 503b3c1..a7f4ba6 100644
--- a/core/java/android/backup/BackupDataInputStream.java
+++ b/core/java/android/app/backup/BackupDataInputStream.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
import java.io.InputStream;
import java.io.IOException;
diff --git a/core/java/android/backup/BackupDataOutput.java b/core/java/android/app/backup/BackupDataOutput.java
similarity index 98%
rename from core/java/android/backup/BackupDataOutput.java
rename to core/java/android/app/backup/BackupDataOutput.java
index 34879d8..53b1d46 100644
--- a/core/java/android/backup/BackupDataOutput.java
+++ b/core/java/android/app/backup/BackupDataOutput.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
import java.io.FileDescriptor;
import java.io.IOException;
diff --git a/core/java/android/backup/BackupHelper.java b/core/java/android/app/backup/BackupHelper.java
similarity index 93%
rename from core/java/android/backup/BackupHelper.java
rename to core/java/android/app/backup/BackupHelper.java
index 7eedd01..dca23881 100644
--- a/core/java/android/backup/BackupHelper.java
+++ b/core/java/android/app/backup/BackupHelper.java
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
import android.os.ParcelFileDescriptor;
/**
* A convenient interface to be used with the
- * {@link android.backup.BackupHelperAgent} to implement backup and restore of
+ * {@link android.app.backup.BackupHelperAgent} to implement backup and restore of
* arbitrary data types.
* <p>
* STOPSHOP: document!
diff --git a/core/java/android/backup/BackupHelperAgent.java b/core/java/android/app/backup/BackupHelperAgent.java
similarity index 97%
rename from core/java/android/backup/BackupHelperAgent.java
rename to core/java/android/app/backup/BackupHelperAgent.java
index 7fb44f4..6f4a031 100644
--- a/core/java/android/backup/BackupHelperAgent.java
+++ b/core/java/android/app/backup/BackupHelperAgent.java
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
-import android.app.BackupAgent;
import android.os.ParcelFileDescriptor;
import java.io.IOException;
diff --git a/core/java/android/backup/BackupHelperDispatcher.java b/core/java/android/app/backup/BackupHelperDispatcher.java
similarity index 99%
rename from core/java/android/backup/BackupHelperDispatcher.java
rename to core/java/android/app/backup/BackupHelperDispatcher.java
index 68076db..5466db5 100644
--- a/core/java/android/backup/BackupHelperDispatcher.java
+++ b/core/java/android/app/backup/BackupHelperDispatcher.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
import android.os.ParcelFileDescriptor;
import android.util.Log;
diff --git a/core/java/android/backup/BackupManager.java b/core/java/android/app/backup/BackupManager.java
similarity index 88%
rename from core/java/android/backup/BackupManager.java
rename to core/java/android/app/backup/BackupManager.java
index 2dff975..12d4daf 100644
--- a/core/java/android/backup/BackupManager.java
+++ b/core/java/android/app/backup/BackupManager.java
@@ -14,9 +14,11 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
-import android.backup.RestoreSession;
+import android.app.backup.RestoreSession;
+import android.app.backup.IBackupManager;
+import android.app.backup.IRestoreSession;
import android.content.Context;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -34,12 +36,12 @@
* operation actually occurs.
* <p>
* The backup operation itself begins with the system launching the
- * {@link android.app.BackupAgent} subclass declared in your manifest. See the
- * documentation for {@link android.app.BackupAgent} for a detailed description
+ * {@link android.app.backup.BackupAgent} subclass declared in your manifest. See the
+ * documentation for {@link android.app.backup.BackupAgent} for a detailed description
* of how the backup then proceeds.
* <p>
* A simple implementation of a BackupAgent useful for backing up Preferences
- * and files is available by using {@link android.backup.BackupHelperAgent}.
+ * and files is available by using {@link android.app.backup.BackupHelperAgent}.
* <p>
* STOPSHIP: more documentation!
* <p>
@@ -82,7 +84,7 @@
/**
* Notifies the Android backup system that your application wishes to back up
* new changes to its data. A backup operation using your application's
- * {@link android.app.BackupAgent} subclass will be scheduled when you call this method.
+ * {@link android.app.backup.BackupAgent} subclass will be scheduled when you call this method.
*/
public void dataChanged() {
checkServiceBinder();
@@ -116,7 +118,7 @@
/**
* Begin the process of restoring data from backup. See the
- * {@link android.backup.RestoreSession} class for documentation on that process.
+ * {@link android.app.backup.RestoreSession} class for documentation on that process.
*/
public RestoreSession beginRestoreSession() {
RestoreSession session = null;
diff --git a/core/java/android/backup/FileBackupHelper.java b/core/java/android/app/backup/FileBackupHelper.java
similarity index 92%
rename from core/java/android/backup/FileBackupHelper.java
rename to core/java/android/app/backup/FileBackupHelper.java
index cc859e2..b42049e 100644
--- a/core/java/android/backup/FileBackupHelper.java
+++ b/core/java/android/app/backup/FileBackupHelper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
import android.content.Context;
import android.os.ParcelFileDescriptor;
@@ -24,7 +24,7 @@
/**
* A helper class which can be used in conjunction with
- * {@link android.backup.BackupHelperAgent} to manage the backup of a set of
+ * {@link android.app.backup.BackupHelperAgent} to manage the backup of a set of
* files. Whenever backup is performed, all files changed since the last backup
* will be saved in their entirety. During the first time the backup happens,
* all the files in the list will be backed up. Note that this should only be
@@ -69,9 +69,9 @@
* now. When <code>oldState</code> is <code>null</code>, all the files will
* be backed up.
* <p>
- * This should be called from {@link android.backup.BackupHelperAgent}
+ * This should be called from {@link android.app.backup.BackupHelperAgent}
* directly. See
- * {@link android.app.BackupAgent#onBackup(ParcelFileDescriptor, BackupDataOutput, ParcelFileDescriptor)}
+ * {@link android.app.backup.BackupAgent#onBackup(ParcelFileDescriptor, BackupDataOutput, ParcelFileDescriptor)}
* for a description of parameter meanings.
*/
public void performBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
diff --git a/core/java/android/backup/FileBackupHelperBase.java b/core/java/android/app/backup/FileBackupHelperBase.java
similarity index 97%
rename from core/java/android/backup/FileBackupHelperBase.java
rename to core/java/android/app/backup/FileBackupHelperBase.java
index 7cb1ccc..1e3158f 100644
--- a/core/java/android/backup/FileBackupHelperBase.java
+++ b/core/java/android/app/backup/FileBackupHelperBase.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
import android.content.Context;
import android.os.ParcelFileDescriptor;
@@ -24,7 +24,7 @@
import java.io.FileDescriptor;
/**
- * Base class for the {@link android.backup.FileBackupHelper} implementation.
+ * Base class for the {@link android.app.backup.FileBackupHelper} implementation.
*/
class FileBackupHelperBase {
private static final String TAG = "FileBackupHelperBase";
diff --git a/core/java/android/backup/IBackupManager.aidl b/core/java/android/app/backup/IBackupManager.aidl
similarity index 97%
rename from core/java/android/backup/IBackupManager.aidl
rename to core/java/android/app/backup/IBackupManager.aidl
index d94b066..23d6351 100644
--- a/core/java/android/backup/IBackupManager.aidl
+++ b/core/java/android/app/backup/IBackupManager.aidl
@@ -14,16 +14,16 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
-import android.backup.IRestoreSession;
+import android.app.backup.IRestoreSession;
/**
* Direct interface to the Backup Manager Service that applications invoke on. The only
* operation currently needed is a simple notification that the app has made changes to
* data it wishes to back up, so the system should run a backup pass.
*
- * Apps will use the {@link android.backup.BackupManager} class rather than going through
+ * Apps will use the {@link android.app.backup.BackupManager} class rather than going through
* this Binder interface directly.
*
* {@hide}
diff --git a/core/java/android/backup/IRestoreObserver.aidl b/core/java/android/app/backup/IRestoreObserver.aidl
similarity index 98%
rename from core/java/android/backup/IRestoreObserver.aidl
rename to core/java/android/app/backup/IRestoreObserver.aidl
index 59e59fc..75d0d17 100644
--- a/core/java/android/backup/IRestoreObserver.aidl
+++ b/core/java/android/app/backup/IRestoreObserver.aidl
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
/**
* Callback class for receiving progress reports during a restore operation.
diff --git a/core/java/android/backup/IRestoreSession.aidl b/core/java/android/app/backup/IRestoreSession.aidl
similarity index 96%
rename from core/java/android/backup/IRestoreSession.aidl
rename to core/java/android/app/backup/IRestoreSession.aidl
index bead395..58c21fe 100644
--- a/core/java/android/backup/IRestoreSession.aidl
+++ b/core/java/android/app/backup/IRestoreSession.aidl
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
-import android.backup.RestoreSet;
-import android.backup.IRestoreObserver;
+import android.app.backup.RestoreSet;
+import android.app.backup.IRestoreObserver;
/**
* Binder interface used by clients who wish to manage a restore operation. Every
diff --git a/core/java/android/backup/RestoreObserver.java b/core/java/android/app/backup/RestoreObserver.java
similarity index 98%
rename from core/java/android/backup/RestoreObserver.java
rename to core/java/android/app/backup/RestoreObserver.java
index e4182750..7a5e10b 100644
--- a/core/java/android/backup/RestoreObserver.java
+++ b/core/java/android/app/backup/RestoreObserver.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
/**
* Callback class for receiving progress reports during a restore operation. These
diff --git a/core/java/android/backup/RestoreSession.java b/core/java/android/app/backup/RestoreSession.java
similarity index 97%
rename from core/java/android/backup/RestoreSession.java
rename to core/java/android/app/backup/RestoreSession.java
index bc410c4..730a21f 100644
--- a/core/java/android/backup/RestoreSession.java
+++ b/core/java/android/app/backup/RestoreSession.java
@@ -14,11 +14,12 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
-import android.backup.IRestoreSession;
-import android.backup.RestoreObserver;
-import android.backup.RestoreSet;
+import android.app.backup.RestoreObserver;
+import android.app.backup.RestoreSet;
+import android.app.backup.IRestoreObserver;
+import android.app.backup.IRestoreSession;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
diff --git a/core/java/android/backup/RestoreSet.aidl b/core/java/android/app/backup/RestoreSet.aidl
similarity index 95%
rename from core/java/android/backup/RestoreSet.aidl
rename to core/java/android/app/backup/RestoreSet.aidl
index 42e77bf..ab1b125 100644
--- a/core/java/android/backup/RestoreSet.aidl
+++ b/core/java/android/app/backup/RestoreSet.aidl
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
parcelable RestoreSet;
\ No newline at end of file
diff --git a/core/java/android/backup/RestoreSet.java b/core/java/android/app/backup/RestoreSet.java
similarity index 98%
rename from core/java/android/backup/RestoreSet.java
rename to core/java/android/app/backup/RestoreSet.java
index eeca148..0431977 100644
--- a/core/java/android/backup/RestoreSet.java
+++ b/core/java/android/app/backup/RestoreSet.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
import android.os.Parcel;
import android.os.Parcelable;
diff --git a/core/java/android/backup/SharedPreferencesBackupHelper.java b/core/java/android/app/backup/SharedPreferencesBackupHelper.java
similarity index 96%
rename from core/java/android/backup/SharedPreferencesBackupHelper.java
rename to core/java/android/app/backup/SharedPreferencesBackupHelper.java
index 7ba80db..d35b10c 100644
--- a/core/java/android/backup/SharedPreferencesBackupHelper.java
+++ b/core/java/android/app/backup/SharedPreferencesBackupHelper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.backup;
+package android.app.backup;
import android.content.Context;
import android.content.SharedPreferences;
@@ -25,7 +25,7 @@
/**
* A helper class which can be used in conjunction with
- * {@link android.backup.BackupHelperAgent} to manage the backup of
+ * {@link android.app.backup.BackupHelperAgent} to manage the backup of
* {@link android.content.SharedPreferences}. Whenever backup is performed it
* will back up all named shared preferences which have changed since the last
* backup.
diff --git a/core/java/android/backup/package.html b/core/java/android/app/backup/package.html
similarity index 65%
rename from core/java/android/backup/package.html
rename to core/java/android/app/backup/package.html
index 13c0eb8..8d58e0c 100644
--- a/core/java/android/backup/package.html
+++ b/core/java/android/app/backup/package.html
@@ -2,12 +2,12 @@
<BODY>
<p>Package containing the backup and restore functionality available to
applications. All backup management is controlled through
-{@link android.backup.BackupManager}. Individual backup functionality is
-implemented through a subclass {@link android.app.BackupAgent} and a
+{@link android.app.backup.BackupManager}. Individual backup functionality is
+implemented through a subclass {@link android.app.backup.BackupAgent} and a
simple and easy-to-use implementation is provided in
-{@link android.backup.BackupHelperAgent}.</p>
+{@link android.app.backup.BackupHelperAgent}.</p>
-<p>STOPSHIP: add more documenation and remove Dev Guide link if not written!</p>
+<p>STOPSHIP: add more documentation and remove Dev Guide link if not written!</p>
<p>The backup APIs let applications:</p>
<ul>
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 8d136f1..2b0e7e7 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -1489,7 +1489,7 @@
/**
* Use with {@link #getSystemService} to retrieve an
- * {@link android.backup.IBackupManager IBackupManager} for communicating
+ * {@link android.app.backup.IBackupManager IBackupManager} for communicating
* with the backup mechanism.
* @hide
*
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 5d5bd9c..8c8d3e5 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -2025,7 +2025,10 @@
InputConnection ic = getCurrentInputConnection();
mExtractedText = ic == null? null
: ic.getExtractedText(req, InputConnection.GET_EXTRACTED_TEXT_MONITOR);
-
+ if (mExtractedText == null || ic == null) {
+ Log.e(TAG, "Unexpected null in startExtractingText : mExtractedText = "
+ + mExtractedText + ", input connection = " + ic);
+ }
final EditorInfo ei = getCurrentInputEditorInfo();
try {
diff --git a/core/java/android/util/LongSparseArray.java b/core/java/android/util/LongSparseArray.java
index d90045f..1ec8be6 100644
--- a/core/java/android/util/LongSparseArray.java
+++ b/core/java/android/util/LongSparseArray.java
@@ -48,6 +48,28 @@
mValues = new Object[initialCapacity];
mSize = 0;
}
+
+ /**
+ * @return A copy of all keys contained in the sparse array.
+ */
+ public long[] getKeys() {
+ int length = mKeys.length;
+ long[] result = new long[length];
+ System.arraycopy(mKeys, 0, result, 0, length);
+ return result;
+ }
+
+ /**
+ * Sets all supplied keys to the given unique value.
+ * @param keys Keys to set
+ * @param uniqueValue Value to set all supplied keys to
+ */
+ public void setValues(long[] keys, E uniqueValue) {
+ int length = keys.length;
+ for (int i = 0; i < length; i++) {
+ put(keys[i], uniqueValue);
+ }
+ }
/**
* Gets the Object mapped from the specified key, or <code>null</code>
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index e3eb6db..1a9c0df5 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -30,6 +30,7 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
+import android.util.LongSparseArray;
import android.util.SparseBooleanArray;
import android.view.FocusFinder;
import android.view.KeyEvent;
@@ -131,6 +132,7 @@
private int mChoiceMode = CHOICE_MODE_NONE;
private SparseBooleanArray mCheckStates;
+ private LongSparseArray<Boolean> mCheckedIdStates;
// used for temporary calculations.
private final Rect mTempRect = new Rect();
@@ -453,6 +455,12 @@
checkSelectionChanged();
}
+ if (mChoiceMode != CHOICE_MODE_NONE &&
+ mAdapter.hasStableIds() &&
+ mCheckedIdStates == null) {
+ mCheckedIdStates = new LongSparseArray<Boolean>();
+ }
+
} else {
mAreAllItemsSelectable = true;
checkFocus();
@@ -463,6 +471,10 @@
if (mCheckStates != null) {
mCheckStates.clear();
}
+
+ if (mCheckedIdStates != null) {
+ mCheckedIdStates.clear();
+ }
requestLayout();
}
@@ -3310,8 +3322,13 @@
*/
public void setChoiceMode(int choiceMode) {
mChoiceMode = choiceMode;
- if (mChoiceMode != CHOICE_MODE_NONE && mCheckStates == null) {
- mCheckStates = new SparseBooleanArray();
+ if (mChoiceMode != CHOICE_MODE_NONE) {
+ if (mCheckStates == null) {
+ mCheckStates = new SparseBooleanArray();
+ }
+ if (mCheckedIdStates == null && mAdapter != null && mAdapter.hasStableIds()) {
+ mCheckedIdStates = new LongSparseArray<Boolean>();
+ }
}
}
@@ -3323,14 +3340,25 @@
handled = true;
if (mChoiceMode == CHOICE_MODE_MULTIPLE) {
- boolean oldValue = mCheckStates.get(position, false);
- mCheckStates.put(position, !oldValue);
+ boolean newValue = !mCheckStates.get(position, false);
+ mCheckStates.put(position, newValue);
+ if (mCheckedIdStates != null && mAdapter.hasStableIds()) {
+ if (newValue) {
+ mCheckedIdStates.put(mAdapter.getItemId(position), Boolean.TRUE);
+ } else {
+ mCheckedIdStates.delete(mAdapter.getItemId(position));
+ }
+ }
} else {
- boolean oldValue = mCheckStates.get(position, false);
- if (!oldValue) {
+ boolean newValue = !mCheckStates.get(position, false);
+ if (newValue) {
mCheckStates.clear();
mCheckStates.put(position, true);
- }
+ if (mCheckedIdStates != null && mAdapter.hasStableIds()) {
+ mCheckedIdStates.clear();
+ mCheckedIdStates.put(mAdapter.getItemId(position), Boolean.TRUE);
+ }
+ }
}
mDataChanged = true;
@@ -3358,16 +3386,30 @@
if (mChoiceMode == CHOICE_MODE_MULTIPLE) {
mCheckStates.put(position, value);
+ if (mCheckedIdStates != null && mAdapter.hasStableIds()) {
+ if (value) {
+ mCheckedIdStates.put(mAdapter.getItemId(position), Boolean.TRUE);
+ } else {
+ mCheckedIdStates.delete(mAdapter.getItemId(position));
+ }
+ }
} else {
+ boolean updateIds = mCheckedIdStates != null && mAdapter.hasStableIds();
// Clear all values if we're checking something, or unchecking the currently
// selected item
if (value || isItemChecked(position)) {
mCheckStates.clear();
+ if (updateIds) {
+ mCheckedIdStates.clear();
+ }
}
// this may end up selecting the value we just cleared but this way
// we ensure length of mCheckStates is 1, a fact getCheckedItemPosition relies on
if (value) {
mCheckStates.put(position, true);
+ if (updateIds) {
+ mCheckedIdStates.put(mAdapter.getItemId(position), Boolean.TRUE);
+ }
}
}
@@ -3433,38 +3475,39 @@
/**
* Returns the set of checked items ids. The result is only valid if the
- * choice mode has not been set to {@link #CHOICE_MODE_SINGLE}.
+ * choice mode has not been set to {@link #CHOICE_MODE_NONE}.
+ *
+ * @return A new array which contains the id of each checked item in the
+ * list.
+ *
+ * @deprecated Use {@link #getCheckedItemIds()} instead.
+ */
+ public long[] getCheckItemIds() {
+ return getCheckedItemIds();
+ }
+
+ /**
+ * Returns the set of checked items ids. The result is only valid if the
+ * choice mode has not been set to {@link #CHOICE_MODE_NONE} and the adapter
+ * has stable IDs. ({@link ListAdapter#hasStableIds()} == {@code true})
*
* @return A new array which contains the id of each checked item in the
* list.
*/
- public long[] getCheckItemIds() {
- if (mChoiceMode != CHOICE_MODE_NONE && mCheckStates != null && mAdapter != null) {
- final SparseBooleanArray states = mCheckStates;
- final int count = states.size();
- final long[] ids = new long[count];
- final ListAdapter adapter = mAdapter;
-
- int checkedCount = 0;
- for (int i = 0; i < count; i++) {
- if (states.valueAt(i)) {
- ids[checkedCount++] = adapter.getItemId(states.keyAt(i));
- }
- }
-
- // Trim array if needed. mCheckStates may contain false values
- // resulting in checkedCount being smaller than count.
- if (checkedCount == count) {
- return ids;
- } else {
- final long[] result = new long[checkedCount];
- System.arraycopy(ids, 0, result, 0, checkedCount);
-
- return result;
- }
+ public long[] getCheckedItemIds() {
+ if (mChoiceMode == CHOICE_MODE_NONE || mCheckedIdStates == null || mAdapter == null) {
+ return new long[0];
}
-
- return new long[0];
+
+ final LongSparseArray<Boolean> idStates = mCheckedIdStates;
+ final int count = idStates.size();
+ final long[] ids = new long[count];
+
+ for (int i = 0; i < count; i++) {
+ ids[i] = idStates.keyAt(i);
+ }
+
+ return ids;
}
/**
@@ -3474,17 +3517,23 @@
if (mCheckStates != null) {
mCheckStates.clear();
}
+ if (mCheckedIdStates != null) {
+ mCheckedIdStates.clear();
+ }
}
static class SavedState extends BaseSavedState {
SparseBooleanArray checkState;
+ LongSparseArray<Boolean> checkIdState;
/**
* Constructor called from {@link ListView#onSaveInstanceState()}
*/
- SavedState(Parcelable superState, SparseBooleanArray checkState) {
+ SavedState(Parcelable superState, SparseBooleanArray checkState,
+ LongSparseArray<Boolean> checkIdState) {
super(superState);
this.checkState = checkState;
+ this.checkIdState = checkIdState;
}
/**
@@ -3493,12 +3542,19 @@
private SavedState(Parcel in) {
super(in);
checkState = in.readSparseBooleanArray();
+ long[] idState = in.createLongArray();
+
+ if (idState.length > 0) {
+ checkIdState = new LongSparseArray<Boolean>();
+ checkIdState.setValues(idState, Boolean.TRUE);
+ }
}
@Override
public void writeToParcel(Parcel out, int flags) {
super.writeToParcel(out, flags);
out.writeSparseBooleanArray(checkState);
+ out.writeLongArray(checkIdState != null ? checkIdState.getKeys() : new long[0]);
}
@Override
@@ -3523,7 +3579,7 @@
@Override
public Parcelable onSaveInstanceState() {
Parcelable superState = super.onSaveInstanceState();
- return new SavedState(superState, mCheckStates);
+ return new SavedState(superState, mCheckStates, mCheckedIdStates);
}
@Override
@@ -3536,5 +3592,8 @@
mCheckStates = ss.checkState;
}
+ if (ss.checkIdState != null) {
+ mCheckedIdStates = ss.checkIdState;
+ }
}
}
diff --git a/core/java/android/widget/NumberPicker.java b/core/java/android/widget/NumberPicker.java
index fd18db4..582d9e4 100644
--- a/core/java/android/widget/NumberPicker.java
+++ b/core/java/android/widget/NumberPicker.java
@@ -473,10 +473,13 @@
private int getSelectedPos(String str) {
if (mDisplayedValues == null) {
- return Integer.parseInt(str);
+ try {
+ return Integer.parseInt(str);
+ } catch (NumberFormatException e) {
+ /* Ignore as if it's not a number we don't care */
+ }
} else {
for (int i = 0; i < mDisplayedValues.length; i++) {
-
/* Don't force the user to type in jan when ja will do */
str = str.toLowerCase();
if (mDisplayedValues[i].toLowerCase().startsWith(str)) {
diff --git a/core/java/com/android/internal/backup/IBackupTransport.aidl b/core/java/com/android/internal/backup/IBackupTransport.aidl
index 9da1066..b535fc1 100644
--- a/core/java/com/android/internal/backup/IBackupTransport.aidl
+++ b/core/java/com/android/internal/backup/IBackupTransport.aidl
@@ -16,7 +16,7 @@
package com.android.internal.backup;
-import android.backup.RestoreSet;
+import android.app.backup.RestoreSet;
import android.content.pm.PackageInfo;
import android.os.ParcelFileDescriptor;
diff --git a/core/java/com/android/internal/backup/LocalTransport.java b/core/java/com/android/internal/backup/LocalTransport.java
index 23ec647..be83eb9 100644
--- a/core/java/com/android/internal/backup/LocalTransport.java
+++ b/core/java/com/android/internal/backup/LocalTransport.java
@@ -1,8 +1,8 @@
package com.android.internal.backup;
-import android.backup.BackupDataInput;
-import android.backup.BackupDataOutput;
-import android.backup.RestoreSet;
+import android.app.backup.BackupDataInput;
+import android.app.backup.BackupDataOutput;
+import android.app.backup.RestoreSet;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
diff --git a/core/jni/android_backup_BackupDataInput.cpp b/core/jni/android_backup_BackupDataInput.cpp
index cf8a8e8..b03dd16 100644
--- a/core/jni/android_backup_BackupDataInput.cpp
+++ b/core/jni/android_backup_BackupDataInput.cpp
@@ -28,7 +28,7 @@
// java.io.FileDescriptor
static jfieldID s_descriptorField = 0;
-// android.backup.BackupDataInput$EntityHeader
+// android.app.backup.BackupDataInput$EntityHeader
static jfieldID s_keyField = 0;
static jfieldID s_dataSizeField = 0;
@@ -130,7 +130,7 @@
static const JNINativeMethod g_methods[] = {
{ "ctor", "(Ljava/io/FileDescriptor;)I", (void*)ctor_native },
{ "dtor", "(I)V", (void*)dtor_native },
- { "readNextHeader_native", "(ILandroid/backup/BackupDataInput$EntityHeader;)I",
+ { "readNextHeader_native", "(ILandroid/app/backup/BackupDataInput$EntityHeader;)I",
(void*)readNextHeader_native },
{ "readEntityData_native", "(I[BII)I", (void*)readEntityData_native },
{ "skipEntityData_native", "(I)I", (void*)skipEntityData_native },
@@ -148,16 +148,16 @@
LOG_FATAL_IF(s_descriptorField == NULL,
"Unable to find descriptor field in java.io.FileDescriptor");
- clazz = env->FindClass("android/backup/BackupDataInput$EntityHeader");
- LOG_FATAL_IF(clazz == NULL, "Unable to find class android.backup.BackupDataInput.EntityHeader");
+ clazz = env->FindClass("android/app/backup/BackupDataInput$EntityHeader");
+ LOG_FATAL_IF(clazz == NULL, "Unable to find class android.app.backup.BackupDataInput.EntityHeader");
s_keyField = env->GetFieldID(clazz, "key", "Ljava/lang/String;");
LOG_FATAL_IF(s_keyField == NULL,
- "Unable to find key field in android.backup.BackupDataInput.EntityHeader");
+ "Unable to find key field in android.app.backup.BackupDataInput.EntityHeader");
s_dataSizeField = env->GetFieldID(clazz, "dataSize", "I");
LOG_FATAL_IF(s_dataSizeField == NULL,
- "Unable to find dataSize field in android.backup.BackupDataInput.EntityHeader");
+ "Unable to find dataSize field in android.app.backup.BackupDataInput.EntityHeader");
- return AndroidRuntime::registerNativeMethods(env, "android/backup/BackupDataInput",
+ return AndroidRuntime::registerNativeMethods(env, "android/app/backup/BackupDataInput",
g_methods, NELEM(g_methods));
}
diff --git a/core/jni/android_backup_BackupDataOutput.cpp b/core/jni/android_backup_BackupDataOutput.cpp
index ce30aaa8..b895d11 100644
--- a/core/jni/android_backup_BackupDataOutput.cpp
+++ b/core/jni/android_backup_BackupDataOutput.cpp
@@ -121,7 +121,7 @@
LOG_FATAL_IF(s_descriptorField == NULL,
"Unable to find descriptor field in java.io.FileDescriptor");
- return AndroidRuntime::registerNativeMethods(env, "android/backup/BackupDataOutput",
+ return AndroidRuntime::registerNativeMethods(env, "android/app/backup/BackupDataOutput",
g_methods, NELEM(g_methods));
}
diff --git a/core/jni/android_backup_BackupHelperDispatcher.cpp b/core/jni/android_backup_BackupHelperDispatcher.cpp
index 2e3f0b9..26e7d66 100644
--- a/core/jni/android_backup_BackupHelperDispatcher.cpp
+++ b/core/jni/android_backup_BackupHelperDispatcher.cpp
@@ -219,16 +219,16 @@
static const JNINativeMethod g_methods[] = {
{ "readHeader_native",
- "(Landroid/backup/BackupHelperDispatcher$Header;Ljava/io/FileDescriptor;)I",
+ "(Landroid/app/backup/BackupHelperDispatcher$Header;Ljava/io/FileDescriptor;)I",
(void*)readHeader_native },
{ "skipChunk_native",
"(Ljava/io/FileDescriptor;I)I",
(void*)skipChunk_native },
{ "allocateHeader_native",
- "(Landroid/backup/BackupHelperDispatcher$Header;Ljava/io/FileDescriptor;)I",
+ "(Landroid/app/backup/BackupHelperDispatcher$Header;Ljava/io/FileDescriptor;)I",
(void*)allocateHeader_native },
{ "writeHeader_native",
- "(Landroid/backup/BackupHelperDispatcher$Header;Ljava/io/FileDescriptor;I)I",
+ "(Landroid/app/backup/BackupHelperDispatcher$Header;Ljava/io/FileDescriptor;I)I",
(void*)writeHeader_native },
};
@@ -242,17 +242,17 @@
LOG_FATAL_IF(s_descriptorField == NULL,
"Unable to find descriptor field in java.io.FileDescriptor");
- clazz = env->FindClass("android/backup/BackupHelperDispatcher$Header");
+ clazz = env->FindClass("android/app/backup/BackupHelperDispatcher$Header");
LOG_FATAL_IF(clazz == NULL,
- "Unable to find class android.backup.BackupHelperDispatcher.Header");
+ "Unable to find class android.app.backup.BackupHelperDispatcher.Header");
s_chunkSizeField = env->GetFieldID(clazz, "chunkSize", "I");
LOG_FATAL_IF(s_chunkSizeField == NULL,
- "Unable to find chunkSize field in android.backup.BackupHelperDispatcher.Header");
+ "Unable to find chunkSize field in android.app.backup.BackupHelperDispatcher.Header");
s_keyPrefixField = env->GetFieldID(clazz, "keyPrefix", "Ljava/lang/String;");
LOG_FATAL_IF(s_keyPrefixField == NULL,
- "Unable to find keyPrefix field in android.backup.BackupHelperDispatcher.Header");
+ "Unable to find keyPrefix field in android.app.backup.BackupHelperDispatcher.Header");
- return AndroidRuntime::registerNativeMethods(env, "android/backup/BackupHelperDispatcher",
+ return AndroidRuntime::registerNativeMethods(env, "android/app/backup/BackupHelperDispatcher",
g_methods, NELEM(g_methods));
}
diff --git a/core/jni/android_backup_FileBackupHelperBase.cpp b/core/jni/android_backup_FileBackupHelperBase.cpp
index 8225a36..0137a06 100644
--- a/core/jni/android_backup_FileBackupHelperBase.cpp
+++ b/core/jni/android_backup_FileBackupHelperBase.cpp
@@ -129,7 +129,7 @@
LOG_FATAL_IF(s_descriptorField == NULL,
"Unable to find descriptor field in java.io.FileDescriptor");
- return AndroidRuntime::registerNativeMethods(env, "android/backup/FileBackupHelperBase",
+ return AndroidRuntime::registerNativeMethods(env, "android/app/backup/FileBackupHelperBase",
g_methods, NELEM(g_methods));
}
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_normal.9.png
index 5697369..42c7c146 100644
--- a/core/res/res/drawable-hdpi/btn_keyboard_key_normal.9.png
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
index 9940245..01e2506 100644
--- a/core/res/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
index 5a26d83..83c6eb3 100644
--- a/core/res/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
index 089dbf3..e047eaf 100644
--- a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
index c10a3db..218a2d2 100644
--- a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
index 9e83ace..afe4951 100644
--- a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp
index 2269352..8089389 100644
--- a/libs/audioflinger/AudioFlinger.cpp
+++ b/libs/audioflinger/AudioFlinger.cpp
@@ -3247,7 +3247,10 @@
if (mBytesRead < 0) {
LOGE("Error reading audio input");
if (mActiveTrack->mState == TrackBase::ACTIVE) {
- sleep(1);
+ // Force input into standby so that it tries to
+ // recover at next read attempt
+ mInput->standby();
+ usleep(5000);
}
mRsmpInIndex = mFrameCount;
framesOut = 0;
@@ -3429,7 +3432,10 @@
if (mBytesRead < 0) {
LOGE("RecordThread::getNextBuffer() Error reading audio input");
if (mActiveTrack->mState == TrackBase::ACTIVE) {
- sleep(1);
+ // Force input into standby so that it tries to
+ // recover at next read attempt
+ mInput->standby();
+ usleep(5000);
}
buffer->raw = 0;
buffer->frameCount = 0;
diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp
index bce3371..ad037d6 100644
--- a/media/libmedia/AudioRecord.cpp
+++ b/media/libmedia/AudioRecord.cpp
@@ -552,13 +552,17 @@
audioBuffer.frameCount = userSize/frameSize();
- // Calling obtainBuffer() with a negative wait count causes
- // an (almost) infinite wait time.
- status_t err = obtainBuffer(&audioBuffer, -1);
+ // By using a wait count corresponding to twice the timeout period in
+ // obtainBuffer() we give a chance to recover once for a read timeout
+ // (if media_server crashed for instance) before returning a length of
+ // 0 bytes read to the client
+ status_t err = obtainBuffer(&audioBuffer, ((2 * MAX_RUN_TIMEOUT_MS) / WAIT_PERIOD_MS));
if (err < 0) {
// out of buffers, return #bytes written
if (err == status_t(NO_MORE_BUFFERS))
break;
+ if (err == status_t(TIMED_OUT))
+ err = 0;
return ssize_t(err);
}
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
index 2738efbd..d5c9855a 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
@@ -30,9 +30,9 @@
import java.util.Arrays;
import java.util.zip.CRC32;
-import android.backup.BackupDataInput;
-import android.backup.BackupDataOutput;
-import android.backup.BackupHelperAgent;
+import android.app.backup.BackupDataInput;
+import android.app.backup.BackupDataOutput;
+import android.app.backup.BackupHelperAgent;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
index d24814d..0e75fbc 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
@@ -20,8 +20,8 @@
import android.app.ActivityManagerNative;
import android.app.IActivityManager;
-import android.backup.BackupDataInput;
-import android.backup.IBackupManager;
+import android.app.backup.BackupDataInput;
+import android.app.backup.IBackupManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.IContentService;
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 4f1146b..7d648d3 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -21,7 +21,7 @@
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
-import android.backup.BackupManager;
+import android.app.backup.BackupManager;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
diff --git a/preloaded-classes b/preloaded-classes
index 28cbba3..5672c66 100644
--- a/preloaded-classes
+++ b/preloaded-classes
@@ -57,15 +57,15 @@
android.appwidget.AppWidgetManager
android.appwidget.AppWidgetProvider
android.appwidget.AppWidgetProviderInfo
-android.backup.BackupDataInput
-android.backup.BackupDataInput$EntityHeader
-android.backup.BackupDataOutput
-android.backup.BackupHelperAgent
-android.backup.BackupHelperDispatcher
-android.backup.BackupHelperDispatcher$Header
-android.backup.FileBackupHelperBase
-android.backup.IBackupManager$Stub
-android.backup.RestoreSet
+android.app.backup.BackupDataInput
+android.app.backup.BackupDataInput$EntityHeader
+android.app.backup.BackupDataOutput
+android.app.backup.BackupHelperAgent
+android.app.backup.BackupHelperDispatcher
+android.app.backup.BackupHelperDispatcher$Header
+android.app.backup.FileBackupHelperBase
+android.app.backup.IBackupManager$Stub
+android.app.backup.RestoreSet
android.bluetooth.BluetoothAdapter
android.bluetooth.BluetoothAudioGateway
android.bluetooth.BluetoothSocket
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java
index 8b0c264..ffba4ad 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/java/com/android/server/BackupManagerService.java
@@ -23,10 +23,10 @@
import android.app.IApplicationThread;
import android.app.IBackupAgent;
import android.app.PendingIntent;
-import android.backup.IBackupManager;
-import android.backup.IRestoreObserver;
-import android.backup.IRestoreSession;
-import android.backup.RestoreSet;
+import android.app.backup.RestoreSet;
+import android.app.backup.IBackupManager;
+import android.app.backup.IRestoreObserver;
+import android.app.backup.IRestoreSession;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@@ -96,9 +96,9 @@
// the first backup pass.
private static final long FIRST_BACKUP_INTERVAL = 12 * AlarmManager.INTERVAL_HOUR;
- private static final String RUN_BACKUP_ACTION = "android.backup.intent.RUN";
- private static final String RUN_INITIALIZE_ACTION = "android.backup.intent.INIT";
- private static final String RUN_CLEAR_ACTION = "android.backup.intent.CLEAR";
+ private static final String RUN_BACKUP_ACTION = "android.app.backup.intent.RUN";
+ private static final String RUN_INITIALIZE_ACTION = "android.app.backup.intent.INIT";
+ private static final String RUN_CLEAR_ACTION = "android.app.backup.intent.CLEAR";
private static final int MSG_RUN_BACKUP = 1;
private static final int MSG_RUN_FULL_BACKUP = 2;
private static final int MSG_RUN_RESTORE = 3;
diff --git a/services/java/com/android/server/PackageManagerBackupAgent.java b/services/java/com/android/server/PackageManagerBackupAgent.java
index e45edfb..26b57bf 100644
--- a/services/java/com/android/server/PackageManagerBackupAgent.java
+++ b/services/java/com/android/server/PackageManagerBackupAgent.java
@@ -16,9 +16,9 @@
package com.android.server;
-import android.app.BackupAgent;
-import android.backup.BackupDataInput;
-import android.backup.BackupDataOutput;
+import android.app.backup.BackupAgent;
+import android.app.backup.BackupDataInput;
+import android.app.backup.BackupDataOutput;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index 6ce2582..1ff0244 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -31,7 +31,7 @@
import android.app.IActivityManager;
import android.app.admin.DevicePolicyManager;
import android.app.admin.IDevicePolicyManager;
-import android.backup.IBackupManager;
+import android.app.backup.IBackupManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
diff --git a/services/java/com/android/server/SystemBackupAgent.java b/services/java/com/android/server/SystemBackupAgent.java
index 186aebe..86b9df6 100644
--- a/services/java/com/android/server/SystemBackupAgent.java
+++ b/services/java/com/android/server/SystemBackupAgent.java
@@ -16,12 +16,12 @@
package com.android.server;
-import android.backup.AbsoluteFileBackupHelper;
-import android.backup.BackupDataInput;
-import android.backup.BackupDataInputStream;
-import android.backup.BackupDataOutput;
-import android.backup.BackupHelper;
-import android.backup.BackupHelperAgent;
+import android.app.backup.AbsoluteFileBackupHelper;
+import android.app.backup.BackupDataInput;
+import android.app.backup.BackupDataInputStream;
+import android.app.backup.BackupDataOutput;
+import android.app.backup.BackupHelper;
+import android.app.backup.BackupHelperAgent;
import android.content.Context;
import android.os.ParcelFileDescriptor;
import android.os.ServiceManager;
diff --git a/services/java/com/android/server/WallpaperManagerService.java b/services/java/com/android/server/WallpaperManagerService.java
index 7a03ebd..1b51741 100644
--- a/services/java/com/android/server/WallpaperManagerService.java
+++ b/services/java/com/android/server/WallpaperManagerService.java
@@ -23,7 +23,7 @@
import android.app.IWallpaperManagerCallback;
import android.app.PendingIntent;
import android.app.WallpaperInfo;
-import android.backup.BackupManager;
+import android.app.backup.BackupManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
diff --git a/services/java/com/android/server/WifiService.java b/services/java/com/android/server/WifiService.java
index 7378333f..8fa862d 100644
--- a/services/java/com/android/server/WifiService.java
+++ b/services/java/com/android/server/WifiService.java
@@ -79,7 +79,7 @@
import java.net.UnknownHostException;
import com.android.internal.app.IBatteryStats;
-import android.backup.IBackupManager;
+import android.app.backup.IBackupManager;
import com.android.server.am.BatteryStatsService;
/**
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 9018872..b53100f 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -46,7 +46,7 @@
import android.app.PendingIntent;
import android.app.ResultInfo;
import android.app.Service;
-import android.backup.IBackupManager;
+import android.app.backup.IBackupManager;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
diff --git a/telephony/java/com/android/internal/telephony/RetryManager.java b/telephony/java/com/android/internal/telephony/RetryManager.java
index 385b191..779f358 100644
--- a/telephony/java/com/android/internal/telephony/RetryManager.java
+++ b/telephony/java/com/android/internal/telephony/RetryManager.java
@@ -153,13 +153,17 @@
}
/**
- * Configure for using string which allow arbitary
+ * Configure for using string which allow arbitrary
* sequences of times. See class comments for the
* string format.
*
- * @return true if successfull
+ * @return true if successful
*/
public boolean configure(String configStr) {
+ // Strip quotes if present.
+ if ((configStr.startsWith("\"") && configStr.endsWith("\""))) {
+ configStr = configStr.substring(1, configStr.length()-1);
+ }
if (DBG) log("configure: '" + configStr + "'");
if (!TextUtils.isEmpty(configStr)) {
diff --git a/telephony/tests/telephonytests/src/com/android/internal/telephony/TelephonyUtilsTest.java b/telephony/tests/telephonytests/src/com/android/internal/telephony/TelephonyUtilsTest.java
index bf0c88b..3757017 100644
--- a/telephony/tests/telephonytests/src/com/android/internal/telephony/TelephonyUtilsTest.java
+++ b/telephony/tests/telephonytests/src/com/android/internal/telephony/TelephonyUtilsTest.java
@@ -146,15 +146,15 @@
}
/**
- * Test string configuration using all options.
+ * Test string configuration using all options and with quotes.
*/
@SmallTest
public void testRetryManageString() throws Exception {
RetryManager rm = new RetryManager();
int time;
- assertTrue(rm.configure("max_retries=4,"
- + "default_randomization=100,1000, 2000 :200 , 3000"));
+ assertTrue(rm.configure(
+ "\"max_retries=4, default_randomization=100,1000, 2000 :200 , 3000\""));
assertTrue(rm.isRetryNeeded());
time = rm.getRetryTimer();
assertTrue((time >= 1000) && (time < 1100));
diff --git a/tests/backup/src/com/android/backuptest/BackupTestActivity.java b/tests/backup/src/com/android/backuptest/BackupTestActivity.java
index afbc703..e11ecad 100644
--- a/tests/backup/src/com/android/backuptest/BackupTestActivity.java
+++ b/tests/backup/src/com/android/backuptest/BackupTestActivity.java
@@ -17,11 +17,11 @@
package com.android.backuptest;
import android.app.ListActivity;
-import android.backup.BackupHelperDispatcher;
-import android.backup.BackupDataInput;
-import android.backup.BackupDataOutput;
-import android.backup.BackupManager;
-import android.backup.FileBackupHelper;
+import android.app.backup.BackupHelperDispatcher;
+import android.app.backup.BackupDataInput;
+import android.app.backup.BackupDataOutput;
+import android.app.backup.BackupManager;
+import android.app.backup.FileBackupHelper;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
diff --git a/tests/backup/src/com/android/backuptest/BackupTestAgent.java b/tests/backup/src/com/android/backuptest/BackupTestAgent.java
index 8e4fd39..3fdd96b 100644
--- a/tests/backup/src/com/android/backuptest/BackupTestAgent.java
+++ b/tests/backup/src/com/android/backuptest/BackupTestAgent.java
@@ -16,9 +16,9 @@
package com.android.backuptest;
-import android.backup.BackupHelperAgent;
-import android.backup.FileBackupHelper;
-import android.backup.SharedPreferencesBackupHelper;
+import android.app.backup.BackupHelperAgent;
+import android.app.backup.FileBackupHelper;
+import android.app.backup.SharedPreferencesBackupHelper;
public class BackupTestAgent extends BackupHelperAgent
{