Commit 9a27a36d authored by Zhiqiang Zhang's avatar Zhiqiang Zhang Committed by Commit Bot

[Android MR] Handle client connection messages

This CL migrates the logic of handling connection messages from
clients. The logic was moved from MRP to message handler to
separate all message handling from MRP.

Bug: 711860
Change-Id: I009deda26ee51a9be1d5ea0a31af6af9d3ea6605
Reviewed-on: https://chromium-review.googlesource.com/1194968Reviewed-by: default avatarThomas Guilbert <tguilbert@chromium.org>
Commit-Queue: Zhiqiang Zhang <zqzhang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#587254}
parent 265cbb6a
......@@ -248,7 +248,7 @@ public abstract class CafBaseMediaRouteProvider
}
protected boolean hasSession() {
return mSessionController != null && mSessionController.isConnected();
return mSessionController.isConnected();
}
protected CastSessionController sessionController() {
......
......@@ -4,6 +4,8 @@
package org.chromium.chrome.browser.media.router.caf;
import static org.chromium.chrome.browser.media.router.caf.CastUtils.isSameOrigin;
import android.support.annotation.Nullable;
import android.support.v7.media.MediaRouter;
......@@ -99,7 +101,15 @@ public class CafMediaRouteProvider extends CafBaseMediaRouteProvider {
@Override
public void sendStringMessage(String routeId, String message, int nativeCallbackId) {
// Not implemented.
Log.d(TAG, "Received message from client: %s", message);
if (!mRoutes.containsKey(routeId)) {
mManager.onMessageSentResult(false, nativeCallbackId);
return;
}
mManager.onMessageSentResult(
mMessageHandler.handleMessageFromClient(message), nativeCallbackId);
}
@Override
......@@ -121,6 +131,15 @@ public class CafMediaRouteProvider extends CafBaseMediaRouteProvider {
mManager.onMessage(clientRecord.routeId, message);
}
/** Flushes all pending messages in record to a client. */
public void flushPendingMessagesToClient(ClientRecord clientRecord) {
for (String message : clientRecord.pendingMessages) {
Log.d(TAG, "Deqeueing message for client %s: %s", clientRecord.clientId, message);
mManager.onMessage(clientRecord.routeId, message);
}
clientRecord.pendingMessages.clear();
}
@Override
public CafMessageHandler getMessageHandler() {
return mMessageHandler;
......@@ -217,18 +236,4 @@ public class CafMediaRouteProvider extends CafBaseMediaRouteProvider {
return false;
}
/**
* Compares two origins. Empty origin strings correspond to unique origins in
* url::Origin.
*
* @param originA A URL origin.
* @param originB A URL origin.
* @return True if originA and originB represent the same origin, false otherwise.
*/
private static final boolean isSameOrigin(String originA, String originB) {
if (originA == null || originA.isEmpty() || originB == null || originB.isEmpty())
return false;
return originA.equals(originB);
}
}
......@@ -10,7 +10,22 @@ import org.chromium.base.ContextUtils;
/** Utility methods for Cast. */
public class CastUtils {
/** Helper method to return the {@link CastContext} instance. */
public static CastContext getCastContext() {
return CastContext.getSharedInstance(ContextUtils.getApplicationContext());
}
/**
* Compares two origins. Empty origin strings correspond to unique origins in
* url::Origin.
*
* @param originA A URL origin.
* @param originB A URL origin.
* @return True if originA and originB represent the same origin, false otherwise.
*/
public static final boolean isSameOrigin(String originA, String originB) {
if (originA == null || originA.isEmpty() || originB == null || originB.isEmpty())
return false;
return originA.equals(originB);
}
}
......@@ -207,6 +207,7 @@ public class CastMediaRouteProvider extends BaseMediaRouteProvider {
removeClient(getClientRecordByRouteId(routeId));
}
// Migrated to CafMessageHandler. See https://crbug.com/711860.
@Override
public void sendStringMessage(String routeId, String message, int nativeCallbackId) {
Log.d(TAG, "Received message from client: %s", message);
......@@ -241,6 +242,7 @@ public class CastMediaRouteProvider extends BaseMediaRouteProvider {
mManager.onMessageSentResult(success, nativeCallbackId);
}
// Migrated to CafMessageHandler. See https://crbug.com/711860.
private boolean handleClientConnectMessage(JSONObject jsonMessage) throws JSONException {
String clientId = jsonMessage.getString("clientId");
if (clientId == null) return false;
......@@ -261,6 +263,7 @@ public class CastMediaRouteProvider extends BaseMediaRouteProvider {
return true;
}
// Migrated to CafMessageHandler. See https://crbug.com/711860.
private boolean handleClientDisconnectMessage(JSONObject jsonMessage) throws JSONException {
String clientId = jsonMessage.getString("clientId");
if (clientId == null) return false;
......@@ -276,6 +279,7 @@ public class CastMediaRouteProvider extends BaseMediaRouteProvider {
return true;
}
// Migrated to CafMessageHandler. See https://crbug.com/711860.
private boolean handleLeaveSessionMessage(JSONObject jsonMessage) throws JSONException {
String clientId = jsonMessage.getString("clientId");
if (clientId == null || mSession == null) return false;
......@@ -305,6 +309,7 @@ public class CastMediaRouteProvider extends BaseMediaRouteProvider {
return true;
}
// Migrated to CafMessageHandler. See https://crbug.com/711860.
private String buildInternalMessage(
String type, int sequenceNumber, String clientId, String message) throws JSONException {
JSONObject jsonMessage = new JSONObject();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment