| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/extensions/api/processes/processes_api.h" | 5 #include "chrome/browser/extensions/api/processes/processes_api.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 // This does not include memory. The memory refresh flag will only be added once | 49 // This does not include memory. The memory refresh flag will only be added once |
| 50 // a listener to OnUpdatedWithMemory event is added. | 50 // a listener to OnUpdatedWithMemory event is added. |
| 51 int64_t GetRefreshTypesForProcessOptionalData() { | 51 int64_t GetRefreshTypesForProcessOptionalData() { |
| 52 return task_management::REFRESH_TYPE_CPU | | 52 return task_management::REFRESH_TYPE_CPU | |
| 53 task_management::REFRESH_TYPE_NETWORK_USAGE | | 53 task_management::REFRESH_TYPE_NETWORK_USAGE | |
| 54 task_management::REFRESH_TYPE_SQLITE_MEMORY | | 54 task_management::REFRESH_TYPE_SQLITE_MEMORY | |
| 55 task_management::REFRESH_TYPE_V8_MEMORY | | 55 task_management::REFRESH_TYPE_V8_MEMORY | |
| 56 task_management::REFRESH_TYPE_WEBCACHE_STATS; | 56 task_management::REFRESH_TYPE_WEBCACHE_STATS; |
| 57 } | 57 } |
| 58 | 58 |
| 59 scoped_ptr<api::processes::Cache> CreateCacheData( | 59 std::unique_ptr<api::processes::Cache> CreateCacheData( |
| 60 const blink::WebCache::ResourceTypeStat& stat) { | 60 const blink::WebCache::ResourceTypeStat& stat) { |
| 61 scoped_ptr<api::processes::Cache> cache(new api::processes::Cache()); | 61 std::unique_ptr<api::processes::Cache> cache(new api::processes::Cache()); |
| 62 cache->size = static_cast<double>(stat.size); | 62 cache->size = static_cast<double>(stat.size); |
| 63 cache->live_size = static_cast<double>(stat.liveSize); | 63 cache->live_size = static_cast<double>(stat.liveSize); |
| 64 return cache; | 64 return cache; |
| 65 } | 65 } |
| 66 | 66 |
| 67 api::processes::ProcessType GetProcessType( | 67 api::processes::ProcessType GetProcessType( |
| 68 task_management::Task::Type task_type) { | 68 task_management::Task::Type task_type) { |
| 69 switch (task_type) { | 69 switch (task_type) { |
| 70 case task_management::Task::BROWSER: | 70 case task_management::Task::BROWSER: |
| 71 return api::processes::PROCESS_TYPE_BROWSER; | 71 return api::processes::PROCESS_TYPE_BROWSER; |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 false, // include_optional | 318 false, // include_optional |
| 319 &process); | 319 &process); |
| 320 DispatchEvent(events::PROCESSES_ON_UNRESPONSIVE, | 320 DispatchEvent(events::PROCESSES_ON_UNRESPONSIVE, |
| 321 api::processes::OnUnresponsive::kEventName, | 321 api::processes::OnUnresponsive::kEventName, |
| 322 api::processes::OnUnresponsive::Create(process)); | 322 api::processes::OnUnresponsive::Create(process)); |
| 323 } | 323 } |
| 324 | 324 |
| 325 void ProcessesEventRouter::DispatchEvent( | 325 void ProcessesEventRouter::DispatchEvent( |
| 326 events::HistogramValue histogram_value, | 326 events::HistogramValue histogram_value, |
| 327 const std::string& event_name, | 327 const std::string& event_name, |
| 328 scoped_ptr<base::ListValue> event_args) const { | 328 std::unique_ptr<base::ListValue> event_args) const { |
| 329 EventRouter* event_router = EventRouter::Get(browser_context_); | 329 EventRouter* event_router = EventRouter::Get(browser_context_); |
| 330 if (event_router) { | 330 if (event_router) { |
| 331 scoped_ptr<Event> event( | 331 std::unique_ptr<Event> event( |
| 332 new Event(histogram_value, event_name, std::move(event_args))); | 332 new Event(histogram_value, event_name, std::move(event_args))); |
| 333 event_router->BroadcastEvent(std::move(event)); | 333 event_router->BroadcastEvent(std::move(event)); |
| 334 } | 334 } |
| 335 } | 335 } |
| 336 | 336 |
| 337 bool ProcessesEventRouter::HasEventListeners( | 337 bool ProcessesEventRouter::HasEventListeners( |
| 338 const std::string& event_name) const { | 338 const std::string& event_name) const { |
| 339 EventRouter* event_router = EventRouter::Get(browser_context_); | 339 EventRouter* event_router = EventRouter::Get(browser_context_); |
| 340 return event_router && event_router->HasEventListener(event_name); | 340 return event_router && event_router->HasEventListener(event_name); |
| 341 } | 341 } |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 processes_event_router_.reset(new ProcessesEventRouter(browser_context_)); | 433 processes_event_router_.reset(new ProcessesEventRouter(browser_context_)); |
| 434 return processes_event_router_.get(); | 434 return processes_event_router_.get(); |
| 435 } | 435 } |
| 436 | 436 |
| 437 //////////////////////////////////////////////////////////////////////////////// | 437 //////////////////////////////////////////////////////////////////////////////// |
| 438 // ProcessesGetProcessIdForTabFunction: | 438 // ProcessesGetProcessIdForTabFunction: |
| 439 //////////////////////////////////////////////////////////////////////////////// | 439 //////////////////////////////////////////////////////////////////////////////// |
| 440 | 440 |
| 441 ExtensionFunction::ResponseAction ProcessesGetProcessIdForTabFunction::Run() { | 441 ExtensionFunction::ResponseAction ProcessesGetProcessIdForTabFunction::Run() { |
| 442 // For this function, the task manager doesn't even need to be running. | 442 // For this function, the task manager doesn't even need to be running. |
| 443 scoped_ptr<api::processes::GetProcessIdForTab::Params> params( | 443 std::unique_ptr<api::processes::GetProcessIdForTab::Params> params( |
| 444 api::processes::GetProcessIdForTab::Params::Create(*args_)); | 444 api::processes::GetProcessIdForTab::Params::Create(*args_)); |
| 445 EXTENSION_FUNCTION_VALIDATE(params.get()); | 445 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 446 | 446 |
| 447 const int tab_id = params->tab_id; | 447 const int tab_id = params->tab_id; |
| 448 content::WebContents* contents = nullptr; | 448 content::WebContents* contents = nullptr; |
| 449 int tab_index = -1; | 449 int tab_index = -1; |
| 450 if (!ExtensionTabUtil::GetTabById( | 450 if (!ExtensionTabUtil::GetTabById( |
| 451 tab_id, | 451 tab_id, |
| 452 Profile::FromBrowserContext(browser_context()), | 452 Profile::FromBrowserContext(browser_context()), |
| 453 include_incognito(), | 453 include_incognito(), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 465 } | 465 } |
| 466 | 466 |
| 467 //////////////////////////////////////////////////////////////////////////////// | 467 //////////////////////////////////////////////////////////////////////////////// |
| 468 // ProcessesTerminateFunction: | 468 // ProcessesTerminateFunction: |
| 469 //////////////////////////////////////////////////////////////////////////////// | 469 //////////////////////////////////////////////////////////////////////////////// |
| 470 | 470 |
| 471 ExtensionFunction::ResponseAction ProcessesTerminateFunction::Run() { | 471 ExtensionFunction::ResponseAction ProcessesTerminateFunction::Run() { |
| 472 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 472 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 473 | 473 |
| 474 // For this function, the task manager doesn't even need to be running. | 474 // For this function, the task manager doesn't even need to be running. |
| 475 scoped_ptr<api::processes::Terminate::Params> params( | 475 std::unique_ptr<api::processes::Terminate::Params> params( |
| 476 api::processes::Terminate::Params::Create(*args_)); | 476 api::processes::Terminate::Params::Create(*args_)); |
| 477 EXTENSION_FUNCTION_VALIDATE(params.get()); | 477 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 478 | 478 |
| 479 child_process_host_id_ = params->process_id; | 479 child_process_host_id_ = params->process_id; |
| 480 if (child_process_host_id_ < 0) { | 480 if (child_process_host_id_ < 0) { |
| 481 return RespondNow(Error(errors::kInvalidArgument, | 481 return RespondNow(Error(errors::kInvalidArgument, |
| 482 base::IntToString(child_process_host_id_))); | 482 base::IntToString(child_process_host_id_))); |
| 483 } else if (child_process_host_id_ == 0) { | 483 } else if (child_process_host_id_ == 0) { |
| 484 // Cannot kill the browser process. | 484 // Cannot kill the browser process. |
| 485 return RespondNow(Error(errors::kNotAllowedToTerminate, | 485 return RespondNow(Error(errors::kNotAllowedToTerminate, |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 557 // ProcessesGetProcessInfoFunction: | 557 // ProcessesGetProcessInfoFunction: |
| 558 //////////////////////////////////////////////////////////////////////////////// | 558 //////////////////////////////////////////////////////////////////////////////// |
| 559 | 559 |
| 560 ProcessesGetProcessInfoFunction::ProcessesGetProcessInfoFunction() | 560 ProcessesGetProcessInfoFunction::ProcessesGetProcessInfoFunction() |
| 561 : task_management::TaskManagerObserver( | 561 : task_management::TaskManagerObserver( |
| 562 base::TimeDelta::FromSeconds(1), | 562 base::TimeDelta::FromSeconds(1), |
| 563 GetRefreshTypesFlagOnlyEssentialData()) { | 563 GetRefreshTypesFlagOnlyEssentialData()) { |
| 564 } | 564 } |
| 565 | 565 |
| 566 ExtensionFunction::ResponseAction ProcessesGetProcessInfoFunction::Run() { | 566 ExtensionFunction::ResponseAction ProcessesGetProcessInfoFunction::Run() { |
| 567 scoped_ptr<api::processes::GetProcessInfo::Params> params( | 567 std::unique_ptr<api::processes::GetProcessInfo::Params> params( |
| 568 api::processes::GetProcessInfo::Params::Create(*args_)); | 568 api::processes::GetProcessInfo::Params::Create(*args_)); |
| 569 EXTENSION_FUNCTION_VALIDATE(params.get()); | 569 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 570 if (params->process_ids.as_integer) | 570 if (params->process_ids.as_integer) |
| 571 process_host_ids_.push_back(*params->process_ids.as_integer); | 571 process_host_ids_.push_back(*params->process_ids.as_integer); |
| 572 else | 572 else |
| 573 process_host_ids_.swap(*params->process_ids.as_integers); | 573 process_host_ids_.swap(*params->process_ids.as_integers); |
| 574 | 574 |
| 575 include_memory_ = params->include_memory; | 575 include_memory_ = params->include_memory; |
| 576 if (include_memory_) | 576 if (include_memory_) |
| 577 AddRefreshType(task_management::REFRESH_TYPE_MEMORY); | 577 AddRefreshType(task_management::REFRESH_TYPE_MEMORY); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 680 // Send the response. | 680 // Send the response. |
| 681 Respond(ArgumentList( | 681 Respond(ArgumentList( |
| 682 api::processes::GetProcessInfo::Results::Create(processes))); | 682 api::processes::GetProcessInfo::Results::Create(processes))); |
| 683 | 683 |
| 684 // Stop observing the task manager, and balance the AddRef() in Run(). | 684 // Stop observing the task manager, and balance the AddRef() in Run(). |
| 685 task_management::TaskManagerInterface::GetTaskManager()->RemoveObserver(this); | 685 task_management::TaskManagerInterface::GetTaskManager()->RemoveObserver(this); |
| 686 Release(); | 686 Release(); |
| 687 } | 687 } |
| 688 | 688 |
| 689 } // namespace extensions | 689 } // namespace extensions |
| OLD | NEW |