| Index: chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSession.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSession.java b/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSession.java
|
| index 3abc122af658dfd43e4429916481e2d439b19ed6..a45554fb3624afae2c7918fe167696933a1382d8 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSession.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastSession.java
|
| @@ -512,7 +512,7 @@ public class CastSession implements MediaNotificationListener {
|
| messageType = sMediaOverloadedMessageTypes.get(messageType);
|
| jsonCastMessage.put("type", messageType);
|
| }
|
| - return sendCastMessage(jsonCastMessage, MEDIA_NAMESPACE, clientId, sequenceNumber);
|
| + return sendJsonCastMessage(jsonCastMessage, MEDIA_NAMESPACE, clientId, sequenceNumber);
|
| }
|
|
|
| return true;
|
| @@ -613,9 +613,6 @@ public class CastSession implements MediaNotificationListener {
|
|
|
| JSONObject jsonAppMessageWrapper = jsonMessage.getJSONObject("message");
|
|
|
| - JSONObject actualMessage = jsonAppMessageWrapper.getJSONObject("message");
|
| - if (actualMessage == null) return false;
|
| -
|
| if (!mSessionId.equals(jsonAppMessageWrapper.getString("sessionId"))) return false;
|
|
|
| String namespaceName = jsonAppMessageWrapper.getString("namespaceName");
|
| @@ -624,10 +621,20 @@ public class CastSession implements MediaNotificationListener {
|
| if (!mNamespaces.contains(namespaceName)) return false;
|
|
|
| int sequenceNumber = jsonMessage.optInt("sequenceNumber", INVALID_SEQUENCE_NUMBER);
|
| - return sendCastMessage(actualMessage, namespaceName, clientId, sequenceNumber);
|
| +
|
| + Object actualMessageObject = jsonAppMessageWrapper.get("message");
|
| + if (actualMessageObject == null) return false;
|
| +
|
| + if (actualMessageObject instanceof String) {
|
| + String actualMessage = jsonAppMessageWrapper.getString("message");
|
| + return sendStringCastMessage(actualMessage, namespaceName, clientId, sequenceNumber);
|
| + }
|
| +
|
| + JSONObject actualMessage = jsonAppMessageWrapper.getJSONObject("message");
|
| + return sendJsonCastMessage(actualMessage, namespaceName, clientId, sequenceNumber);
|
| }
|
|
|
| - private boolean sendCastMessage(
|
| + private boolean sendJsonCastMessage(
|
| JSONObject message,
|
| final String namespace,
|
| final String clientId,
|
| @@ -649,10 +656,18 @@ public class CastSession implements MediaNotificationListener {
|
| mRequests.append(requestId, new RequestRecord(clientId, sequenceNumber));
|
| }
|
|
|
| + return sendStringCastMessage(message.toString(), namespace, clientId, sequenceNumber);
|
| + }
|
| +
|
| + private boolean sendStringCastMessage(
|
| + final String message,
|
| + final String namespace,
|
| + final String clientId,
|
| + final int sequenceNumber) {
|
| Log.d(TAG, "Sending message to Cast device in namespace %s: %s", namespace, message);
|
|
|
| try {
|
| - Cast.CastApi.sendMessage(mApiClient, namespace, message.toString())
|
| + Cast.CastApi.sendMessage(mApiClient, namespace, message)
|
| .setResultCallback(
|
| new ResultCallback<Status>() {
|
| @Override
|
|
|