diff options
Diffstat (limited to 'chromium/content/child/blink_platform_impl.h')
-rw-r--r-- | chromium/content/child/blink_platform_impl.h | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/chromium/content/child/blink_platform_impl.h b/chromium/content/child/blink_platform_impl.h new file mode 100644 index 00000000000..e9d3e186cc9 --- /dev/null +++ b/chromium/content/child/blink_platform_impl.h @@ -0,0 +1,183 @@ +// Copyright 2014 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 CONTENT_CHILD_BLINK_PLATFORM_IMPL_H_ +#define CONTENT_CHILD_BLINK_PLATFORM_IMPL_H_ + +#include "base/compiler_specific.h" +#include "base/debug/trace_event.h" +#include "base/threading/thread_local_storage.h" +#include "base/timer/timer.h" +#include "content/child/webcrypto/webcrypto_impl.h" +#include "content/child/webfallbackthemeengine_impl.h" +#include "content/common/content_export.h" +#include "third_party/WebKit/public/platform/Platform.h" +#include "third_party/WebKit/public/platform/WebGestureDevice.h" +#include "third_party/WebKit/public/platform/WebURLError.h" +#include "ui/base/layout.h" + +#if defined(USE_DEFAULT_RENDER_THEME) +#include "content/child/webthemeengine_impl_default.h" +#elif defined(OS_WIN) +#include "content/child/webthemeengine_impl_win.h" +#elif defined(OS_MACOSX) +#include "content/child/webthemeengine_impl_mac.h" +#elif defined(OS_ANDROID) +#include "content/child/webthemeengine_impl_android.h" +#endif + +namespace base { +class MessageLoop; +} + +namespace content { +class FlingCurveConfiguration; +class WebCryptoImpl; + +class CONTENT_EXPORT BlinkPlatformImpl + : NON_EXPORTED_BASE(public blink::Platform) { + public: + BlinkPlatformImpl(); + virtual ~BlinkPlatformImpl(); + + // Platform methods (partial implementation): + virtual blink::WebThemeEngine* themeEngine(); + virtual blink::WebFallbackThemeEngine* fallbackThemeEngine(); + virtual blink::Platform::FileHandle databaseOpenFile( + const blink::WebString& vfs_file_name, int desired_flags); + virtual int databaseDeleteFile(const blink::WebString& vfs_file_name, + bool sync_dir); + virtual long databaseGetFileAttributes( + const blink::WebString& vfs_file_name); + virtual long long databaseGetFileSize(const blink::WebString& vfs_file_name); + virtual long long databaseGetSpaceAvailableForOrigin( + const blink::WebString& origin_identifier); + virtual blink::WebString signedPublicKeyAndChallengeString( + unsigned key_size_index, const blink::WebString& challenge, + const blink::WebURL& url); + virtual size_t memoryUsageMB(); + virtual size_t actualMemoryUsageMB(); + virtual size_t physicalMemoryMB(); + virtual size_t virtualMemoryLimitMB(); + virtual size_t numberOfProcessors(); + + virtual void startHeapProfiling(const blink::WebString& prefix); + virtual void stopHeapProfiling() OVERRIDE; + virtual void dumpHeapProfiling(const blink::WebString& reason); + virtual blink::WebString getHeapProfile() OVERRIDE; + + virtual bool processMemorySizesInBytes(size_t* private_bytes, + size_t* shared_bytes); + virtual bool memoryAllocatorWasteInBytes(size_t* size); + virtual blink::WebDiscardableMemory* allocateAndLockDiscardableMemory( + size_t bytes); + virtual size_t maxDecodedImageBytes() OVERRIDE; + virtual blink::WebURLLoader* createURLLoader(); + virtual blink::WebSocketStreamHandle* createSocketStreamHandle(); + virtual blink::WebSocketHandle* createWebSocketHandle() OVERRIDE; + virtual blink::WebString userAgent(); + virtual blink::WebData parseDataURL( + const blink::WebURL& url, blink::WebString& mimetype, + blink::WebString& charset); + virtual blink::WebURLError cancelledError(const blink::WebURL& url) const; + virtual blink::WebThread* createThread(const char* name); + virtual blink::WebThread* currentThread(); + virtual blink::WebWaitableEvent* createWaitableEvent(); + virtual blink::WebWaitableEvent* waitMultipleEvents( + const blink::WebVector<blink::WebWaitableEvent*>& events); + 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 histogramSparse(const char* name, int sample); + virtual const unsigned char* getTraceCategoryEnabledFlag( + const char* category_name); + virtual long* getTraceSamplingState(const unsigned thread_bucket); + virtual TraceEventHandle addTraceEvent( + char phase, + const unsigned char* category_group_enabled, + const char* name, + unsigned long long id, + int num_args, + const char** arg_names, + const unsigned char* arg_types, + const unsigned long long* arg_values, + unsigned char flags); + virtual TraceEventHandle addTraceEvent( + char phase, + const unsigned char* category_group_enabled, + const char* name, + unsigned long long id, + int num_args, + const char** arg_names, + const unsigned char* arg_types, + const unsigned long long* arg_values, + const blink::WebConvertableToTraceFormat* convertable_values, + unsigned char flags); + virtual void updateTraceEventDuration( + const unsigned char* category_group_enabled, + const char* name, + TraceEventHandle); + virtual blink::WebData loadResource(const char* name); + virtual blink::WebString queryLocalizedString( + blink::WebLocalizedString::Name name); + virtual blink::WebString queryLocalizedString( + blink::WebLocalizedString::Name name, int numeric_value); + virtual blink::WebString queryLocalizedString( + blink::WebLocalizedString::Name name, const blink::WebString& value); + virtual blink::WebString queryLocalizedString( + blink::WebLocalizedString::Name name, + const blink::WebString& value1, const blink::WebString& value2); + virtual void suddenTerminationChanged(bool enabled) { } + virtual double currentTime(); + virtual double monotonicallyIncreasingTime(); + virtual void cryptographicallyRandomValues( + unsigned char* buffer, size_t length); + virtual void setSharedTimerFiredFunction(void (*func)()); + virtual void setSharedTimerFireInterval(double interval_seconds); + virtual void stopSharedTimer(); + virtual void callOnMainThread(void (*func)(void*), void* context); + virtual blink::WebGestureCurve* createFlingAnimationCurve( + blink::WebGestureDevice device_source, + const blink::WebFloatPoint& velocity, + const blink::WebSize& cumulative_scroll) OVERRIDE; + virtual void didStartWorkerRunLoop( + const blink::WebWorkerRunLoop& runLoop) OVERRIDE; + virtual void didStopWorkerRunLoop( + const blink::WebWorkerRunLoop& runLoop) OVERRIDE; + virtual blink::WebCrypto* crypto() OVERRIDE; + + void SetFlingCurveParameters(const std::vector<float>& new_touchpad, + const std::vector<float>& new_touchscreen); + + void SuspendSharedTimer(); + void ResumeSharedTimer(); + virtual void OnStartSharedTimer(base::TimeDelta delay) {} + + private: + static void DestroyCurrentThread(void*); + + void DoTimeout() { + if (shared_timer_func_ && !shared_timer_suspended_) + shared_timer_func_(); + } + + WebThemeEngineImpl native_theme_engine_; + WebFallbackThemeEngineImpl fallback_theme_engine_; + base::MessageLoop* main_loop_; + base::OneShotTimer<BlinkPlatformImpl> shared_timer_; + void (*shared_timer_func_)(); + double shared_timer_fire_time_; + bool shared_timer_fire_time_was_set_while_suspended_; + int shared_timer_suspended_; // counter + scoped_ptr<FlingCurveConfiguration> fling_curve_configuration_; + base::ThreadLocalStorage::Slot current_thread_slot_; + WebCryptoImpl web_crypto_; +}; + +} // namespace content + +#endif // CONTENT_CHILD_BLINK_PLATFORM_IMPL_H_ |