am 63226dd8: Merge "Allow apps with SCORE_NETWORKS to set the active scorer." into lmp-mr1-dev automerge: 24f535b

* commit '63226dd8f3570bd3b28e4241668843385ba99c2d':
  Allow apps with SCORE_NETWORKS to set the active scorer.
This commit is contained in:
Jeff Davidson
2014-11-06 01:48:45 +00:00
committed by Android Git Automerger
2 changed files with 15 additions and 3 deletions

View File

@@ -192,12 +192,15 @@ public class NetworkScoreManager {
/** /**
* Set the active scorer to a new package and clear existing scores. * Set the active scorer to a new package and clear existing scores.
* *
* <p>Should never be called directly without obtaining user consent. This can be done by using
* the {@link #ACTION_CHANGE_ACTIVE} broadcast, or using a custom configuration activity.
*
* @return true if the operation succeeded, or false if the new package is not a valid scorer. * @return true if the operation succeeded, or false if the new package is not a valid scorer.
* @throws SecurityException if the caller does not hold the * @throws SecurityException if the caller does not hold the
* {@link android.Manifest.permission#BROADCAST_NETWORK_PRIVILEGED} permission * {@link android.Manifest.permission#SCORE_NETWORKS} permission.
* indicating that it can manage scorer applications.
* @hide * @hide
*/ */
@SystemApi
public boolean setActiveScorer(String packageName) throws SecurityException { public boolean setActiveScorer(String packageName) throws SecurityException {
try { try {
return mService.setActiveScorer(packageName); return mService.setActiveScorer(packageName);

View File

@@ -130,7 +130,16 @@ public class NetworkScoreService extends INetworkScoreService.Stub {
@Override @Override
public boolean setActiveScorer(String packageName) { public boolean setActiveScorer(String packageName) {
mContext.enforceCallingOrSelfPermission(permission.BROADCAST_NETWORK_PRIVILEGED, TAG); // TODO: For now, since SCORE_NETWORKS requires an app to be privileged, we allow such apps
// to directly set the scorer app rather than having to use the consent dialog. The
// assumption is that anyone bundling a scorer app with the system is trusted by the OEM to
// do the right thing and not enable this feature without explaining it to the user.
// In the future, should this API be opened to 3p apps, we will need to lock this down and
// figure out another way to streamline the UX.
// mContext.enforceCallingOrSelfPermission(permission.BROADCAST_NETWORK_PRIVILEGED, TAG);
mContext.enforceCallingOrSelfPermission(permission.SCORE_NETWORKS, TAG);
return setScorerInternal(packageName); return setScorerInternal(packageName);
} }