#include "chrome/browser/extensions/api/tabs/windows_event_router.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_tab_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/extensions/window_controller.h"
#include "chrome/browser/extensions/window_controller_list.h"
#include "chrome/browser/lifetime/application_lifetime.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/sessions/session_tab_helper.h"
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/themes/theme_service_factory.h"
#include "chrome/browser/ui/panels/native_panel.h"
#include "chrome/browser/ui/panels/panel_manager.h"
#include "chrome/browser/ui/panels/stacked_panel_collection.h"
#include "chrome/browser/web_applications/web_app.h"
-#include "chrome/common/extensions/manifest_handlers/icons_handler.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/user_metrics.h"
#include "content/public/browser/web_contents.h"
+#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
+#include "extensions/browser/image_loader.h"
+#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
+#include "extensions/common/manifest_handlers/icons_handler.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/rect.h"
DCHECK(IsVisibleToExtension(extension));
base::DictionaryValue* tab_value = new base::DictionaryValue();
tab_value->SetInteger(extensions::tabs_constants::kIdKey,
- SessionID::IdForTab(web_contents));
+ SessionTabHelper::IdForTab(web_contents));
tab_value->SetInteger(extensions::tabs_constants::kIndexKey, 0);
- tab_value->SetInteger(extensions::tabs_constants::kWindowIdKey,
- SessionID::IdForWindowContainingTab(web_contents));
+ tab_value->SetInteger(
+ extensions::tabs_constants::kWindowIdKey,
+ SessionTabHelper::IdForWindowContainingTab(web_contents));
tab_value->SetString(
extensions::tabs_constants::kUrlKey, web_contents->GetURL().spec());
tab_value->SetString(extensions::tabs_constants::kStatusKey,
// DevTools
case IDC_DEV_TOOLS:
content::RecordAction(UserMetricsAction("DevTools_ToggleWindow"));
- DevToolsWindow::OpenDevToolsWindow(
- GetWebContents()->GetRenderViewHost(),
- DevToolsToggleAction::Show());
+ DevToolsWindow::OpenDevToolsWindow(GetWebContents(),
+ DevToolsToggleAction::Show());
break;
case IDC_DEV_TOOLS_CONSOLE:
content::RecordAction(UserMetricsAction("DevTools_ToggleConsole"));
- DevToolsWindow::OpenDevToolsWindow(
- GetWebContents()->GetRenderViewHost(),
- DevToolsToggleAction::ShowConsole());
+ DevToolsWindow::OpenDevToolsWindow(GetWebContents(),
+ DevToolsToggleAction::ShowConsole());
break;
default:
case content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED:
ConfigureAutoResize(content::Source<content::WebContents>(source).ptr());
break;
- case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED:
- if (content::Details<extensions::UnloadedExtensionInfo>(
- details)->extension->id() == extension_id())
- Close();
- break;
case chrome::NOTIFICATION_APP_TERMINATING:
Close();
break;
}
}
+void Panel::OnExtensionUnloaded(
+ content::BrowserContext* browser_context,
+ const extensions::Extension* extension,
+ extensions::UnloadedExtensionInfo::Reason reason) {
+ if (extension->id() == extension_id())
+ Close();
+}
void Panel::OnTitlebarClicked(panel::ClickModifier modifier) {
if (collection_)
collection_->OnPanelTitlebarClicked(this, modifier);
// Ensure previously enqueued OnImageLoaded callbacks are ignored.
image_loader_ptr_factory_.InvalidateWeakPtrs();
registrar_.RemoveAll();
+ extension_registry_->RemoveObserver(this);
manager()->OnPanelClosed(this);
DCHECK(!collection_);
}
native_panel_->AttachWebContents(web_contents);
// Close when the extension is unloaded or the browser is exiting.
- registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED,
- content::Source<Profile>(profile_));
+ extension_registry_->AddObserver(this);
registrar_.Add(this, chrome::NOTIFICATION_APP_TERMINATING,
content::NotificationService::AllSources());
registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
native_panel_->MinimizePanelBySystem();
}
-Panel::Panel(Profile* profile, const std::string& app_name,
- const gfx::Size& min_size, const gfx::Size& max_size)
+Panel::Panel(Profile* profile,
+ const std::string& app_name,
+ const gfx::Size& min_size,
+ const gfx::Size& max_size)
: app_name_(app_name),
profile_(profile),
collection_(NULL),
attention_mode_(USE_PANEL_ATTENTION),
expansion_state_(EXPANDED),
command_updater_(this),
+ extension_registry_(extensions::ExtensionRegistry::Get(profile_)),
image_loader_ptr_factory_(this) {
}