summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
authorerikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-19 19:31:51 +0000
committererikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-19 19:31:51 +0000
commit078b3461fa0eee0bcf9e4b43f8b7a3171f9e0018 (patch)
tree6292b5fc4583430029fccafe4e16907c7dbd2cad /chrome/browser/extensions
parent2291d04b0d127ca1b31c4326f9297253e4399d2b (diff)
downloadchromium_src-078b3461fa0eee0bcf9e4b43f8b7a3171f9e0018.zip
chromium_src-078b3461fa0eee0bcf9e4b43f8b7a3171f9e0018.tar.gz
chromium_src-078b3461fa0eee0bcf9e4b43f8b7a3171f9e0018.tar.bz2
Change the view mode when switching between moles and toolstrips, and
propogate this into the class of the document element so that it's possible to use CSS rules to control the display of your toolstrip/mole. BUG=21939,15494 TEST=run the Mappy extension and verify it can open and close Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=26635 Review URL: http://codereview.chromium.org/208020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@26654 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r--chrome/browser/extensions/extension_host.cc59
-rw-r--r--chrome/browser/extensions/extension_host.h8
-rw-r--r--chrome/browser/extensions/extension_shelf_model.cc2
3 files changed, 29 insertions, 40 deletions
diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc
index f8503f3..b1a304f 100644
--- a/chrome/browser/extensions/extension_host.cc
+++ b/chrome/browser/extensions/extension_host.cc
@@ -180,34 +180,14 @@ void ExtensionHost::DidNavigate(RenderViewHost* render_view_host,
new ExtensionFunctionDispatcher(render_view_host_, this, url_));
}
-void ExtensionHost::InsertCssIfToolstrip() {
+void ExtensionHost::InsertThemeCSS() {
+ DCHECK(!is_background_page());
- // TODO(erikkay): Make these ifdefs go away -- http://crbug.com/21939
-#if defined(TOOLKIT_VIEWS)
- ExtensionView* view = view_.get();
- if (!view)
- return;
- if (!view->is_toolstrip()) {
- // No CSS injecting currently, but call SetDidInsertCSS to tell the view
- // that it's OK to display.
- view->SetDidInsertCSS(true);
- return;
- }
-#elif defined(OS_LINUX) || defined(OS_MACOSX)
-#if defined(OS_LINUX)
- ExtensionViewGtk* view = view_.get();
-#else
- ExtensionViewMac* view = view_.get();
-#endif
- if (!view || !view->is_toolstrip())
- return;
-#endif
-
- static const base::StringPiece toolstrip_css(
+ static const base::StringPiece toolstrip_theme_css(
ResourceBundle::GetSharedInstance().GetRawDataResource(
- IDR_EXTENSIONS_TOOLSTRIP_CSS));
+ IDR_EXTENSIONS_TOOLSTRIP_THEME_CSS));
- std::string css = toolstrip_css.as_string();
+ std::string css = toolstrip_theme_css.as_string();
ThemeProvider* theme_provider =
render_view_host()->process()->profile()->GetThemeProvider();
@@ -225,16 +205,12 @@ void ExtensionHost::InsertCssIfToolstrip() {
pos = css.find(kToolstripTextColorSubstitution);
}
- // TODO(erikkay) this injection should really happen in the renderer.
- // When the Jerry's view type change lands, investigate moving this there.
-
// As a toolstrip, inject our toolstrip CSS to make it easier for toolstrips
// to blend in with the chrome UI.
- render_view_host()->InsertCSSInWebFrame(L"", css, "ToolstripDefaultCss");
+ render_view_host()->InsertCSSInWebFrame(L"", css, "ToolstripThemeCSS");
}
void ExtensionHost::DidStopLoading(RenderViewHost* render_view_host) {
- InsertCssIfToolstrip();
if (!did_stop_loading_) {
NotificationService::current()->Notify(
NotificationType::EXTENSION_HOST_DID_STOP_LOADING,
@@ -242,12 +218,21 @@ void ExtensionHost::DidStopLoading(RenderViewHost* render_view_host) {
Details<ExtensionHost>(this));
did_stop_loading_ = true;
}
+ if (extension_host_type_ == ViewType::EXTENSION_TOOLSTRIP ||
+ extension_host_type_ == ViewType::EXTENSION_MOLE) {
+#if defined(TOOLKIT_VIEWS)
+ if (view_.get())
+ view_->DidStopLoading();
+#endif
+ }
}
void ExtensionHost::DocumentAvailableInMainFrame(RenderViewHost* rvh) {
document_element_available_ = true;
if (is_background_page())
extension_->SetBackgroundPageReady();
+ else
+ InsertThemeCSS();
}
void ExtensionHost::RunJavaScriptMessage(const std::wstring& message,
@@ -278,13 +263,6 @@ void ExtensionHost::ProcessDOMUIMessage(const std::string& message,
}
}
-void ExtensionHost::DidInsertCSS() {
-#if defined(TOOLKIT_VIEWS)
- if (view_.get())
- view_->SetDidInsertCSS(true);
-#endif
-}
-
RenderViewHostDelegate::View* ExtensionHost::GetViewDelegate() {
return this;
}
@@ -391,6 +369,13 @@ Browser* ExtensionHost::GetBrowser() {
return browser;
}
+void ExtensionHost::SetRenderViewType(ViewType::Type type) {
+ DCHECK(type == ViewType::EXTENSION_MOLE ||
+ type == ViewType::EXTENSION_TOOLSTRIP);
+ extension_host_type_ = type;
+ render_view_host()->ViewTypeChanged(extension_host_type_);
+}
+
ViewType::Type ExtensionHost::GetRenderViewType() const {
return extension_host_type_;
}
diff --git a/chrome/browser/extensions/extension_host.h b/chrome/browser/extensions/extension_host.h
index 49a75f1..3b3d64e 100644
--- a/chrome/browser/extensions/extension_host.h
+++ b/chrome/browser/extensions/extension_host.h
@@ -69,6 +69,9 @@ class ExtensionHost : public RenderViewHostDelegate,
return document_element_available_;
}
+ // Sets the the ViewType of this host (e.g. mole, toolstrip).
+ void SetRenderViewType(ViewType::Type type);
+
// Returns true if the render view is initialized and didn't crash.
bool IsRenderViewLive() const;
@@ -80,8 +83,8 @@ class ExtensionHost : public RenderViewHostDelegate,
// Sets |url_| and navigates |render_view_host_|.
void NavigateToURL(const GURL& url);
- // Insert the CSS for a toolstrip.
- void InsertCssIfToolstrip();
+ // Insert the theme CSS for a toolstrip/mole.
+ void InsertThemeCSS();
// RenderViewHostDelegate implementation.
virtual RenderViewHostDelegate::View* GetViewDelegate();
@@ -106,7 +109,6 @@ class ExtensionHost : public RenderViewHostDelegate,
const int flags,
IPC::Message* reply_msg,
bool* did_suppress_message);
- virtual void DidInsertCSS();
// RenderViewHostDelegate::View
virtual void CreateNewWindow(int route_id,
diff --git a/chrome/browser/extensions/extension_shelf_model.cc b/chrome/browser/extensions/extension_shelf_model.cc
index 5a6db01..10b56b2 100644
--- a/chrome/browser/extensions/extension_shelf_model.cc
+++ b/chrome/browser/extensions/extension_shelf_model.cc
@@ -138,6 +138,7 @@ void ExtensionShelfModel::ExpandToolstrip(iterator toolstrip,
ToolstripEventRouter::OnToolstripExpanded(browser_->profile(),
routing_id,
url, height);
+ toolstrip->host->SetRenderViewType(ViewType::EXTENSION_MOLE);
}
void ExtensionShelfModel::CollapseToolstrip(iterator toolstrip,
@@ -152,6 +153,7 @@ void ExtensionShelfModel::CollapseToolstrip(iterator toolstrip,
ToolstripEventRouter::OnToolstripCollapsed(browser_->profile(),
routing_id,
url);
+ toolstrip->host->SetRenderViewType(ViewType::EXTENSION_TOOLSTRIP);
}
void ExtensionShelfModel::Observe(NotificationType type,