Add CefBrowserSettings.background_color for custom background color assignment on a per-browser basis and fix assignment of the default value (issue #1161).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1656 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
parent
966b64c01f
commit
33e7bb04b3
|
@ -559,6 +559,15 @@ typedef struct _cef_browser_settings_t {
|
||||||
// "disable-accelerated-compositing" command-line switch.
|
// "disable-accelerated-compositing" command-line switch.
|
||||||
///
|
///
|
||||||
cef_state_t accelerated_compositing;
|
cef_state_t accelerated_compositing;
|
||||||
|
|
||||||
|
///
|
||||||
|
// Opaque background color used for the browser before a document is loaded
|
||||||
|
// and when no document color is specified. By default the background color
|
||||||
|
// will be the same as CefSettings.background_color. Only the RGB compontents
|
||||||
|
// of the specified value will be used. The alpha component must greater than
|
||||||
|
// 0 to enable use of the background color but will be otherwise ignored.
|
||||||
|
///
|
||||||
|
cef_color_t background_color;
|
||||||
} cef_browser_settings_t;
|
} cef_browser_settings_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
|
@ -451,6 +451,8 @@ struct CefBrowserSettingsTraits {
|
||||||
target->application_cache = src->application_cache;
|
target->application_cache = src->application_cache;
|
||||||
target->webgl = src->webgl;
|
target->webgl = src->webgl;
|
||||||
target->accelerated_compositing = src->accelerated_compositing;
|
target->accelerated_compositing = src->accelerated_compositing;
|
||||||
|
|
||||||
|
target->background_color = src->background_color;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "libcef/browser/context.h"
|
|
||||||
#include "libcef/common/cef_switches.h"
|
#include "libcef/common/cef_switches.h"
|
||||||
|
|
||||||
#include "base/command_line.h"
|
#include "base/command_line.h"
|
||||||
|
@ -127,6 +126,4 @@ void BrowserToWebSettings(const CefBrowserSettings& cef, WebPreferences& web) {
|
||||||
web.experimental_webgl_enabled = false;
|
web.experimental_webgl_enabled = false;
|
||||||
if (cef.accelerated_compositing == STATE_DISABLED)
|
if (cef.accelerated_compositing == STATE_DISABLED)
|
||||||
web.accelerated_compositing_enabled = false;
|
web.accelerated_compositing_enabled = false;
|
||||||
|
|
||||||
web.base_background_color = CefContext::Get()->settings().background_color;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include "libcef/browser/browser_message_filter.h"
|
#include "libcef/browser/browser_message_filter.h"
|
||||||
#include "libcef/browser/browser_settings.h"
|
#include "libcef/browser/browser_settings.h"
|
||||||
#include "libcef/browser/chrome_scheme_handler.h"
|
#include "libcef/browser/chrome_scheme_handler.h"
|
||||||
|
#include "libcef/browser/context.h"
|
||||||
#include "libcef/browser/media_capture_devices_dispatcher.h"
|
#include "libcef/browser/media_capture_devices_dispatcher.h"
|
||||||
#include "libcef/browser/printing/printing_message_filter.h"
|
#include "libcef/browser/printing/printing_message_filter.h"
|
||||||
#include "libcef/browser/resource_dispatcher_host_delegate.h"
|
#include "libcef/browser/resource_dispatcher_host_delegate.h"
|
||||||
|
@ -43,6 +44,7 @@
|
||||||
#include "third_party/WebKit/public/web/WebWindowFeatures.h"
|
#include "third_party/WebKit/public/web/WebWindowFeatures.h"
|
||||||
#include "ui/base/ui_base_switches.h"
|
#include "ui/base/ui_base_switches.h"
|
||||||
#include "url/gurl.h"
|
#include "url/gurl.h"
|
||||||
|
#include "webkit/common/webpreferences.h"
|
||||||
|
|
||||||
#if defined(OS_POSIX) && !defined(OS_MACOSX)
|
#if defined(OS_POSIX) && !defined(OS_MACOSX)
|
||||||
#include "base/debug/leak_annotations.h"
|
#include "base/debug/leak_annotations.h"
|
||||||
|
@ -863,6 +865,33 @@ void CefContentBrowserClient::OverrideWebkitPrefs(
|
||||||
|
|
||||||
// Populate WebPreferences based on CefBrowserSettings.
|
// Populate WebPreferences based on CefBrowserSettings.
|
||||||
BrowserToWebSettings(browser->settings(), *prefs);
|
BrowserToWebSettings(browser->settings(), *prefs);
|
||||||
|
|
||||||
|
prefs->base_background_color = GetBaseBackgroundColor(rvh);
|
||||||
|
}
|
||||||
|
|
||||||
|
SkColor CefContentBrowserClient::GetBaseBackgroundColor(
|
||||||
|
content::RenderViewHost* rvh) {
|
||||||
|
CefRefPtr<CefBrowserHostImpl> browser =
|
||||||
|
CefBrowserHostImpl::GetBrowserForHost(rvh);
|
||||||
|
DCHECK(browser.get());
|
||||||
|
|
||||||
|
const CefBrowserSettings& browser_settings = browser->settings();
|
||||||
|
if (CefColorGetA(browser_settings.background_color) > 0) {
|
||||||
|
return SkColorSetRGB(
|
||||||
|
CefColorGetR(browser_settings.background_color),
|
||||||
|
CefColorGetG(browser_settings.background_color),
|
||||||
|
CefColorGetB(browser_settings.background_color));
|
||||||
|
} else {
|
||||||
|
const CefSettings& settings = CefContext::Get()->settings();
|
||||||
|
if (CefColorGetA(settings.background_color) > 0) {
|
||||||
|
return SkColorSetRGB(
|
||||||
|
CefColorGetR(settings.background_color),
|
||||||
|
CefColorGetG(settings.background_color),
|
||||||
|
CefColorGetB(settings.background_color));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return SK_ColorWHITE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CefContentBrowserClient::BrowserURLHandlerCreated(
|
void CefContentBrowserClient::BrowserURLHandlerCreated(
|
||||||
|
|
|
@ -135,6 +135,7 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
|
||||||
virtual void OverrideWebkitPrefs(content::RenderViewHost* rvh,
|
virtual void OverrideWebkitPrefs(content::RenderViewHost* rvh,
|
||||||
const GURL& url,
|
const GURL& url,
|
||||||
WebPreferences* prefs) OVERRIDE;
|
WebPreferences* prefs) OVERRIDE;
|
||||||
|
virtual SkColor GetBaseBackgroundColor(content::RenderViewHost* rvh) OVERRIDE;
|
||||||
virtual void BrowserURLHandlerCreated(
|
virtual void BrowserURLHandlerCreated(
|
||||||
content::BrowserURLHandler* handler) OVERRIDE;
|
content::BrowserURLHandler* handler) OVERRIDE;
|
||||||
virtual std::string GetDefaultDownloadName() OVERRIDE;
|
virtual std::string GetDefaultDownloadName() OVERRIDE;
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "content/public/browser/web_contents_view.h"
|
#include "content/public/browser/web_contents_view.h"
|
||||||
#include "content/public/common/content_client.h"
|
#include "content/public/common/content_client.h"
|
||||||
#include "net/base/net_util.h"
|
#include "net/base/net_util.h"
|
||||||
|
#include "third_party/skia/include/core/SkColor.h"
|
||||||
|
|
||||||
// static
|
// static
|
||||||
CefDevToolsFrontend* CefDevToolsFrontend::Show(
|
CefDevToolsFrontend* CefDevToolsFrontend::Show(
|
||||||
|
@ -26,9 +27,16 @@ CefDevToolsFrontend* CefDevToolsFrontend::Show(
|
||||||
const CefWindowInfo& windowInfo,
|
const CefWindowInfo& windowInfo,
|
||||||
CefRefPtr<CefClient> client,
|
CefRefPtr<CefClient> client,
|
||||||
const CefBrowserSettings& settings) {
|
const CefBrowserSettings& settings) {
|
||||||
|
CefBrowserSettings new_settings = settings;
|
||||||
|
if (CefColorGetA(new_settings.background_color) == 0) {
|
||||||
|
// Use white as the default background color for DevTools instead of the
|
||||||
|
// CefSettings.background_color value.
|
||||||
|
new_settings.background_color = SK_ColorWHITE;
|
||||||
|
}
|
||||||
|
|
||||||
CefRefPtr<CefBrowserHostImpl> frontend_browser =
|
CefRefPtr<CefBrowserHostImpl> frontend_browser =
|
||||||
CefBrowserHostImpl::Create(windowInfo, client, CefString(),
|
CefBrowserHostImpl::Create(windowInfo, client, CefString(),
|
||||||
settings,
|
new_settings,
|
||||||
inspected_browser->GetWindowHandle(), true,
|
inspected_browser->GetWindowHandle(), true,
|
||||||
inspected_browser->GetRequestContext());
|
inspected_browser->GetRequestContext());
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,12 @@ patches = [
|
||||||
'name': 'renderer_host_1161',
|
'name': 'renderer_host_1161',
|
||||||
'path': '../content/browser/renderer_host/',
|
'path': '../content/browser/renderer_host/',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
# Allow customization of the background color with Aura.
|
||||||
|
# http://code.google.com/p/chromiumembedded/issues/detail?id=1161
|
||||||
|
'name': 'public_browser_1161',
|
||||||
|
'path': '../content/public/browser/',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
# Allow customization of the WebView background color.
|
# Allow customization of the WebView background color.
|
||||||
# http://code.google.com/p/chromiumembedded/issues/detail?id=1161
|
# http://code.google.com/p/chromiumembedded/issues/detail?id=1161
|
||||||
|
|
|
@ -18,7 +18,7 @@ Index: common/webpreferences.h
|
||||||
bool use_solid_color_scrollbars;
|
bool use_solid_color_scrollbars;
|
||||||
bool compositor_touch_hit_testing;
|
bool compositor_touch_hit_testing;
|
||||||
bool navigate_on_drag_drop;
|
bool navigate_on_drag_drop;
|
||||||
+ int base_background_color;
|
+ uint32_t base_background_color;
|
||||||
|
|
||||||
// This flags corresponds to a Page's Settings' setCookieEnabled state. It
|
// This flags corresponds to a Page's Settings' setCookieEnabled state. It
|
||||||
// only controls whether or not the "document.cookie" field is properly
|
// only controls whether or not the "document.cookie" field is properly
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
Index: content_browser_client.cc
|
||||||
|
===================================================================
|
||||||
|
--- content_browser_client.cc (revision 261035)
|
||||||
|
+++ content_browser_client.cc (working copy)
|
||||||
|
@@ -255,6 +255,10 @@
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
+SkColor ContentBrowserClient::GetBaseBackgroundColor(RenderViewHost* rvh) {
|
||||||
|
+ return SK_ColorWHITE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
base::FilePath ContentBrowserClient::GetDefaultDownloadDirectory() {
|
||||||
|
return base::FilePath();
|
||||||
|
}
|
||||||
|
Index: content_browser_client.h
|
||||||
|
===================================================================
|
||||||
|
--- content_browser_client.h (revision 261035)
|
||||||
|
+++ content_browser_client.h (working copy)
|
||||||
|
@@ -22,6 +22,7 @@
|
||||||
|
#include "net/base/mime_util.h"
|
||||||
|
#include "net/cookies/canonical_cookie.h"
|
||||||
|
#include "net/url_request/url_request_job_factory.h"
|
||||||
|
+#include "third_party/skia/include/core/SkColor.h"
|
||||||
|
#include "third_party/WebKit/public/web/WebNotificationPresenter.h"
|
||||||
|
#include "ui/base/window_open_disposition.h"
|
||||||
|
#include "webkit/browser/fileapi/file_system_context.h"
|
||||||
|
@@ -542,6 +543,9 @@
|
||||||
|
// Clears browser cookies.
|
||||||
|
virtual void ClearCookies(RenderViewHost* rvh) {}
|
||||||
|
|
||||||
|
+ // Returns the base background color.
|
||||||
|
+ virtual SkColor GetBaseBackgroundColor(RenderViewHost* rvh);
|
||||||
|
+
|
||||||
|
// Returns the default download directory.
|
||||||
|
// This can be called on any thread.
|
||||||
|
virtual base::FilePath GetDefaultDownloadDirectory();
|
|
@ -93,12 +93,16 @@ Index: render_widget_host_view_aura.cc
|
||||||
===================================================================
|
===================================================================
|
||||||
--- render_widget_host_view_aura.cc (revision 261035)
|
--- render_widget_host_view_aura.cc (revision 261035)
|
||||||
+++ render_widget_host_view_aura.cc (working copy)
|
+++ render_widget_host_view_aura.cc (working copy)
|
||||||
@@ -2686,7 +2686,7 @@
|
@@ -2685,8 +2685,10 @@
|
||||||
|
// For non-opaque windows, we don't draw anything, since we depend on the
|
||||||
// canvas coming from the compositor to already be initialized as
|
// canvas coming from the compositor to already be initialized as
|
||||||
// transparent.
|
// transparent.
|
||||||
if (window_->layer()->fills_bounds_opaquely())
|
- if (window_->layer()->fills_bounds_opaquely())
|
||||||
- canvas->DrawColor(SK_ColorWHITE);
|
- canvas->DrawColor(SK_ColorWHITE);
|
||||||
+ canvas->DrawColor(SK_ColorTRANSPARENT);
|
+ if (window_->layer()->fills_bounds_opaquely()) {
|
||||||
|
+ canvas->DrawColor(GetContentClient()->browser()->GetBaseBackgroundColor(
|
||||||
|
+ RenderViewHost::From(host_)));
|
||||||
|
+ }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue