Chromium Code Reviews| 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( |