From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- layout/style/nsFontFaceLoader.h | 74 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 layout/style/nsFontFaceLoader.h (limited to 'layout/style/nsFontFaceLoader.h') diff --git a/layout/style/nsFontFaceLoader.h b/layout/style/nsFontFaceLoader.h new file mode 100644 index 0000000000..42a1052167 --- /dev/null +++ b/layout/style/nsFontFaceLoader.h @@ -0,0 +1,74 @@ +/* -*- 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/. */ + +/* code for loading in @font-face defined font data */ + +#ifndef nsFontFaceLoader_h_ +#define nsFontFaceLoader_h_ + +#include "mozilla/Attributes.h" +#include "mozilla/TimeStamp.h" +#include "mozilla/dom/FontFaceSetImpl.h" +#include "nsCOMPtr.h" +#include "nsIFontLoadCompleteCallback.h" +#include "nsIStreamLoader.h" +#include "nsIChannel.h" +#include "nsIRequestObserver.h" +#include "gfxUserFontSet.h" +#include "nsHashKeys.h" +#include "nsTHashtable.h" + +class nsIPrincipal; +class nsITimer; + +class nsFontFaceLoader final : public nsIStreamLoaderObserver, + public nsIRequestObserver, + public nsIFontLoadCompleteCallback { + public: + nsFontFaceLoader(gfxUserFontEntry* aUserFontEntry, uint32_t aSrcIndex, + mozilla::dom::FontFaceSetImpl* aFontFaceSet, + nsIChannel* aChannel); + + NS_DECL_ISUPPORTS + NS_DECL_NSISTREAMLOADEROBSERVER + NS_DECL_NSIREQUESTOBSERVER + + // cancel the load and remove its reference to mFontFaceSet + void Cancel(); + + void DropChannel() { mChannel = nullptr; } + + void StartedLoading(nsIStreamLoader* aStreamLoader); + + static void LoadTimerCallback(nsITimer* aTimer, void* aClosure); + + gfxUserFontEntry* GetUserFontEntry() const { return mUserFontEntry; } + + // Called by the gfxUserFontEntry once it has finished the platform font + // loading. + NS_IMETHODIMP FontLoadComplete() final; + + protected: + virtual ~nsFontFaceLoader(); + + // helper method for determining the font-display value + mozilla::StyleFontDisplay GetFontDisplay(); + + private: + RefPtr mUserFontEntry; + nsCOMPtr mFontURI; + // Cleared in FontFaceSet::~FontFaceSet, and on cancelation and such too. + mozilla::dom::FontFaceSetImpl* MOZ_NON_OWNING_REF mFontFaceSet; + nsCOMPtr mChannel; + nsCOMPtr mLoadTimer; + mozilla::TimeStamp mStartTime; + nsIStreamLoader* mStreamLoader; + uint32_t mSrcIndex; + bool mInStreamComplete = false; + bool mInLoadTimerCallback = false; +}; + +#endif /* !defined(nsFontFaceLoader_h_) */ -- cgit v1.2.3