Merge "Move moveCompleteApp() to Binder." am: 019867cb52
am: 19426fef23
Change-Id: I15640b868729b0f8e418c7b9f8d5366deb054abc
diff --git a/services/core/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java
index 3dc8f54..17bdd10 100644
--- a/services/core/java/com/android/server/pm/Installer.java
+++ b/services/core/java/com/android/server/pm/Installer.java
@@ -37,8 +37,6 @@
public final class Installer extends SystemService {
private static final String TAG = "Installer";
- private static final boolean USE_BINDER = true;
-
/* ***************************************************************************
* IMPORTANT: These values are passed to native code. Keep them in sync with
* frameworks/native/cmds/installd/installd.h
@@ -63,6 +61,8 @@
private final InstallerConnection mInstaller;
private final IInstalld mInstalld;
+ private volatile Object mWarnIfHeld;
+
public Installer(Context context) {
super(context);
mInstaller = new InstallerConnection();
@@ -85,6 +85,7 @@
*/
public void setWarnIfHeld(Object warnIfHeld) {
mInstaller.setWarnIfHeld(warnIfHeld);
+ mWarnIfHeld = warnIfHeld;
}
@Override
@@ -93,18 +94,21 @@
mInstaller.waitForConnection();
}
- public void createAppData(String uuid, String pkgname, int userid, int flags, int appid,
- String seinfo, int targetSdkVersion) throws InstallerException {
- if (USE_BINDER) {
- try {
- mInstalld.createAppData(uuid, pkgname, userid, flags, appid, seinfo,
- targetSdkVersion);
- } catch (RemoteException | ServiceSpecificException e) {
- throw new InstallerException(e.getMessage());
- }
- } else {
- mInstaller.execute("create_app_data", uuid, pkgname, userid, flags, appid, seinfo,
+ private void checkLock() {
+ if (mWarnIfHeld != null && Thread.holdsLock(mWarnIfHeld)) {
+ Slog.wtf(TAG, "Calling thread " + Thread.currentThread().getName() + " is holding 0x"
+ + Integer.toHexString(System.identityHashCode(mWarnIfHeld)), new Throwable());
+ }
+ }
+
+ public void createAppData(String uuid, String packageName, int userId, int flags, int appId,
+ String seInfo, int targetSdkVersion) throws InstallerException {
+ checkLock();
+ try {
+ mInstalld.createAppData(uuid, packageName, userId, flags, appId, seInfo,
targetSdkVersion);
+ } catch (RemoteException | ServiceSpecificException e) {
+ throw new InstallerException(e.getMessage());
}
}
@@ -129,11 +133,16 @@
mInstaller.execute("destroy_app_data", uuid, pkgname, userid, flags, ceDataInode);
}
- public void moveCompleteApp(String from_uuid, String to_uuid, String package_name,
- String data_app_name, int appid, String seinfo, int targetSdkVersion)
+ public void moveCompleteApp(String fromUuid, String toUuid, String packageName,
+ String dataAppName, int appId, String seInfo, int targetSdkVersion)
throws InstallerException {
- mInstaller.execute("move_complete_app", from_uuid, to_uuid, package_name,
- data_app_name, appid, seinfo, targetSdkVersion);
+ checkLock();
+ try {
+ mInstalld.moveCompleteApp(fromUuid, toUuid, packageName, dataAppName, appId, seInfo,
+ targetSdkVersion);
+ } catch (RemoteException | ServiceSpecificException e) {
+ throw new InstallerException(e.getMessage());
+ }
}
public void getAppSize(String uuid, String pkgname, int userid, int flags, long ceDataInode,