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

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: 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 case presentation::PRESENTATION_CONNECTION_STATE_CONNECTED: 45 case presentation::PresentationConnectionState::CONNECTED:
46 return blink::WebPresentationConnectionState::Connected; 46 return blink::WebPresentationConnectionState::Connected;
47 case presentation::PRESENTATION_CONNECTION_STATE_CLOSED: 47 case presentation::PresentationConnectionState::CLOSED:
48 return blink::WebPresentationConnectionState::Closed; 48 return blink::WebPresentationConnectionState::Closed;
49 case presentation::PRESENTATION_CONNECTION_STATE_TERMINATED: 49 case presentation::PresentationConnectionState::TERMINATED:
50 return blink::WebPresentationConnectionState::Terminated; 50 return blink::WebPresentationConnectionState::Terminated;
51 } 51 }
52 52
53 NOTREACHED(); 53 NOTREACHED();
54 return blink::WebPresentationConnectionState::Terminated; 54 return blink::WebPresentationConnectionState::Terminated;
55 } 55 }
56 56
57 } // namespace 57 } // namespace
58 58
59 namespace content { 59 namespace content {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 const blink::WebString& presentationId, 138 const blink::WebString& presentationId,
139 const uint8_t* data, 139 const uint8_t* data,
140 size_t length) { 140 size_t length) {
141 DCHECK(data); 141 DCHECK(data);
142 if (length > kMaxPresentationSessionMessageSize) { 142 if (length > kMaxPresentationSessionMessageSize) {
143 // TODO(crbug.com/459008): Same as in sendString(). 143 // TODO(crbug.com/459008): Same as in sendString().
144 LOG(WARNING) << "data size exceeded limit!"; 144 LOG(WARNING) << "data size exceeded limit!";
145 return; 145 return;
146 } 146 }
147 147
148 message_request_queue_.push(make_scoped_ptr( 148 message_request_queue_.push(make_scoped_ptr(CreateSendBinaryMessageRequest(
149 CreateSendBinaryMessageRequest(presentationUrl, presentationId, 149 presentationUrl, presentationId,
150 presentation::PresentationMessageType:: 150 presentation::PresentationMessageType::ARRAY_BUFFER, data, length)));
151 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER,
152 data, length)));
153 // Start processing request if only one in the queue. 151 // Start processing request if only one in the queue.
154 if (message_request_queue_.size() == 1) 152 if (message_request_queue_.size() == 1)
155 DoSendMessage(message_request_queue_.front().get()); 153 DoSendMessage(message_request_queue_.front().get());
156 } 154 }
157 155
158 void PresentationDispatcher::sendBlobData( 156 void PresentationDispatcher::sendBlobData(
159 const blink::WebString& presentationUrl, 157 const blink::WebString& presentationUrl,
160 const blink::WebString& presentationId, 158 const blink::WebString& presentationId,
161 const uint8_t* data, 159 const uint8_t* data,
162 size_t length) { 160 size_t length) {
163 DCHECK(data); 161 DCHECK(data);
164 if (length > kMaxPresentationSessionMessageSize) { 162 if (length > kMaxPresentationSessionMessageSize) {
165 // TODO(crbug.com/459008): Same as in sendString(). 163 // TODO(crbug.com/459008): Same as in sendString().
166 LOG(WARNING) << "data size exceeded limit!"; 164 LOG(WARNING) << "data size exceeded limit!";
167 return; 165 return;
168 } 166 }
169 167
170 message_request_queue_.push(make_scoped_ptr(CreateSendBinaryMessageRequest( 168 message_request_queue_.push(make_scoped_ptr(CreateSendBinaryMessageRequest(
171 presentationUrl, presentationId, 169 presentationUrl, presentationId,
172 presentation::PresentationMessageType::PRESENTATION_MESSAGE_TYPE_BLOB, 170 presentation::PresentationMessageType::BLOB, data, length)));
173 data, length)));
174 // Start processing request if only one in the queue. 171 // Start processing request if only one in the queue.
175 if (message_request_queue_.size() == 1) 172 if (message_request_queue_.size() == 1)
176 DoSendMessage(message_request_queue_.front().get()); 173 DoSendMessage(message_request_queue_.front().get());
177 } 174 }
178 175
179 void PresentationDispatcher::DoSendMessage(SendMessageRequest* request) { 176 void PresentationDispatcher::DoSendMessage(SendMessageRequest* request) {
180 ConnectToPresentationServiceIfNeeded(); 177 ConnectToPresentationServiceIfNeeded();
181 178
182 presentation_service_->SendSessionMessage( 179 presentation_service_->SendSessionMessage(
183 std::move(request->session_info), std::move(request->message), 180 std::move(request->session_info), std::move(request->message),
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 mojo::Array<presentation::SessionMessagePtr> messages) { 386 mojo::Array<presentation::SessionMessagePtr> messages) {
390 if (!controller_) 387 if (!controller_)
391 return; 388 return;
392 389
393 for (size_t i = 0; i < messages.size(); ++i) { 390 for (size_t i = 0; i < messages.size(); ++i) {
394 // Note: Passing batches of messages to the Blink layer would be more 391 // Note: Passing batches of messages to the Blink layer would be more
395 // efficient. 392 // efficient.
396 scoped_ptr<PresentationConnectionClient> session_client( 393 scoped_ptr<PresentationConnectionClient> session_client(
397 new PresentationConnectionClient(session_info->url, session_info->id)); 394 new PresentationConnectionClient(session_info->url, session_info->id));
398 switch (messages[i]->type) { 395 switch (messages[i]->type) {
399 case presentation::PresentationMessageType:: 396 case presentation::PresentationMessageType::TEXT: {
400 PRESENTATION_MESSAGE_TYPE_TEXT: {
401 controller_->didReceiveSessionTextMessage( 397 controller_->didReceiveSessionTextMessage(
402 session_client.release(), 398 session_client.release(),
403 blink::WebString::fromUTF8(messages[i]->message)); 399 blink::WebString::fromUTF8(messages[i]->message));
404 break; 400 break;
405 } 401 }
406 case presentation::PresentationMessageType:: 402 case presentation::PresentationMessageType::ARRAY_BUFFER:
407 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER: 403 case presentation::PresentationMessageType::BLOB: {
408 case presentation::PresentationMessageType::
409 PRESENTATION_MESSAGE_TYPE_BLOB: {
410 controller_->didReceiveSessionBinaryMessage( 404 controller_->didReceiveSessionBinaryMessage(
411 session_client.release(), &(messages[i]->data.front()), 405 session_client.release(), &(messages[i]->data.front()),
412 messages[i]->data.size()); 406 messages[i]->data.size());
413 break; 407 break;
414 } 408 }
415 default: { 409 default: {
416 NOTREACHED(); 410 NOTREACHED();
417 break; 411 break;
418 } 412 }
419 } 413 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 const blink::WebString& presentationUrl, 456 const blink::WebString& presentationUrl,
463 const blink::WebString& presentationId, 457 const blink::WebString& presentationId,
464 const blink::WebString& message) { 458 const blink::WebString& message) {
465 presentation::PresentationSessionInfoPtr session_info = 459 presentation::PresentationSessionInfoPtr session_info =
466 presentation::PresentationSessionInfo::New(); 460 presentation::PresentationSessionInfo::New();
467 session_info->url = presentationUrl.utf8(); 461 session_info->url = presentationUrl.utf8();
468 session_info->id = presentationId.utf8(); 462 session_info->id = presentationId.utf8();
469 463
470 presentation::SessionMessagePtr session_message = 464 presentation::SessionMessagePtr session_message =
471 presentation::SessionMessage::New(); 465 presentation::SessionMessage::New();
472 session_message->type = 466 session_message->type = presentation::PresentationMessageType::TEXT;
473 presentation::PresentationMessageType::PRESENTATION_MESSAGE_TYPE_TEXT;
474 session_message->message = message.utf8(); 467 session_message->message = message.utf8();
475 return new SendMessageRequest(std::move(session_info), 468 return new SendMessageRequest(std::move(session_info),
476 std::move(session_message)); 469 std::move(session_message));
477 } 470 }
478 471
479 // static 472 // static
480 PresentationDispatcher::SendMessageRequest* 473 PresentationDispatcher::SendMessageRequest*
481 PresentationDispatcher::CreateSendBinaryMessageRequest( 474 PresentationDispatcher::CreateSendBinaryMessageRequest(
482 const blink::WebString& presentationUrl, 475 const blink::WebString& presentationUrl,
483 const blink::WebString& presentationId, 476 const blink::WebString& presentationId,
(...skipping 17 matching lines...) Expand all
501 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus( 494 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus(
502 const std::string& availability_url) 495 const std::string& availability_url)
503 : url(availability_url), 496 : url(availability_url),
504 last_known_availability(false), 497 last_known_availability(false),
505 listening_state(ListeningState::INACTIVE) {} 498 listening_state(ListeningState::INACTIVE) {}
506 499
507 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() { 500 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() {
508 } 501 }
509 502
510 } // namespace content 503 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698