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

Unified Diff: chrome/browser/task_management/sampling/task_manager_impl.cc

Issue 2146273002: TaskManager: when shown or activated, select the last active tab. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@triple_click_tm
Patch Set: Fix compile. Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/task_management/sampling/task_manager_impl.cc
diff --git a/chrome/browser/task_management/sampling/task_manager_impl.cc b/chrome/browser/task_management/sampling/task_manager_impl.cc
index 551945d7f20249cd8671d54d93d232b18e2edecc..26444231920d1b32abbc882af49ad0f4e68756a5 100644
--- a/chrome/browser/task_management/sampling/task_manager_impl.cc
+++ b/chrome/browser/task_management/sampling/task_manager_impl.cc
@@ -19,6 +19,9 @@
#include "chrome/browser/task_management/providers/web_contents/web_contents_task_provider.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/gpu_data_manager.h"
+#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/render_process_host.h"
+#include "content/public/browser/web_contents.h"
#if defined(OS_CHROMEOS)
#include "chrome/browser/task_management/providers/arc/arc_process_task_provider.h"
@@ -49,13 +52,13 @@ TaskManagerImpl::TaskManagerImpl()
is_running_(false) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- task_providers_.push_back(new BrowserProcessTaskProvider());
- task_providers_.push_back(new ChildProcessTaskProvider());
- task_providers_.push_back(new WebContentsTaskProvider());
+ task_providers_.emplace_back(new BrowserProcessTaskProvider());
+ task_providers_.emplace_back(new ChildProcessTaskProvider());
+ task_providers_.emplace_back(new WebContentsTaskProvider());
#if defined(OS_CHROMEOS)
if (arc::ArcBridgeService::GetEnabled(
base::CommandLine::ForCurrentProcess())) {
- task_providers_.push_back(new ArcProcessTaskProvider());
+ task_providers_.emplace_back(new ArcProcessTaskProvider());
}
#endif // defined(OS_CHROMEOS)
@@ -362,6 +365,18 @@ size_t TaskManagerImpl::GetNumberOfTasksOnSameProcess(TaskId task_id) const {
return GetTaskGroupByTaskId(task_id)->num_tasks();
}
+TaskId TaskManagerImpl::GetTaskIdForWebContents(
+ content::WebContents* web_contents) const {
+ if (!web_contents)
+ return -1;
+ content::RenderFrameHost* rfh = web_contents->GetMainFrame();
+ Task* task =
+ GetTaskByPidOrRoute(0, rfh->GetProcess()->GetID(), rfh->GetRoutingID());
+ if (!task)
+ return -1;
+ return task->task_id();
+}
+
void TaskManagerImpl::TaskAdded(Task* task) {
DCHECK(task);
@@ -470,7 +485,7 @@ void TaskManagerImpl::StartUpdating() {
is_running_ = true;
- for (auto* provider : task_providers_)
+ for (const auto& provider : task_providers_)
provider->SetObserver(this);
io_thread_helper_manager_.reset(new IoThreadHelperManager);
@@ -484,7 +499,7 @@ void TaskManagerImpl::StopUpdating() {
io_thread_helper_manager_.reset();
- for (auto* provider : task_providers_)
+ for (const auto& provider : task_providers_)
provider->ClearObserver();
STLDeleteValues(&task_groups_by_proc_id_);
@@ -492,17 +507,26 @@ void TaskManagerImpl::StopUpdating() {
sorted_task_ids_.clear();
}
+Task* TaskManagerImpl::GetTaskByPidOrRoute(int origin_pid,
+ int child_id,
+ int route_id) const {
+ for (const auto& task_provider : task_providers_) {
+ Task* task =
+ task_provider->GetTaskOfUrlRequest(origin_pid, child_id, route_id);
+ if (task)
+ return task;
+ }
+ return nullptr;
+}
+
bool TaskManagerImpl::UpdateTasksWithBytesRead(const BytesReadParam& param) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- for (auto* task_provider : task_providers_) {
- Task* task = task_provider->GetTaskOfUrlRequest(param.origin_pid,
- param.child_id,
- param.route_id);
- if (task) {
- task->OnNetworkBytesRead(param.byte_count);
- return true;
- }
+ Task* task =
+ GetTaskByPidOrRoute(param.origin_pid, param.child_id, param.route_id);
+ if (task) {
+ task->OnNetworkBytesRead(param.byte_count);
+ return true;
}
// Couldn't match the bytes to any existing task.
« no previous file with comments | « chrome/browser/task_management/sampling/task_manager_impl.h ('k') | chrome/browser/task_management/task_manager_interface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698