Backed out 2 changesets (bug 903746) for causing non-unified build bustages on nsIPri...
[gecko.git] / layout / style / PreloadedStyleSheet.h
blobe201d76dafeae8efba00447806e2651e965e4994
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 /* a CSS style sheet returned from nsIStyleSheetService.preloadSheet */
9 #ifndef mozilla_PreloadedStyleSheet_h
10 #define mozilla_PreloadedStyleSheet_h
12 #include "mozilla/css/SheetParsingMode.h"
13 #include "mozilla/NotNull.h"
14 #include "mozilla/Result.h"
15 #include "nsCOMPtr.h"
16 #include "nsCycleCollectionParticipant.h"
17 #include "nsICSSLoaderObserver.h"
18 #include "nsIPreloadedStyleSheet.h"
20 class nsIURI;
22 namespace mozilla {
23 namespace dom {
24 class Promise;
27 class StyleSheet;
29 class PreloadedStyleSheet : public nsIPreloadedStyleSheet {
30 public:
31 PreloadedStyleSheet(nsIURI*, css::SheetParsingMode);
33 NS_DECL_CYCLE_COLLECTING_ISUPPORTS
34 NS_DECL_CYCLE_COLLECTION_CLASS(PreloadedStyleSheet)
36 // *aResult is not addrefed, since the PreloadedStyleSheet holds a strong
37 // reference to the sheet.
38 nsresult GetSheet(StyleSheet** aResult);
40 nsresult Preload();
41 nsresult PreloadAsync(NotNull<dom::Promise*> aPromise);
43 protected:
44 virtual ~PreloadedStyleSheet() = default;
46 private:
47 class StylesheetPreloadObserver final : public nsICSSLoaderObserver {
48 public:
49 NS_DECL_ISUPPORTS
51 explicit StylesheetPreloadObserver(NotNull<dom::Promise*> aPromise,
52 PreloadedStyleSheet* aSheet)
53 : mPromise(aPromise), mPreloadedSheet(aSheet) {}
55 NS_IMETHOD StyleSheetLoaded(StyleSheet* aSheet, bool aWasDeferred,
56 nsresult aStatus) override;
58 protected:
59 virtual ~StylesheetPreloadObserver() = default;
61 private:
62 RefPtr<dom::Promise> mPromise;
63 RefPtr<PreloadedStyleSheet> mPreloadedSheet;
66 RefPtr<StyleSheet> mSheet;
68 bool mLoaded;
69 nsCOMPtr<nsIURI> mURI;
70 css::SheetParsingMode mParsingMode;
73 } // namespace mozilla
75 #endif // mozilla_PreloadedStyleSheet_h