// 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 WEBKIT_CLIENT_IMPL_H_ #define WEBKIT_CLIENT_IMPL_H_ #include "base/platform_file.h" #include "base/timer.h" #include "third_party/WebKit/Source/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" #elif defined(OS_MACOSX) #include "webkit/glue/webthemeengine_impl_mac.h" #endif class MessageLoop; namespace webkit_glue { class WebKitClientImpl : public WebKit::WebKitClient { public: WebKitClientImpl(); virtual ~WebKitClientImpl(); // WebKitClient methods (partial implementation): virtual WebKit::WebThemeEngine* themeEngine(); virtual base::PlatformFile databaseOpenFile( const WebKit::WebString& vfs_file_name, int desired_flags); virtual int databaseDeleteFile(const WebKit::WebString& vfs_file_name, bool sync_dir); virtual long databaseGetFileAttributes( const WebKit::WebString& vfs_file_name); virtual long long databaseGetFileSize(const WebKit::WebString& vfs_file_name); virtual WebKit::WebString signedPublicKeyAndChallengeString( unsigned key_size_index, const WebKit::WebString& challenge, const WebKit::WebURL& url); virtual size_t memoryUsageMB(); virtual size_t actualMemoryUsageMB(); virtual WebKit::WebURLLoader* createURLLoader(); virtual WebKit::WebSocketStreamHandle* createSocketStreamHandle(); virtual WebKit::WebString userAgent(const WebKit::WebURL& url); virtual void getPluginList(bool refresh, WebKit::WebPluginListBuilder*); virtual void decrementStatsCounter(const char* name); virtual void incrementStatsCounter(const char* name); virtual void histogramCustomCounts( const char* name, int sample, int min, int max, int bucket_count); virtual void histogramEnumeration( const char* name, int sample, int boundary_value); virtual void traceEventBegin(const char* name, void* id, const char* extra); virtual void traceEventEnd(const char* name, void* id, const char* extra); virtual WebKit::WebData loadResource(const char* name); virtual bool loadAudioResource( WebKit::WebAudioBus* destination_bus, const char* audio_file_data, size_t data_size, double sample_rate); virtual WebKit::WebString queryLocalizedString( WebKit::WebLocalizedString::Name name); virtual WebKit::WebString queryLocalizedString( WebKit::WebLocalizedString::Name name, int numeric_value); virtual WebKit::WebString queryLocalizedString( WebKit::WebLocalizedString::Name name, const WebKit::WebString& value); virtual WebKit::WebString queryLocalizedString( WebKit::WebLocalizedString::Name name, const WebKit::WebString& value1, const WebKit::WebString& value2); virtual void suddenTerminationChanged(bool enabled) { } virtual double currentTime(); virtual void cryptographicallyRandomValues( unsigned char* buffer, size_t length); virtual void setSharedTimerFiredFunction(void (*func)()); virtual void setSharedTimerFireTime(double fireTime); virtual void stopSharedTimer(); virtual void callOnMainThread(void (*func)(void*), void* context); void SuspendSharedTimer(); void ResumeSharedTimer(); // Hack for http://crbug.com/71735. // TODO(jamesr): move this back to the private section once // http://crbug.com/72007 is fixed. void DoTimeout() { if (shared_timer_func_ && !shared_timer_suspended_) shared_timer_func_(); } private: MessageLoop* main_loop_; base::OneShotTimer<WebKitClientImpl> shared_timer_; void (*shared_timer_func_)(); double shared_timer_fire_time_; int shared_timer_suspended_; // counter #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) WebThemeEngineImpl theme_engine_; #endif }; } // namespace webkit_glue #endif // WEBKIT_CLIENT_IMPL_H_