diff options
| author | Dianne Hackborn <hackbod@google.com> | 2013-10-03 17:44:38 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-10-03 17:44:38 +0000 |
| commit | 6a6f96a296679c23f61b58b34985c8b25960a151 (patch) | |
| tree | 8d4ca432c57c1b60cdea902a1c01155ef4389643 /core/java/android/app/ContextImpl.java | |
| parent | d143d1ffd7656d1ad3ec4fbccd26564035bca787 (diff) | |
| parent | fd6c7b12c312bef3ab9de2a8fcdeef9260fd85f1 (diff) | |
| download | frameworks_base-6a6f96a296679c23f61b58b34985c8b25960a151.zip frameworks_base-6a6f96a296679c23f61b58b34985c8b25960a151.tar.gz frameworks_base-6a6f96a296679c23f61b58b34985c8b25960a151.tar.bz2 | |
Merge "Fix issue #10378741: configupdater needs to be explicit when it calls startService()" into klp-dev
Diffstat (limited to 'core/java/android/app/ContextImpl.java')
| -rw-r--r-- | core/java/android/app/ContextImpl.java | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 7183179..190ddb4 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -1461,29 +1461,39 @@ class ContextImpl extends Context { } } + private void validateServiceIntent(Intent service) { + if (service.getComponent() == null && service.getPackage() == null) { + if (true || getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.KITKAT) { + Log.w(TAG, "Implicit intents with startService are not safe: " + service + + " " + Debug.getCallers(2, 3)); + //IllegalArgumentException ex = new IllegalArgumentException( + // "Service Intent must be explicit: " + service); + //Log.e(TAG, "This will become an error", ex); + //throw ex; + } + } + } + @Override public ComponentName startService(Intent service) { warnIfCallingFromSystemProcess(); - return startServiceAsUser(service, mUser); + return startServiceCommon(service, mUser); } @Override public boolean stopService(Intent service) { warnIfCallingFromSystemProcess(); - return stopServiceAsUser(service, mUser); + return stopServiceCommon(service, mUser); } @Override public ComponentName startServiceAsUser(Intent service, UserHandle user) { + return startServiceCommon(service, user); + } + + private ComponentName startServiceCommon(Intent service, UserHandle user) { try { - if (service.getComponent() == null && service.getPackage() == null) { - if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.KITKAT) { - IllegalArgumentException ex = new IllegalArgumentException( - "Service Intent must be explicit: " + service); - Log.e(TAG, "This will become an error", ex); - //throw ex; - } - } + validateServiceIntent(service); service.prepareToLeaveProcess(); ComponentName cn = ActivityManagerNative.getDefault().startService( mMainThread.getApplicationThread(), service, @@ -1507,15 +1517,12 @@ class ContextImpl extends Context { @Override public boolean stopServiceAsUser(Intent service, UserHandle user) { + return stopServiceCommon(service, user); + } + + private boolean stopServiceCommon(Intent service, UserHandle user) { try { - if (service.getComponent() == null && service.getPackage() == null) { - if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.KITKAT) { - IllegalArgumentException ex = new IllegalArgumentException( - "Service Intent must be explicit: " + service); - Log.e(TAG, "This will become an error", ex); - //throw ex; - } - } + validateServiceIntent(service); service.prepareToLeaveProcess(); int res = ActivityManagerNative.getDefault().stopService( mMainThread.getApplicationThread(), service, @@ -1534,13 +1541,18 @@ class ContextImpl extends Context { public boolean bindService(Intent service, ServiceConnection conn, int flags) { warnIfCallingFromSystemProcess(); - return bindServiceAsUser(service, conn, flags, Process.myUserHandle()); + return bindServiceCommon(service, conn, flags, Process.myUserHandle()); } /** @hide */ @Override public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, UserHandle user) { + return bindServiceCommon(service, conn, flags, user); + } + + private boolean bindServiceCommon(Intent service, ServiceConnection conn, int flags, + UserHandle user) { IServiceConnection sd; if (conn == null) { throw new IllegalArgumentException("connection is null"); @@ -1551,14 +1563,7 @@ class ContextImpl extends Context { } else { throw new RuntimeException("Not supported in system context"); } - if (service.getComponent() == null && service.getPackage() == null) { - if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.KITKAT) { - IllegalArgumentException ex = new IllegalArgumentException( - "Service Intent must be explicit: " + service); - Log.e(TAG, "This will become an error", ex); - //throw ex; - } - } + validateServiceIntent(service); try { IBinder token = getActivityToken(); if (token == null && (flags&BIND_AUTO_CREATE) == 0 && mPackageInfo != null |
