Bug 1338446 Part 6 - Label LoadTimer in nsFontFaceLoader::StartedLoading. draft
authorTing-Yu Lin <tlin@mozilla.com>
Tue, 14 Mar 2017 21:57:34 +0800
changeset 501451 bbd422041ee512e771e88a164a8e5327c23185e7
parent 501450 95994f0907e20d7dfbdf4aa92809f27a92d07d29
child 549887 5f03faaecfdd317d73b31039dec73bf54052d4f3
push id49988
push userbmo:tlin@mozilla.com
push dateMon, 20 Mar 2017 10:12:33 +0000
bugs1338446
milestone55.0a1
Bug 1338446 Part 6 - Label LoadTimer in nsFontFaceLoader::StartedLoading. Delete #include "mozilla/Logging.h" because it has been included. Add FontFaceSet::Document() to get valid document for nsFontFaceLoader. MozReview-Commit-ID: IAXM9UgvjOE
layout/style/FontFaceSet.h
layout/style/nsFontFaceLoader.cpp
--- a/layout/style/FontFaceSet.h
+++ b/layout/style/FontFaceSet.h
@@ -157,16 +157,18 @@ public:
   void FlushUserFontSet();
 
   static nsPresContext* GetPresContextFor(gfxUserFontSet* aUserFontSet)
   {
     FontFaceSet* set = static_cast<UserFontSet*>(aUserFontSet)->mFontFaceSet;
     return set ? set->GetPresContext() : nullptr;
   }
 
+  nsIDocument* Document() const { return mDocument; }
+
   // -- Web IDL --------------------------------------------------------------
 
   IMPL_EVENT_HANDLER(loading)
   IMPL_EVENT_HANDLER(loadingdone)
   IMPL_EVENT_HANDLER(loadingerror)
   already_AddRefed<mozilla::dom::Promise> Load(JSContext* aCx,
                                                const nsAString& aFont,
                                                const nsAString& aText,
--- a/layout/style/nsFontFaceLoader.cpp
+++ b/layout/style/nsFontFaceLoader.cpp
@@ -6,18 +6,16 @@
 
 /* code for loading in @font-face defined font data */
 
 #include "mozilla/IntegerPrintfMacros.h"
 #include "mozilla/Logging.h"
 
 #include "nsFontFaceLoader.h"
 
-#include "mozilla/Logging.h"
-
 #include "nsError.h"
 #include "nsContentUtils.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/Telemetry.h"
 #include "FontFaceSet.h"
 #include "nsPresContext.h"
 #include "nsIPrincipal.h"
 #include "nsIScriptSecurityManager.h"
@@ -50,16 +48,18 @@ nsFontFaceLoader::nsFontFaceLoader(gfxUs
                                    nsIURI* aFontURI,
                                    FontFaceSet* aFontFaceSet,
                                    nsIChannel* aChannel)
   : mUserFontEntry(aUserFontEntry),
     mFontURI(aFontURI),
     mFontFaceSet(aFontFaceSet),
     mChannel(aChannel)
 {
+  MOZ_ASSERT(mFontFaceSet,
+             "We should get a valid FontFaceSet from the caller!");
   mStartTime = TimeStamp::Now();
 }
 
 nsFontFaceLoader::~nsFontFaceLoader()
 {
   if (mUserFontEntry) {
     mUserFontEntry->mLoader = nullptr;
   }
@@ -82,20 +82,23 @@ nsFontFaceLoader::StartedLoading(nsIStre
     loadTimeout = GetFallbackDelay();
   } else {
     loadTimeout = GetShortFallbackDelay();
   }
 
   if (loadTimeout > 0) {
     mLoadTimer = do_CreateInstance("@mozilla.org/timer;1");
     if (mLoadTimer) {
-      mLoadTimer->InitWithFuncCallback(LoadTimerCallback,
-                                       static_cast<void*>(this),
-                                       loadTimeout,
-                                       nsITimer::TYPE_ONE_SHOT);
+      mLoadTimer->SetTarget(
+        mFontFaceSet->Document()->EventTargetFor(TaskCategory::Other));
+      mLoadTimer->InitWithNamedFuncCallback(LoadTimerCallback,
+                                            static_cast<void*>(this),
+                                            loadTimeout,
+                                            nsITimer::TYPE_ONE_SHOT,
+                                            "LoadTimerCallback");
     }
   } else {
     mUserFontEntry->mFontDataLoadingState = gfxUserFontEntry::LOADING_SLOWLY;
   }
   mStreamLoader = aStreamLoader;
 }
 
 /* static */ void