| OLD | NEW |
| 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/service_worker/service_worker_context_client.h" | 5 #include "content/renderer/service_worker/service_worker_context_client.h" |
| 6 | 6 |
| 7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 // This may send channels for MessagePorts, and all internal book-keeping | 548 // This may send channels for MessagePorts, and all internal book-keeping |
| 549 // messages for MessagePort (e.g. QueueMessages) are sent from main thread | 549 // messages for MessagePort (e.g. QueueMessages) are sent from main thread |
| 550 // (with thread hopping), so we need to do the same thread hopping here not | 550 // (with thread hopping), so we need to do the same thread hopping here not |
| 551 // to overtake those messages. | 551 // to overtake those messages. |
| 552 scoped_ptr<blink::WebMessagePortChannelArray> channel_array(channels); | 552 scoped_ptr<blink::WebMessagePortChannelArray> channel_array(channels); |
| 553 main_thread_task_runner_->PostTask( | 553 main_thread_task_runner_->PostTask( |
| 554 FROM_HERE, | 554 FROM_HERE, |
| 555 base::Bind(&SendPostMessageToClientOnMainThread, | 555 base::Bind(&SendPostMessageToClientOnMainThread, |
| 556 sender_, | 556 sender_, |
| 557 GetRoutingID(), | 557 GetRoutingID(), |
| 558 base::UTF16ToUTF8(uuid), | 558 base::UTF16ToUTF8(base::StringPiece16(uuid)), |
| 559 static_cast<base::string16>(message), | 559 static_cast<base::string16>(message), |
| 560 base::Passed(&channel_array))); | 560 base::Passed(&channel_array))); |
| 561 } | 561 } |
| 562 | 562 |
| 563 void ServiceWorkerContextClient::postMessageToCrossOriginClient( | 563 void ServiceWorkerContextClient::postMessageToCrossOriginClient( |
| 564 const blink::WebCrossOriginServiceWorkerClient& client, | 564 const blink::WebCrossOriginServiceWorkerClient& client, |
| 565 const blink::WebString& message, | 565 const blink::WebString& message, |
| 566 blink::WebMessagePortChannelArray* channels) { | 566 blink::WebMessagePortChannelArray* channels) { |
| 567 // This may send channels for MessagePorts, and all internal book-keeping | 567 // This may send channels for MessagePorts, and all internal book-keeping |
| 568 // messages for MessagePort (e.g. QueueMessages) are sent from main thread | 568 // messages for MessagePort (e.g. QueueMessages) are sent from main thread |
| 569 // (with thread hopping), so we need to do the same thread hopping here not | 569 // (with thread hopping), so we need to do the same thread hopping here not |
| 570 // to overtake those messages. | 570 // to overtake those messages. |
| 571 scoped_ptr<blink::WebMessagePortChannelArray> channel_array(channels); | 571 scoped_ptr<blink::WebMessagePortChannelArray> channel_array(channels); |
| 572 main_thread_task_runner_->PostTask( | 572 main_thread_task_runner_->PostTask( |
| 573 FROM_HERE, | 573 FROM_HERE, |
| 574 base::Bind(&SendCrossOriginMessageToClientOnMainThread, | 574 base::Bind(&SendCrossOriginMessageToClientOnMainThread, |
| 575 sender_, client.clientID, | 575 sender_, client.clientID, |
| 576 static_cast<base::string16>(message), | 576 static_cast<base::string16>(message), |
| 577 base::Passed(&channel_array))); | 577 base::Passed(&channel_array))); |
| 578 } | 578 } |
| 579 | 579 |
| 580 void ServiceWorkerContextClient::focus( | 580 void ServiceWorkerContextClient::focus( |
| 581 const blink::WebString& uuid, | 581 const blink::WebString& uuid, |
| 582 blink::WebServiceWorkerClientCallbacks* callback) { | 582 blink::WebServiceWorkerClientCallbacks* callback) { |
| 583 DCHECK(callback); | 583 DCHECK(callback); |
| 584 int request_id = context_->client_callbacks.Add(callback); | 584 int request_id = context_->client_callbacks.Add(callback); |
| 585 Send(new ServiceWorkerHostMsg_FocusClient(GetRoutingID(), request_id, | 585 Send(new ServiceWorkerHostMsg_FocusClient( |
| 586 base::UTF16ToUTF8(uuid))); | 586 GetRoutingID(), request_id, |
| 587 base::UTF16ToUTF8(base::StringPiece16(uuid)))); |
| 587 } | 588 } |
| 588 | 589 |
| 589 void ServiceWorkerContextClient::skipWaiting( | 590 void ServiceWorkerContextClient::skipWaiting( |
| 590 blink::WebServiceWorkerSkipWaitingCallbacks* callbacks) { | 591 blink::WebServiceWorkerSkipWaitingCallbacks* callbacks) { |
| 591 DCHECK(callbacks); | 592 DCHECK(callbacks); |
| 592 int request_id = context_->skip_waiting_callbacks.Add(callbacks); | 593 int request_id = context_->skip_waiting_callbacks.Add(callbacks); |
| 593 Send(new ServiceWorkerHostMsg_SkipWaiting(GetRoutingID(), request_id)); | 594 Send(new ServiceWorkerHostMsg_SkipWaiting(GetRoutingID(), request_id)); |
| 594 } | 595 } |
| 595 | 596 |
| 596 void ServiceWorkerContextClient::claim( | 597 void ServiceWorkerContextClient::claim( |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 902 } | 903 } |
| 903 | 904 |
| 904 base::WeakPtr<ServiceWorkerContextClient> | 905 base::WeakPtr<ServiceWorkerContextClient> |
| 905 ServiceWorkerContextClient::GetWeakPtr() { | 906 ServiceWorkerContextClient::GetWeakPtr() { |
| 906 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); | 907 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
| 907 DCHECK(context_); | 908 DCHECK(context_); |
| 908 return context_->weak_factory.GetWeakPtr(); | 909 return context_->weak_factory.GetWeakPtr(); |
| 909 } | 910 } |
| 910 | 911 |
| 911 } // namespace content | 912 } // namespace content |
| OLD | NEW |