| // Copyright 2015 Google Inc. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #ifndef COBALT_DOM_DOM_ANIMATABLE_H_ |
| #define COBALT_DOM_DOM_ANIMATABLE_H_ |
| |
| #include "base/compiler_specific.h" |
| #include "cobalt/dom/document.h" |
| #include "cobalt/dom/event.h" |
| #include "cobalt/dom/html_element.h" |
| #include "cobalt/dom/pseudo_element.h" |
| #include "cobalt/web_animations/animatable.h" |
| |
| namespace cobalt { |
| namespace dom { |
| |
| // In order to keep the Web Animations module not dependent on DOM, Animatable |
| // is left abstract, and is subclassed within DOM here in order to connect |
| // it to DOM. Note that this informally implements the specification statement |
| // that Element and PseudoElement should "implement" Animatable, as indicated |
| // in the IDL Index: |
| // https://www.w3.org/TR/2015/WD-web-animations-1-20150707/#idl-index |
| class DOMAnimatable : public web_animations::Animatable { |
| public: |
| explicit DOMAnimatable(Element* element) |
| : element_(element), pseudo_element_(NULL) {} |
| |
| explicit DOMAnimatable(PseudoElement* pseudo_element) |
| : element_(NULL), pseudo_element_(pseudo_element) {} |
| |
| // Returns the default timeline associated with the document that is |
| // associated with the underlying Element or PseudoElement. |
| scoped_refptr<web_animations::AnimationTimeline> GetDefaultTimeline() |
| const OVERRIDE; |
| |
| // Registers an animation with this Animatable (which may internally be |
| // either an HTMLElement or a PseudoElement). |
| void Register(web_animations::Animation* animation) OVERRIDE; |
| void Deregister(web_animations::Animation* animation) OVERRIDE; |
| |
| // Returns the element that acts as an EventTarget for this animatable. |
| // In the case of elements, it will be the element itself. In the case of |
| // pseudo elements, it will be the pseudo element's parent element. |
| Element* GetEventTarget(); |
| |
| private: |
| Element* element_; |
| PseudoElement* pseudo_element_; |
| }; |
| |
| } // namespace dom |
| } // namespace cobalt |
| |
| #endif // COBALT_DOM_DOM_ANIMATABLE_H_ |