diff options
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/glue/webkit_glue.gypi | 1 | ||||
-rw-r--r-- | webkit/glue/webkitclient_impl.cc | 2 | ||||
-rw-r--r-- | webkit/glue/webkitclient_impl.h | 5 | ||||
-rw-r--r-- | webkit/glue/webthemeengine_impl_linux.cc | 100 | ||||
-rw-r--r-- | webkit/glue/webthemeengine_impl_linux.h | 26 | ||||
-rw-r--r-- | webkit/glue/webthemeengine_impl_win.h | 2 | ||||
-rw-r--r-- | webkit/support/test_webkit_client.cc | 7 |
7 files changed, 137 insertions, 6 deletions
diff --git a/webkit/glue/webkit_glue.gypi b/webkit/glue/webkit_glue.gypi index 50dda7a..68336aa 100644 --- a/webkit/glue/webkit_glue.gypi +++ b/webkit/glue/webkit_glue.gypi @@ -381,6 +381,7 @@ 'websocketstreamhandle_delegate.h', 'websocketstreamhandle_impl.cc', 'websocketstreamhandle_impl.h', + 'webthemeengine_impl_linux.cc', 'webthemeengine_impl_win.cc', 'weburlloader_impl.cc', 'weburlloader_impl.h', diff --git a/webkit/glue/webkitclient_impl.cc b/webkit/glue/webkitclient_impl.cc index c65d176..e9b05f1 100644 --- a/webkit/glue/webkitclient_impl.cc +++ b/webkit/glue/webkitclient_impl.cc @@ -171,7 +171,7 @@ WebKitClientImpl::~WebKitClientImpl() { } WebThemeEngine* WebKitClientImpl::themeEngine() { -#if defined(OS_WIN) +#if defined(OS_WIN) || defined(OS_LINUX) return &theme_engine_; #else return NULL; diff --git a/webkit/glue/webkitclient_impl.h b/webkit/glue/webkitclient_impl.h index 607677f..68d0eaf 100644 --- a/webkit/glue/webkitclient_impl.h +++ b/webkit/glue/webkitclient_impl.h @@ -10,8 +10,11 @@ #include "third_party/WebKit/WebKit/chromium/public/WebKitClient.h" #if defined(OS_WIN) #include "webkit/glue/webthemeengine_impl_win.h" +#elif defined(OS_LINUX) +#include "webkit/glue/webthemeengine_impl_linux.h" #endif + class MessageLoop; namespace webkit_glue { @@ -71,7 +74,7 @@ class WebKitClientImpl : public WebKit::WebKitClient { double shared_timer_fire_time_; int shared_timer_suspended_; // counter -#if defined(OS_WIN) +#if defined(OS_WIN) || defined(OS_LINUX) WebThemeEngineImpl theme_engine_; #endif }; diff --git a/webkit/glue/webthemeengine_impl_linux.cc b/webkit/glue/webthemeengine_impl_linux.cc new file mode 100644 index 0000000..d5cc9b4 --- /dev/null +++ b/webkit/glue/webthemeengine_impl_linux.cc @@ -0,0 +1,100 @@ +// Copyright (c) 2010 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 "webkit/glue/webthemeengine_impl_linux.h" + +#include "gfx/native_theme_linux.h" +#include "skia/ext/platform_canvas.h" +#include "third_party/WebKit/WebKit/chromium/public/WebRect.h" +#include "third_party/WebKit/WebKit/chromium/public/WebSize.h" + +using WebKit::WebCanvas; +using WebKit::WebColor; +using WebKit::WebRect; + +namespace webkit_glue { + +static gfx::Rect WebRectToRect(const WebRect& rect) { + return gfx::Rect(rect.x, rect.y, rect.width, rect.height); +} + +static gfx::NativeThemeLinux::Part NativeThemePart( + WebKit::WebThemeEngine::Part part) { + switch (part) { + case WebKit::WebThemeEngine::PartScrollbarDownArrow: + return gfx::NativeThemeLinux::kScrollbarDownArrow; + case WebKit::WebThemeEngine::PartScrollbarLeftArrow: + return gfx::NativeThemeLinux::kScrollbarLeftArrow; + case WebKit::WebThemeEngine::PartScrollbarRightArrow: + return gfx::NativeThemeLinux::kScrollbarRightArrow; + case WebKit::WebThemeEngine::PartScrollbarUpArrow: + return gfx::NativeThemeLinux::kScrollbarUpArrow; + case WebKit::WebThemeEngine::PartScrollbarHorizontalThumb: + return gfx::NativeThemeLinux::kScrollbarHorizontalThumb; + case WebKit::WebThemeEngine::PartScrollbarVerticalThumb: + return gfx::NativeThemeLinux::kScrollbarVerticalThumb; + case WebKit::WebThemeEngine::PartScrollbarHoriztonalTrack: + return gfx::NativeThemeLinux::kScrollbarHorizontalTrack; + case WebKit::WebThemeEngine::PartScrollbarVerticalTrack: + return gfx::NativeThemeLinux::kScrollbarVerticalTrack; + default: + return gfx::NativeThemeLinux::kScrollbarDownArrow; + } +} + +static gfx::NativeThemeLinux::State NativeThemeState( + WebKit::WebThemeEngine::State state) { + switch (state) { + case WebKit::WebThemeEngine::StateDisabled: + return gfx::NativeThemeLinux::kDisabled; + case WebKit::WebThemeEngine::StateHover: + return gfx::NativeThemeLinux::kHover; + case WebKit::WebThemeEngine::StateNormal: + return gfx::NativeThemeLinux::kNormal; + case WebKit::WebThemeEngine::StatePressed: + return gfx::NativeThemeLinux::kPressed; + default: + return gfx::NativeThemeLinux::kDisabled; + } +} + +static void GetNativeThemeExtraParams( + WebKit::WebThemeEngine::Part part, + WebKit::WebThemeEngine::State state, + const WebKit::WebThemeEngine::ExtraParams* extra_params, + gfx::NativeThemeLinux::ExtraParams* native_theme_extra_params) { + if (part == WebKit::WebThemeEngine::PartScrollbarHoriztonalTrack || + part == WebKit::WebThemeEngine::PartScrollbarVerticalTrack) { + native_theme_extra_params->scrollbar_track.track_x = + extra_params->scrollbarTrack.trackX; + native_theme_extra_params->scrollbar_track.track_y = + extra_params->scrollbarTrack.trackY; + native_theme_extra_params->scrollbar_track.track_width = + extra_params->scrollbarTrack.trackWidth; + native_theme_extra_params->scrollbar_track.track_height = + extra_params->scrollbarTrack.trackHeight; + } +} + +WebKit::WebSize WebThemeEngineImpl::getSize(WebKit::WebThemeEngine::Part part) { + return gfx::NativeThemeLinux::instance()->GetSize(NativeThemePart(part)); +} + +void WebThemeEngineImpl::paint( + WebKit::WebCanvas* canvas, + WebKit::WebThemeEngine::Part part, + WebKit::WebThemeEngine::State state, + const WebKit::WebRect& rect, + const WebKit::WebThemeEngine::ExtraParams* extra_params) { + gfx::NativeThemeLinux::ExtraParams native_theme_extra_params; + GetNativeThemeExtraParams( + part, state, extra_params, &native_theme_extra_params); + gfx::NativeThemeLinux::instance()->Paint( + canvas, + NativeThemePart(part), + NativeThemeState(state), + WebRectToRect(rect), + native_theme_extra_params); +} +} // namespace webkit_glue diff --git a/webkit/glue/webthemeengine_impl_linux.h b/webkit/glue/webthemeengine_impl_linux.h new file mode 100644 index 0000000..265b80c --- /dev/null +++ b/webkit/glue/webthemeengine_impl_linux.h @@ -0,0 +1,26 @@ +// Copyright (c) 2010 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. + +#ifndef WEBTHEMEENGINE_IMPL_LINUX_H_ +#define WEBTHEMEENGINE_IMPL_LINUX_H_ + +#include "third_party/WebKit/WebKit/chromium/public/linux/WebThemeEngine.h" + +namespace webkit_glue { + +class WebThemeEngineImpl : public WebKit::WebThemeEngine { + public: + // WebThemeEngine methods: + virtual WebKit::WebSize getSize(WebKit::WebThemeEngine::Part); + virtual void paint( + WebKit::WebCanvas*, + WebKit::WebThemeEngine::Part, + WebKit::WebThemeEngine::State, + const WebKit::WebRect&, + const WebKit::WebThemeEngine::ExtraParams*); +}; + +} // namespace webkit_glue + +#endif // WEBTHEMEENGINE_IMPL_LINUX_H_ diff --git a/webkit/glue/webthemeengine_impl_win.h b/webkit/glue/webthemeengine_impl_win.h index 533ea19..6e749c4 100644 --- a/webkit/glue/webthemeengine_impl_win.h +++ b/webkit/glue/webthemeengine_impl_win.h @@ -5,7 +5,7 @@ #ifndef WEBTHEMEENGINE_IMPL_WIN_H_ #define WEBTHEMEENGINE_IMPL_WIN_H_ -#include "third_party/WebKit/WebKit/chromium/public/WebThemeEngine.h" +#include "third_party/WebKit/WebKit/chromium/public/win/WebThemeEngine.h" namespace webkit_glue { diff --git a/webkit/support/test_webkit_client.cc b/webkit/support/test_webkit_client.cc index 8382fd0..2bc1494 100644 --- a/webkit/support/test_webkit_client.cc +++ b/webkit/support/test_webkit_client.cc @@ -28,7 +28,6 @@ #include "third_party/WebKit/WebKit/chromium/public/WebStorageEventDispatcher.h" #include "third_party/WebKit/WebKit/chromium/public/WebStorageNamespace.h" #include "third_party/WebKit/WebKit/chromium/public/WebString.h" -#include "third_party/WebKit/WebKit/chromium/public/WebThemeEngine.h" #include "third_party/WebKit/WebKit/chromium/public/WebURL.h" #include "webkit/appcache/web_application_cache_host_impl.h" #include "webkit/database/vfs_backend.h" @@ -51,9 +50,11 @@ #include "v8/include/v8.h" #if defined(OS_WIN) +#include "third_party/WebKit/WebKit/chromium/public/win/WebThemeEngine.h" #include "webkit/tools/test_shell/test_shell_webthemeengine.h" -#endif -#if defined(OS_MACOSX) +#elif defined(OS_LINUX) +#include "third_party/WebKit/WebKit/chromium/public/linux/WebThemeEngine.h" +#elif defined(OS_MACOSX) #include "base/mac_util.h" #endif |