Bug 1381851 - Add mIsChrome to URLExtraData for querying on servo side. draft
authorTing-Yu Lin <tlin@mozilla.com>
Mon, 31 Jul 2017 17:57:56 +0800
changeset 620269 b38287dadd992cdf52c4d7bb10580d814d7937cf
parent 620268 40709a4338d41f0d75f5e4726df51d5aee27f94d
child 620270 126d7f212bb306b552848e68d379b4c9fe499166
push id71974
push userbmo:tlin@mozilla.com
push dateThu, 03 Aug 2017 08:39:55 +0000
bugs1381851
milestone57.0a1
Bug 1381851 - Add mIsChrome to URLExtraData for querying on servo side. MozReview-Commit-ID: HTCmAcKNefG
layout/style/URLExtraData.h
--- a/layout/style/URLExtraData.h
+++ b/layout/style/URLExtraData.h
@@ -4,16 +4,17 @@
  * 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/. */
 
 /* thread-safe container of information for resolving url values */
 
 #ifndef mozilla_URLExtraData_h
 #define mozilla_URLExtraData_h
 
+#include "mozilla/dom/URL.h"
 #include "mozilla/Move.h"
 #include "mozilla/StaticPtr.h"
 
 #include "nsCOMPtr.h"
 #include "nsIPrincipal.h"
 #include "nsIURI.h"
 
 namespace mozilla {
@@ -21,16 +22,19 @@ namespace mozilla {
 struct URLExtraData
 {
   URLExtraData(already_AddRefed<nsIURI> aBaseURI,
                already_AddRefed<nsIURI> aReferrer,
                already_AddRefed<nsIPrincipal> aPrincipal)
     : mBaseURI(Move(aBaseURI))
     , mReferrer(Move(aReferrer))
     , mPrincipal(Move(aPrincipal))
+      // When we hold the URI data of a style sheet, mReferrer is always
+      // equal to the sheet URI.
+    , mIsChrome(mReferrer ? dom::IsChromeURI(mReferrer) : false)
   {
     MOZ_ASSERT(mBaseURI);
   }
 
   URLExtraData(nsIURI* aBaseURI, nsIURI* aReferrer, nsIPrincipal* aPrincipal)
     : URLExtraData(do_AddRef(aBaseURI),
                    do_AddRef(aReferrer),
                    do_AddRef(aPrincipal)) {}
@@ -50,14 +54,17 @@ struct URLExtraData
 
 private:
   ~URLExtraData();
 
   nsCOMPtr<nsIURI> mBaseURI;
   nsCOMPtr<nsIURI> mReferrer;
   nsCOMPtr<nsIPrincipal> mPrincipal;
 
+  // True if mReferrer is a chrome:// URI.
+  const bool mIsChrome;
+
   static StaticRefPtr<URLExtraData> sDummy;
 };
 
 } // namespace mozilla
 
 #endif // mozilla_URLExtraData_h