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 |