1 /* 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26 #ifndef WebKitCSSKeyframesRule_h 27 #define WebKitCSSKeyframesRule_h 28 29 #include "CSSRule.h" 30 #include <wtf/Forward.h> 31 #include <wtf/RefPtr.h> 32 #include <wtf/text/AtomicString.h> 33 34 namespace WebCore { 35 36 class CSSRuleList; 37 class WebKitCSSKeyframeRule; 38 39 typedef int ExceptionCode; 40 41 class WebKitCSSKeyframesRule : public CSSRule { 42 public: create()43 static PassRefPtr<WebKitCSSKeyframesRule> create() 44 { 45 return adoptRef(new WebKitCSSKeyframesRule(0)); 46 } create(CSSStyleSheet * parent)47 static PassRefPtr<WebKitCSSKeyframesRule> create(CSSStyleSheet* parent) 48 { 49 return adoptRef(new WebKitCSSKeyframesRule(parent)); 50 } 51 52 ~WebKitCSSKeyframesRule(); 53 isKeyframesRule()54 virtual bool isKeyframesRule() { return true; } 55 56 // Inherited from CSSRule type()57 virtual unsigned short type() const { return WEBKIT_KEYFRAMES_RULE; } 58 59 String name() const; 60 void setName(const String&); 61 62 // This version of setName does not call styleSheetChanged to avoid 63 // unnecessary work. It assumes callers will either make that call 64 // themselves, or know that it will get called later. setNameInternal(const String & name)65 void setNameInternal(const String& name) 66 { 67 m_name = AtomicString(name); 68 } 69 cssRules()70 CSSRuleList* cssRules() { return m_lstCSSRules.get(); } 71 72 void insertRule(const String& rule); 73 void deleteRule(const String& key); 74 WebKitCSSKeyframeRule* findRule(const String& key); 75 76 virtual String cssText() const; 77 78 /* not part of the DOM */ 79 unsigned length() const; 80 WebKitCSSKeyframeRule* item(unsigned index); 81 const WebKitCSSKeyframeRule* item(unsigned index) const; 82 void append(WebKitCSSKeyframeRule* rule); 83 84 private: 85 WebKitCSSKeyframesRule(CSSStyleSheet* parent); 86 87 int findRuleIndex(const String& key) const; 88 89 RefPtr<CSSRuleList> m_lstCSSRules; 90 AtomicString m_name; 91 }; 92 93 } // namespace WebCore 94 95 #endif // WebKitCSSKeyframesRule_h 96