summaryrefslogtreecommitdiffstats
path: root/core/java/android/app/ContextImpl.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2013-10-03 17:44:38 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-10-03 17:44:38 +0000
commit6a6f96a296679c23f61b58b34985c8b25960a151 (patch)
tree8d4ca432c57c1b60cdea902a1c01155ef4389643 /core/java/android/app/ContextImpl.java
parentd143d1ffd7656d1ad3ec4fbccd26564035bca787 (diff)
parentfd6c7b12c312bef3ab9de2a8fcdeef9260fd85f1 (diff)
downloadframeworks_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.java59
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