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

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

Issue 203034: Theme support for the extension shelf (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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/extension_host.cc
===================================================================
--- chrome/browser/extensions/extension_host.cc (revision 25988)
+++ chrome/browser/extensions/extension_host.cc (working copy)
@@ -8,6 +8,7 @@
#include "base/string_util.h"
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_list.h"
+#include "chrome/browser/browser_theme_provider.h"
#include "chrome/browser/debugger/devtools_manager.h"
#include "chrome/browser/extensions/extension_message_service.h"
#include "chrome/browser/extensions/extension_tabs_module.h"
@@ -36,6 +37,8 @@
// static
bool ExtensionHost::enable_dom_automation_ = false;
+static const char* kToolstripTextColorSubstitution = "$TEXT_COLOR$";
+
ExtensionHost::ExtensionHost(Extension* extension, SiteInstance* site_instance,
const GURL& url, ViewType::Type host_type)
: extension_(extension),
@@ -150,33 +153,57 @@
new ExtensionFunctionDispatcher(render_view_host_, this, url_));
}
-void ExtensionHost::DidStopLoading(RenderViewHost* render_view_host) {
- static const base::StringPiece toolstrip_css(
- ResourceBundle::GetSharedInstance().GetRawDataResource(
- IDR_EXTENSIONS_TOOLSTRIP_CSS));
+void ExtensionHost::InsertCssIfToolstrip() {
#if defined(TOOLKIT_VIEWS)
ExtensionView* view = view_.get();
- if (view) {
- // 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.
- if (view->is_toolstrip()) {
- render_view_host->InsertCSSInWebFrame(L"", toolstrip_css.as_string());
- } else {
- // No CSS injecting currently, but call SetDidInsertCSS to tell the view
- // that it's OK to display.
- view->SetDidInsertCSS(true);
- }
+ 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)
ExtensionViewGtk* view = view_.get();
- if (view && view->is_toolstrip()) {
- render_view_host->InsertCSSInWebFrame(L"", toolstrip_css.as_string());
+ if (!view || !view->is_toolstrip())
+ return;
+#endif
+
+ static const base::StringPiece toolstrip_css(
+ ResourceBundle::GetSharedInstance().GetRawDataResource(
+ IDR_EXTENSIONS_TOOLSTRIP_CSS));
+
+ std::string css = toolstrip_css.as_string();
+ ThemeProvider* theme_provider =
+ render_view_host()->process()->profile()->GetThemeProvider();
+
+ SkColor text_color = theme_provider ?
+ theme_provider->GetColor(BrowserThemeProvider::COLOR_BOOKMARK_TEXT) :
+ SK_ColorBLACK;
+
+ std::string hex_color_string = StringPrintf(
+ "#%02x%02x%02x", SkColorGetR(text_color),
+ SkColorGetG(text_color),
+ SkColorGetB(text_color));
+ size_t pos = css.find(kToolstripTextColorSubstitution);
+ while (pos != std::string::npos) {
+ css.replace(pos, 12, hex_color_string);
+ pos = css.find(kToolstripTextColorSubstitution);
}
+
+#if defined(TOOLKIT_VIEWS) || defined(OS_LINUX)
+ // 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");
#endif
+}
+void ExtensionHost::DidStopLoading(RenderViewHost* render_view_host) {
+ InsertCssIfToolstrip();
if (!did_stop_loading_) {
NotificationService::current()->Notify(
NotificationType::EXTENSION_HOST_DID_STOP_LOADING,

Powered by Google App Engine
This is Rietveld 408576698