| 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/browser/devtools/protocol/service_worker_handler.h" | 5 #include "content/browser/devtools/protocol/service_worker_handler.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/containers/scoped_ptr_hash_map.h" | 8 #include "base/containers/scoped_ptr_hash_map.h" |
| 9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 case content::ServiceWorkerVersion::ACTIVATED: | 72 case content::ServiceWorkerVersion::ACTIVATED: |
| 73 return kServiceWorkerVersionStatusActivated; | 73 return kServiceWorkerVersionStatusActivated; |
| 74 case content::ServiceWorkerVersion::REDUNDANT: | 74 case content::ServiceWorkerVersion::REDUNDANT: |
| 75 return kServiceWorkerVersionStatusRedundant; | 75 return kServiceWorkerVersionStatusRedundant; |
| 76 } | 76 } |
| 77 return ""; | 77 return ""; |
| 78 } | 78 } |
| 79 | 79 |
| 80 scoped_refptr<ServiceWorkerVersion> CreateVersionDictionaryValue( | 80 scoped_refptr<ServiceWorkerVersion> CreateVersionDictionaryValue( |
| 81 const ServiceWorkerVersionInfo& version_info) { | 81 const ServiceWorkerVersionInfo& version_info) { |
| 82 std::string workerId = ""; |
| 83 DevToolsAgentHostImpl* agent = |
| 84 ServiceWorkerDevToolsManager::GetInstance() |
| 85 ->GetDevToolsAgentHostForWorker(version_info.process_id, |
| 86 version_info.devtools_agent_route_id); |
| 87 if (agent) |
| 88 workerId = agent->GetId(); |
| 82 scoped_refptr<ServiceWorkerVersion> version( | 89 scoped_refptr<ServiceWorkerVersion> version( |
| 83 ServiceWorkerVersion::Create() | 90 ServiceWorkerVersion::Create() |
| 84 ->set_version_id(base::Int64ToString(version_info.version_id)) | 91 ->set_version_id(base::Int64ToString(version_info.version_id)) |
| 85 ->set_registration_id( | 92 ->set_registration_id( |
| 86 base::Int64ToString(version_info.registration_id)) | 93 base::Int64ToString(version_info.registration_id)) |
| 87 ->set_script_url(version_info.script_url.spec()) | 94 ->set_script_url(version_info.script_url.spec()) |
| 88 ->set_running_status( | 95 ->set_running_status( |
| 89 GetVersionRunningStatusString(version_info.running_status)) | 96 GetVersionRunningStatusString(version_info.running_status)) |
| 90 ->set_status(GetVersionStatusString(version_info.status)) | 97 ->set_status(GetVersionStatusString(version_info.status)) |
| 91 ->set_script_last_modified( | 98 ->set_script_last_modified( |
| 92 version_info.script_last_modified.ToDoubleT()) | 99 version_info.script_last_modified.ToDoubleT()) |
| 93 ->set_script_response_time( | 100 ->set_script_response_time( |
| 94 version_info.script_response_time.ToDoubleT())); | 101 version_info.script_response_time.ToDoubleT()) |
| 102 ->set_worker_id(workerId)); |
| 95 return version; | 103 return version; |
| 96 } | 104 } |
| 97 | 105 |
| 98 scoped_refptr<ServiceWorkerRegistration> CreateRegistrationDictionaryValue( | 106 scoped_refptr<ServiceWorkerRegistration> CreateRegistrationDictionaryValue( |
| 99 const ServiceWorkerRegistrationInfo& registration_info) { | 107 const ServiceWorkerRegistrationInfo& registration_info) { |
| 100 scoped_refptr<ServiceWorkerRegistration> registration( | 108 scoped_refptr<ServiceWorkerRegistration> registration( |
| 101 ServiceWorkerRegistration::Create() | 109 ServiceWorkerRegistration::Create() |
| 102 ->set_registration_id( | 110 ->set_registration_id( |
| 103 base::Int64ToString(registration_info.registration_id)) | 111 base::Int64ToString(registration_info.registration_id)) |
| 104 ->set_scope_url(registration_info.pattern.spec()) | 112 ->set_scope_url(registration_info.pattern.spec()) |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 331 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 339 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
| 332 base::Bind(&StopServiceWorkerOnIO, context_, id)); | 340 base::Bind(&StopServiceWorkerOnIO, context_, id)); |
| 333 return Response::OK(); | 341 return Response::OK(); |
| 334 } | 342 } |
| 335 | 343 |
| 336 Response ServiceWorkerHandler::InspectWorker(const std::string& version_id) { | 344 Response ServiceWorkerHandler::InspectWorker(const std::string& version_id) { |
| 337 if (!enabled_) | 345 if (!enabled_) |
| 338 return Response::OK(); | 346 return Response::OK(); |
| 339 if (!context_) | 347 if (!context_) |
| 340 return CreateContextErrorResoponse(); | 348 return CreateContextErrorResoponse(); |
| 341 | |
| 342 int64 id = 0; | 349 int64 id = 0; |
| 343 if (!base::StringToInt64(version_id, &id)) | 350 if (!base::StringToInt64(version_id, &id)) |
| 344 return CreateInvalidVersionIdErrorResoponse(); | 351 return CreateInvalidVersionIdErrorResoponse(); |
| 345 BrowserThread::PostTask( | 352 BrowserThread::PostTask( |
| 346 BrowserThread::IO, FROM_HERE, | 353 BrowserThread::IO, FROM_HERE, |
| 347 base::Bind(&GetDevToolsRouteInfoOnIO, context_, id, | 354 base::Bind(&GetDevToolsRouteInfoOnIO, context_, id, |
| 348 base::Bind(&ServiceWorkerHandler::OpenNewDevToolsWindow, | 355 base::Bind(&ServiceWorkerHandler::OpenNewDevToolsWindow, |
| 349 weak_factory_.GetWeakPtr()))); | 356 weak_factory_.GetWeakPtr()))); |
| 350 return Response::OK(); | 357 return Response::OK(); |
| 351 } | 358 } |
| 352 | 359 |
| 360 Response ServiceWorkerHandler::DetachWorker(const std::string& worker_id) { |
| 361 if (!enabled_) |
| 362 return Response::OK(); |
| 363 if (!context_) |
| 364 return CreateContextErrorResoponse(); |
| 365 auto it = attached_hosts_.find(worker_id); |
| 366 if (it == attached_hosts_.end()) |
| 367 return Response::OK(); // Already disconnected. |
| 368 scoped_refptr<ServiceWorkerDevToolsAgentHost> host(it->second); |
| 369 client_->WorkerTerminated( |
| 370 WorkerTerminatedParams::Create()->set_worker_id(worker_id)); |
| 371 host->DetachClient(); |
| 372 attached_hosts_.erase(worker_id); |
| 373 return Response::OK(); |
| 374 } |
| 375 |
| 353 Response ServiceWorkerHandler::SetDebugOnStart(bool debug_on_start) { | 376 Response ServiceWorkerHandler::SetDebugOnStart(bool debug_on_start) { |
| 354 ServiceWorkerDevToolsManager::GetInstance() | 377 ServiceWorkerDevToolsManager::GetInstance() |
| 355 ->set_debug_service_worker_on_start(debug_on_start); | 378 ->set_debug_service_worker_on_start(debug_on_start); |
| 356 return Response::OK(); | 379 return Response::OK(); |
| 357 } | 380 } |
| 358 | 381 |
| 359 void ServiceWorkerHandler::OpenNewDevToolsWindow(int process_id, | 382 void ServiceWorkerHandler::OpenNewDevToolsWindow(int process_id, |
| 360 int devtools_agent_route_id) { | 383 int devtools_agent_route_id) { |
| 361 scoped_refptr<DevToolsAgentHostImpl> agent_host( | 384 scoped_refptr<DevToolsAgentHostImpl> agent_host( |
| 362 ServiceWorkerDevToolsManager::GetInstance() | 385 ServiceWorkerDevToolsManager::GetInstance() |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 return; | 494 return; |
| 472 host->DetachClient(); | 495 host->DetachClient(); |
| 473 client_->WorkerTerminated(WorkerTerminatedParams::Create()-> | 496 client_->WorkerTerminated(WorkerTerminatedParams::Create()-> |
| 474 set_worker_id(host->GetId())); | 497 set_worker_id(host->GetId())); |
| 475 attached_hosts_.erase(it); | 498 attached_hosts_.erase(it); |
| 476 } | 499 } |
| 477 | 500 |
| 478 } // namespace service_worker | 501 } // namespace service_worker |
| 479 } // namespace devtools | 502 } // namespace devtools |
| 480 } // namespace content | 503 } // namespace content |
| OLD | NEW |