1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 * interface representing a collection of style data attached to a
8 * document, which may be or be combined into a style rule processor
11 #ifndef nsIStyleSheet_h___
12 #define nsIStyleSheet_h___
14 #include "mozilla/MemoryReporting.h"
16 #include "nsISupports.h"
22 // IID for the nsIStyleSheet interface
23 // 3eb34a60-04bd-41d9-9f60-882694e61c38
24 #define NS_ISTYLE_SHEET_IID \
25 { 0x3eb34a60, 0x04bd, 0x41d9, \
26 { 0x9f, 0x60, 0x88, 0x26, 0x94, 0xe6, 0x1c, 0x38 } }
29 * A style sheet is a thing associated with a document that has style
30 * rules. Those style rules can be reached in one of two ways, depending
31 * on which level of the nsStyleSet it is in:
32 * 1) It can be |QueryInterface|d to nsIStyleRuleProcessor
33 * 2) It can be |QueryInterface|d to CSSStyleSheet, with which the
34 * |nsStyleSet| uses an |nsCSSRuleProcessor| to access the rules.
36 class nsIStyleSheet
: public nsISupports
{
38 NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISTYLE_SHEET_IID
)
40 // basic style sheet data
41 virtual nsIURI
* GetSheetURI() const = 0;
42 virtual nsIURI
* GetBaseURI() const = 0;
43 virtual void GetTitle(nsString
& aTitle
) const = 0;
44 virtual void GetType(nsString
& aType
) const = 0;
45 virtual bool HasRules() const = 0;
48 * Whether the sheet is applicable. A sheet that is not applicable
49 * should never be inserted into a style set. A sheet may not be
50 * applicable for a variety of reasons including being disabled and
54 virtual bool IsApplicable() const = 0;
57 * Set the stylesheet to be enabled. This may or may not make it
58 * applicable. Note that this WILL inform the sheet's document of
59 * its new applicable state if the state changes but WILL NOT call
60 * BeginUpdate() or EndUpdate() on the document -- calling those is
61 * the caller's responsibility. This allows use of SetEnabled when
62 * batched updates are desired. If you want updates handled for
63 * you, see nsIDOMStyleSheet::SetDisabled().
65 virtual void SetEnabled(bool aEnabled
) = 0;
68 * Whether the sheet is complete.
70 virtual bool IsComplete() const = 0;
71 virtual void SetComplete() = 0;
73 // style sheet owner info
74 virtual nsIStyleSheet
* GetParentSheet() const = 0; // may be null
75 virtual nsIDocument
* GetOwningDocument() const = 0; // may be null
76 virtual void SetOwningDocument(nsIDocument
* aDocument
) = 0;
79 virtual void List(FILE* out
= stdout
, int32_t aIndent
= 0) const = 0;
82 virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf
) const = 0;
85 NS_DEFINE_STATIC_IID_ACCESSOR(nsIStyleSheet
, NS_ISTYLE_SHEET_IID
)
87 #endif /* nsIStyleSheet_h___ */