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

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

Issue 2327993002: [PresentationAPI] Use KURL and WebURL in place of string types. (Closed)
Patch Set: Address imcheng@ comments Created 4 years, 3 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>
8 #include <utility> 7 #include <utility>
9 #include <vector> 8 #include <vector>
10 9
11 #include "base/bind.h" 10 #include "base/bind.h"
12 #include "base/logging.h" 11 #include "base/logging.h"
13 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
14 #include "content/public/common/presentation_constants.h" 13 #include "content/public/common/presentation_constants.h"
15 #include "content/public/renderer/render_frame.h" 14 #include "content/public/renderer/render_frame.h"
16 #include "content/renderer/presentation/presentation_connection_client.h" 15 #include "content/renderer/presentation/presentation_connection_client.h"
17 #include "services/shell/public/cpp/interface_provider.h" 16 #include "services/shell/public/cpp/interface_provider.h"
18 #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"
19 #include "third_party/WebKit/public/platform/WebVector.h" 19 #include "third_party/WebKit/public/platform/WebVector.h"
20 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nAvailabilityObserver.h" 20 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nAvailabilityObserver.h"
21 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nController.h" 21 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nController.h"
22 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nError.h" 22 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nError.h"
23 #include "third_party/WebKit/public/platform/modules/presentation/presentation.m ojom.h" 23 #include "third_party/WebKit/public/platform/modules/presentation/presentation.m ojom.h"
24 #include "third_party/WebKit/public/web/WebLocalFrame.h" 24 #include "third_party/WebKit/public/web/WebLocalFrame.h"
25 #include "url/gurl.h" 25 #include "url/gurl.h"
26 26
27 namespace { 27 namespace {
28 28
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 blink::WebPresentationController* controller) { 93 blink::WebPresentationController* controller) {
94 // There shouldn't be any swapping from one non-null controller to another. 94 // There shouldn't be any swapping from one non-null controller to another.
95 DCHECK(controller != controller_ && (!controller || !controller_)); 95 DCHECK(controller != controller_ && (!controller || !controller_));
96 controller_ = controller; 96 controller_ = controller;
97 // The controller is set to null when the frame is about to be detached. 97 // The controller is set to null when the frame is about to be detached.
98 // Nothing is listening for screen availability anymore but the Mojo service 98 // Nothing is listening for screen availability anymore but the Mojo service
99 // will know about the frame being detached anyway. 99 // will know about the frame being detached anyway.
100 } 100 }
101 101
102 void PresentationDispatcher::startSession( 102 void PresentationDispatcher::startSession(
103 const blink::WebVector<blink::WebString>& presentationUrls, 103 const blink::WebVector<blink::WebURL>& presentationUrls,
104 blink::WebPresentationConnectionClientCallbacks* callback) { 104 blink::WebPresentationConnectionClientCallbacks* callback) {
105 DCHECK(callback); 105 DCHECK(callback);
106 ConnectToPresentationServiceIfNeeded(); 106 ConnectToPresentationServiceIfNeeded();
107 107
108 std::vector<GURL> urls(presentationUrls.size()); 108 std::vector<GURL> urls;
109 std::transform(presentationUrls.begin(), presentationUrls.end(), urls.begin(), 109 for (const auto& url : presentationUrls)
110 [](const blink::WebString& url) { return GURL(url.utf8()); }); 110 urls.push_back(url);
111 111
112 // The dispatcher owns the service so |this| will be valid when 112 // The dispatcher owns the service so |this| will be valid when
113 // OnSessionCreated() is called. |callback| needs to be alive and also needs 113 // OnSessionCreated() is called. |callback| needs to be alive and also needs
114 // to be destroyed so we transfer its ownership to the mojo callback. 114 // to be destroyed so we transfer its ownership to the mojo callback.
115 presentation_service_->StartSession( 115 presentation_service_->StartSession(
116 urls, base::Bind(&PresentationDispatcher::OnSessionCreated, 116 urls, base::Bind(&PresentationDispatcher::OnSessionCreated,
117 base::Unretained(this), base::Owned(callback))); 117 base::Unretained(this), base::Owned(callback)));
118 } 118 }
119 119
120 void PresentationDispatcher::joinSession( 120 void PresentationDispatcher::joinSession(
121 const blink::WebVector<blink::WebString>& presentationUrls, 121 const blink::WebVector<blink::WebURL>& presentationUrls,
122 const blink::WebString& presentationId, 122 const blink::WebString& presentationId,
123 blink::WebPresentationConnectionClientCallbacks* callback) { 123 blink::WebPresentationConnectionClientCallbacks* callback) {
124 DCHECK(callback); 124 DCHECK(callback);
125 ConnectToPresentationServiceIfNeeded(); 125 ConnectToPresentationServiceIfNeeded();
126 126
127 std::vector<GURL> urls(presentationUrls.size()); 127 std::vector<GURL> urls;
128 std::transform(presentationUrls.begin(), presentationUrls.end(), urls.begin(), 128 for (const auto& url : presentationUrls)
129 [](const blink::WebString& url) { return GURL(url.utf8()); }); 129 urls.push_back(url);
130 130
131 // The dispatcher owns the service so |this| will be valid when 131 // The dispatcher owns the service so |this| will be valid when
132 // OnSessionCreated() is called. |callback| needs to be alive and also needs 132 // OnSessionCreated() is called. |callback| needs to be alive and also needs
133 // to be destroyed so we transfer its ownership to the mojo callback. 133 // to be destroyed so we transfer its ownership to the mojo callback.
134 presentation_service_->JoinSession( 134 presentation_service_->JoinSession(
135 urls, presentationId.utf8(), 135 urls, presentationId.utf8(),
136 base::Bind(&PresentationDispatcher::OnSessionCreated, 136 base::Bind(&PresentationDispatcher::OnSessionCreated,
137 base::Unretained(this), base::Owned(callback))); 137 base::Unretained(this), base::Owned(callback)));
138 } 138 }
139 139
140 void PresentationDispatcher::sendString( 140 void PresentationDispatcher::sendString(const blink::WebURL& presentationUrl,
141 const blink::WebString& presentationUrl, 141 const blink::WebString& presentationId,
142 const blink::WebString& presentationId, 142 const blink::WebString& message) {
143 const blink::WebString& message) {
144 if (message.utf8().size() > kMaxPresentationSessionMessageSize) { 143 if (message.utf8().size() > kMaxPresentationSessionMessageSize) {
145 // TODO(crbug.com/459008): Limit the size of individual messages to 64k 144 // TODO(crbug.com/459008): Limit the size of individual messages to 64k
146 // for now. Consider throwing DOMException or splitting bigger messages 145 // for now. Consider throwing DOMException or splitting bigger messages
147 // into smaller chunks later. 146 // into smaller chunks later.
148 LOG(WARNING) << "message size exceeded limit!"; 147 LOG(WARNING) << "message size exceeded limit!";
149 return; 148 return;
150 } 149 }
151 150
152 message_request_queue_.push(base::WrapUnique( 151 message_request_queue_.push(base::WrapUnique(
153 CreateSendTextMessageRequest(presentationUrl, presentationId, message))); 152 CreateSendTextMessageRequest(presentationUrl, presentationId, message)));
154 // Start processing request if only one in the queue. 153 // Start processing request if only one in the queue.
155 if (message_request_queue_.size() == 1) 154 if (message_request_queue_.size() == 1)
156 DoSendMessage(message_request_queue_.front().get()); 155 DoSendMessage(message_request_queue_.front().get());
157 } 156 }
158 157
159 void PresentationDispatcher::sendArrayBuffer( 158 void PresentationDispatcher::sendArrayBuffer(
160 const blink::WebString& presentationUrl, 159 const blink::WebURL& presentationUrl,
161 const blink::WebString& presentationId, 160 const blink::WebString& presentationId,
162 const uint8_t* data, 161 const uint8_t* data,
163 size_t length) { 162 size_t length) {
164 DCHECK(data); 163 DCHECK(data);
165 if (length > kMaxPresentationSessionMessageSize) { 164 if (length > kMaxPresentationSessionMessageSize) {
166 // TODO(crbug.com/459008): Same as in sendString(). 165 // TODO(crbug.com/459008): Same as in sendString().
167 LOG(WARNING) << "data size exceeded limit!"; 166 LOG(WARNING) << "data size exceeded limit!";
168 return; 167 return;
169 } 168 }
170 169
171 message_request_queue_.push(base::WrapUnique(CreateSendBinaryMessageRequest( 170 message_request_queue_.push(base::WrapUnique(CreateSendBinaryMessageRequest(
172 presentationUrl, presentationId, 171 presentationUrl, presentationId,
173 blink::mojom::PresentationMessageType::ARRAY_BUFFER, data, length))); 172 blink::mojom::PresentationMessageType::ARRAY_BUFFER, data, length)));
174 // Start processing request if only one in the queue. 173 // Start processing request if only one in the queue.
175 if (message_request_queue_.size() == 1) 174 if (message_request_queue_.size() == 1)
176 DoSendMessage(message_request_queue_.front().get()); 175 DoSendMessage(message_request_queue_.front().get());
177 } 176 }
178 177
179 void PresentationDispatcher::sendBlobData( 178 void PresentationDispatcher::sendBlobData(
180 const blink::WebString& presentationUrl, 179 const blink::WebURL& presentationUrl,
181 const blink::WebString& presentationId, 180 const blink::WebString& presentationId,
182 const uint8_t* data, 181 const uint8_t* data,
183 size_t length) { 182 size_t length) {
184 DCHECK(data); 183 DCHECK(data);
185 if (length > kMaxPresentationSessionMessageSize) { 184 if (length > kMaxPresentationSessionMessageSize) {
186 // TODO(crbug.com/459008): Same as in sendString(). 185 // TODO(crbug.com/459008): Same as in sendString().
187 LOG(WARNING) << "data size exceeded limit!"; 186 LOG(WARNING) << "data size exceeded limit!";
188 return; 187 return;
189 } 188 }
190 189
(...skipping 29 matching lines...) Expand all
220 return; 219 return;
221 } 220 }
222 221
223 message_request_queue_.pop(); 222 message_request_queue_.pop();
224 if (!message_request_queue_.empty()) { 223 if (!message_request_queue_.empty()) {
225 DoSendMessage(message_request_queue_.front().get()); 224 DoSendMessage(message_request_queue_.front().get());
226 } 225 }
227 } 226 }
228 227
229 void PresentationDispatcher::closeSession( 228 void PresentationDispatcher::closeSession(
230 const blink::WebString& presentationUrl, 229 const blink::WebURL& presentationUrl,
231 const blink::WebString& presentationId) { 230 const blink::WebString& presentationId) {
232 ConnectToPresentationServiceIfNeeded(); 231 ConnectToPresentationServiceIfNeeded();
233 presentation_service_->CloseConnection(GURL(presentationUrl.utf8()), 232 presentation_service_->CloseConnection(presentationUrl,
234 presentationId.utf8()); 233 presentationId.utf8());
235 } 234 }
236 235
237 void PresentationDispatcher::terminateSession( 236 void PresentationDispatcher::terminateSession(
238 const blink::WebString& presentationUrl, 237 const blink::WebURL& presentationUrl,
239 const blink::WebString& presentationId) { 238 const blink::WebString& presentationId) {
240 ConnectToPresentationServiceIfNeeded(); 239 ConnectToPresentationServiceIfNeeded();
241 presentation_service_->Terminate(GURL(presentationUrl.utf8()), 240 presentation_service_->Terminate(presentationUrl, presentationId.utf8());
242 presentationId.utf8());
243 } 241 }
244 242
245 void PresentationDispatcher::getAvailability( 243 void PresentationDispatcher::getAvailability(
246 const blink::WebString& availabilityUrl, 244 const blink::WebURL& availabilityUrl,
247 blink::WebPresentationAvailabilityCallbacks* callbacks) { 245 blink::WebPresentationAvailabilityCallbacks* callbacks) {
248 const std::string& availability_url = availabilityUrl.utf8();
249 AvailabilityStatus* status = nullptr; 246 AvailabilityStatus* status = nullptr;
250 auto status_it = availability_status_.find(availability_url); 247 auto status_it = availability_status_.find(availabilityUrl);
251 if (status_it == availability_status_.end()) { 248 if (status_it == availability_status_.end()) {
252 status = new AvailabilityStatus(availability_url); 249 status = new AvailabilityStatus(availabilityUrl);
253 availability_status_[availability_url] = base::WrapUnique(status); 250 availability_status_[availabilityUrl] = base::WrapUnique(status);
254 } else { 251 } else {
255 status = status_it->second.get(); 252 status = status_it->second.get();
256 } 253 }
257 DCHECK(status); 254 DCHECK(status);
258 255
259 if (status->listening_state == ListeningState::ACTIVE) { 256 if (status->listening_state == ListeningState::ACTIVE) {
260 callbacks->onSuccess(status->last_known_availability); 257 callbacks->onSuccess(status->last_known_availability);
261 delete callbacks; 258 delete callbacks;
262 return; 259 return;
263 } 260 }
264 261
265 status->availability_callbacks.Add(callbacks); 262 status->availability_callbacks.Add(callbacks);
266 UpdateListeningState(status); 263 UpdateListeningState(status);
267 } 264 }
268 265
269 void PresentationDispatcher::startListening( 266 void PresentationDispatcher::startListening(
270 blink::WebPresentationAvailabilityObserver* observer) { 267 blink::WebPresentationAvailabilityObserver* observer) {
271 const std::string& availability_url = observer->url().string().utf8(); 268 auto status_it = availability_status_.find(observer->url());
272 auto status_it = availability_status_.find(availability_url);
273 if (status_it == availability_status_.end()) { 269 if (status_it == availability_status_.end()) {
274 DLOG(WARNING) << "Start listening for availability for unknown URL " 270 DLOG(WARNING) << "Start listening for availability for unknown URL "
275 << availability_url; 271 << observer->url();
276 return; 272 return;
277 } 273 }
278 status_it->second->availability_observers.insert(observer); 274 status_it->second->availability_observers.insert(observer);
279 UpdateListeningState(status_it->second.get()); 275 UpdateListeningState(status_it->second.get());
280 } 276 }
281 277
282 void PresentationDispatcher::stopListening( 278 void PresentationDispatcher::stopListening(
283 blink::WebPresentationAvailabilityObserver* observer) { 279 blink::WebPresentationAvailabilityObserver* observer) {
284 const std::string& availability_url = observer->url().string().utf8(); 280 auto status_it = availability_status_.find(observer->url());
285 auto status_it = availability_status_.find(availability_url);
286 if (status_it == availability_status_.end()) { 281 if (status_it == availability_status_.end()) {
287 DLOG(WARNING) << "Stop listening for availability for unknown URL " 282 DLOG(WARNING) << "Stop listening for availability for unknown URL "
288 << availability_url; 283 << observer->url();
289 return; 284 return;
290 } 285 }
291 status_it->second->availability_observers.erase(observer); 286 status_it->second->availability_observers.erase(observer);
292 UpdateListeningState(status_it->second.get()); 287 UpdateListeningState(status_it->second.get());
293 } 288 }
294 289
295 void PresentationDispatcher::setDefaultPresentationUrls( 290 void PresentationDispatcher::setDefaultPresentationUrls(
296 const blink::WebVector<blink::WebString>& presentationUrls) { 291 const blink::WebVector<blink::WebURL>& presentationUrls) {
297 ConnectToPresentationServiceIfNeeded(); 292 ConnectToPresentationServiceIfNeeded();
298 293
299 std::vector<GURL> urls(presentationUrls.size()); 294 std::vector<GURL> urls;
300 std::transform(presentationUrls.begin(), presentationUrls.end(), urls.begin(), 295 for (const auto& url : presentationUrls)
301 [](const blink::WebString& url) { return GURL(url.utf8()); }); 296 urls.push_back(url);
297
302 presentation_service_->SetDefaultPresentationUrls(urls); 298 presentation_service_->SetDefaultPresentationUrls(urls);
303 } 299 }
304 300
305 void PresentationDispatcher::DidCommitProvisionalLoad( 301 void PresentationDispatcher::DidCommitProvisionalLoad(
306 bool is_new_navigation, 302 bool is_new_navigation,
307 bool is_same_page_navigation) { 303 bool is_same_page_navigation) {
308 blink::WebFrame* frame = render_frame()->GetWebFrame(); 304 blink::WebFrame* frame = render_frame()->GetWebFrame();
309 // If not top-level navigation. 305 // If not top-level navigation.
310 if (frame->parent() || is_same_page_navigation) 306 if (frame->parent() || is_same_page_navigation)
311 return; 307 return;
312 308
313 // Remove all pending send message requests. 309 // Remove all pending send message requests.
314 MessageRequestQueue empty; 310 MessageRequestQueue empty;
315 std::swap(message_request_queue_, empty); 311 std::swap(message_request_queue_, empty);
316 } 312 }
317 313
318 void PresentationDispatcher::OnDestruct() { 314 void PresentationDispatcher::OnDestruct() {
319 delete this; 315 delete this;
320 } 316 }
321 317
322 void PresentationDispatcher::OnScreenAvailabilityUpdated(const GURL& url, 318 void PresentationDispatcher::OnScreenAvailabilityUpdated(const GURL& url,
323 bool available) { 319 bool available) {
324 auto status_it = availability_status_.find(url.spec()); 320 auto status_it = availability_status_.find(url);
325 if (status_it == availability_status_.end()) 321 if (status_it == availability_status_.end())
326 return; 322 return;
327 AvailabilityStatus* status = status_it->second.get(); 323 AvailabilityStatus* status = status_it->second.get();
328 DCHECK(status); 324 DCHECK(status);
329 325
330 if (status->listening_state == ListeningState::WAITING) 326 if (status->listening_state == ListeningState::WAITING)
331 status->listening_state = ListeningState::ACTIVE; 327 status->listening_state = ListeningState::ACTIVE;
332 328
333 for (auto* observer : status->availability_observers) 329 for (auto* observer : status->availability_observers)
334 observer->availabilityChanged(available); 330 observer->availabilityChanged(available);
335 331
336 for (AvailabilityCallbacksMap::iterator iter(&status->availability_callbacks); 332 for (AvailabilityCallbacksMap::iterator iter(&status->availability_callbacks);
337 !iter.IsAtEnd(); iter.Advance()) { 333 !iter.IsAtEnd(); iter.Advance()) {
338 iter.GetCurrentValue()->onSuccess(available); 334 iter.GetCurrentValue()->onSuccess(available);
339 } 335 }
340 status->last_known_availability = available; 336 status->last_known_availability = available;
341 status->availability_callbacks.Clear(); 337 status->availability_callbacks.Clear();
342 UpdateListeningState(status); 338 UpdateListeningState(status);
343 } 339 }
344 340
345 void PresentationDispatcher::OnScreenAvailabilityNotSupported(const GURL& url) { 341 void PresentationDispatcher::OnScreenAvailabilityNotSupported(const GURL& url) {
346 auto status_it = availability_status_.find(url.spec()); 342 auto status_it = availability_status_.find(url);
347 if (status_it == availability_status_.end()) 343 if (status_it == availability_status_.end())
348 return; 344 return;
349 AvailabilityStatus* status = status_it->second.get(); 345 AvailabilityStatus* status = status_it->second.get();
350 DCHECK(status); 346 DCHECK(status);
351 DCHECK(status->listening_state == ListeningState::WAITING); 347 DCHECK(status->listening_state == ListeningState::WAITING);
352 348
353 const blink::WebString& not_supported_error = blink::WebString::fromUTF8( 349 const blink::WebString& not_supported_error = blink::WebString::fromUTF8(
354 "getAvailability() isn't supported at the moment. It can be due to " 350 "getAvailability() isn't supported at the moment. It can be due to "
355 "a permanent or temporary system limitation. It is recommended to " 351 "a permanent or temporary system limitation. It is recommended to "
356 "try to blindly start a session in that case."); 352 "try to blindly start a session in that case.");
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 bool should_listen = !status->availability_callbacks.IsEmpty() || 464 bool should_listen = !status->availability_callbacks.IsEmpty() ||
469 !status->availability_observers.empty(); 465 !status->availability_observers.empty();
470 bool is_listening = status->listening_state != ListeningState::INACTIVE; 466 bool is_listening = status->listening_state != ListeningState::INACTIVE;
471 467
472 if (should_listen == is_listening) 468 if (should_listen == is_listening)
473 return; 469 return;
474 470
475 ConnectToPresentationServiceIfNeeded(); 471 ConnectToPresentationServiceIfNeeded();
476 if (should_listen) { 472 if (should_listen) {
477 status->listening_state = ListeningState::WAITING; 473 status->listening_state = ListeningState::WAITING;
478 presentation_service_->ListenForScreenAvailability(GURL(status->url)); 474 presentation_service_->ListenForScreenAvailability(status->url);
479 } else { 475 } else {
480 status->listening_state = ListeningState::INACTIVE; 476 status->listening_state = ListeningState::INACTIVE;
481 presentation_service_->StopListeningForScreenAvailability( 477 presentation_service_->StopListeningForScreenAvailability(status->url);
482 GURL(status->url));
483 } 478 }
484 } 479 }
485 480
486 PresentationDispatcher::SendMessageRequest::SendMessageRequest( 481 PresentationDispatcher::SendMessageRequest::SendMessageRequest(
487 blink::mojom::PresentationSessionInfoPtr session_info, 482 blink::mojom::PresentationSessionInfoPtr session_info,
488 blink::mojom::SessionMessagePtr message) 483 blink::mojom::SessionMessagePtr message)
489 : session_info(std::move(session_info)), message(std::move(message)) {} 484 : session_info(std::move(session_info)), message(std::move(message)) {}
490 485
491 PresentationDispatcher::SendMessageRequest::~SendMessageRequest() {} 486 PresentationDispatcher::SendMessageRequest::~SendMessageRequest() {}
492 487
493 // static 488 // static
494 PresentationDispatcher::SendMessageRequest* 489 PresentationDispatcher::SendMessageRequest*
495 PresentationDispatcher::CreateSendTextMessageRequest( 490 PresentationDispatcher::CreateSendTextMessageRequest(
496 const blink::WebString& presentationUrl, 491 const blink::WebURL& presentationUrl,
497 const blink::WebString& presentationId, 492 const blink::WebString& presentationId,
498 const blink::WebString& message) { 493 const blink::WebString& message) {
499 blink::mojom::PresentationSessionInfoPtr session_info = 494 blink::mojom::PresentationSessionInfoPtr session_info =
500 blink::mojom::PresentationSessionInfo::New(); 495 blink::mojom::PresentationSessionInfo::New();
501 session_info->url = GURL(presentationUrl.utf8()); 496 session_info->url = presentationUrl;
502 session_info->id = presentationId.utf8(); 497 session_info->id = presentationId.utf8();
503 498
504 blink::mojom::SessionMessagePtr session_message = 499 blink::mojom::SessionMessagePtr session_message =
505 blink::mojom::SessionMessage::New(); 500 blink::mojom::SessionMessage::New();
506 session_message->type = blink::mojom::PresentationMessageType::TEXT; 501 session_message->type = blink::mojom::PresentationMessageType::TEXT;
507 session_message->message = message.utf8(); 502 session_message->message = message.utf8();
508 return new SendMessageRequest(std::move(session_info), 503 return new SendMessageRequest(std::move(session_info),
509 std::move(session_message)); 504 std::move(session_message));
510 } 505 }
511 506
512 // static 507 // static
513 PresentationDispatcher::SendMessageRequest* 508 PresentationDispatcher::SendMessageRequest*
514 PresentationDispatcher::CreateSendBinaryMessageRequest( 509 PresentationDispatcher::CreateSendBinaryMessageRequest(
515 const blink::WebString& presentationUrl, 510 const blink::WebURL& presentationUrl,
516 const blink::WebString& presentationId, 511 const blink::WebString& presentationId,
517 blink::mojom::PresentationMessageType type, 512 blink::mojom::PresentationMessageType type,
518 const uint8_t* data, 513 const uint8_t* data,
519 size_t length) { 514 size_t length) {
520 blink::mojom::PresentationSessionInfoPtr session_info = 515 blink::mojom::PresentationSessionInfoPtr session_info =
521 blink::mojom::PresentationSessionInfo::New(); 516 blink::mojom::PresentationSessionInfo::New();
522 session_info->url = GURL(presentationUrl.utf8()); 517 session_info->url = presentationUrl;
523 session_info->id = presentationId.utf8(); 518 session_info->id = presentationId.utf8();
524 519
525 blink::mojom::SessionMessagePtr session_message = 520 blink::mojom::SessionMessagePtr session_message =
526 blink::mojom::SessionMessage::New(); 521 blink::mojom::SessionMessage::New();
527 session_message->type = type; 522 session_message->type = type;
528 session_message->data = std::vector<uint8_t>(data, data + length); 523 session_message->data = std::vector<uint8_t>(data, data + length);
529 return new SendMessageRequest(std::move(session_info), 524 return new SendMessageRequest(std::move(session_info),
530 std::move(session_message)); 525 std::move(session_message));
531 } 526 }
532 527
533 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus( 528 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus(
534 const std::string& availability_url) 529 const GURL& availability_url)
535 : url(availability_url), 530 : url(availability_url),
536 last_known_availability(false), 531 last_known_availability(false),
537 listening_state(ListeningState::INACTIVE) {} 532 listening_state(ListeningState::INACTIVE) {}
538 533
539 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() { 534 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() {
540 } 535 }
541 536
542 } // namespace content 537 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698