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

Side by Side Diff: third_party/WebKit/Source/core/dom/CompositorProxy.cpp

Issue 1599673002: compositor-worker: Remove code from cc_blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix blink_platform_unittests Created 4 years, 11 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/dom/CompositorProxy.h" 5 #include "core/dom/CompositorProxy.h"
6 6
7 #include "bindings/core/v8/ExceptionMessages.h" 7 #include "bindings/core/v8/ExceptionMessages.h"
8 #include "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "core/dom/DOMNodeIds.h" 9 #include "core/dom/DOMNodeIds.h"
10 #include "core/dom/ExceptionCode.h" 10 #include "core/dom/ExceptionCode.h"
11 #include "core/dom/ExecutionContext.h" 11 #include "core/dom/ExecutionContext.h"
12 #include "platform/ThreadSafeFunctional.h" 12 #include "platform/ThreadSafeFunctional.h"
13 #include "platform/graphics/CompositorMutableProperties.h"
13 #include "public/platform/Platform.h" 14 #include "public/platform/Platform.h"
14 #include "public/platform/WebCompositorMutableProperties.h"
15 #include "public/platform/WebTraceLocation.h" 15 #include "public/platform/WebTraceLocation.h"
16 #include <algorithm> 16 #include <algorithm>
17 17
18 namespace blink { 18 namespace blink {
19 19
20 static const struct { 20 static const struct {
21 const char* name; 21 const char* name;
22 WebCompositorMutableProperty property; 22 uint32_t property;
23 } allowedProperties[] = { 23 } allowedProperties[] = {
24 { "opacity", WebCompositorMutablePropertyOpacity }, 24 { "opacity", CompositorMutableProperty::kOpacity },
25 { "scrollleft", WebCompositorMutablePropertyScrollLeft }, 25 { "scrollleft", CompositorMutableProperty::kScrollLeft },
26 { "scrolltop", WebCompositorMutablePropertyScrollTop }, 26 { "scrolltop", CompositorMutableProperty::kScrollTop },
27 { "transform", WebCompositorMutablePropertyTransform }, 27 { "transform", CompositorMutableProperty::kTransform },
28 }; 28 };
29 29
30 static WebCompositorMutableProperty compositorMutablePropertyForName(const Strin g& attributeName) 30 static uint32_t compositorMutablePropertyForName(const String& attributeName)
31 { 31 {
32 for (const auto& mapping : allowedProperties) { 32 for (const auto& mapping : allowedProperties) {
33 if (equalIgnoringCase(mapping.name, attributeName)) 33 if (equalIgnoringCase(mapping.name, attributeName))
34 return mapping.property; 34 return mapping.property;
35 } 35 }
36 return WebCompositorMutablePropertyNone; 36 return CompositorMutableProperty::kNone;
37 } 37 }
38 38
39 static bool isControlThread() 39 static bool isControlThread()
40 { 40 {
41 return !isMainThread(); 41 return !isMainThread();
42 } 42 }
43 43
44 static bool isCallingCompositorFrameCallback() 44 static bool isCallingCompositorFrameCallback()
45 { 45 {
46 // TODO(sad): Check that the requestCompositorFrame callbacks are currently being called. 46 // TODO(sad): Check that the requestCompositorFrame callbacks are currently being called.
(...skipping 30 matching lines...) Expand all
77 exceptionState.throwDOMException(NoModificationAllowedError, "Cannot mut ate a proxy attribute outside of a requestCompositorFrame callback."); 77 exceptionState.throwDOMException(NoModificationAllowedError, "Cannot mut ate a proxy attribute outside of a requestCompositorFrame callback.");
78 return true; 78 return true;
79 } 79 }
80 return false; 80 return false;
81 } 81 }
82 82
83 static uint32_t compositorMutablePropertiesFromNames(const Vector<String>& attri buteArray) 83 static uint32_t compositorMutablePropertiesFromNames(const Vector<String>& attri buteArray)
84 { 84 {
85 uint32_t properties = 0; 85 uint32_t properties = 0;
86 for (const auto& attribute : attributeArray) { 86 for (const auto& attribute : attributeArray) {
87 properties |= static_cast<uint32_t>(compositorMutablePropertyForName(att ribute)); 87 properties |= compositorMutablePropertyForName(attribute);
88 } 88 }
89 return properties; 89 return properties;
90 } 90 }
91 91
92 #if ENABLE(ASSERT) 92 #if ENABLE(ASSERT)
93 static bool sanityCheckMutableProperties(uint32_t properties) 93 static bool sanityCheckMutableProperties(uint32_t properties)
94 { 94 {
95 // Ensures that we only have bits set for valid mutable properties. 95 // Ensures that we only have bits set for valid mutable properties.
96 uint32_t sanityCheckProperties = properties; 96 uint32_t sanityCheckProperties = properties;
97 for (unsigned i = 0; i < WTF_ARRAY_LENGTH(allowedProperties); ++i) { 97 for (unsigned i = 0; i < WTF_ARRAY_LENGTH(allowedProperties); ++i) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 } 138 }
139 139
140 CompositorProxy::~CompositorProxy() 140 CompositorProxy::~CompositorProxy()
141 { 141 {
142 if (m_connected) 142 if (m_connected)
143 disconnect(); 143 disconnect();
144 } 144 }
145 145
146 bool CompositorProxy::supports(const String& attributeName) const 146 bool CompositorProxy::supports(const String& attributeName) const
147 { 147 {
148 return !!(m_compositorMutableProperties & static_cast<uint32_t>(compositorMu tablePropertyForName(attributeName))); 148 return m_compositorMutableProperties & compositorMutablePropertyForName(attr ibuteName);
149 } 149 }
150 150
151 double CompositorProxy::opacity(ExceptionState& exceptionState) const 151 double CompositorProxy::opacity(ExceptionState& exceptionState) const
152 { 152 {
153 if (raiseExceptionIfMutationNotAllowed(exceptionState)) 153 if (raiseExceptionIfMutationNotAllowed(exceptionState))
154 return 0.0; 154 return 0.0;
155 if (raiseExceptionIfNotMutable(static_cast<uint32_t>(WebCompositorMutablePro pertyOpacity), exceptionState)) 155 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kOpacity, exceptio nState))
156 return 0.0; 156 return 0.0;
157 return m_opacity; 157 return m_opacity;
158 } 158 }
159 159
160 double CompositorProxy::scrollLeft(ExceptionState& exceptionState) const 160 double CompositorProxy::scrollLeft(ExceptionState& exceptionState) const
161 { 161 {
162 if (raiseExceptionIfMutationNotAllowed(exceptionState)) 162 if (raiseExceptionIfMutationNotAllowed(exceptionState))
163 return 0.0; 163 return 0.0;
164 if (raiseExceptionIfNotMutable(static_cast<uint32_t>(WebCompositorMutablePro pertyScrollLeft), exceptionState)) 164 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollLeft, excep tionState))
165 return 0.0; 165 return 0.0;
166 return m_scrollLeft; 166 return m_scrollLeft;
167 } 167 }
168 168
169 double CompositorProxy::scrollTop(ExceptionState& exceptionState) const 169 double CompositorProxy::scrollTop(ExceptionState& exceptionState) const
170 { 170 {
171 if (raiseExceptionIfMutationNotAllowed(exceptionState)) 171 if (raiseExceptionIfMutationNotAllowed(exceptionState))
172 return 0.0; 172 return 0.0;
173 if (raiseExceptionIfNotMutable(static_cast<uint32_t>(WebCompositorMutablePro pertyScrollTop), exceptionState)) 173 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollTop, except ionState))
174 return 0.0; 174 return 0.0;
175 return m_scrollTop; 175 return m_scrollTop;
176 } 176 }
177 177
178 DOMMatrix* CompositorProxy::transform(ExceptionState& exceptionState) const 178 DOMMatrix* CompositorProxy::transform(ExceptionState& exceptionState) const
179 { 179 {
180 if (raiseExceptionIfMutationNotAllowed(exceptionState)) 180 if (raiseExceptionIfMutationNotAllowed(exceptionState))
181 return nullptr; 181 return nullptr;
182 if (raiseExceptionIfNotMutable(static_cast<uint32_t>(WebCompositorMutablePro pertyTransform), exceptionState)) 182 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kTransform, except ionState))
183 return nullptr; 183 return nullptr;
184 return m_transform; 184 return m_transform;
185 } 185 }
186 186
187 void CompositorProxy::setOpacity(double opacity, ExceptionState& exceptionState) 187 void CompositorProxy::setOpacity(double opacity, ExceptionState& exceptionState)
188 { 188 {
189 if (raiseExceptionIfMutationNotAllowed(exceptionState)) 189 if (raiseExceptionIfMutationNotAllowed(exceptionState))
190 return; 190 return;
191 if (raiseExceptionIfNotMutable(static_cast<uint32_t>(WebCompositorMutablePro pertyOpacity), exceptionState)) 191 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kOpacity, exceptio nState))
192 return; 192 return;
193 m_opacity = std::min(1., std::max(0., opacity)); 193 m_opacity = std::min(1., std::max(0., opacity));
194 m_mutatedProperties |= static_cast<uint32_t>(WebCompositorMutablePropertyTra nsform); 194 m_mutatedProperties |= CompositorMutableProperty::kTransform;
195 } 195 }
196 196
197 void CompositorProxy::setScrollLeft(double scrollLeft, ExceptionState& exception State) 197 void CompositorProxy::setScrollLeft(double scrollLeft, ExceptionState& exception State)
198 { 198 {
199 if (raiseExceptionIfMutationNotAllowed(exceptionState)) 199 if (raiseExceptionIfMutationNotAllowed(exceptionState))
200 return; 200 return;
201 if (raiseExceptionIfNotMutable(static_cast<uint32_t>(WebCompositorMutablePro pertyScrollLeft), exceptionState)) 201 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollLeft, excep tionState))
202 return; 202 return;
203 m_scrollLeft = scrollLeft; 203 m_scrollLeft = scrollLeft;
204 m_mutatedProperties |= static_cast<uint32_t>(WebCompositorMutablePropertyScr ollLeft); 204 m_mutatedProperties |= CompositorMutableProperty::kScrollLeft;
205 } 205 }
206 206
207 void CompositorProxy::setScrollTop(double scrollTop, ExceptionState& exceptionSt ate) 207 void CompositorProxy::setScrollTop(double scrollTop, ExceptionState& exceptionSt ate)
208 { 208 {
209 if (raiseExceptionIfMutationNotAllowed(exceptionState)) 209 if (raiseExceptionIfMutationNotAllowed(exceptionState))
210 return; 210 return;
211 if (raiseExceptionIfNotMutable(static_cast<uint32_t>(WebCompositorMutablePro pertyScrollTop), exceptionState)) 211 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollTop, except ionState))
212 return; 212 return;
213 m_scrollTop = scrollTop; 213 m_scrollTop = scrollTop;
214 m_mutatedProperties |= static_cast<uint32_t>(WebCompositorMutablePropertyScr ollTop); 214 m_mutatedProperties |= CompositorMutableProperty::kScrollTop;
215 } 215 }
216 216
217 void CompositorProxy::setTransform(DOMMatrix* transform, ExceptionState& excepti onState) 217 void CompositorProxy::setTransform(DOMMatrix* transform, ExceptionState& excepti onState)
218 { 218 {
219 if (raiseExceptionIfMutationNotAllowed(exceptionState)) 219 if (raiseExceptionIfMutationNotAllowed(exceptionState))
220 return; 220 return;
221 if (raiseExceptionIfNotMutable(static_cast<uint32_t>(WebCompositorMutablePro pertyTransform), exceptionState)) 221 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kTransform, except ionState))
222 return; 222 return;
223 m_transform = transform; 223 m_transform = transform;
224 m_mutatedProperties |= static_cast<uint32_t>(WebCompositorMutablePropertyTra nsform); 224 m_mutatedProperties |= CompositorMutableProperty::kTransform;
225 } 225 }
226 226
227 bool CompositorProxy::raiseExceptionIfNotMutable(uint32_t property, ExceptionSta te& exceptionState) const 227 bool CompositorProxy::raiseExceptionIfNotMutable(uint32_t property, ExceptionSta te& exceptionState) const
228 { 228 {
229 if (m_connected && (m_compositorMutableProperties & property)) 229 if (m_connected && (m_compositorMutableProperties & property))
230 return false; 230 return false;
231 exceptionState.throwDOMException(NoModificationAllowedError, 231 exceptionState.throwDOMException(NoModificationAllowedError,
232 m_connected ? "Attempted to mutate non-mutable attribute." : "Attempted to mutate attribute on a disconnected proxy."); 232 m_connected ? "Attempted to mutate non-mutable attribute." : "Attempted to mutate attribute on a disconnected proxy.");
233 return true; 233 return true;
234 } 234 }
235 235
236 void CompositorProxy::disconnect() 236 void CompositorProxy::disconnect()
237 { 237 {
238 m_connected = false; 238 m_connected = false;
239 if (isMainThread()) 239 if (isMainThread())
240 decrementCompositorProxiedPropertiesForElement(m_elementId, m_compositor MutableProperties); 240 decrementCompositorProxiedPropertiesForElement(m_elementId, m_compositor MutableProperties);
241 else 241 else
242 Platform::current()->mainThread()->taskRunner()->postTask(BLINK_FROM_HER E, threadSafeBind(&decrementCompositorProxiedPropertiesForElement, m_elementId, m_compositorMutableProperties)); 242 Platform::current()->mainThread()->taskRunner()->postTask(BLINK_FROM_HER E, threadSafeBind(&decrementCompositorProxiedPropertiesForElement, m_elementId, m_compositorMutableProperties));
243 } 243 }
244 244
245 } // namespace blink 245 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/CompositorProxiedPropertySet.cpp ('k') | third_party/WebKit/Source/core/dom/Element.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698