summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorJeremy Joslin <jjoslin@google.com>2016-12-14 23:22:15 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-12-14 23:22:15 +0000
commita00fda5311bc6310bacd1b6ca4ccc374ec342fdf (patch)
tree365955f1b5217a6b713a287cefaacb7ea92f3ef0 /core/java/android
parentf2fc15824dd05f5279966d44ab2681cc162cfb5c (diff)
parent724b26c902712eafbb23b210ee8c591ab22d56a3 (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.aidl12
-rw-r--r--core/java/android/net/INetworkScoreService.aidl13
-rw-r--r--core/java/android/net/NetworkRecommendationProvider.java22
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();
+ }
+ }
}
}