mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-24 19:37:15 +00:00
Bug 1800641 - Part 1: Move ScriptFetchOptions into its own file. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D197839
This commit is contained in:
parent
1fee8a8748
commit
bc041aff7a
@ -9,6 +9,7 @@
|
||||
|
||||
#include "js/ColumnNumber.h" // JS::ColumnNumberOneOrigin
|
||||
#include "js/loader/LoadedScript.h"
|
||||
#include "js/loader/ScriptFetchOptions.h"
|
||||
#include "mozilla/BasicEvents.h"
|
||||
#include "mozilla/BinarySearch.h"
|
||||
#include "mozilla/CycleCollectedJSRuntime.h"
|
||||
|
@ -8,6 +8,7 @@
|
||||
#define mozilla_loader_WorkerModuleLoader_h
|
||||
|
||||
#include "js/loader/ModuleLoaderBase.h"
|
||||
#include "js/loader/ScriptFetchOptions.h"
|
||||
#include "mozilla/dom/SerializedStackHolder.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "nsCycleCollectionParticipant.h"
|
||||
#include "jsapi.h"
|
||||
#include "ScriptLoadRequest.h"
|
||||
#include "ScriptFetchOptions.h"
|
||||
|
||||
class nsIURI;
|
||||
|
||||
|
103
js/loader/ScriptFetchOptions.h
Normal file
103
js/loader/ScriptFetchOptions.h
Normal file
@ -0,0 +1,103 @@
|
||||
/* -*- 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/. */
|
||||
|
||||
#ifndef js_loader_ScriptFecthOptions_h
|
||||
#define js_loader_ScriptFecthOptions_h
|
||||
|
||||
#include "mozilla/CORSMode.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
#include "mozilla/dom/ReferrerPolicyBinding.h"
|
||||
#include "mozilla/dom/RequestBinding.h" // RequestPriority
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIPrincipal.h"
|
||||
|
||||
namespace JS::loader {
|
||||
|
||||
// https://fetch.spec.whatwg.org/#concept-request-parser-metadata
|
||||
// All scripts are either "parser-inserted" or "not-parser-inserted", so
|
||||
// the empty string is not necessary.
|
||||
enum class ParserMetadata {
|
||||
NotParserInserted,
|
||||
ParserInserted,
|
||||
};
|
||||
|
||||
/*
|
||||
* ScriptFetchOptions loosely corresponds to HTML's "script fetch options",
|
||||
* https://html.spec.whatwg.org/multipage/webappapis.html#script-fetch-options
|
||||
* with the exception of the following properties:
|
||||
* integrity metadata
|
||||
* The integrity metadata used for the initial fetch. This is
|
||||
* implemented in ScriptLoadRequest, as it changes for every
|
||||
* ScriptLoadRequest.
|
||||
*
|
||||
* referrerPolicy
|
||||
* For a module script, its referrerPolicy will be updated if there is a
|
||||
* HTTP Response 'REFERRER-POLICY' header, given this value may be different
|
||||
* for every ScriptLoadRequest, so we store it directly in
|
||||
* ScriptLoadRequest.
|
||||
*
|
||||
* In the case of classic scripts without dynamic import, this object is
|
||||
* used once. For modules, this object is propogated throughout the module
|
||||
* tree. If there is a dynamically imported module in any type of script,
|
||||
* the ScriptFetchOptions object will be propogated from its importer.
|
||||
*/
|
||||
|
||||
class ScriptFetchOptions {
|
||||
~ScriptFetchOptions();
|
||||
|
||||
public:
|
||||
NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(ScriptFetchOptions)
|
||||
NS_DECL_CYCLE_COLLECTION_NATIVE_CLASS(ScriptFetchOptions)
|
||||
|
||||
ScriptFetchOptions(mozilla::CORSMode aCORSMode, const nsAString& aNonce,
|
||||
mozilla::dom::RequestPriority aFetchPriority,
|
||||
const ParserMetadata aParserMetadata,
|
||||
nsIPrincipal* aTriggeringPrincipal,
|
||||
mozilla::dom::Element* aElement = nullptr);
|
||||
|
||||
/*
|
||||
* The credentials mode used for the initial fetch (for module scripts)
|
||||
* and for fetching any imported modules (for both module scripts and
|
||||
* classic scripts)
|
||||
*/
|
||||
const mozilla::CORSMode mCORSMode;
|
||||
|
||||
/*
|
||||
* The cryptographic nonce metadata used for the initial fetch and for
|
||||
* fetching any imported modules.
|
||||
*/
|
||||
const nsString mNonce;
|
||||
|
||||
/*
|
||||
* <https://html.spec.whatwg.org/multipage/webappapis.html#script-fetch-options>.
|
||||
*/
|
||||
const mozilla::dom::RequestPriority mFetchPriority;
|
||||
|
||||
/*
|
||||
* The parser metadata used for the initial fetch and for fetching any
|
||||
* imported modules
|
||||
*/
|
||||
const ParserMetadata mParserMetadata;
|
||||
|
||||
/*
|
||||
* Used to determine CSP and if we are on the About page.
|
||||
* Only used in DOM content scripts.
|
||||
* TODO: Move to ScriptLoadContext
|
||||
*/
|
||||
nsCOMPtr<nsIPrincipal> mTriggeringPrincipal;
|
||||
/*
|
||||
* Represents fields populated by DOM elements (nonce, parser metadata)
|
||||
* Leave this field as a nullptr for any fetch that requires the
|
||||
* default classic script options.
|
||||
* (https://html.spec.whatwg.org/multipage/webappapis.html#default-classic-script-fetch-options)
|
||||
* TODO: extract necessary fields rather than passing this object
|
||||
*/
|
||||
nsCOMPtr<mozilla::dom::Element> mElement;
|
||||
};
|
||||
|
||||
} // namespace JS::loader
|
||||
|
||||
#endif // js_loader_ScriptFetchOptions_h
|
@ -28,6 +28,7 @@
|
||||
#include "nsCycleCollectionParticipant.h"
|
||||
#include "nsIGlobalObject.h"
|
||||
#include "ScriptKind.h"
|
||||
#include "ScriptFetchOptions.h"
|
||||
#include "nsIScriptElement.h"
|
||||
|
||||
class nsICacheInfoChannel;
|
||||
@ -54,88 +55,6 @@ class LoadContextBase;
|
||||
class ModuleLoadRequest;
|
||||
class ScriptLoadRequestList;
|
||||
|
||||
// https://fetch.spec.whatwg.org/#concept-request-parser-metadata
|
||||
// All scripts are either "parser-inserted" or "not-parser-inserted", so
|
||||
// the empty string is not necessary.
|
||||
enum class ParserMetadata {
|
||||
NotParserInserted,
|
||||
ParserInserted,
|
||||
};
|
||||
|
||||
/*
|
||||
* ScriptFetchOptions loosely corresponds to HTML's "script fetch options",
|
||||
* https://html.spec.whatwg.org/multipage/webappapis.html#script-fetch-options
|
||||
* with the exception of the following properties:
|
||||
* integrity metadata
|
||||
* The integrity metadata used for the initial fetch. This is
|
||||
* implemented in ScriptLoadRequest, as it changes for every
|
||||
* ScriptLoadRequest.
|
||||
*
|
||||
* referrerPolicy
|
||||
* For a module script, its referrerPolicy will be updated if there is a
|
||||
* HTTP Response 'REFERRER-POLICY' header, given this value may be different
|
||||
* for every ScriptLoadRequest, so we store it directly in
|
||||
* ScriptLoadRequest.
|
||||
*
|
||||
* In the case of classic scripts without dynamic import, this object is
|
||||
* used once. For modules, this object is propogated throughout the module
|
||||
* tree. If there is a dynamically imported module in any type of script,
|
||||
* the ScriptFetchOptions object will be propogated from its importer.
|
||||
*/
|
||||
|
||||
class ScriptFetchOptions {
|
||||
~ScriptFetchOptions();
|
||||
|
||||
public:
|
||||
NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(ScriptFetchOptions)
|
||||
NS_DECL_CYCLE_COLLECTION_NATIVE_CLASS(ScriptFetchOptions)
|
||||
|
||||
ScriptFetchOptions(mozilla::CORSMode aCORSMode, const nsAString& aNonce,
|
||||
mozilla::dom::RequestPriority aFetchPriority,
|
||||
const ParserMetadata aParserMetadata,
|
||||
nsIPrincipal* aTriggeringPrincipal,
|
||||
mozilla::dom::Element* aElement = nullptr);
|
||||
|
||||
/*
|
||||
* The credentials mode used for the initial fetch (for module scripts)
|
||||
* and for fetching any imported modules (for both module scripts and
|
||||
* classic scripts)
|
||||
*/
|
||||
const mozilla::CORSMode mCORSMode;
|
||||
|
||||
/*
|
||||
* The cryptographic nonce metadata used for the initial fetch and for
|
||||
* fetching any imported modules.
|
||||
*/
|
||||
const nsString mNonce;
|
||||
|
||||
/*
|
||||
* <https://html.spec.whatwg.org/multipage/webappapis.html#script-fetch-options>.
|
||||
*/
|
||||
const mozilla::dom::RequestPriority mFetchPriority;
|
||||
|
||||
/*
|
||||
* The parser metadata used for the initial fetch and for fetching any
|
||||
* imported modules
|
||||
*/
|
||||
const ParserMetadata mParserMetadata;
|
||||
|
||||
/*
|
||||
* Used to determine CSP and if we are on the About page.
|
||||
* Only used in DOM content scripts.
|
||||
* TODO: Move to ScriptLoadContext
|
||||
*/
|
||||
nsCOMPtr<nsIPrincipal> mTriggeringPrincipal;
|
||||
/*
|
||||
* Represents fields populated by DOM elements (nonce, parser metadata)
|
||||
* Leave this field as a nullptr for any fetch that requires the
|
||||
* default classic script options.
|
||||
* (https://html.spec.whatwg.org/multipage/webappapis.html#default-classic-script-fetch-options)
|
||||
* TODO: extract necessary fields rather than passing this object
|
||||
*/
|
||||
nsCOMPtr<mozilla::dom::Element> mElement;
|
||||
};
|
||||
|
||||
/*
|
||||
* ScriptLoadRequest
|
||||
*
|
||||
|
@ -11,6 +11,7 @@ EXPORTS.js.loader += [
|
||||
"ModuleLoaderBase.h",
|
||||
"ModuleLoadRequest.h",
|
||||
"ResolveResult.h",
|
||||
"ScriptFetchOptions.h",
|
||||
"ScriptKind.h",
|
||||
"ScriptLoadRequest.h",
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user