diff options
| author | Android (Google) Code Review <android-gerrit@google.com> | 2009-06-12 18:03:11 -0700 | 
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-06-12 18:03:11 -0700 | 
| commit | be3615bded04c7414db4da3721f512b6f76e09e2 (patch) | |
| tree | 218ee88e95c64bc75371ee8c00a6817780dfd40b | |
| parent | bf0010b5e25549bf736478bc57fbde8d7a892e1a (diff) | |
| parent | 75b038545edd799836b712e6c32bd4d143f8df28 (diff) | |
| download | frameworks_base-be3615bded04c7414db4da3721f512b6f76e09e2.zip frameworks_base-be3615bded04c7414db4da3721f512b6f76e09e2.tar.gz frameworks_base-be3615bded04c7414db4da3721f512b6f76e09e2.tar.bz2 | |
Merge change 4112 into donut
* changes:
  Fix bug #1812041: activity manager crash with bad args.
| -rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 50 | 
1 files changed, 20 insertions, 30 deletions
| diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 6a81178..07d6b6f 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -17,7 +17,6 @@  package com.android.server.am;  import com.android.internal.os.BatteryStatsImpl; -import com.android.internal.os.RuntimeInit;  import com.android.server.IntentResolver;  import com.android.server.ProcessMap;  import com.android.server.ProcessStats; @@ -2761,7 +2760,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen                  // instance of the activity so a new fresh one can be started.                  if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE) {                      if (!ret.finishing) { -                        int index = indexOfTokenLocked(ret, false); +                        int index = indexOfTokenLocked(ret);                          if (index >= 0) {                              finishActivityLocked(ret, 0, Activity.RESULT_CANCELED,                                      null, "clear"); @@ -2854,7 +2853,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen          HistoryRecord sourceRecord = null;          HistoryRecord resultRecord = null;          if (resultTo != null) { -            int index = indexOfTokenLocked(resultTo, false); +            int index = indexOfTokenLocked(resultTo);              if (DEBUG_RESULTS) Log.v(                  TAG, "Sending result to " + resultTo + " (index " + index + ")");              if (index >= 0) { @@ -3420,7 +3419,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen          }          synchronized (this) { -            int index = indexOfTokenLocked(callingActivity, false); +            int index = indexOfTokenLocked(callingActivity);              if (index < 0) {                  return false;              } @@ -3570,7 +3569,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen      public void setRequestedOrientation(IBinder token,              int requestedOrientation) {          synchronized (this) { -            int index = indexOfTokenLocked(token, false); +            int index = indexOfTokenLocked(token);              if (index < 0) {                  return;              } @@ -3592,7 +3591,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen      public int getRequestedOrientation(IBinder token) {          synchronized (this) { -            int index = indexOfTokenLocked(token, false); +            int index = indexOfTokenLocked(token);              if (index < 0) {                  return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;              } @@ -3648,7 +3647,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen              TAG, "Finishing activity: token=" + token              + ", result=" + resultCode + ", data=" + resultData); -        int index = indexOfTokenLocked(token, false); +        int index = indexOfTokenLocked(token);          if (index < 0) {              return false;          } @@ -3772,7 +3771,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen      private final HistoryRecord finishCurrentActivityLocked(HistoryRecord r,              int mode) { -        final int index = indexOfTokenLocked(r, false); +        final int index = indexOfTokenLocked(r);          if (index < 0) {              return null;          } @@ -3897,7 +3896,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen      public final void finishSubActivity(IBinder token, String resultWho,              int requestCode) {          synchronized(this) { -            int index = indexOfTokenLocked(token, false); +            int index = indexOfTokenLocked(token);              if (index < 0) {                  return;              } @@ -4447,7 +4446,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen          }          synchronized(this) { -            int index = indexOfTokenLocked(token, true); +            int index = indexOfTokenLocked(token);              if (index < 0) {                  return;              } @@ -5012,7 +5011,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen              }              // Get the activity record. -            int index = indexOfTokenLocked(token, false); +            int index = indexOfTokenLocked(token);              if (index >= 0) {                  HistoryRecord r = (HistoryRecord)mHistory.get(index); @@ -5166,7 +5165,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen          HistoryRecord r = null;          synchronized (this) { -            int index = indexOfTokenLocked(token, false); +            int index = indexOfTokenLocked(token);              if (index >= 0) {                  r = (HistoryRecord)mHistory.get(index);                  if (!timeout) { @@ -5197,7 +5196,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen          final long origId = Binder.clearCallingIdentity();          synchronized (this) { -            int index = indexOfTokenLocked(token, false); +            int index = indexOfTokenLocked(token);              if (index >= 0) {                  r = (HistoryRecord)mHistory.get(index);                  r.thumbnail = thumbnail; @@ -5227,7 +5226,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen          synchronized (this) {              mHandler.removeMessages(DESTROY_TIMEOUT_MSG, token); -            int index = indexOfTokenLocked(token, false); +            int index = indexOfTokenLocked(token);              if (index >= 0) {                  HistoryRecord r = (HistoryRecord)mHistory.get(index);                  if (r.state == ActivityState.DESTROYING) { @@ -5254,7 +5253,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen      }      private HistoryRecord getCallingRecordLocked(IBinder token) { -        int index = indexOfTokenLocked(token, true); +        int index = indexOfTokenLocked(token);          if (index >= 0) {              HistoryRecord r = (HistoryRecord)mHistory.get(index);              if (r != null) { @@ -5266,7 +5265,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen      public ComponentName getActivityClassForToken(IBinder token) {          synchronized(this) { -            int index = indexOfTokenLocked(token, false); +            int index = indexOfTokenLocked(token);              if (index >= 0) {                  HistoryRecord r = (HistoryRecord)mHistory.get(index);                  return r.intent.getComponent(); @@ -5277,7 +5276,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen      public String getPackageForToken(IBinder token) {          synchronized(this) { -            int index = indexOfTokenLocked(token, false); +            int index = indexOfTokenLocked(token);              if (index >= 0) {                  HistoryRecord r = (HistoryRecord)mHistory.get(index);                  return r.packageName; @@ -5316,7 +5315,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen              }              HistoryRecord activity = null;              if (type == INTENT_SENDER_ACTIVITY_RESULT) { -                int index = indexOfTokenLocked(token, false); +                int index = indexOfTokenLocked(token);                  if (index < 0) {                      return null;                  } @@ -6837,7 +6836,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen          synchronized(this) {              if (r == null) { -                int index = indexOfTokenLocked(token, false); +                int index = indexOfTokenLocked(token);                  if (index < 0) {                      return;                  } @@ -8943,7 +8942,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen          return false;      } -    private final int indexOfTokenLocked(IBinder token, boolean required) { +    private final int indexOfTokenLocked(IBinder token) {          int count = mHistory.size();          // convert the token to an entry in the history. @@ -8957,19 +8956,10 @@ public final class ActivityManagerService extends ActivityManagerNative implemen                  break;              }          } -        if (index < 0 && required) { -            RuntimeInit.crash(TAG, new InvalidTokenException(token)); -        }          return index;      } -    static class InvalidTokenException extends Exception { -        InvalidTokenException(IBinder token) { -            super("Bad activity token: " + token); -        } -    } -      private final void killServicesLocked(ProcessRecord app,              boolean allowRestart) {          // Report disconnected services. @@ -9994,7 +9984,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen              HistoryRecord activity = null;              if (token != null) { -                int aindex = indexOfTokenLocked(token, false); +                int aindex = indexOfTokenLocked(token);                  if (aindex < 0) {                      Log.w(TAG, "Binding with unknown activity: " + token);                      return 0; | 
