1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CONTENT_CHILD_BLINK_PLATFORM_IMPL_H_
6 #define CONTENT_CHILD_BLINK_PLATFORM_IMPL_H_
8 #include "base/compiler_specific.h"
9 #include "base/debug/trace_event.h"
10 #include "base/platform_file.h"
11 #include "base/threading/thread_local_storage.h"
12 #include "base/timer/timer.h"
13 #include "content/child/webfallbackthemeengine_impl.h"
14 #include "content/common/content_export.h"
15 #include "third_party/WebKit/public/platform/Platform.h"
16 #include "third_party/WebKit/public/platform/WebURLError.h"
17 #include "ui/base/layout.h"
19 #if defined(USE_DEFAULT_RENDER_THEME)
20 #include "content/child/webthemeengine_impl_default.h"
22 #include "content/child/webthemeengine_impl_win.h"
23 #elif defined(OS_MACOSX)
24 #include "content/child/webthemeengine_impl_mac.h"
25 #elif defined(OS_ANDROID)
26 #include "content/child/webthemeengine_impl_android.h"
34 class FlingCurveConfiguration;
37 class CONTENT_EXPORT BlinkPlatformImpl
38 : NON_EXPORTED_BASE(public blink::Platform) {
41 virtual ~BlinkPlatformImpl();
43 // Platform methods (partial implementation):
44 virtual blink::WebThemeEngine* themeEngine();
45 virtual blink::WebFallbackThemeEngine* fallbackThemeEngine();
46 virtual base::PlatformFile databaseOpenFile(
47 const blink::WebString& vfs_file_name, int desired_flags);
48 virtual int databaseDeleteFile(const blink::WebString& vfs_file_name,
50 virtual long databaseGetFileAttributes(
51 const blink::WebString& vfs_file_name);
52 virtual long long databaseGetFileSize(const blink::WebString& vfs_file_name);
53 virtual long long databaseGetSpaceAvailableForOrigin(
54 const blink::WebString& origin_identifier);
55 virtual blink::WebString signedPublicKeyAndChallengeString(
56 unsigned key_size_index, const blink::WebString& challenge,
57 const blink::WebURL& url);
58 virtual size_t memoryUsageMB();
59 virtual size_t actualMemoryUsageMB();
60 virtual size_t physicalMemoryMB();
61 virtual size_t virtualMemoryLimitMB();
62 virtual size_t numberOfProcessors();
64 virtual void startHeapProfiling(const blink::WebString& prefix);
65 virtual void stopHeapProfiling() OVERRIDE;
66 virtual void dumpHeapProfiling(const blink::WebString& reason);
67 virtual blink::WebString getHeapProfile() OVERRIDE;
69 virtual bool processMemorySizesInBytes(size_t* private_bytes,
70 size_t* shared_bytes);
71 virtual bool memoryAllocatorWasteInBytes(size_t* size);
72 virtual blink::WebDiscardableMemory* allocateAndLockDiscardableMemory(
74 virtual size_t maxDecodedImageBytes() OVERRIDE;
75 virtual blink::WebURLLoader* createURLLoader();
76 virtual blink::WebSocketStreamHandle* createSocketStreamHandle();
77 virtual blink::WebSocketHandle* createWebSocketHandle() OVERRIDE;
78 virtual blink::WebString userAgent();
79 virtual blink::WebData parseDataURL(
80 const blink::WebURL& url, blink::WebString& mimetype,
81 blink::WebString& charset);
82 virtual blink::WebURLError cancelledError(const blink::WebURL& url) const;
83 virtual blink::WebThread* createThread(const char* name);
84 virtual blink::WebThread* currentThread();
85 virtual blink::WebWaitableEvent* createWaitableEvent();
86 virtual blink::WebWaitableEvent* waitMultipleEvents(
87 const blink::WebVector<blink::WebWaitableEvent*>& events);
88 virtual void decrementStatsCounter(const char* name);
89 virtual void incrementStatsCounter(const char* name);
90 virtual void histogramCustomCounts(
91 const char* name, int sample, int min, int max, int bucket_count);
92 virtual void histogramEnumeration(
93 const char* name, int sample, int boundary_value);
94 virtual void histogramSparse(const char* name, int sample);
95 virtual const unsigned char* getTraceCategoryEnabledFlag(
96 const char* category_name);
97 virtual long* getTraceSamplingState(const unsigned thread_bucket);
98 virtual TraceEventHandle addTraceEvent(
100 const unsigned char* category_group_enabled,
102 unsigned long long id,
104 const char** arg_names,
105 const unsigned char* arg_types,
106 const unsigned long long* arg_values,
107 unsigned char flags);
108 virtual TraceEventHandle addTraceEvent(
110 const unsigned char* category_group_enabled,
112 unsigned long long id,
114 const char** arg_names,
115 const unsigned char* arg_types,
116 const unsigned long long* arg_values,
117 const blink::WebConvertableToTraceFormat* convertable_values,
118 unsigned char flags);
119 virtual void updateTraceEventDuration(
120 const unsigned char* category_group_enabled,
123 virtual blink::WebData loadResource(const char* name);
124 virtual blink::WebString queryLocalizedString(
125 blink::WebLocalizedString::Name name);
126 virtual blink::WebString queryLocalizedString(
127 blink::WebLocalizedString::Name name, int numeric_value);
128 virtual blink::WebString queryLocalizedString(
129 blink::WebLocalizedString::Name name, const blink::WebString& value);
130 virtual blink::WebString queryLocalizedString(
131 blink::WebLocalizedString::Name name,
132 const blink::WebString& value1, const blink::WebString& value2);
133 virtual void suddenTerminationChanged(bool enabled) { }
134 virtual double currentTime();
135 virtual double monotonicallyIncreasingTime();
136 virtual void cryptographicallyRandomValues(
137 unsigned char* buffer, size_t length);
138 virtual void setSharedTimerFiredFunction(void (*func)());
139 virtual void setSharedTimerFireInterval(double interval_seconds);
140 virtual void stopSharedTimer();
141 virtual void callOnMainThread(void (*func)(void*), void* context);
142 virtual blink::WebGestureCurve* createFlingAnimationCurve(
144 const blink::WebFloatPoint& velocity,
145 const blink::WebSize& cumulative_scroll) OVERRIDE;
146 virtual void didStartWorkerRunLoop(
147 const blink::WebWorkerRunLoop& runLoop) OVERRIDE;
148 virtual void didStopWorkerRunLoop(
149 const blink::WebWorkerRunLoop& runLoop) OVERRIDE;
150 virtual blink::WebCrypto* crypto() OVERRIDE;
152 void SetFlingCurveParameters(const std::vector<float>& new_touchpad,
153 const std::vector<float>& new_touchscreen);
155 void SuspendSharedTimer();
156 void ResumeSharedTimer();
157 virtual void OnStartSharedTimer(base::TimeDelta delay) {}
160 static void DestroyCurrentThread(void*);
163 if (shared_timer_func_ && !shared_timer_suspended_)
164 shared_timer_func_();
167 WebThemeEngineImpl native_theme_engine_;
168 WebFallbackThemeEngineImpl fallback_theme_engine_;
169 base::MessageLoop* main_loop_;
170 base::OneShotTimer<BlinkPlatformImpl> shared_timer_;
171 void (*shared_timer_func_)();
172 double shared_timer_fire_time_;
173 bool shared_timer_fire_time_was_set_while_suspended_;
174 int shared_timer_suspended_; // counter
175 scoped_ptr<FlingCurveConfiguration> fling_curve_configuration_;
176 base::ThreadLocalStorage::Slot current_thread_slot_;
177 scoped_ptr<WebCryptoImpl> web_crypto_;
180 } // namespace content
182 #endif // CONTENT_CHILD_BLINK_PLATFORM_IMPL_H_