Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(677)

Side by Side Diff: webkit/child/webkitplatformsupport_child_impl.cc

Issue 148333009: Move webkit/child/webkitplatformsupport_child_impl to content/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes for Windows and Android builds, plus fix nits Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 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.
4
5 #include "webkit/child/webkitplatformsupport_child_impl.h"
6
7 #include "base/memory/discardable_memory.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/synchronization/waitable_event.h"
10 #include "third_party/WebKit/public/platform/WebWaitableEvent.h"
11 #include "third_party/WebKit/public/web/WebInputEvent.h"
12 #include "webkit/child/fling_curve_configuration.h"
13 #include "webkit/child/web_discardable_memory_impl.h"
14 #include "webkit/child/webthread_impl.h"
15 #include "webkit/child/worker_task_runner.h"
16
17 #if defined(OS_ANDROID)
18 #include "webkit/child/fling_animator_impl_android.h"
19 #endif
20
21 using blink::WebFallbackThemeEngine;
22 using blink::WebThemeEngine;
23
24 namespace webkit_glue {
25
26 namespace {
27
28 class WebWaitableEventImpl : public blink::WebWaitableEvent {
29 public:
30 WebWaitableEventImpl() : impl_(new base::WaitableEvent(false, false)) {}
31 virtual ~WebWaitableEventImpl() {}
32
33 virtual void wait() { impl_->Wait(); }
34 virtual void signal() { impl_->Signal(); }
35
36 base::WaitableEvent* impl() {
37 return impl_.get();
38 }
39
40 private:
41 scoped_ptr<base::WaitableEvent> impl_;
42 DISALLOW_COPY_AND_ASSIGN(WebWaitableEventImpl);
43 };
44
45 } // namespace
46
47 WebKitPlatformSupportChildImpl::WebKitPlatformSupportChildImpl()
48 : current_thread_slot_(&DestroyCurrentThread),
49 fling_curve_configuration_(new FlingCurveConfiguration) {}
50
51 WebKitPlatformSupportChildImpl::~WebKitPlatformSupportChildImpl() {}
52
53 WebThemeEngine* WebKitPlatformSupportChildImpl::themeEngine() {
54 return &native_theme_engine_;
55 }
56
57 WebFallbackThemeEngine* WebKitPlatformSupportChildImpl::fallbackThemeEngine() {
58 return &fallback_theme_engine_;
59 }
60
61 void WebKitPlatformSupportChildImpl::SetFlingCurveParameters(
62 const std::vector<float>& new_touchpad,
63 const std::vector<float>& new_touchscreen) {
64 fling_curve_configuration_->SetCurveParameters(new_touchpad, new_touchscreen);
65 }
66
67 blink::WebGestureCurve*
68 WebKitPlatformSupportChildImpl::createFlingAnimationCurve(
69 int device_source,
70 const blink::WebFloatPoint& velocity,
71 const blink::WebSize& cumulative_scroll) {
72 #if defined(OS_ANDROID)
73 return FlingAnimatorImpl::CreateAndroidGestureCurve(velocity,
74 cumulative_scroll);
75 #endif
76
77 if (device_source == blink::WebGestureEvent::Touchscreen)
78 return fling_curve_configuration_->CreateForTouchScreen(velocity,
79 cumulative_scroll);
80
81 return fling_curve_configuration_->CreateForTouchPad(velocity,
82 cumulative_scroll);
83 }
84
85 blink::WebThread* WebKitPlatformSupportChildImpl::createThread(
86 const char* name) {
87 return new WebThreadImpl(name);
88 }
89
90 blink::WebThread* WebKitPlatformSupportChildImpl::currentThread() {
91 WebThreadImplForMessageLoop* thread =
92 static_cast<WebThreadImplForMessageLoop*>(current_thread_slot_.Get());
93 if (thread)
94 return (thread);
95
96 scoped_refptr<base::MessageLoopProxy> message_loop =
97 base::MessageLoopProxy::current();
98 if (!message_loop.get())
99 return NULL;
100
101 thread = new WebThreadImplForMessageLoop(message_loop.get());
102 current_thread_slot_.Set(thread);
103 return thread;
104 }
105
106 blink::WebWaitableEvent* WebKitPlatformSupportChildImpl::createWaitableEvent() {
107 return new WebWaitableEventImpl();
108 }
109
110 blink::WebWaitableEvent* WebKitPlatformSupportChildImpl::waitMultipleEvents(
111 const blink::WebVector<blink::WebWaitableEvent*>& web_events) {
112 base::WaitableEvent** events = new base::WaitableEvent*[web_events.size()];
113 for (size_t i = 0; i < web_events.size(); ++i)
114 events[i] = static_cast<WebWaitableEventImpl*>(web_events[i])->impl();
115 size_t idx = base::WaitableEvent::WaitMany(events, web_events.size());
116 DCHECK_LT(idx, web_events.size());
117 return web_events[idx];
118 }
119
120 void WebKitPlatformSupportChildImpl::didStartWorkerRunLoop(
121 const blink::WebWorkerRunLoop& runLoop) {
122 WorkerTaskRunner* worker_task_runner = WorkerTaskRunner::Instance();
123 worker_task_runner->OnWorkerRunLoopStarted(runLoop);
124 }
125
126 void WebKitPlatformSupportChildImpl::didStopWorkerRunLoop(
127 const blink::WebWorkerRunLoop& runLoop) {
128 WorkerTaskRunner* worker_task_runner = WorkerTaskRunner::Instance();
129 worker_task_runner->OnWorkerRunLoopStopped(runLoop);
130 }
131
132 blink::WebDiscardableMemory*
133 WebKitPlatformSupportChildImpl::allocateAndLockDiscardableMemory(size_t bytes) {
134 base::DiscardableMemoryType type =
135 base::DiscardableMemory::GetPreferredType();
136 if (type == base::DISCARDABLE_MEMORY_TYPE_EMULATED)
137 return NULL;
138 return WebDiscardableMemoryImpl::CreateLockedMemory(bytes).release();
139 }
140
141 // static
142 void WebKitPlatformSupportChildImpl::DestroyCurrentThread(void* thread) {
143 WebThreadImplForMessageLoop* impl =
144 static_cast<WebThreadImplForMessageLoop*>(thread);
145 delete impl;
146 }
147
148 } // namespace webkit_glue
OLDNEW
« no previous file with comments | « webkit/child/webkitplatformsupport_child_impl.h ('k') | webkit/child/webthemeengine_impl_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698