blob: 7b978dc7065048135963843c96d6db1656a30167 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/media_router/browser/route_message_util.h"
#include "base/json/json_writer.h"
#include "base/values.h"
using media_router::mojom::RouteMessage;
using media_router::mojom::RouteMessagePtr;
namespace media_router {
namespace message_util {
media_router::mojom::RouteMessagePtr RouteMessageFromValue(
base::Value message) {
std::string str;
CHECK(base::JSONWriter::Write(message, &str));
return RouteMessageFromString(std::move(str));
}
RouteMessagePtr RouteMessageFromString(std::string message) {
auto route_message = RouteMessage::New();
route_message->type = RouteMessage::Type::TEXT;
route_message->message = std::move(message);
return route_message;
}
RouteMessagePtr RouteMessageFromData(std::vector<uint8_t> data) {
auto route_message = RouteMessage::New();
route_message->type = RouteMessage::Type::BINARY;
route_message->data = std::move(data);
return route_message;
}
blink::mojom::PresentationConnectionMessagePtr
PresentationConnectionFromRouteMessage(RouteMessagePtr route_message) {
// NOTE: Makes a copy of |route_message| contents. This can be eliminated
// when media_router::mojom::RouteMessage is deleted.
switch (route_message->type) {
case RouteMessage::Type::TEXT:
return blink::mojom::PresentationConnectionMessage::NewMessage(
route_message->message.value());
case RouteMessage::Type::BINARY:
return blink::mojom::PresentationConnectionMessage::NewData(
route_message->data.value());
}
NOTREACHED() << "Unknown RouteMessageType " << route_message->type;
}
} // namespace message_util
} // namespace media_router