diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /layout/base/nsStyleSheetService.h | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'layout/base/nsStyleSheetService.h')
-rw-r--r-- | layout/base/nsStyleSheetService.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/layout/base/nsStyleSheetService.h b/layout/base/nsStyleSheetService.h new file mode 100644 index 000000000..982e1a05a --- /dev/null +++ b/layout/base/nsStyleSheetService.h @@ -0,0 +1,81 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* implementation of interface for managing user and user-agent style sheets */ + +#ifndef nsStyleSheetService_h_ +#define nsStyleSheetService_h_ + +#include "nsCOMArray.h" +#include "nsCOMPtr.h" +#include "nsIMemoryReporter.h" +#include "nsIStyleSheetService.h" +#include "mozilla/Attributes.h" +#include "mozilla/MemoryReporting.h" +#include "mozilla/StyleSheet.h" + +class nsICategoryManager; +class nsIMemoryReporter; +class nsISimpleEnumerator; + +#define NS_STYLESHEETSERVICE_CID \ +{ 0x3b55e72e, 0xab7e, 0x431b, \ + { 0x89, 0xc0, 0x3b, 0x06, 0xa8, 0xb1, 0x40, 0x16 } } + +#define NS_STYLESHEETSERVICE_CONTRACTID \ + "@mozilla.org/content/style-sheet-service;1" + +class nsStyleSheetService final + : public nsIStyleSheetService + , public nsIMemoryReporter +{ + public: + nsStyleSheetService(); + + NS_DECL_ISUPPORTS + NS_DECL_NSISTYLESHEETSERVICE + NS_DECL_NSIMEMORYREPORTER + + nsresult Init(); + + nsTArray<RefPtr<mozilla::StyleSheet>>* AgentStyleSheets() + { + return &mSheets[AGENT_SHEET]; + } + nsTArray<RefPtr<mozilla::StyleSheet>>* UserStyleSheets() + { + return &mSheets[USER_SHEET]; + } + nsTArray<RefPtr<mozilla::StyleSheet>>* AuthorStyleSheets() + { + return &mSheets[AUTHOR_SHEET]; + } + + size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const; + + static nsStyleSheetService *GetInstance(); + static nsStyleSheetService *gInstance; + + private: + ~nsStyleSheetService(); + + void RegisterFromEnumerator(nsICategoryManager *aManager, + const char *aCategory, + nsISimpleEnumerator *aEnumerator, + uint32_t aSheetType); + + int32_t FindSheetByURI(const nsTArray<RefPtr<mozilla::StyleSheet>>& aSheets, + nsIURI* aSheetURI); + + // Like LoadAndRegisterSheet, but doesn't notify. If successful, the + // new sheet will be the last sheet in mSheets[aSheetType]. + nsresult LoadAndRegisterSheetInternal(nsIURI *aSheetURI, + uint32_t aSheetType); + + nsTArray<RefPtr<mozilla::StyleSheet>> mSheets[3]; +}; + +#endif |