From d97c7adfc2d6e885826e40694a116cf3f9225025 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Fri, 19 Jun 2009 11:37:35 -0700 Subject: [PATCH] Fix issue #1753079: running instrumentation in shared processes. The check for allowing the start of an activity was broken, it was comparing the process of that activity's application vs. the current instrumentation target package name. Okay it was utterly insane. Now this check is that the target activity will be running in the same process as the instrumentation, which is really what we want. --- core/java/android/app/ActivityThread.java | 4 ++++ core/java/android/app/Instrumentation.java | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 6873379e8ae0f..98bd45a9ded61 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -2088,6 +2088,10 @@ public final class ActivityThread { return mInitialApplication; } + public String getProcessName() { + return mBoundApplication.processName; + } + public ApplicationContext getSystemContext() { synchronized (this) { if (mSystemContext == null) { diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java index f6a28b23a3a89..e31f4f834404d 100644 --- a/core/java/android/app/Instrumentation.java +++ b/core/java/android/app/Instrumentation.java @@ -446,13 +446,13 @@ public class Instrumentation { if (ai == null) { throw new RuntimeException("Unable to resolve activity for: " + intent); } - if (!ai.applicationInfo.processName.equals( - getTargetContext().getPackageName())) { + String myProc = mThread.getProcessName(); + if (!ai.processName.equals(myProc)) { // todo: if this intent is ambiguous, look here to see if // there is a single match that is in our package. - throw new RuntimeException("Intent resolved to different package " - + ai.applicationInfo.packageName + ": " - + intent); + throw new RuntimeException("Intent in process " + + myProc + " resolved to different process " + + ai.processName + ": " + intent); } intent.setComponent(new ComponentName(