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

Unified Diff: chrome/browser/extensions/sidebar_manager.cc

Issue 1168383002: Implement sidebar support for extension action popups Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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/extensions/sidebar_manager.cc
diff --git a/chrome/browser/extensions/sidebar_manager.cc b/chrome/browser/extensions/sidebar_manager.cc
new file mode 100644
index 0000000000000000000000000000000000000000..16017411801c191ea4017b04ff7f52e3a42445ff
--- /dev/null
+++ b/chrome/browser/extensions/sidebar_manager.cc
@@ -0,0 +1,74 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/extensions/sidebar_manager.h"
+
+#include "chrome/browser/extensions/sidebar_container.h"
+#include "chrome/browser/extensions/sidebar_manager_observer.h"
+#include "content/public/browser/web_contents.h"
+#include "extensions/browser/extension_system.h"
+#include "url/gurl.h"
+
+using content::WebContents;
+
+namespace extensions {
+
+// static
+SidebarManager* SidebarManager::GetFromContext(
+ content::BrowserContext* context) {
+ return ExtensionSystem::Get(context)->sidebar_manager();
+}
+
+SidebarManager::SidebarManager() {
+}
+
+SidebarManager::~SidebarManager() {
+ DCHECK(tab_to_sidebar_container_.empty());
+}
+
+SidebarContainer* SidebarManager::GetSidebarContainerFor(
+ content::WebContents* tab) {
+ TabToSidebarContainerMap::iterator it = tab_to_sidebar_container_.find(tab);
+ return it == tab_to_sidebar_container_.end() ? nullptr : it->second;
+}
+
+void SidebarManager::CreateSidebar(content::WebContents* tab,
+ const GURL& url,
+ Browser* browser) {
+ DCHECK(tab);
+ SidebarContainer* container = GetSidebarContainerFor(tab);
+ if (container)
Devlin 2015/07/07 21:39:29 There's a check in HideSidebar() that does this, s
ltilve 2015/07/09 22:15:51 Done.
+ HideSidebar(tab);
+
+ container = new SidebarContainer(browser, tab, url);
+ tab_to_sidebar_container_[tab] = container;
+
+ const std::string id = container->extension_id();
+ FOR_EACH_OBSERVER(SidebarManagerObserver, observer_list_,
+ OnSidebarShown(tab, id));
+}
+
+void SidebarManager::HideSidebar(WebContents* tab) {
+ DCHECK(tab);
+ SidebarContainer* container = GetSidebarContainerFor(tab);
+ if (!container)
+ return;
+
+ const std::string content_id = container->extension_id();
+ tab_to_sidebar_container_.erase(tab);
+ delete container;
+
+ FOR_EACH_OBSERVER(SidebarManagerObserver, observer_list_,
+ OnSidebarHidden(tab, content_id));
+}
+
+void SidebarManager::AddObserver(SidebarManagerObserver* observer) {
+ observer_list_.AddObserver(observer);
+}
+
+void SidebarManager::RemoveObserver(SidebarManagerObserver* observer) {
+ observer_list_.RemoveObserver(observer);
+}
+
+} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698