diff options
| author | Jeremy Joslin <jjoslin@google.com> | 2016-12-14 23:22:15 +0000 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2016-12-14 23:22:15 +0000 |
| commit | a00fda5311bc6310bacd1b6ca4ccc374ec342fdf (patch) | |
| tree | 365955f1b5217a6b713a287cefaacb7ea92f3ef0 /core/java/android | |
| parent | f2fc15824dd05f5279966d44ab2681cc162cfb5c (diff) | |
| parent | 724b26c902712eafbb23b210ee8c591ab22d56a3 (diff) | |
Merge "Add an IPC for requesting network scores." am: e89ed4a001
am: 724b26c902
Change-Id: If6284c934cd47257367c614523d4928758ab34e1
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/net/INetworkRecommendationProvider.aidl | 12 | ||||
| -rw-r--r-- | core/java/android/net/INetworkScoreService.aidl | 13 | ||||
| -rw-r--r-- | core/java/android/net/NetworkRecommendationProvider.java | 22 |
3 files changed, 47 insertions, 0 deletions
diff --git a/core/java/android/net/INetworkRecommendationProvider.aidl b/core/java/android/net/INetworkRecommendationProvider.aidl index 5e455d3e33fe..052c92c0309f 100644 --- a/core/java/android/net/INetworkRecommendationProvider.aidl +++ b/core/java/android/net/INetworkRecommendationProvider.aidl @@ -16,6 +16,7 @@ package android.net; +import android.net.NetworkKey; import android.net.RecommendationRequest; import android.os.IRemoteCallback; @@ -38,4 +39,15 @@ oneway interface INetworkRecommendationProvider { void requestRecommendation(in RecommendationRequest request, in IRemoteCallback callback, int sequence); + + /** + * Request scoring for networks. + * + * Implementations should use {@link NetworkScoreManager#updateScores(ScoredNetwork[])} to + * respond to score requests. + * + * @param networks an array of {@link NetworkKey}s to score + * @hide + */ + void requestScores(in NetworkKey[] networks); }
\ No newline at end of file diff --git a/core/java/android/net/INetworkScoreService.aidl b/core/java/android/net/INetworkScoreService.aidl index 24f450420751..932f03116f15 100644 --- a/core/java/android/net/INetworkScoreService.aidl +++ b/core/java/android/net/INetworkScoreService.aidl @@ -17,6 +17,7 @@ package android.net; import android.net.INetworkScoreCache; +import android.net.NetworkKey; import android.net.RecommendationRequest; import android.net.RecommendationResult; import android.net.ScoredNetwork; @@ -87,4 +88,16 @@ interface INetworkScoreService */ RecommendationResult requestRecommendation(in RecommendationRequest request); + /** + * Request scoring for networks. + * + * Implementations should delegate to the registered network recommendation provider or + * fulfill the request locally if possible. + * + * @param networks an array of {@link NetworkKey}s to score + * @return true if the request was delegated or fulfilled locally, false otherwise + * @throws SecurityException if the caller is not the system + * @hide + */ + boolean requestScores(in NetworkKey[] networks); } diff --git a/core/java/android/net/NetworkRecommendationProvider.java b/core/java/android/net/NetworkRecommendationProvider.java index fc3213f486cd..af5a052c6bf7 100644 --- a/core/java/android/net/NetworkRecommendationProvider.java +++ b/core/java/android/net/NetworkRecommendationProvider.java @@ -55,6 +55,15 @@ public abstract class NetworkRecommendationProvider { ResultCallback callback); /** + * Invoked when network scores have been requested. + * <p> + * Use {@link NetworkScoreManager#updateScores(ScoredNetwork[])} to respond to score requests. + * + * @param networks a non-empty array of {@link NetworkKey}s to score. + */ + public abstract void onRequestScores(NetworkKey[] networks); + + /** * Services that can handle {@link NetworkScoreManager#ACTION_RECOMMEND_NETWORKS} should * return this Binder from their <code>onBind()</code> method. */ @@ -118,6 +127,7 @@ public abstract class NetworkRecommendationProvider { private final class ServiceHandler extends Handler { static final int MSG_GET_RECOMMENDATION = 1; + static final int MSG_REQUEST_SCORES = 2; ServiceHandler(Looper looper) { super(looper, null /*callback*/, true /*async*/); @@ -136,6 +146,11 @@ public abstract class NetworkRecommendationProvider { onRequestRecommendation(request, resultCallback); break; + case MSG_REQUEST_SCORES: + final NetworkKey[] networks = (NetworkKey[]) msg.obj; + onRequestScores(networks); + break; + default: throw new IllegalArgumentException("Unknown message: " + what); } @@ -162,5 +177,12 @@ public abstract class NetworkRecommendationProvider { msg.setData(data); msg.sendToTarget(); } + + @Override + public void requestScores(NetworkKey[] networks) throws RemoteException { + if (networks != null && networks.length > 0) { + mHandler.obtainMessage(ServiceHandler.MSG_REQUEST_SCORES, networks).sendToTarget(); + } + } } } |
