| OLD | NEW |
| 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" |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 { | 171 { |
| 172 return m_compositorMutableProperties & compositorMutablePropertyForName(attr
ibuteName); | 172 return m_compositorMutableProperties & compositorMutablePropertyForName(attr
ibuteName); |
| 173 } | 173 } |
| 174 | 174 |
| 175 double CompositorProxy::opacity(ExceptionState& exceptionState) const | 175 double CompositorProxy::opacity(ExceptionState& exceptionState) const |
| 176 { | 176 { |
| 177 if (raiseExceptionIfMutationNotAllowed(exceptionState)) | 177 if (raiseExceptionIfMutationNotAllowed(exceptionState)) |
| 178 return 0.0; | 178 return 0.0; |
| 179 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kOpacity, exceptio
nState)) | 179 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kOpacity, exceptio
nState)) |
| 180 return 0.0; | 180 return 0.0; |
| 181 return m_opacity; | 181 return m_state->opacity(); |
| 182 } | 182 } |
| 183 | 183 |
| 184 double CompositorProxy::scrollLeft(ExceptionState& exceptionState) const | 184 double CompositorProxy::scrollLeft(ExceptionState& exceptionState) const |
| 185 { | 185 { |
| 186 if (raiseExceptionIfMutationNotAllowed(exceptionState)) | 186 if (raiseExceptionIfMutationNotAllowed(exceptionState)) |
| 187 return 0.0; | 187 return 0.0; |
| 188 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollLeft, excep
tionState)) | 188 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollLeft, excep
tionState)) |
| 189 return 0.0; | 189 return 0.0; |
| 190 return m_scrollLeft; | 190 return m_state->scrollLeft(); |
| 191 } | 191 } |
| 192 | 192 |
| 193 double CompositorProxy::scrollTop(ExceptionState& exceptionState) const | 193 double CompositorProxy::scrollTop(ExceptionState& exceptionState) const |
| 194 { | 194 { |
| 195 if (raiseExceptionIfMutationNotAllowed(exceptionState)) | 195 if (raiseExceptionIfMutationNotAllowed(exceptionState)) |
| 196 return 0.0; | 196 return 0.0; |
| 197 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollTop, except
ionState)) | 197 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollTop, except
ionState)) |
| 198 return 0.0; | 198 return 0.0; |
| 199 return m_scrollTop; | 199 return m_state->scrollTop(); |
| 200 } | 200 } |
| 201 | 201 |
| 202 DOMMatrix* CompositorProxy::transform(ExceptionState& exceptionState) const | 202 DOMMatrix* CompositorProxy::transform(ExceptionState& exceptionState) const |
| 203 { | 203 { |
| 204 if (raiseExceptionIfMutationNotAllowed(exceptionState)) | 204 if (raiseExceptionIfMutationNotAllowed(exceptionState)) |
| 205 return nullptr; | 205 return nullptr; |
| 206 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kTransform, except
ionState)) | 206 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kTransform, except
ionState)) |
| 207 return nullptr; | 207 return nullptr; |
| 208 return m_transform; | 208 return DOMMatrix::create(m_state->transform()); |
| 209 } | 209 } |
| 210 | 210 |
| 211 void CompositorProxy::setOpacity(double opacity, ExceptionState& exceptionState) | 211 void CompositorProxy::setOpacity(double opacity, ExceptionState& exceptionState) |
| 212 { | 212 { |
| 213 if (raiseExceptionIfMutationNotAllowed(exceptionState)) | 213 if (raiseExceptionIfMutationNotAllowed(exceptionState)) |
| 214 return; | 214 return; |
| 215 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kOpacity, exceptio
nState)) | 215 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kOpacity, exceptio
nState)) |
| 216 return; | 216 return; |
| 217 m_opacity = std::min(1., std::max(0., opacity)); | 217 m_state->setOpacity(std::min(1., std::max(0., opacity))); |
| 218 m_mutatedProperties |= CompositorMutableProperty::kTransform; | |
| 219 } | 218 } |
| 220 | 219 |
| 221 void CompositorProxy::setScrollLeft(double scrollLeft, ExceptionState& exception
State) | 220 void CompositorProxy::setScrollLeft(double scrollLeft, ExceptionState& exception
State) |
| 222 { | 221 { |
| 223 if (raiseExceptionIfMutationNotAllowed(exceptionState)) | 222 if (raiseExceptionIfMutationNotAllowed(exceptionState)) |
| 224 return; | 223 return; |
| 225 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollLeft, excep
tionState)) | 224 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollLeft, excep
tionState)) |
| 226 return; | 225 return; |
| 227 m_scrollLeft = scrollLeft; | 226 m_state->setScrollLeft(scrollLeft); |
| 228 m_mutatedProperties |= CompositorMutableProperty::kScrollLeft; | |
| 229 } | 227 } |
| 230 | 228 |
| 231 void CompositorProxy::setScrollTop(double scrollTop, ExceptionState& exceptionSt
ate) | 229 void CompositorProxy::setScrollTop(double scrollTop, ExceptionState& exceptionSt
ate) |
| 232 { | 230 { |
| 233 if (raiseExceptionIfMutationNotAllowed(exceptionState)) | 231 if (raiseExceptionIfMutationNotAllowed(exceptionState)) |
| 234 return; | 232 return; |
| 235 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollTop, except
ionState)) | 233 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kScrollTop, except
ionState)) |
| 236 return; | 234 return; |
| 237 m_scrollTop = scrollTop; | 235 m_state->setScrollTop(scrollTop); |
| 238 m_mutatedProperties |= CompositorMutableProperty::kScrollTop; | |
| 239 } | 236 } |
| 240 | 237 |
| 241 void CompositorProxy::setTransform(DOMMatrix* transform, ExceptionState& excepti
onState) | 238 void CompositorProxy::setTransform(DOMMatrix* transform, ExceptionState& excepti
onState) |
| 242 { | 239 { |
| 243 if (raiseExceptionIfMutationNotAllowed(exceptionState)) | 240 if (raiseExceptionIfMutationNotAllowed(exceptionState)) |
| 244 return; | 241 return; |
| 245 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kTransform, except
ionState)) | 242 if (raiseExceptionIfNotMutable(CompositorMutableProperty::kTransform, except
ionState)) |
| 246 return; | 243 return; |
| 247 m_transform = transform; | 244 m_state->setTransform(TransformationMatrix::toSkMatrix44(transform->matrix()
)); |
| 248 m_mutatedProperties |= CompositorMutableProperty::kTransform; | 245 } |
| 246 |
| 247 void CompositorProxy::takeCompositorMutableState(std::unique_ptr<CompositorMutab
leState> state) |
| 248 { |
| 249 m_state = std::move(state); |
| 249 } | 250 } |
| 250 | 251 |
| 251 bool CompositorProxy::raiseExceptionIfNotMutable(uint32_t property, ExceptionSta
te& exceptionState) const | 252 bool CompositorProxy::raiseExceptionIfNotMutable(uint32_t property, ExceptionSta
te& exceptionState) const |
| 252 { | 253 { |
| 253 if (m_connected && (m_compositorMutableProperties & property)) | 254 if (!m_connected) |
| 254 return false; | 255 exceptionState.throwDOMException(NoModificationAllowedError, "Attempted
to mutate attribute on a disconnected proxy."); |
| 255 exceptionState.throwDOMException(NoModificationAllowedError, | 256 else if (!(m_compositorMutableProperties & property)) |
| 256 m_connected ? "Attempted to mutate non-mutable attribute." : "Attempted
to mutate attribute on a disconnected proxy."); | 257 exceptionState.throwDOMException(NoModificationAllowedError, "Attempted
to mutate non-mutable attribute."); |
| 257 return true; | 258 else if (!m_state) |
| 259 exceptionState.throwDOMException(NoModificationAllowedError, "Attempted
to mutate attribute on an uninitialized proxy."); |
| 260 |
| 261 return exceptionState.hadException(); |
| 258 } | 262 } |
| 259 | 263 |
| 260 void CompositorProxy::disconnect() | 264 void CompositorProxy::disconnect() |
| 261 { | 265 { |
| 262 disconnectInternal(); | 266 disconnectInternal(); |
| 263 if (m_client) | 267 if (m_client) |
| 264 m_client->unregisterCompositorProxy(this); | 268 m_client->unregisterCompositorProxy(this); |
| 265 } | 269 } |
| 266 | 270 |
| 267 void CompositorProxy::disconnectInternal() | 271 void CompositorProxy::disconnectInternal() |
| 268 { | 272 { |
| 269 if (!m_connected) | 273 if (!m_connected) |
| 270 return; | 274 return; |
| 271 m_connected = false; | 275 m_connected = false; |
| 272 if (isMainThread()) { | 276 if (isMainThread()) { |
| 273 decrementCompositorProxiedPropertiesForElement(m_elementId, m_compositor
MutableProperties); | 277 decrementCompositorProxiedPropertiesForElement(m_elementId, m_compositor
MutableProperties); |
| 274 } else { | 278 } else { |
| 275 Platform::current()->mainThread()->getWebTaskRunner()->postTask(BLINK_FR
OM_HERE, threadSafeBind(&decrementCompositorProxiedPropertiesForElement, m_eleme
ntId, m_compositorMutableProperties)); | 279 Platform::current()->mainThread()->getWebTaskRunner()->postTask(BLINK_FR
OM_HERE, threadSafeBind(&decrementCompositorProxiedPropertiesForElement, m_eleme
ntId, m_compositorMutableProperties)); |
| 276 } | 280 } |
| 277 } | 281 } |
| 278 | 282 |
| 279 } // namespace blink | 283 } // namespace blink |
| OLD | NEW |