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

Side by Side Diff: content/renderer/presentation/presentation_dispatcher.cc

Issue 1527183003: Change mojo enums to be scoped enums in the generated C++ bindings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mojo-binding-equals
Patch Set: rebase Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/presentation/presentation_dispatcher.h" 5 #include "content/renderer/presentation/presentation_dispatcher.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "content/common/presentation/presentation_service.mojom.h" 12 #include "content/common/presentation/presentation_service.mojom.h"
13 #include "content/public/common/presentation_constants.h" 13 #include "content/public/common/presentation_constants.h"
14 #include "content/public/common/service_registry.h" 14 #include "content/public/common/service_registry.h"
15 #include "content/public/renderer/render_frame.h" 15 #include "content/public/renderer/render_frame.h"
16 #include "content/renderer/presentation/presentation_connection_client.h" 16 #include "content/renderer/presentation/presentation_connection_client.h"
17 #include "third_party/WebKit/public/platform/WebString.h" 17 #include "third_party/WebKit/public/platform/WebString.h"
18 #include "third_party/WebKit/public/platform/WebURL.h" 18 #include "third_party/WebKit/public/platform/WebURL.h"
19 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nAvailabilityObserver.h" 19 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nAvailabilityObserver.h"
20 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nController.h" 20 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nController.h"
21 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nError.h" 21 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nError.h"
22 #include "third_party/WebKit/public/web/WebLocalFrame.h" 22 #include "third_party/WebKit/public/web/WebLocalFrame.h"
23 #include "url/gurl.h" 23 #include "url/gurl.h"
24 24
25 namespace { 25 namespace {
26 26
27 blink::WebPresentationError::ErrorType GetWebPresentationErrorTypeFromMojo( 27 blink::WebPresentationError::ErrorType GetWebPresentationErrorTypeFromMojo(
28 presentation::PresentationErrorType mojoErrorType) { 28 presentation::PresentationErrorType mojoErrorType) {
29 switch (mojoErrorType) { 29 switch (mojoErrorType) {
30 case presentation::PRESENTATION_ERROR_TYPE_NO_AVAILABLE_SCREENS: 30 case presentation::PresentationErrorType::NO_AVAILABLE_SCREENS:
31 return blink::WebPresentationError::ErrorTypeNoAvailableScreens; 31 return blink::WebPresentationError::ErrorTypeNoAvailableScreens;
32 case presentation::PRESENTATION_ERROR_TYPE_SESSION_REQUEST_CANCELLED: 32 case presentation::PresentationErrorType::SESSION_REQUEST_CANCELLED:
33 return blink::WebPresentationError::ErrorTypeSessionRequestCancelled; 33 return blink::WebPresentationError::ErrorTypeSessionRequestCancelled;
34 case presentation::PRESENTATION_ERROR_TYPE_NO_PRESENTATION_FOUND: 34 case presentation::PresentationErrorType::NO_PRESENTATION_FOUND:
35 return blink::WebPresentationError::ErrorTypeNoPresentationFound; 35 return blink::WebPresentationError::ErrorTypeNoPresentationFound;
36 case presentation::PRESENTATION_ERROR_TYPE_UNKNOWN: 36 case presentation::PresentationErrorType::UNKNOWN:
37 default: 37 default:
38 return blink::WebPresentationError::ErrorTypeUnknown; 38 return blink::WebPresentationError::ErrorTypeUnknown;
39 } 39 }
40 } 40 }
41 41
42 blink::WebPresentationConnectionState GetWebPresentationConnectionStateFromMojo( 42 blink::WebPresentationConnectionState GetWebPresentationConnectionStateFromMojo(
43 presentation::PresentationConnectionState mojoSessionState) { 43 presentation::PresentationConnectionState mojoSessionState) {
44 switch (mojoSessionState) { 44 switch (mojoSessionState) {
45 // TODO(imcheng): Add Connecting state to Blink (crbug.com/575351). 45 // TODO(imcheng): Add Connecting state to Blink (crbug.com/575351).
46 case presentation::PRESENTATION_CONNECTION_STATE_CONNECTED: 46 case presentation::PresentationConnectionState::CONNECTED:
47 return blink::WebPresentationConnectionState::Connected; 47 return blink::WebPresentationConnectionState::Connected;
48 case presentation::PRESENTATION_CONNECTION_STATE_CLOSED: 48 case presentation::PresentationConnectionState::CLOSED:
49 return blink::WebPresentationConnectionState::Closed; 49 return blink::WebPresentationConnectionState::Closed;
50 case presentation::PRESENTATION_CONNECTION_STATE_TERMINATED: 50 case presentation::PresentationConnectionState::TERMINATED:
51 return blink::WebPresentationConnectionState::Terminated; 51 return blink::WebPresentationConnectionState::Terminated;
52 default: 52 default:
53 NOTREACHED(); 53 NOTREACHED();
54 return blink::WebPresentationConnectionState::Terminated; 54 return blink::WebPresentationConnectionState::Terminated;
55 } 55 }
56 } 56 }
57 57
58 } // namespace 58 } // namespace
59 59
60 namespace content { 60 namespace content {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 const blink::WebString& presentationId, 139 const blink::WebString& presentationId,
140 const uint8_t* data, 140 const uint8_t* data,
141 size_t length) { 141 size_t length) {
142 DCHECK(data); 142 DCHECK(data);
143 if (length > kMaxPresentationSessionMessageSize) { 143 if (length > kMaxPresentationSessionMessageSize) {
144 // TODO(crbug.com/459008): Same as in sendString(). 144 // TODO(crbug.com/459008): Same as in sendString().
145 LOG(WARNING) << "data size exceeded limit!"; 145 LOG(WARNING) << "data size exceeded limit!";
146 return; 146 return;
147 } 147 }
148 148
149 message_request_queue_.push(make_scoped_ptr( 149 message_request_queue_.push(make_scoped_ptr(CreateSendBinaryMessageRequest(
150 CreateSendBinaryMessageRequest(presentationUrl, presentationId, 150 presentationUrl, presentationId,
151 presentation::PresentationMessageType:: 151 presentation::PresentationMessageType::ARRAY_BUFFER, data, length)));
152 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER,
153 data, length)));
154 // Start processing request if only one in the queue. 152 // Start processing request if only one in the queue.
155 if (message_request_queue_.size() == 1) 153 if (message_request_queue_.size() == 1)
156 DoSendMessage(message_request_queue_.front().get()); 154 DoSendMessage(message_request_queue_.front().get());
157 } 155 }
158 156
159 void PresentationDispatcher::sendBlobData( 157 void PresentationDispatcher::sendBlobData(
160 const blink::WebString& presentationUrl, 158 const blink::WebString& presentationUrl,
161 const blink::WebString& presentationId, 159 const blink::WebString& presentationId,
162 const uint8_t* data, 160 const uint8_t* data,
163 size_t length) { 161 size_t length) {
164 DCHECK(data); 162 DCHECK(data);
165 if (length > kMaxPresentationSessionMessageSize) { 163 if (length > kMaxPresentationSessionMessageSize) {
166 // TODO(crbug.com/459008): Same as in sendString(). 164 // TODO(crbug.com/459008): Same as in sendString().
167 LOG(WARNING) << "data size exceeded limit!"; 165 LOG(WARNING) << "data size exceeded limit!";
168 return; 166 return;
169 } 167 }
170 168
171 message_request_queue_.push(make_scoped_ptr(CreateSendBinaryMessageRequest( 169 message_request_queue_.push(make_scoped_ptr(CreateSendBinaryMessageRequest(
172 presentationUrl, presentationId, 170 presentationUrl, presentationId,
173 presentation::PresentationMessageType::PRESENTATION_MESSAGE_TYPE_BLOB, 171 presentation::PresentationMessageType::BLOB, data, length)));
174 data, length)));
175 // Start processing request if only one in the queue. 172 // Start processing request if only one in the queue.
176 if (message_request_queue_.size() == 1) 173 if (message_request_queue_.size() == 1)
177 DoSendMessage(message_request_queue_.front().get()); 174 DoSendMessage(message_request_queue_.front().get());
178 } 175 }
179 176
180 void PresentationDispatcher::DoSendMessage(SendMessageRequest* request) { 177 void PresentationDispatcher::DoSendMessage(SendMessageRequest* request) {
181 ConnectToPresentationServiceIfNeeded(); 178 ConnectToPresentationServiceIfNeeded();
182 179
183 presentation_service_->SendSessionMessage( 180 presentation_service_->SendSessionMessage(
184 std::move(request->session_info), std::move(request->message), 181 std::move(request->session_info), std::move(request->message),
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 mojo::Array<presentation::SessionMessagePtr> messages) { 387 mojo::Array<presentation::SessionMessagePtr> messages) {
391 if (!controller_) 388 if (!controller_)
392 return; 389 return;
393 390
394 for (size_t i = 0; i < messages.size(); ++i) { 391 for (size_t i = 0; i < messages.size(); ++i) {
395 // Note: Passing batches of messages to the Blink layer would be more 392 // Note: Passing batches of messages to the Blink layer would be more
396 // efficient. 393 // efficient.
397 scoped_ptr<PresentationConnectionClient> session_client( 394 scoped_ptr<PresentationConnectionClient> session_client(
398 new PresentationConnectionClient(session_info->url, session_info->id)); 395 new PresentationConnectionClient(session_info->url, session_info->id));
399 switch (messages[i]->type) { 396 switch (messages[i]->type) {
400 case presentation::PresentationMessageType:: 397 case presentation::PresentationMessageType::TEXT: {
401 PRESENTATION_MESSAGE_TYPE_TEXT: {
402 controller_->didReceiveSessionTextMessage( 398 controller_->didReceiveSessionTextMessage(
403 session_client.release(), 399 session_client.release(),
404 blink::WebString::fromUTF8(messages[i]->message)); 400 blink::WebString::fromUTF8(messages[i]->message));
405 break; 401 break;
406 } 402 }
407 case presentation::PresentationMessageType:: 403 case presentation::PresentationMessageType::ARRAY_BUFFER:
408 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER: 404 case presentation::PresentationMessageType::BLOB: {
409 case presentation::PresentationMessageType::
410 PRESENTATION_MESSAGE_TYPE_BLOB: {
411 controller_->didReceiveSessionBinaryMessage( 405 controller_->didReceiveSessionBinaryMessage(
412 session_client.release(), &(messages[i]->data.front()), 406 session_client.release(), &(messages[i]->data.front()),
413 messages[i]->data.size()); 407 messages[i]->data.size());
414 break; 408 break;
415 } 409 }
416 default: { 410 default: {
417 NOTREACHED(); 411 NOTREACHED();
418 break; 412 break;
419 } 413 }
420 } 414 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 const blink::WebString& presentationUrl, 457 const blink::WebString& presentationUrl,
464 const blink::WebString& presentationId, 458 const blink::WebString& presentationId,
465 const blink::WebString& message) { 459 const blink::WebString& message) {
466 presentation::PresentationSessionInfoPtr session_info = 460 presentation::PresentationSessionInfoPtr session_info =
467 presentation::PresentationSessionInfo::New(); 461 presentation::PresentationSessionInfo::New();
468 session_info->url = presentationUrl.utf8(); 462 session_info->url = presentationUrl.utf8();
469 session_info->id = presentationId.utf8(); 463 session_info->id = presentationId.utf8();
470 464
471 presentation::SessionMessagePtr session_message = 465 presentation::SessionMessagePtr session_message =
472 presentation::SessionMessage::New(); 466 presentation::SessionMessage::New();
473 session_message->type = 467 session_message->type = presentation::PresentationMessageType::TEXT;
474 presentation::PresentationMessageType::PRESENTATION_MESSAGE_TYPE_TEXT;
475 session_message->message = message.utf8(); 468 session_message->message = message.utf8();
476 return new SendMessageRequest(std::move(session_info), 469 return new SendMessageRequest(std::move(session_info),
477 std::move(session_message)); 470 std::move(session_message));
478 } 471 }
479 472
480 // static 473 // static
481 PresentationDispatcher::SendMessageRequest* 474 PresentationDispatcher::SendMessageRequest*
482 PresentationDispatcher::CreateSendBinaryMessageRequest( 475 PresentationDispatcher::CreateSendBinaryMessageRequest(
483 const blink::WebString& presentationUrl, 476 const blink::WebString& presentationUrl,
484 const blink::WebString& presentationId, 477 const blink::WebString& presentationId,
(...skipping 17 matching lines...) Expand all
502 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus( 495 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus(
503 const std::string& availability_url) 496 const std::string& availability_url)
504 : url(availability_url), 497 : url(availability_url),
505 last_known_availability(false), 498 last_known_availability(false),
506 listening_state(ListeningState::INACTIVE) {} 499 listening_state(ListeningState::INACTIVE) {}
507 500
508 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() { 501 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() {
509 } 502 }
510 503
511 } // namespace content 504 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698