Add type_ for script origin to distinguish module or classic

This commit is contained in:
CYBAI 2019-06-09 02:02:56 +09:00
parent 19eb2392f5
commit 70c5cfdbdb

View file

@ -125,6 +125,7 @@ static SCRIPT_JS_MIMES: StaticStringVec = &[
"text/x-javascript", "text/x-javascript",
]; ];
#[derive(JSTraceable, MallocSizeOf)]
pub enum ScriptType { pub enum ScriptType {
Classic, Classic,
Module, Module,
@ -135,22 +136,25 @@ pub struct ScriptOrigin {
text: DOMString, text: DOMString,
url: ServoUrl, url: ServoUrl,
external: bool, external: bool,
type_: ScriptType,
} }
impl ScriptOrigin { impl ScriptOrigin {
fn internal(text: DOMString, url: ServoUrl) -> ScriptOrigin { fn internal(text: DOMString, url: ServoUrl, type_: ScriptType) -> ScriptOrigin {
ScriptOrigin { ScriptOrigin {
text: text, text: text,
url: url, url: url,
external: false, external: false,
type_,
} }
} }
fn external(text: DOMString, url: ServoUrl) -> ScriptOrigin { fn external(text: DOMString, url: ServoUrl, type_: ScriptType) -> ScriptOrigin {
ScriptOrigin { ScriptOrigin {
text: text, text: text,
url: url, url: url,
external: true, external: true,
type_,
} }
} }
} }
@ -231,7 +235,11 @@ impl FetchResponseListener for ClassicContext {
// Step 7. // Step 7.
let (source_text, _, _) = encoding.decode(&self.data); let (source_text, _, _) = encoding.decode(&self.data);
ScriptOrigin::external(DOMString::from(source_text), metadata.final_url) ScriptOrigin::external(
DOMString::from(source_text),
metadata.final_url,
ScriptType::Classic,
)
}); });
// Step 9. // Step 9.
@ -526,7 +534,7 @@ impl HTMLScriptElement {
// Step 25. // Step 25.
assert!(!text.is_empty()); assert!(!text.is_empty());
// Step 25-1. // Step 25-1.
let result = Ok(ScriptOrigin::internal(text, base_url)); let result = Ok(ScriptOrigin::internal(text, base_url, ScriptType::Classic));
// TODO: Step 25-2. // TODO: Step 25-2.