| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/task_manager/task_manager_resource_providers.h" | 5 #include "chrome/browser/task_manager/task_manager_resource_providers.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/file_version_info.h" | 10 #include "base/file_version_info.h" |
| (...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 //////////////////////////////////////////////////////////////////////////////// | 489 //////////////////////////////////////////////////////////////////////////////// |
| 490 // TaskManagerBackgroundContentsResource class | 490 // TaskManagerBackgroundContentsResource class |
| 491 //////////////////////////////////////////////////////////////////////////////// | 491 //////////////////////////////////////////////////////////////////////////////// |
| 492 | 492 |
| 493 SkBitmap* TaskManagerBackgroundContentsResource::default_icon_ = NULL; | 493 SkBitmap* TaskManagerBackgroundContentsResource::default_icon_ = NULL; |
| 494 | 494 |
| 495 TaskManagerBackgroundContentsResource::TaskManagerBackgroundContentsResource( | 495 TaskManagerBackgroundContentsResource::TaskManagerBackgroundContentsResource( |
| 496 BackgroundContents* background_contents, | 496 BackgroundContents* background_contents, |
| 497 const string16& application_name) | 497 const string16& application_name) |
| 498 : TaskManagerRendererResource( | 498 : TaskManagerRendererResource( |
| 499 background_contents->render_view_host()->process()->GetHandle(), | 499 background_contents->tab_contents()->GetRenderProcessHost()-> |
| 500 background_contents->render_view_host()), | 500 GetHandle(), |
| 501 background_contents->tab_contents()->render_view_host()), |
| 501 background_contents_(background_contents), | 502 background_contents_(background_contents), |
| 502 application_name_(application_name) { | 503 application_name_(application_name) { |
| 503 // Just use the same icon that other extension resources do. | 504 // Just use the same icon that other extension resources do. |
| 504 // TODO(atwilson): Use the favicon when that's available. | 505 // TODO(atwilson): Use the favicon when that's available. |
| 505 if (!default_icon_) { | 506 if (!default_icon_) { |
| 506 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 507 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 507 default_icon_ = rb.GetBitmapNamed(IDR_PLUGIN); | 508 default_icon_ = rb.GetBitmapNamed(IDR_PLUGIN); |
| 508 } | 509 } |
| 509 // Ensure that the string has the appropriate direction markers (see comment | 510 // Ensure that the string has the appropriate direction markers (see comment |
| 510 // in TaskManagerTabContentsResource::GetTitle()). | 511 // in TaskManagerTabContentsResource::GetTitle()). |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 | 552 |
| 552 TaskManagerBackgroundContentsResourceProvider:: | 553 TaskManagerBackgroundContentsResourceProvider:: |
| 553 ~TaskManagerBackgroundContentsResourceProvider() { | 554 ~TaskManagerBackgroundContentsResourceProvider() { |
| 554 } | 555 } |
| 555 | 556 |
| 556 TaskManager::Resource* | 557 TaskManager::Resource* |
| 557 TaskManagerBackgroundContentsResourceProvider::GetResource( | 558 TaskManagerBackgroundContentsResourceProvider::GetResource( |
| 558 int origin_pid, | 559 int origin_pid, |
| 559 int render_process_host_id, | 560 int render_process_host_id, |
| 560 int routing_id) { | 561 int routing_id) { |
| 561 BackgroundContents* contents = BackgroundContents::GetBackgroundContentsByID( | |
| 562 render_process_host_id, routing_id); | |
| 563 if (!contents) // This resource no longer exists. | |
| 564 return NULL; | |
| 565 | |
| 566 // If an origin PID was specified, the request is from a plugin, not the | 562 // If an origin PID was specified, the request is from a plugin, not the |
| 567 // render view host process | 563 // render view host process |
| 568 if (origin_pid) | 564 if (origin_pid) |
| 569 return NULL; | 565 return NULL; |
| 570 | 566 |
| 571 std::map<BackgroundContents*, | 567 for (Resources::iterator i = resources_.begin(); i != resources_.end(); i++) { |
| 572 TaskManagerBackgroundContentsResource*>::iterator res_iter = | 568 TabContents* tab = i->first->tab_contents(); |
| 573 resources_.find(contents); | 569 if (tab->render_view_host()->process()->id() == render_process_host_id && |
| 574 if (res_iter == resources_.end()) | 570 tab->render_view_host()->routing_id() == routing_id) { |
| 575 // Can happen if the page went away while a network request was being | 571 return i->second; |
| 576 // performed. | 572 } |
| 577 return NULL; | 573 } |
| 578 | 574 |
| 579 return res_iter->second; | 575 // Can happen if the page went away while a network request was being |
| 576 // performed. |
| 577 return NULL; |
| 580 } | 578 } |
| 581 | 579 |
| 582 void TaskManagerBackgroundContentsResourceProvider::StartUpdating() { | 580 void TaskManagerBackgroundContentsResourceProvider::StartUpdating() { |
| 583 DCHECK(!updating_); | 581 DCHECK(!updating_); |
| 584 updating_ = true; | 582 updating_ = true; |
| 585 | 583 |
| 586 // Add all the existing BackgroundContents from every profile, including | 584 // Add all the existing BackgroundContents from every profile, including |
| 587 // incognito profiles. | 585 // incognito profiles. |
| 588 ProfileManager* profile_manager = g_browser_process->profile_manager(); | 586 ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| 589 std::vector<Profile*> profiles(profile_manager->GetLoadedProfiles()); | 587 std::vector<Profile*> profiles(profile_manager->GetLoadedProfiles()); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 654 resources_[background_contents] = resource; | 652 resources_[background_contents] = resource; |
| 655 task_manager_->AddResource(resource); | 653 task_manager_->AddResource(resource); |
| 656 } | 654 } |
| 657 | 655 |
| 658 void TaskManagerBackgroundContentsResourceProvider::Add( | 656 void TaskManagerBackgroundContentsResourceProvider::Add( |
| 659 BackgroundContents* contents, const string16& application_name) { | 657 BackgroundContents* contents, const string16& application_name) { |
| 660 if (!updating_) | 658 if (!updating_) |
| 661 return; | 659 return; |
| 662 | 660 |
| 663 // Don't add contents whose process is dead. | 661 // Don't add contents whose process is dead. |
| 664 if (!contents->render_view_host()->process()->GetHandle()) | 662 if (!contents->tab_contents()->GetRenderProcessHost()->GetHandle()) |
| 665 return; | 663 return; |
| 666 | 664 |
| 667 // Should never add the same BackgroundContents twice. | 665 // Should never add the same BackgroundContents twice. |
| 668 DCHECK(resources_.find(contents) == resources_.end()); | 666 DCHECK(resources_.find(contents) == resources_.end()); |
| 669 AddToTaskManager(contents, application_name); | 667 AddToTaskManager(contents, application_name); |
| 670 } | 668 } |
| 671 | 669 |
| 672 void TaskManagerBackgroundContentsResourceProvider::Remove( | 670 void TaskManagerBackgroundContentsResourceProvider::Remove( |
| 673 BackgroundContents* contents) { | 671 BackgroundContents* contents) { |
| 674 if (!updating_) | 672 if (!updating_) |
| 675 return; | 673 return; |
| 676 std::map<BackgroundContents*, | 674 Resources::iterator iter = resources_.find(contents); |
| 677 TaskManagerBackgroundContentsResource*>::iterator iter = | |
| 678 resources_.find(contents); | |
| 679 DCHECK(iter != resources_.end()); | 675 DCHECK(iter != resources_.end()); |
| 680 | 676 |
| 681 // Remove the resource from the Task Manager. | 677 // Remove the resource from the Task Manager. |
| 682 TaskManagerBackgroundContentsResource* resource = iter->second; | 678 TaskManagerBackgroundContentsResource* resource = iter->second; |
| 683 task_manager_->RemoveResource(resource); | 679 task_manager_->RemoveResource(resource); |
| 684 // And from the provider. | 680 // And from the provider. |
| 685 resources_.erase(iter); | 681 resources_.erase(iter); |
| 686 // Finally, delete the resource. | 682 // Finally, delete the resource. |
| 687 delete resource; | 683 delete resource; |
| 688 } | 684 } |
| (...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1393 | 1389 |
| 1394 return &resource_; | 1390 return &resource_; |
| 1395 } | 1391 } |
| 1396 | 1392 |
| 1397 void TaskManagerBrowserProcessResourceProvider::StartUpdating() { | 1393 void TaskManagerBrowserProcessResourceProvider::StartUpdating() { |
| 1398 task_manager_->AddResource(&resource_); | 1394 task_manager_->AddResource(&resource_); |
| 1399 } | 1395 } |
| 1400 | 1396 |
| 1401 void TaskManagerBrowserProcessResourceProvider::StopUpdating() { | 1397 void TaskManagerBrowserProcessResourceProvider::StopUpdating() { |
| 1402 } | 1398 } |
| OLD | NEW |