Bumping gaia.json for 2 gaia revision(s) a=gaia-bump
[gecko.git] / layout / style / nsIStyleSheet.h
blob23ccb58fd59599265a5f6817d4015326f054c56a
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/. */
6 /*
7 * interface representing a collection of style data attached to a
8 * document, which may be or be combined into a style rule processor
9 */
11 #ifndef nsIStyleSheet_h___
12 #define nsIStyleSheet_h___
14 #include "mozilla/MemoryReporting.h"
15 #include <stdio.h>
16 #include "nsISupports.h"
18 class nsString;
19 class nsIURI;
20 class nsIDocument;
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 } }
28 /**
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 {
37 public:
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;
47 /**
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
51 * being incomplete.
54 virtual bool IsApplicable() const = 0;
56 /**
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;
67 /**
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;
78 #ifdef DEBUG
79 virtual void List(FILE* out = stdout, int32_t aIndent = 0) const = 0;
80 #endif
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___ */