| Index: chrome/browser/task_manager/task_manager_resource_providers.cc
|
| diff --git a/chrome/browser/task_manager/task_manager_resource_providers.cc b/chrome/browser/task_manager/task_manager_resource_providers.cc
|
| index a1a6a1822098ab171a6964ef039ef79185449a6f..2197b338b44f4f825164466b9a59f80924a05720 100644
|
| --- a/chrome/browser/task_manager/task_manager_resource_providers.cc
|
| +++ b/chrome/browser/task_manager/task_manager_resource_providers.cc
|
| @@ -234,23 +234,14 @@ TaskManager::Resource* TaskManagerTabContentsResourceProvider::GetResource(
|
| int origin_pid,
|
| int render_process_host_id,
|
| int routing_id) {
|
| -
|
| TabContents* tab_contents =
|
| tab_util::GetTabContentsByID(render_process_host_id, routing_id);
|
| if (!tab_contents) // Not one of our resource.
|
| return NULL;
|
|
|
| - base::ProcessHandle process_handle =
|
| - tab_contents->GetRenderProcessHost()->GetHandle();
|
| - if (!process_handle) {
|
| - // We should not be holding on to a dead tab (it should have been removed
|
| - // through the NOTIFY_TAB_CONTENTS_DISCONNECTED notification.
|
| - NOTREACHED();
|
| - return NULL;
|
| - }
|
| -
|
| - int pid = base::GetProcId(process_handle);
|
| - if (pid != origin_pid)
|
| + // If an origin PID was specified then the request originated in a plugin
|
| + // working on the TabContent's behalf, so ignore it.
|
| + if (origin_pid)
|
| return NULL;
|
|
|
| std::map<TabContents*, TaskManagerTabContentsResource*>::iterator
|
| @@ -453,19 +444,14 @@ TaskManagerBackgroundContentsResourceProvider::GetResource(
|
| int origin_pid,
|
| int render_process_host_id,
|
| int routing_id) {
|
| -
|
| BackgroundContents* contents = BackgroundContents::GetBackgroundContentsByID(
|
| render_process_host_id, routing_id);
|
| if (!contents) // This resource no longer exists.
|
| return NULL;
|
|
|
| - base::ProcessHandle process_handle =
|
| - contents->render_view_host()->process()->GetHandle();
|
| - if (!process_handle) // Process crashed.
|
| - return NULL;
|
| -
|
| - int pid = base::GetProcId(process_handle);
|
| - if (pid != origin_pid)
|
| + // If an origin PID was specified, the request is from a plugin, not the
|
| + // render view host process
|
| + if (origin_pid)
|
| return NULL;
|
|
|
| std::map<BackgroundContents*,
|
| @@ -642,7 +628,7 @@ TaskManagerChildProcessResource::TaskManagerChildProcessResource(
|
| network_usage_support_(false) {
|
| // We cache the process id because it's not cheap to calculate, and it won't
|
| // be available when we get the plugin disconnected notification.
|
| - pid_ = child_proc.id();
|
| + pid_ = child_proc.pid();
|
| if (!default_icon_) {
|
| ResourceBundle& rb = ResourceBundle::GetSharedInstance();
|
| default_icon_ = rb.GetBitmapNamed(IDR_PLUGIN);
|
| @@ -1220,8 +1206,8 @@ SkBitmap* TaskManagerBrowserProcessResource::default_icon_ = NULL;
|
|
|
| TaskManagerBrowserProcessResource::TaskManagerBrowserProcessResource()
|
| : title_() {
|
| - pid_ = base::GetCurrentProcId();
|
| - bool success = base::OpenPrivilegedProcessHandle(pid_, &process_);
|
| + int pid = base::GetCurrentProcId();
|
| + bool success = base::OpenPrivilegedProcessHandle(pid, &process_);
|
| DCHECK(success);
|
| #if defined(OS_WIN)
|
| if (!default_icon_) {
|
| @@ -1312,7 +1298,7 @@ TaskManager::Resource* TaskManagerBrowserProcessResourceProvider::GetResource(
|
| int origin_pid,
|
| int render_process_host_id,
|
| int routing_id) {
|
| - if (origin_pid != resource_.process_id()) {
|
| + if (origin_pid || render_process_host_id != -1) {
|
| return NULL;
|
| }
|
|
|
|
|