summaryrefslogtreecommitdiffstats
path: root/services/core
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2014-10-14 19:21:18 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-10-14 19:21:18 +0000
commita861a9d713c99b576c0e7284a65d50838c4f953a (patch)
treed7e61dc8f750ccbbbb8cfb99f167fa24cfa5abf1 /services/core
parent72f6e8ce81e847eb0d2eeac02ef7c4ce48ed5002 (diff)
parent35de0e2872b64f78b596a850d6da2c483ba65bb5 (diff)
downloadframeworks_base-a861a9d713c99b576c0e7284a65d50838c4f953a.zip
frameworks_base-a861a9d713c99b576c0e7284a65d50838c4f953a.tar.gz
frameworks_base-a861a9d713c99b576c0e7284a65d50838c4f953a.tar.bz2
am 35de0e28: Merge "Fix issue #10034864: Define YouTube application as the preferred..." into lmp-dev
* commit '35de0e2872b64f78b596a850d6da2c483ba65bb5': Fix issue #10034864: Define YouTube application as the preferred...
Diffstat (limited to 'services/core')
-rwxr-xr-xservices/core/java/com/android/server/am/ActiveServices.java13
-rw-r--r--services/core/java/com/android/server/pm/Settings.java25
2 files changed, 24 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 0b253f5..f02a815 100755
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -69,6 +69,7 @@ public final class ActiveServices {
static final boolean DEBUG_DELAYED_SERVICE = ActivityManagerService.DEBUG_SERVICE;
static final boolean DEBUG_DELAYED_STARTS = DEBUG_DELAYED_SERVICE;
static final boolean DEBUG_MU = ActivityManagerService.DEBUG_MU;
+ static final boolean LOG_SERVICE_START_STOP = false;
static final String TAG = ActivityManagerService.TAG;
static final String TAG_MU = ActivityManagerService.TAG_MU;
@@ -1447,8 +1448,10 @@ public final class ActiveServices {
String nameTerm;
int lastPeriod = r.shortName.lastIndexOf('.');
nameTerm = lastPeriod >= 0 ? r.shortName.substring(lastPeriod) : r.shortName;
- EventLogTags.writeAmCreateService(
- r.userId, System.identityHashCode(r), nameTerm, r.app.uid, r.app.pid);
+ if (LOG_SERVICE_START_STOP) {
+ EventLogTags.writeAmCreateService(
+ r.userId, System.identityHashCode(r), nameTerm, r.app.uid, r.app.pid);
+ }
synchronized (r.stats.getBatteryStats()) {
r.stats.startLaunchedLocked();
}
@@ -1632,8 +1635,10 @@ public final class ActiveServices {
}
if (DEBUG_SERVICE) Slog.v(TAG, "Bringing down " + r + " " + r.intent);
- EventLogTags.writeAmDestroyService(
- r.userId, System.identityHashCode(r), (r.app != null) ? r.app.pid : -1);
+ if (LOG_SERVICE_START_STOP) {
+ EventLogTags.writeAmDestroyService(
+ r.userId, System.identityHashCode(r), (r.app != null) ? r.app.pid : -1);
+ }
final ServiceMap smap = getServiceMap(r.userId);
smap.mServicesByName.remove(r.name);
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 9473495..7de56c8 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -2371,7 +2371,8 @@ final class Settings {
intent.getType(), flags, 0);
if (PackageManagerService.DEBUG_PREFERRED) Log.d(TAG, "Queried " + intent
+ " results: " + ri);
- int match = 0;
+ int systemMatch = 0;
+ int thirdPartyMatch = 0;
if (ri != null && ri.size() > 1) {
boolean haveAct = false;
ComponentName haveNonSys = null;
@@ -2380,13 +2381,10 @@ final class Settings {
ActivityInfo ai = ri.get(i).activityInfo;
set[i] = new ComponentName(ai.packageName, ai.name);
if ((ai.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) == 0) {
- if (ri.get(i).match >= match) {
- // If any of the matches are not system apps, then
- // there is a third party app that is now an option...
- // so don't set a default since we don't want to hide it.
- // Only do this if the match of this one is at least as good
- // as what we have found as the built-in app; if it isn't
- // as good, the user won't want it anyway, right?
+ if (ri.get(i).match >= thirdPartyMatch) {
+ // Keep track of the best match we find of all third
+ // party apps, for use later to determine if we actually
+ // want to set a preferred app for this intent.
if (PackageManagerService.DEBUG_PREFERRED) Log.d(TAG, "Result "
+ ai.packageName + "/" + ai.name + ": non-system!");
haveNonSys = set[i];
@@ -2397,12 +2395,19 @@ final class Settings {
if (PackageManagerService.DEBUG_PREFERRED) Log.d(TAG, "Result "
+ ai.packageName + "/" + ai.name + ": default!");
haveAct = true;
- match = ri.get(i).match;
+ systemMatch = ri.get(i).match;
} else {
if (PackageManagerService.DEBUG_PREFERRED) Log.d(TAG, "Result "
+ ai.packageName + "/" + ai.name + ": skipped");
}
}
+ if (haveNonSys != null && thirdPartyMatch < systemMatch) {
+ // If we have a matching third party app, but its match is not as
+ // good as the built-in system app, then we don't want to actually
+ // consider it a match because presumably the built-in app is still
+ // the thing we want users to see by default.
+ haveNonSys = null;
+ }
if (haveAct && haveNonSys == null) {
IntentFilter filter = new IntentFilter();
if (intent.getAction() != null) {
@@ -2435,7 +2440,7 @@ final class Settings {
Slog.w(TAG, "Malformed mimetype " + intent.getType() + " for " + cn);
}
}
- PreferredActivity pa = new PreferredActivity(filter, match, set, cn, true);
+ PreferredActivity pa = new PreferredActivity(filter, systemMatch, set, cn, true);
editPreferredActivitiesLPw(userId).addFilter(pa);
} else if (haveNonSys == null) {
StringBuilder sb = new StringBuilder();