Home | History | Annotate | Download | only in css
      1 /*
      2  * Copyright (C) 1999 Lars Knoll (knoll (at) kde.org)
      3  * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
      4  * Copyright (C) 2013 Google Inc. All rights reserved.
      5  *
      6  * This library is free software; you can redistribute it and/or
      7  * modify it under the terms of the GNU Library General Public
      8  * License as published by the Free Software Foundation; either
      9  * version 2 of the License, or (at your option) any later version.
     10  *
     11  * This library is distributed in the hope that it will be useful,
     12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14  * Library General Public License for more details.
     15  *
     16  * You should have received a copy of the GNU Library General Public License
     17  * along with this library; see the file COPYING.LIB.  If not, write to
     18  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     19  * Boston, MA 02110-1301, USA.
     20  *
     21  */
     22 
     23 #ifndef CSSDefaultStyleSheets_h
     24 #define CSSDefaultStyleSheets_h
     25 
     26 #include "platform/heap/Handle.h"
     27 
     28 namespace blink {
     29 
     30 class Element;
     31 class RuleSet;
     32 class StyleSheetContents;
     33 
     34 class CSSDefaultStyleSheets : public NoBaseWillBeGarbageCollected<CSSDefaultStyleSheets> {
     35 public:
     36     static CSSDefaultStyleSheets& instance();
     37 
     38     void ensureDefaultStyleSheetsForElement(Element*, bool& changedDefaultStyle);
     39 
     40     RuleSet* defaultStyle() { return m_defaultStyle.get(); }
     41     RuleSet* defaultViewportStyle() { return m_defaultViewportStyle.get(); }
     42     RuleSet* defaultQuirksStyle() { return m_defaultQuirksStyle.get(); }
     43     RuleSet* defaultPrintStyle() { return m_defaultPrintStyle.get(); }
     44     RuleSet* defaultViewSourceStyle();
     45     RuleSet* defaultTransitionStyle();
     46 
     47     // FIXME: Remove WAP support.
     48     RuleSet* defaultXHTMLMobileProfileStyle();
     49 
     50     StyleSheetContents* defaultStyleSheet() { return m_defaultStyleSheet.get(); }
     51     StyleSheetContents* viewportStyleSheet() { return m_viewportStyleSheet.get(); }
     52     StyleSheetContents* quirksStyleSheet() { return m_quirksStyleSheet.get(); }
     53     StyleSheetContents* svgStyleSheet() { return m_svgStyleSheet.get(); }
     54     StyleSheetContents* mathmlStyleSheet() { return m_mathmlStyleSheet.get(); }
     55     StyleSheetContents* mediaControlsStyleSheet() { return m_mediaControlsStyleSheet.get(); }
     56     StyleSheetContents* fullscreenStyleSheet() { return m_fullscreenStyleSheet.get(); }
     57 
     58     void trace(Visitor*);
     59 
     60 private:
     61     CSSDefaultStyleSheets();
     62 
     63     OwnPtrWillBeMember<RuleSet> m_defaultStyle;
     64     OwnPtrWillBeMember<RuleSet> m_defaultViewportStyle;
     65     OwnPtrWillBeMember<RuleSet> m_defaultQuirksStyle;
     66     OwnPtrWillBeMember<RuleSet> m_defaultPrintStyle;
     67     OwnPtrWillBeMember<RuleSet> m_defaultViewSourceStyle;
     68     OwnPtrWillBeMember<RuleSet> m_defaultXHTMLMobileProfileStyle;
     69     OwnPtrWillBeMember<RuleSet> m_defaultTransitionStyle;
     70 
     71     RefPtrWillBeMember<StyleSheetContents> m_defaultStyleSheet;
     72     RefPtrWillBeMember<StyleSheetContents> m_viewportStyleSheet;
     73     RefPtrWillBeMember<StyleSheetContents> m_quirksStyleSheet;
     74     RefPtrWillBeMember<StyleSheetContents> m_svgStyleSheet;
     75     RefPtrWillBeMember<StyleSheetContents> m_mathmlStyleSheet;
     76     RefPtrWillBeMember<StyleSheetContents> m_mediaControlsStyleSheet;
     77     RefPtrWillBeMember<StyleSheetContents> m_fullscreenStyleSheet;
     78 };
     79 
     80 } // namespace blink
     81 
     82 #endif // CSSDefaultStyleSheets_h
     83