| 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 1014a93dfe677474b27662159cddbb92cdb79f44..623820e98bd133b43dc15ad726e30b8c90c2b4ec 100644
|
| --- a/chrome/browser/task_manager/task_manager_resource_providers.cc
|
| +++ b/chrome/browser/task_manager/task_manager_resource_providers.cc
|
| @@ -25,6 +25,7 @@
|
| #include "chrome/browser/extensions/extension_process_manager.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/favicon/favicon_tab_helper.h"
|
| +#include "chrome/browser/instant/instant_controller.h"
|
| #include "chrome/browser/prerender/prerender_manager.h"
|
| #include "chrome/browser/prerender/prerender_manager_factory.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| @@ -70,8 +71,11 @@ namespace {
|
|
|
| // Returns the appropriate message prefix ID for tabs and extensions,
|
| // reflecting whether they are apps or in incognito mode.
|
| -int GetMessagePrefixID(bool is_app, bool is_extension,
|
| - bool is_incognito, bool is_prerender) {
|
| +int GetMessagePrefixID(bool is_app,
|
| + bool is_extension,
|
| + bool is_incognito,
|
| + bool is_prerender,
|
| + bool is_instant_preview) {
|
| if (is_app) {
|
| if (is_incognito)
|
| return IDS_TASK_MANAGER_APP_INCOGNITO_PREFIX;
|
| @@ -84,6 +88,8 @@ int GetMessagePrefixID(bool is_app, bool is_extension,
|
| return IDS_TASK_MANAGER_EXTENSION_PREFIX;
|
| } else if (is_prerender) {
|
| return IDS_TASK_MANAGER_PRERENDER_PREFIX;
|
| + } else if (is_instant_preview) {
|
| + return IDS_TASK_MANAGER_INSTANT_PREVIEW_PREFIX;
|
| } else {
|
| return IDS_TASK_MANAGER_TAB_PREFIX;
|
| }
|
| @@ -216,16 +222,30 @@ TaskManagerTabContentsResource::TaskManagerTabContentsResource(
|
| : TaskManagerRendererResource(
|
| tab_contents->tab_contents()->GetRenderProcessHost()->GetHandle(),
|
| tab_contents->render_view_host()),
|
| - tab_contents_(tab_contents) {
|
| + tab_contents_(tab_contents),
|
| + is_instant_preview_(false) {
|
| if (!prerender_icon_) {
|
| ResourceBundle& rb = ResourceBundle::GetSharedInstance();
|
| prerender_icon_ = rb.GetBitmapNamed(IDR_PRERENDER);
|
| }
|
| + for (BrowserList::const_iterator i = BrowserList::begin();
|
| + i != BrowserList::end(); ++i) {
|
| + if ((*i)->instant() &&
|
| + (*i)->instant()->GetPreviewContents() == tab_contents_) {
|
| + is_instant_preview_ = true;
|
| + break;
|
| + }
|
| + }
|
| }
|
|
|
| TaskManagerTabContentsResource::~TaskManagerTabContentsResource() {
|
| }
|
|
|
| +void TaskManagerTabContentsResource::InstantCommitted() {
|
| + DCHECK(is_instant_preview_);
|
| + is_instant_preview_ = false;
|
| +}
|
| +
|
| bool TaskManagerTabContentsResource::IsPrerendering() const {
|
| prerender::PrerenderManager* prerender_manager =
|
| prerender::PrerenderManagerFactory::GetForProfile(
|
| @@ -279,7 +299,8 @@ string16 TaskManagerTabContentsResource::GetTitle() const {
|
| is_app,
|
| HostsExtension(),
|
| tab_contents_->profile()->IsOffTheRecord(),
|
| - IsPrerendering());
|
| + IsPrerendering(),
|
| + is_instant_preview_);
|
| return l10n_util::GetStringFUTF16(message_id, tab_title);
|
| }
|
|
|
| @@ -376,6 +397,8 @@ void TaskManagerTabContentsResourceProvider::StartUpdating() {
|
| // (http://crbug.com/7321).
|
| registrar_.Add(this, content::NOTIFICATION_TAB_CONTENTS_DESTROYED,
|
| content::NotificationService::AllBrowserContextsAndSources());
|
| + registrar_.Add(this, chrome::NOTIFICATION_INSTANT_COMMITTED,
|
| + content::NotificationService::AllBrowserContextsAndSources());
|
| }
|
|
|
| void TaskManagerTabContentsResourceProvider::StopUpdating() {
|
| @@ -395,6 +418,9 @@ void TaskManagerTabContentsResourceProvider::StopUpdating() {
|
| registrar_.Remove(
|
| this, content::NOTIFICATION_TAB_CONTENTS_DESTROYED,
|
| content::NotificationService::AllBrowserContextsAndSources());
|
| + registrar_.Remove(
|
| + this, chrome::NOTIFICATION_INSTANT_COMMITTED,
|
| + content::NotificationService::AllBrowserContextsAndSources());
|
|
|
| // Delete all the resources.
|
| STLDeleteContainerPairSecondPointers(resources_.begin(), resources_.end());
|
| @@ -456,12 +482,27 @@ void TaskManagerTabContentsResourceProvider::Remove(
|
| delete resource;
|
| }
|
|
|
| +void TaskManagerTabContentsResourceProvider::Update(
|
| + TabContentsWrapper* tab_contents) {
|
| + if (!updating_)
|
| + return;
|
| + std::map<TabContentsWrapper*, TaskManagerTabContentsResource*>::iterator
|
| + iter = resources_.find(tab_contents);
|
| + DCHECK(iter != resources_.end());
|
| + if (iter != resources_.end())
|
| + iter->second->InstantCommitted();
|
| +}
|
| +
|
| void TaskManagerTabContentsResourceProvider::Observe(int type,
|
| const content::NotificationSource& source,
|
| const content::NotificationDetails& details) {
|
| - TabContentsWrapper* tab_contents =
|
| - TabContentsWrapper::GetCurrentWrapperForContents(
|
| - content::Source<TabContents>(source).ptr());
|
| + TabContentsWrapper* tab_contents;
|
| + if (type == chrome::NOTIFICATION_INSTANT_COMMITTED) {
|
| + tab_contents = content::Source<TabContentsWrapper>(source).ptr();
|
| + } else {
|
| + tab_contents = TabContentsWrapper::GetCurrentWrapperForContents(
|
| + content::Source<TabContents>(source).ptr());
|
| + }
|
| // A background page does not have a TabContentsWrapper.
|
| if (!tab_contents)
|
| return;
|
| @@ -482,6 +523,9 @@ void TaskManagerTabContentsResourceProvider::Observe(int type,
|
| case content::NOTIFICATION_TAB_CONTENTS_DISCONNECTED:
|
| Remove(tab_contents);
|
| break;
|
| + case chrome::NOTIFICATION_INSTANT_COMMITTED:
|
| + Update(tab_contents);
|
| + break;
|
| default:
|
| NOTREACHED() << "Unexpected notification.";
|
| return;
|
| @@ -1068,7 +1112,7 @@ TaskManagerExtensionProcessResource::TaskManagerExtensionProcessResource(
|
| DCHECK(!extension_name.empty());
|
|
|
| int message_id = GetMessagePrefixID(GetExtension()->is_app(), true,
|
| - extension_host_->profile()->IsOffTheRecord(), false);
|
| + extension_host_->profile()->IsOffTheRecord(), false, false);
|
| title_ = l10n_util::GetStringFUTF16(message_id, extension_name);
|
| }
|
|
|
|
|