OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/browser/service_worker/service_worker_internals_ui.h" | 5 #include "content/browser/service_worker/service_worker_internals_ui.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 | 82 |
83 scoped_refptr<ServiceWorkerVersion> version = | 83 scoped_refptr<ServiceWorkerVersion> version = |
84 context->GetLiveVersion(version_id); | 84 context->GetLiveVersion(version_id); |
85 if (!version.get()) { | 85 if (!version.get()) { |
86 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND); | 86 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND); |
87 return; | 87 return; |
88 } | 88 } |
89 (*version.get().*method)(callback); | 89 (*version.get().*method)(callback); |
90 } | 90 } |
91 | 91 |
92 void DispatchPushEventWithVersionID( | |
93 scoped_refptr<ServiceWorkerContextWrapper> context, | |
94 int64_t version_id, | |
95 const ServiceWorkerInternalsUI::StatusCallback& callback) { | |
96 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { | |
97 BrowserThread::PostTask( | |
98 BrowserThread::IO, | |
99 FROM_HERE, | |
100 base::Bind(DispatchPushEventWithVersionID, | |
101 context, | |
102 version_id, | |
103 callback)); | |
104 return; | |
105 } | |
106 | |
107 scoped_refptr<ServiceWorkerVersion> version = | |
108 context->GetLiveVersion(version_id); | |
109 if (!version.get()) { | |
110 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND); | |
111 return; | |
112 } | |
113 std::string data = "Test push message from ServiceWorkerInternals."; | |
114 version->DispatchPushEvent(callback, data); | |
115 } | |
116 | |
117 void UpdateVersionInfo(const ServiceWorkerVersionInfo& version, | 92 void UpdateVersionInfo(const ServiceWorkerVersionInfo& version, |
118 DictionaryValue* info) { | 93 DictionaryValue* info) { |
119 switch (version.running_status) { | 94 switch (version.running_status) { |
120 case ServiceWorkerVersion::STOPPED: | 95 case ServiceWorkerVersion::STOPPED: |
121 info->SetString("running_status", "STOPPED"); | 96 info->SetString("running_status", "STOPPED"); |
122 break; | 97 break; |
123 case ServiceWorkerVersion::STARTING: | 98 case ServiceWorkerVersion::STARTING: |
124 info->SetString("running_status", "STARTING"); | 99 info->SetString("running_status", "STARTING"); |
125 break; | 100 break; |
126 case ServiceWorkerVersion::RUNNING: | 101 case ServiceWorkerVersion::RUNNING: |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 web_ui->RegisterMessageCallback( | 326 web_ui->RegisterMessageCallback( |
352 "getAllRegistrations", | 327 "getAllRegistrations", |
353 base::Bind(&ServiceWorkerInternalsUI::GetAllRegistrations, | 328 base::Bind(&ServiceWorkerInternalsUI::GetAllRegistrations, |
354 base::Unretained(this))); | 329 base::Unretained(this))); |
355 web_ui->RegisterMessageCallback( | 330 web_ui->RegisterMessageCallback( |
356 "stop", | 331 "stop", |
357 base::Bind(&ServiceWorkerInternalsUI::CallServiceWorkerVersionMethod, | 332 base::Bind(&ServiceWorkerInternalsUI::CallServiceWorkerVersionMethod, |
358 base::Unretained(this), | 333 base::Unretained(this), |
359 &ServiceWorkerVersion::StopWorker)); | 334 &ServiceWorkerVersion::StopWorker)); |
360 web_ui->RegisterMessageCallback( | 335 web_ui->RegisterMessageCallback( |
361 "push", | |
362 base::Bind(&ServiceWorkerInternalsUI::DispatchPushEvent, | |
363 base::Unretained(this))); | |
364 web_ui->RegisterMessageCallback( | |
365 "inspect", | 336 "inspect", |
366 base::Bind(&ServiceWorkerInternalsUI::InspectWorker, | 337 base::Bind(&ServiceWorkerInternalsUI::InspectWorker, |
367 base::Unretained(this))); | 338 base::Unretained(this))); |
368 web_ui->RegisterMessageCallback( | 339 web_ui->RegisterMessageCallback( |
369 "unregister", | 340 "unregister", |
370 base::Bind(&ServiceWorkerInternalsUI::Unregister, | 341 base::Bind(&ServiceWorkerInternalsUI::Unregister, |
371 base::Unretained(this))); | 342 base::Unretained(this))); |
372 web_ui->RegisterMessageCallback( | 343 web_ui->RegisterMessageCallback( |
373 "start", | 344 "start", |
374 base::Bind(&ServiceWorkerInternalsUI::StartWorker, | 345 base::Bind(&ServiceWorkerInternalsUI::StartWorker, |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 !base::StringToInt64(version_id_string, &version_id)) { | 474 !base::StringToInt64(version_id_string, &version_id)) { |
504 return; | 475 return; |
505 } | 476 } |
506 | 477 |
507 base::Callback<void(ServiceWorkerStatusCode)> callback = | 478 base::Callback<void(ServiceWorkerStatusCode)> callback = |
508 base::Bind(OperationCompleteCallback, AsWeakPtr(), callback_id); | 479 base::Bind(OperationCompleteCallback, AsWeakPtr(), callback_id); |
509 CallServiceWorkerVersionMethodWithVersionID( | 480 CallServiceWorkerVersionMethodWithVersionID( |
510 method, context, version_id, callback); | 481 method, context, version_id, callback); |
511 } | 482 } |
512 | 483 |
513 void ServiceWorkerInternalsUI::DispatchPushEvent( | |
514 const ListValue* args) { | |
515 DCHECK_CURRENTLY_ON(BrowserThread::UI); | |
516 int callback_id; | |
517 int partition_id; | |
518 int64_t version_id = 0; | |
519 std::string version_id_string; | |
520 const DictionaryValue* cmd_args = NULL; | |
521 scoped_refptr<ServiceWorkerContextWrapper> context; | |
522 if (!args->GetInteger(0, &callback_id) || | |
523 !args->GetDictionary(1, &cmd_args) || | |
524 !cmd_args->GetInteger("partition_id", &partition_id) || | |
525 !GetServiceWorkerContext(partition_id, &context) || | |
526 !cmd_args->GetString("version_id", &version_id_string) || | |
527 !base::StringToInt64(version_id_string, &version_id)) { | |
528 return; | |
529 } | |
530 | |
531 base::Callback<void(ServiceWorkerStatusCode)> callback = | |
532 base::Bind(OperationCompleteCallback, AsWeakPtr(), callback_id); | |
533 DispatchPushEventWithVersionID(context, version_id, callback); | |
534 } | |
535 | |
536 void ServiceWorkerInternalsUI::InspectWorker(const ListValue* args) { | 484 void ServiceWorkerInternalsUI::InspectWorker(const ListValue* args) { |
537 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 485 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
538 int callback_id; | 486 int callback_id; |
539 const DictionaryValue* cmd_args = NULL; | 487 const DictionaryValue* cmd_args = NULL; |
540 int process_id = 0; | 488 int process_id = 0; |
541 int devtools_agent_route_id = 0; | 489 int devtools_agent_route_id = 0; |
542 if (!args->GetInteger(0, &callback_id) || | 490 if (!args->GetInteger(0, &callback_id) || |
543 !args->GetDictionary(1, &cmd_args) || | 491 !args->GetDictionary(1, &cmd_args) || |
544 !cmd_args->GetInteger("process_id", &process_id) || | 492 !cmd_args->GetInteger("process_id", &process_id) || |
545 !cmd_args->GetInteger("devtools_agent_route_id", | 493 !cmd_args->GetInteger("devtools_agent_route_id", |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
614 callback.Run(SERVICE_WORKER_ERROR_ABORT); | 562 callback.Run(SERVICE_WORKER_ERROR_ABORT); |
615 return; | 563 return; |
616 } | 564 } |
617 | 565 |
618 // ServiceWorkerContextWrapper::UnregisterServiceWorker doesn't work here | 566 // ServiceWorkerContextWrapper::UnregisterServiceWorker doesn't work here |
619 // because that reduces a status code to boolean. | 567 // because that reduces a status code to boolean. |
620 context->context()->UnregisterServiceWorker(scope, callback); | 568 context->context()->UnregisterServiceWorker(scope, callback); |
621 } | 569 } |
622 | 570 |
623 } // namespace content | 571 } // namespace content |
OLD | NEW |