Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1219)

Unified Diff: content/renderer/presentation/presentation_dispatcher.cc

Issue 2613153003: [Presentation API] Replaces type converters with typemaps (Closed)
Patch Set: Add more OWNERS foo Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/presentation/presentation_dispatcher.cc
diff --git a/content/renderer/presentation/presentation_dispatcher.cc b/content/renderer/presentation/presentation_dispatcher.cc
index 7dcf920b1ab86b49b5c5b6a03812899cb811bf5d..c023f4ac575ff375606221e111b0688c7ac5901f 100644
--- a/content/renderer/presentation/presentation_dispatcher.cc
+++ b/content/renderer/presentation/presentation_dispatcher.cc
@@ -14,7 +14,6 @@
#include "base/threading/thread_task_runner_handle.h"
#include "content/public/common/presentation_constants.h"
#include "content/public/renderer/render_frame.h"
-#include "mojo/public/cpp/bindings/type_converter.h"
#include "services/service_manager/public/cpp/interface_provider.h"
#include "third_party/WebKit/public/platform/WebString.h"
#include "third_party/WebKit/public/platform/WebURL.h"
@@ -28,48 +27,35 @@
#include "third_party/WebKit/public/web/WebLocalFrame.h"
#include "url/gurl.h"
-namespace mojo {
-
-// Temporary type converter since Presentation API has not been Onion Soup-ed.
-template <>
-struct TypeConverter<blink::WebPresentationSessionInfo,
- blink::mojom::PresentationSessionInfoPtr> {
- static blink::WebPresentationSessionInfo Convert(
- const blink::mojom::PresentationSessionInfoPtr& input) {
- return blink::WebPresentationSessionInfo(
- blink::WebURL(input->url), blink::WebString::fromUTF8(input->id));
- }
-};
-
-} // namespace mojo
+namespace content {
namespace {
-blink::WebPresentationError::ErrorType GetWebPresentationErrorTypeFromMojo(
- blink::mojom::PresentationErrorType mojoErrorType) {
- switch (mojoErrorType) {
- case blink::mojom::PresentationErrorType::NO_AVAILABLE_SCREENS:
+blink::WebPresentationError::ErrorType GetWebPresentationErrorType(
+ PresentationErrorType errorType) {
+ switch (errorType) {
+ case PresentationErrorType::PRESENTATION_ERROR_NO_AVAILABLE_SCREENS:
return blink::WebPresentationError::ErrorTypeNoAvailableScreens;
- case blink::mojom::PresentationErrorType::SESSION_REQUEST_CANCELLED:
+ case PresentationErrorType::PRESENTATION_ERROR_SESSION_REQUEST_CANCELLED:
return blink::WebPresentationError::ErrorTypeSessionRequestCancelled;
- case blink::mojom::PresentationErrorType::NO_PRESENTATION_FOUND:
+ case PresentationErrorType::PRESENTATION_ERROR_NO_PRESENTATION_FOUND:
return blink::WebPresentationError::ErrorTypeNoPresentationFound;
- case blink::mojom::PresentationErrorType::UNKNOWN:
+ case PresentationErrorType::PRESENTATION_ERROR_UNKNOWN:
default:
return blink::WebPresentationError::ErrorTypeUnknown;
}
}
-blink::WebPresentationConnectionState GetWebPresentationConnectionStateFromMojo(
- blink::mojom::PresentationConnectionState mojoSessionState) {
- switch (mojoSessionState) {
- case blink::mojom::PresentationConnectionState::CONNECTING:
+blink::WebPresentationConnectionState GetWebPresentationConnectionState(
+ PresentationConnectionState sessionState) {
+ switch (sessionState) {
+ case PresentationConnectionState::PRESENTATION_CONNECTION_STATE_CONNECTING:
return blink::WebPresentationConnectionState::Connecting;
- case blink::mojom::PresentationConnectionState::CONNECTED:
+ case PresentationConnectionState::PRESENTATION_CONNECTION_STATE_CONNECTED:
return blink::WebPresentationConnectionState::Connected;
- case blink::mojom::PresentationConnectionState::CLOSED:
+ case PresentationConnectionState::PRESENTATION_CONNECTION_STATE_CLOSED:
return blink::WebPresentationConnectionState::Closed;
- case blink::mojom::PresentationConnectionState::TERMINATED:
+ case PresentationConnectionState::PRESENTATION_CONNECTION_STATE_TERMINATED:
return blink::WebPresentationConnectionState::Terminated;
default:
NOTREACHED();
@@ -78,14 +64,17 @@ blink::WebPresentationConnectionState GetWebPresentationConnectionStateFromMojo(
}
blink::WebPresentationConnectionCloseReason
-GetWebPresentationConnectionCloseReasonFromMojo(
- blink::mojom::PresentationConnectionCloseReason mojoConnectionCloseReason) {
- switch (mojoConnectionCloseReason) {
- case blink::mojom::PresentationConnectionCloseReason::CONNECTION_ERROR:
+GetWebPresentationConnectionCloseReason(
+ PresentationConnectionCloseReason connectionCloseReason) {
+ switch (connectionCloseReason) {
+ case PresentationConnectionCloseReason::
+ PRESENTATION_CONNECTION_CLOSE_REASON_CONNECTION_ERROR:
return blink::WebPresentationConnectionCloseReason::Error;
- case blink::mojom::PresentationConnectionCloseReason::CLOSED:
+ case PresentationConnectionCloseReason::
+ PRESENTATION_CONNECTION_CLOSE_REASON_CLOSED:
return blink::WebPresentationConnectionCloseReason::Closed;
- case blink::mojom::PresentationConnectionCloseReason::WENT_AWAY:
+ case PresentationConnectionCloseReason::
+ PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY:
return blink::WebPresentationConnectionCloseReason::WentAway;
default:
NOTREACHED();
@@ -95,8 +84,6 @@ GetWebPresentationConnectionCloseReasonFromMojo(
} // namespace
-namespace content {
-
PresentationDispatcher::PresentationDispatcher(RenderFrame* render_frame)
: RenderFrameObserver(render_frame),
controller_(nullptr),
@@ -389,72 +376,77 @@ void PresentationDispatcher::OnScreenAvailabilityNotSupported(const GURL& url) {
}
void PresentationDispatcher::OnDefaultSessionStarted(
- blink::mojom::PresentationSessionInfoPtr session_info) {
+ const PresentationSessionInfo& session_info) {
if (!controller_)
return;
- if (!session_info.is_null()) {
- presentation_service_->ListenForConnectionMessages(session_info.Clone());
- controller_->didStartDefaultSession(
- mojo::ConvertTo<blink::WebPresentationSessionInfo>(session_info));
- }
+ presentation_service_->ListenForConnectionMessages(session_info);
+ controller_->didStartDefaultSession(blink::WebPresentationSessionInfo(
+ blink::WebURL(session_info.presentation_url),
imcheng 2017/01/24 23:31:40 This one invokes the blink::WebURL constructor exp
mark a. foltz 2017/01/27 22:41:08 WebURL has a GURL constructor, so this was not nec
+ blink::WebString::fromUTF8(session_info.presentation_id)));
}
void PresentationDispatcher::OnSessionCreated(
std::unique_ptr<blink::WebPresentationConnectionCallback> callback,
- blink::mojom::PresentationSessionInfoPtr session_info,
- blink::mojom::PresentationErrorPtr error) {
+ const base::Optional<PresentationSessionInfo>& session_info,
+ const base::Optional<PresentationError>& error) {
DCHECK(callback);
- if (!error.is_null()) {
- DCHECK(session_info.is_null());
+ if (error) {
+ DCHECK(!session_info);
callback->onError(blink::WebPresentationError(
- GetWebPresentationErrorTypeFromMojo(error->error_type),
+ GetWebPresentationErrorType(error->error_type),
blink::WebString::fromUTF8(error->message)));
return;
}
- DCHECK(!session_info.is_null());
- presentation_service_->ListenForConnectionMessages(session_info.Clone());
- callback->onSuccess(
- mojo::ConvertTo<blink::WebPresentationSessionInfo>(session_info));
+ DCHECK(session_info);
+ presentation_service_->ListenForConnectionMessages(session_info.value());
+ callback->onSuccess(blink::WebPresentationSessionInfo(
+ session_info->presentation_url,
+ blink::WebString::fromUTF8(session_info->presentation_id)));
}
void PresentationDispatcher::OnReceiverConnectionAvailable(
- blink::mojom::PresentationSessionInfoPtr session_info,
+ const PresentationSessionInfo& session_info,
blink::mojom::PresentationConnectionPtr,
blink::mojom::PresentationConnectionRequest) {
if (receiver_) {
- receiver_->onReceiverConnectionAvailable(
- mojo::ConvertTo<blink::WebPresentationSessionInfo>(session_info));
+ receiver_->onReceiverConnectionAvailable(blink::WebPresentationSessionInfo(
+ session_info.presentation_url,
+ blink::WebString::fromUTF8(session_info.presentation_id)));
}
}
void PresentationDispatcher::OnConnectionStateChanged(
- blink::mojom::PresentationSessionInfoPtr session_info,
- blink::mojom::PresentationConnectionState state) {
+ const PresentationSessionInfo& session_info,
+ PresentationConnectionState state) {
if (!controller_)
return;
controller_->didChangeSessionState(
- mojo::ConvertTo<blink::WebPresentationSessionInfo>(session_info),
- GetWebPresentationConnectionStateFromMojo(state));
+ blink::WebPresentationSessionInfo(
+ session_info.presentation_url,
+ blink::WebString::fromUTF8(session_info.presentation_id)),
+ GetWebPresentationConnectionState(state));
}
void PresentationDispatcher::OnConnectionClosed(
- blink::mojom::PresentationSessionInfoPtr session_info,
- blink::mojom::PresentationConnectionCloseReason reason,
+ const PresentationSessionInfo& session_info,
+ PresentationConnectionCloseReason reason,
const std::string& message) {
if (!controller_)
return;
controller_->didCloseConnection(
- mojo::ConvertTo<blink::WebPresentationSessionInfo>(session_info),
- GetWebPresentationConnectionCloseReasonFromMojo(reason),
+ blink::WebPresentationSessionInfo(
+ session_info.presentation_url,
+ blink::WebString::fromUTF8(session_info.presentation_id)),
+ GetWebPresentationConnectionCloseReason(reason),
blink::WebString::fromUTF8(message));
}
void PresentationDispatcher::OnConnectionMessagesReceived(
- blink::mojom::PresentationSessionInfoPtr session_info,
+ const PresentationSessionInfo& session_info,
std::vector<blink::mojom::ConnectionMessagePtr> messages) {
if (!controller_)
return;
@@ -462,8 +454,10 @@ void PresentationDispatcher::OnConnectionMessagesReceived(
for (size_t i = 0; i < messages.size(); ++i) {
// Note: Passing batches of messages to the Blink layer would be more
// efficient.
- auto web_session_info =
- mojo::ConvertTo<blink::WebPresentationSessionInfo>(session_info);
+ auto web_session_info = blink::WebPresentationSessionInfo(
+ session_info.presentation_url,
+ blink::WebString::fromUTF8(session_info.presentation_id));
+
switch (messages[i]->type) {
case blink::mojom::PresentationMessageType::TEXT: {
// TODO(mfoltz): Do we need to DCHECK(messages[i]->message)?
@@ -514,9 +508,9 @@ void PresentationDispatcher::UpdateListeningState(AvailabilityStatus* status) {
}
PresentationDispatcher::SendMessageRequest::SendMessageRequest(
- blink::mojom::PresentationSessionInfoPtr session_info,
+ const PresentationSessionInfo& session_info,
blink::mojom::ConnectionMessagePtr message)
- : session_info(std::move(session_info)), message(std::move(message)) {}
+ : session_info(session_info), message(std::move(message)) {}
PresentationDispatcher::SendMessageRequest::~SendMessageRequest() {}
@@ -526,17 +520,14 @@ PresentationDispatcher::CreateSendTextMessageRequest(
const blink::WebURL& presentationUrl,
const blink::WebString& presentationId,
const blink::WebString& message) {
- blink::mojom::PresentationSessionInfoPtr session_info =
- blink::mojom::PresentationSessionInfo::New();
- session_info->url = presentationUrl;
- session_info->id = presentationId.utf8();
+ PresentationSessionInfo session_info(GURL(presentationUrl),
+ presentationId.utf8());
blink::mojom::ConnectionMessagePtr session_message =
blink::mojom::ConnectionMessage::New();
session_message->type = blink::mojom::PresentationMessageType::TEXT;
session_message->message = message.utf8();
- return new SendMessageRequest(std::move(session_info),
- std::move(session_message));
+ return new SendMessageRequest(session_info, std::move(session_message));
}
// static
@@ -547,17 +538,14 @@ PresentationDispatcher::CreateSendBinaryMessageRequest(
blink::mojom::PresentationMessageType type,
const uint8_t* data,
size_t length) {
- blink::mojom::PresentationSessionInfoPtr session_info =
- blink::mojom::PresentationSessionInfo::New();
- session_info->url = presentationUrl;
- session_info->id = presentationId.utf8();
+ PresentationSessionInfo session_info(GURL(presentationUrl),
+ presentationId.utf8());
blink::mojom::ConnectionMessagePtr session_message =
blink::mojom::ConnectionMessage::New();
session_message->type = type;
session_message->data = std::vector<uint8_t>(data, data + length);
- return new SendMessageRequest(std::move(session_info),
- std::move(session_message));
+ return new SendMessageRequest(session_info, std::move(session_message));
}
PresentationDispatcher::AvailabilityStatus::AvailabilityStatus(

Powered by Google App Engine
This is Rietveld 408576698