am 258e630a: Merge "Shut down UiAutomationConnection without a lock held" into mnc-dev

* commit '258e630a6bc876c57ac97c6da3e5414d0e7eb036':
  Shut down UiAutomationConnection without a lock held
This commit is contained in:
Svetoslav Ganov
2015-07-23 22:01:14 +00:00
committed by Android Git Automerger
2 changed files with 20 additions and 11 deletions

View File

@@ -38,10 +38,12 @@ interface IUiAutomationConnection {
boolean injectInputEvent(in InputEvent event, boolean sync);
boolean setRotation(int rotation);
Bitmap takeScreenshot(int width, int height);
void shutdown();
boolean clearWindowContentFrameStats(int windowId);
WindowContentFrameStats getWindowContentFrameStats(int windowId);
void clearWindowAnimationFrameStats();
WindowAnimationFrameStats getWindowAnimationFrameStats();
void executeShellCommand(String command, in ParcelFileDescriptor fd);
// Called from the system process.
oneway void shutdown();
}

View File

@@ -1355,6 +1355,7 @@ public final class ActivityManagerService extends ActivityManagerNative
static final int DISPATCH_UIDS_CHANGED_MSG = 54;
static final int REPORT_TIME_TRACKER_MSG = 55;
static final int REPORT_USER_SWITCH_COMPLETE_MSG = 56;
static final int SHUTDOWN_UI_AUTOMATION_CONNECTION_MSG = 57;
static final int FIRST_ACTIVITY_STACK_MSG = 100;
static final int FIRST_BROADCAST_QUEUE_MSG = 200;
@@ -2019,6 +2020,17 @@ public final class ActivityManagerService extends ActivityManagerNative
case REPORT_USER_SWITCH_COMPLETE_MSG: {
dispatchUserSwitchComplete(msg.arg1);
} break;
case SHUTDOWN_UI_AUTOMATION_CONNECTION_MSG: {
IUiAutomationConnection connection = (IUiAutomationConnection) msg.obj;
try {
connection.shutdown();
} catch (RemoteException e) {
Slog.w(TAG, "Error shutting down UiAutomationConnection");
}
// Only a UiAutomation can set this flag and now that
// it is finished we make sure it is reset to its default.
mUserIsMonkey = false;
} break;
}
}
};
@@ -17102,16 +17114,11 @@ public final class ActivityManagerService extends ActivityManagerNative
} catch (RemoteException e) {
}
}
if (app.instrumentationUiAutomationConnection != null) {
try {
app.instrumentationUiAutomationConnection.shutdown();
} catch (RemoteException re) {
/* ignore */
}
// Only a UiAutomation can set this flag and now that
// it is finished we make sure it is reset to its default.
mUserIsMonkey = false;
}
// Can't call out of the system process with a lock held, so post a message.
mHandler.obtainMessage(SHUTDOWN_UI_AUTOMATION_CONNECTION_MSG,
app.instrumentationUiAutomationConnection).sendToTarget();
app.instrumentationWatcher = null;
app.instrumentationUiAutomationConnection = null;
app.instrumentationClass = null;