WebKit Bugzilla
Attachment 358029 Details for
Bug 192734
: SourceProviders should use an actual URL instead of a string
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-192734-20181223143519.patch (text/plain), 35.61 KB, created by
Keith Miller
on 2018-12-23 14:35:20 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Keith Miller
Created:
2018-12-23 14:35:20 PST
Size:
35.61 KB
patch
obsolete
>Subversion Revision: 239045 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index 1c7995865f6dfd00fa230c6d7b18ea523111cbe6..2311c7935760f3171cd128c1b3bd7823497a4ec0 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,43 @@ >+2018-12-23 Keith Miller <keith_miller@apple.com> >+ >+ SourceProviders should use an actual URL instead of a string >+ https://bugs.webkit.org/show_bug.cgi?id=192734 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ This will be useful for the Module loader API in the future where >+ by default it will use the relative path from the referring module >+ to resolve dependencies. >+ >+ * API/JSBase.cpp: >+ (JSEvaluateScript): >+ (JSCheckScriptSyntax): >+ * API/JSScriptRef.cpp: >+ (OpaqueJSScript::create): >+ (OpaqueJSScript::OpaqueJSScript): >+ * jsc.cpp: >+ (jscSource): >+ (GlobalObject::moduleLoaderFetch): >+ (functionRun): >+ (functionCheckModuleSyntax): >+ (runWithOptions): >+ * parser/SourceCode.h: >+ (JSC::makeSource): >+ * parser/SourceProvider.cpp: >+ (JSC::SourceProvider::SourceProvider): >+ * parser/SourceProvider.h: >+ (JSC::SourceProvider::url const): >+ (JSC::StringSourceProvider::create): >+ (JSC::StringSourceProvider::StringSourceProvider): >+ (JSC::WebAssemblySourceProvider::create): >+ (JSC::WebAssemblySourceProvider::WebAssemblySourceProvider): >+ * runtime/FunctionConstructor.cpp: >+ (JSC::constructFunctionSkippingEvalEnabledCheck): >+ * tools/CodeProfile.h: >+ (JSC::CodeProfile::CodeProfile): >+ * tools/FunctionOverrides.cpp: >+ (JSC::initializeOverrideInfo): >+ > 2018-12-10 Caio Lima <ticaiolima@gmail.com> > > [BigInt] Add ValueMul into DFG >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index b968cee8b3f54a62187b995107b6d351fd06b387..2068501d4316cef96f40b157ff1ff528668981f4 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,41 @@ >+2018-12-23 Keith Miller <keith_miller@apple.com> >+ >+ SourceProviders should use an actual URL instead of a string >+ https://bugs.webkit.org/show_bug.cgi?id=192734 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Remove ScriptSourceCode's URL member and make the url() method >+ reference the URL on the SourceProvider. Also, avoid some >+ ref count churn. >+ >+ * bindings/js/CachedScriptSourceProvider.h: >+ (WebCore::CachedScriptSourceProvider::CachedScriptSourceProvider): >+ * bindings/js/ScheduledAction.cpp: >+ (WebCore::ScheduledAction::execute): >+ * bindings/js/ScriptController.cpp: >+ (WebCore::ScriptController::executeScriptInWorld): >+ (WebCore::ScriptController::executeScript): >+ * bindings/js/ScriptSourceCode.h: >+ (WebCore::ScriptSourceCode::ScriptSourceCode): >+ (WebCore::ScriptSourceCode::m_code): >+ (WebCore::ScriptSourceCode::url const): >+ (WebCore::ScriptSourceCode::m_url): Deleted. >+ * dom/ScriptElement.cpp: >+ (WebCore::ScriptElement::prepareScript): >+ (WebCore::ScriptElement::requestModuleScript): >+ (WebCore::ScriptElement::executePendingScript): >+ * html/HTMLMediaElement.cpp: >+ (WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript): >+ * page/Frame.cpp: >+ (WebCore::Frame::injectUserScriptImmediately): >+ * workers/WorkerGlobalScope.cpp: >+ (WebCore::WorkerGlobalScope::importScripts): >+ * workers/WorkerThread.cpp: >+ (WebCore::WorkerThread::workerThread): >+ * xml/parser/XMLDocumentParserLibxml2.cpp: >+ (WebCore::XMLDocumentParser::endElementNs): >+ > 2018-12-10 Adrian Perez de Castro <aperez@igalia.com> > > [GLib] FileSystem::moveFile() should fall back to copying >diff --git a/Source/JavaScriptCore/API/JSBase.cpp b/Source/JavaScriptCore/API/JSBase.cpp >index fed818243e8f0021b4b9e99754f8814703b219d3..734b2ec37c58b45cec93267299ea58b9b027dcd3 100644 >--- a/Source/JavaScriptCore/API/JSBase.cpp >+++ b/Source/JavaScriptCore/API/JSBase.cpp >@@ -64,7 +64,7 @@ JSValueRef JSEvaluateScript(JSContextRef ctx, JSStringRef script, JSObjectRef th > // evaluate sets "this" to the global object if it is NULL > JSGlobalObject* globalObject = vm.vmEntryGlobalObject(exec); > auto sourceURLString = sourceURL ? sourceURL->string() : String(); >- SourceCode source = makeSource(script->string(), SourceOrigin { sourceURLString }, sourceURLString, TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber())); >+ SourceCode source = makeSource(script->string(), SourceOrigin { sourceURLString }, URL({ }, sourceURLString), TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber())); > > NakedPtr<Exception> evaluationException; > JSValue returnValue = profiledEvaluate(globalObject->globalExec(), ProfilingReason::API, source, jsThisObject, evaluationException); >@@ -103,7 +103,7 @@ bool JSCheckScriptSyntax(JSContextRef ctx, JSStringRef script, JSStringRef sourc > startingLineNumber = std::max(1, startingLineNumber); > > auto sourceURLString = sourceURL ? sourceURL->string() : String(); >- SourceCode source = makeSource(script->string(), SourceOrigin { sourceURLString }, sourceURLString, TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber())); >+ SourceCode source = makeSource(script->string(), SourceOrigin { sourceURLString }, URL({ }, sourceURLString), TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber())); > > JSValue syntaxException; > bool isValidSyntax = checkSyntax(vm.vmEntryGlobalObject(exec)->globalExec(), source, &syntaxException); >diff --git a/Source/JavaScriptCore/API/JSScriptRef.cpp b/Source/JavaScriptCore/API/JSScriptRef.cpp >index bb720dbe8d71a828dd86d8fd78a9e358df3a720f..253caa8972edeefe503a6c59aeb0f35d0e872dc7 100644 >--- a/Source/JavaScriptCore/API/JSScriptRef.cpp >+++ b/Source/JavaScriptCore/API/JSScriptRef.cpp >@@ -41,9 +41,9 @@ using namespace JSC; > > struct OpaqueJSScript : public SourceProvider { > public: >- static WTF::Ref<OpaqueJSScript> create(VM& vm, const SourceOrigin& sourceOrigin, const String& url, int startingLineNumber, const String& source) >+ static WTF::Ref<OpaqueJSScript> create(VM& vm, const SourceOrigin& sourceOrigin, URL&& url, int startingLineNumber, const String& source) > { >- return WTF::adoptRef(*new OpaqueJSScript(vm, sourceOrigin, url, startingLineNumber, source)); >+ return WTF::adoptRef(*new OpaqueJSScript(vm, sourceOrigin, WTFMove(url), startingLineNumber, source)); > } > > unsigned hash() const override >@@ -59,8 +59,8 @@ public: > VM& vm() const { return m_vm; } > > private: >- OpaqueJSScript(VM& vm, const SourceOrigin& sourceOrigin, const String& url, int startingLineNumber, const String& source) >- : SourceProvider(sourceOrigin, url, TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()), SourceProviderSourceType::Program) >+ OpaqueJSScript(VM& vm, const SourceOrigin& sourceOrigin, URL&& url, int startingLineNumber, const String& source) >+ : SourceProvider(sourceOrigin, WTFMove(url), TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()), SourceProviderSourceType::Program) > , m_vm(vm) > , m_source(source.isNull() ? *StringImpl::empty() : *source.impl()) > { >@@ -94,7 +94,7 @@ JSScriptRef JSScriptCreateReferencingImmortalASCIIText(JSContextGroupRef context > startingLineNumber = std::max(1, startingLineNumber); > > auto sourceURLString = url ? url->string() : String(); >- auto result = OpaqueJSScript::create(vm, SourceOrigin { sourceURLString }, sourceURLString, startingLineNumber, String(StringImpl::createFromLiteral(source, length))); >+ auto result = OpaqueJSScript::create(vm, SourceOrigin { sourceURLString }, URL({ }, sourceURLString), startingLineNumber, String(StringImpl::createFromLiteral(source, length))); > > ParserError error; > if (!parseScript(vm, SourceCode(result.copyRef()), error)) { >@@ -116,7 +116,7 @@ JSScriptRef JSScriptCreateFromString(JSContextGroupRef contextGroup, JSStringRef > startingLineNumber = std::max(1, startingLineNumber); > > auto sourceURLString = url ? url->string() : String(); >- auto result = OpaqueJSScript::create(vm, SourceOrigin { sourceURLString }, sourceURLString, startingLineNumber, source->string()); >+ auto result = OpaqueJSScript::create(vm, SourceOrigin { sourceURLString }, URL({ }, sourceURLString), startingLineNumber, source->string()); > > ParserError error; > if (!parseScript(vm, SourceCode(result.copyRef()), error)) { >diff --git a/Source/JavaScriptCore/jsc.cpp b/Source/JavaScriptCore/jsc.cpp >index 6c5a638beb37c1fb16156ef1d30cace13cfb6891..0843f698cd7493c12098a2ed4351ec443a842ce8 100644 >--- a/Source/JavaScriptCore/jsc.cpp >+++ b/Source/JavaScriptCore/jsc.cpp >@@ -85,6 +85,7 @@ > #include <wtf/MonotonicTime.h> > #include <wtf/NeverDestroyed.h> > #include <wtf/StringPrintStream.h> >+#include <wtf/URLParser.h> > #include <wtf/WallTime.h> > #include <wtf/text/StringBuilder.h> > >@@ -457,13 +458,6 @@ static inline String stringFromUTF(const Vector& utf8) > return String::fromUTF8WithLatin1Fallback(utf8.data(), utf8.size()); > } > >-template<typename Vector> >-static inline SourceCode jscSource(const Vector& utf8, const SourceOrigin& sourceOrigin, const String& filename) >-{ >- String str = stringFromUTF(utf8); >- return makeSource(str, sourceOrigin, filename); >-} >- > class GlobalObject : public JSGlobalObject { > private: > GlobalObject(VM&, Structure*); >@@ -954,6 +948,14 @@ static bool fetchScriptFromLocalFileSystem(const String& fileName, Vector<char>& > return true; > } > >+template<typename Vector> >+static inline SourceCode jscSource(const Vector& utf8, const SourceOrigin& sourceOrigin, const String& filename) >+{ >+ URL url = URL::fileURLWithFileSystemPath(absolutePath(filename)); >+ String str = stringFromUTF(utf8); >+ return makeSource(str, sourceOrigin, WTFMove(url)); >+} >+ > template<typename Vector> > static bool fetchModuleFromLocalFileSystem(const String& fileName, Vector& buffer) > { >@@ -1017,11 +1019,13 @@ JSInternalPromise* GlobalObject::moduleLoaderFetch(JSGlobalObject* globalObject, > if (!fetchModuleFromLocalFileSystem(moduleKey, buffer)) > return reject(createError(exec, makeString("Could not open file '", moduleKey, "'."))); > >+ >+ URL moduleURL = URL({ }, moduleKey); > #if ENABLE(WEBASSEMBLY) > // FileSystem does not have mime-type header. The JSC shell recognizes WebAssembly's magic header. > if (buffer.size() >= 4) { > if (buffer[0] == '\0' && buffer[1] == 'a' && buffer[2] == 's' && buffer[3] == 'm') { >- auto source = SourceCode(WebAssemblySourceProvider::create(WTFMove(buffer), SourceOrigin { moduleKey }, moduleKey)); >+ auto source = SourceCode(WebAssemblySourceProvider::create(WTFMove(buffer), SourceOrigin { moduleKey }, WTFMove(moduleURL))); > catchScope.releaseAssertNoException(); > auto sourceCode = JSSourceCode::create(vm, WTFMove(source)); > catchScope.releaseAssertNoException(); >@@ -1032,7 +1036,7 @@ JSInternalPromise* GlobalObject::moduleLoaderFetch(JSGlobalObject* globalObject, > } > #endif > >- auto sourceCode = JSSourceCode::create(vm, makeSource(stringFromUTF(buffer), SourceOrigin { moduleKey }, moduleKey, TextPosition(), SourceProviderSourceType::Module)); >+ auto sourceCode = JSSourceCode::create(vm, makeSource(stringFromUTF(buffer), SourceOrigin { moduleKey }, WTFMove(moduleURL), TextPosition(), SourceProviderSourceType::Module)); > catchScope.releaseAssertNoException(); > auto result = deferred->resolve(exec, sourceCode); > catchScope.clearException(); >@@ -1325,7 +1329,8 @@ EncodedJSValue JSC_HOST_CALL functionRun(ExecState* exec) > NakedPtr<Exception> exception; > StopWatch stopWatch; > stopWatch.start(); >- evaluate(globalObject->globalExec(), jscSource(script, SourceOrigin { absolutePath(fileName) }, fileName), JSValue(), exception); >+ fileName = absolutePath(fileName); >+ evaluate(globalObject->globalExec(), jscSource(script, SourceOrigin { fileName }, fileName), JSValue(), exception); > stopWatch.stop(); > > if (exception) { >@@ -2079,7 +2084,7 @@ EncodedJSValue JSC_HOST_CALL functionCheckModuleSyntax(ExecState* exec) > stopWatch.start(); > > ParserError error; >- bool validSyntax = checkModuleSyntax(exec, makeSource(source, { }, String(), TextPosition(), SourceProviderSourceType::Module), error); >+ bool validSyntax = checkModuleSyntax(exec, makeSource(source, { }, URL(), TextPosition(), SourceProviderSourceType::Module), error); > RETURN_IF_EXCEPTION(scope, encodedJSValue()); > stopWatch.stop(); > >@@ -2438,8 +2443,10 @@ static void runWithOptions(GlobalObject* globalObject, CommandLine& options, boo > > bool isLastFile = i == scripts.size() - 1; > if (isModule) { >- if (!promise) >- promise = loadAndEvaluateModule(globalObject->globalExec(), makeSource(stringFromUTF(scriptBuffer), SourceOrigin { absolutePath(fileName) }, fileName, TextPosition(), SourceProviderSourceType::Module), jsUndefined()); >+ if (!promise) { >+ URL fileNameURL = URL::fileURLWithFileSystemPath(absolutePath(fileName)); >+ promise = loadAndEvaluateModule(globalObject->globalExec(), makeSource(stringFromUTF(scriptBuffer), SourceOrigin { absolutePath(fileName) }, WTFMove(fileNameURL), TextPosition(), SourceProviderSourceType::Module), jsUndefined()); >+ } > scope.clearException(); > > JSFunction* fulfillHandler = JSNativeStdFunction::create(vm, globalObject, 1, String(), [&success, &options, isLastFile](ExecState* exec) { >diff --git a/Source/JavaScriptCore/parser/SourceCode.h b/Source/JavaScriptCore/parser/SourceCode.h >index 7807ce49ce0565686223c44f2dac1b09ae9734a5..313cfa45aaf922b07b045bbee0363859cbd4c09b 100644 >--- a/Source/JavaScriptCore/parser/SourceCode.h >+++ b/Source/JavaScriptCore/parser/SourceCode.h >@@ -100,9 +100,9 @@ namespace JSC { > OrdinalNumber m_startColumn; > }; > >- inline SourceCode makeSource(const String& source, const SourceOrigin& sourceOrigin, const String& url = String(), const TextPosition& startPosition = TextPosition(), SourceProviderSourceType sourceType = SourceProviderSourceType::Program) >+ inline SourceCode makeSource(const String& source, const SourceOrigin& sourceOrigin, URL&& url = URL(), const TextPosition& startPosition = TextPosition(), SourceProviderSourceType sourceType = SourceProviderSourceType::Program) > { >- return SourceCode(StringSourceProvider::create(source, sourceOrigin, url, startPosition, sourceType), startPosition.m_line.oneBasedInt(), startPosition.m_column.oneBasedInt()); >+ return SourceCode(StringSourceProvider::create(source, sourceOrigin, WTFMove(url), startPosition, sourceType), startPosition.m_line.oneBasedInt(), startPosition.m_column.oneBasedInt()); > } > > inline SourceCode SourceCode::subExpression(unsigned openBrace, unsigned closeBrace, int firstLine, int startColumn) const >diff --git a/Source/JavaScriptCore/parser/SourceProvider.cpp b/Source/JavaScriptCore/parser/SourceProvider.cpp >index 5f97aa4d9fa24147379542483bfc227362de3c55..5c198fdb13ad8b7953e5b6dd06dd7cda7e01cc58 100644 >--- a/Source/JavaScriptCore/parser/SourceProvider.cpp >+++ b/Source/JavaScriptCore/parser/SourceProvider.cpp >@@ -31,11 +31,11 @@ > > namespace JSC { > >-SourceProvider::SourceProvider(const SourceOrigin& sourceOrigin, const String& url, const TextPosition& startPosition, SourceProviderSourceType sourceType) >- : m_sourceType(sourceType) >+SourceProvider::SourceProvider(const SourceOrigin& sourceOrigin, URL&& url, const TextPosition& startPosition, SourceProviderSourceType sourceType) >+ : m_url(WTFMove(url)) >+ , m_sourceType(sourceType) > , m_validated(false) > , m_sourceOrigin(sourceOrigin) >- , m_url(url) > , m_startPosition(startPosition) > { > } >diff --git a/Source/JavaScriptCore/parser/SourceProvider.h b/Source/JavaScriptCore/parser/SourceProvider.h >index 04f26735bf0e4277074a7017214e051626f8a51a..40c7aa7ed16cfab667fa40613dc029f6b4198b35 100644 >--- a/Source/JavaScriptCore/parser/SourceProvider.h >+++ b/Source/JavaScriptCore/parser/SourceProvider.h >@@ -30,6 +30,7 @@ > > #include "SourceOrigin.h" > #include <wtf/RefCounted.h> >+#include <wtf/URL.h> > #include <wtf/text/TextPosition.h> > #include <wtf/text/WTFString.h> > >@@ -45,7 +46,7 @@ namespace JSC { > public: > static const intptr_t nullID = 1; > >- JS_EXPORT_PRIVATE SourceProvider(const SourceOrigin&, const String& url, const TextPosition& startPosition, SourceProviderSourceType); >+ JS_EXPORT_PRIVATE SourceProvider(const SourceOrigin&, URL&&, const TextPosition& startPosition, SourceProviderSourceType); > > JS_EXPORT_PRIVATE virtual ~SourceProvider(); > >@@ -57,7 +58,7 @@ namespace JSC { > } > > const SourceOrigin& sourceOrigin() const { return m_sourceOrigin; } >- const String& url() const { return m_url; } >+ const URL& url() const { return m_url; } > const String& sourceURL() const { return m_sourceURLDirective; } > const String& sourceMappingURL() const { return m_sourceMappingURLDirective; } > >@@ -80,10 +81,10 @@ namespace JSC { > private: > JS_EXPORT_PRIVATE void getID(); > >+ URL m_url; > SourceProviderSourceType m_sourceType; > bool m_validated : 1; > SourceOrigin m_sourceOrigin; >- String m_url; > String m_sourceURLDirective; > String m_sourceMappingURLDirective; > TextPosition m_startPosition; >@@ -92,9 +93,9 @@ namespace JSC { > > class StringSourceProvider : public SourceProvider { > public: >- static Ref<StringSourceProvider> create(const String& source, const SourceOrigin& sourceOrigin, const String& url, const TextPosition& startPosition = TextPosition(), SourceProviderSourceType sourceType = SourceProviderSourceType::Program) >+ static Ref<StringSourceProvider> create(const String& source, const SourceOrigin& sourceOrigin, URL&& url, const TextPosition& startPosition = TextPosition(), SourceProviderSourceType sourceType = SourceProviderSourceType::Program) > { >- return adoptRef(*new StringSourceProvider(source, sourceOrigin, url, startPosition, sourceType)); >+ return adoptRef(*new StringSourceProvider(source, sourceOrigin, WTFMove(url), startPosition, sourceType)); > } > > unsigned hash() const override >@@ -108,8 +109,8 @@ namespace JSC { > } > > private: >- StringSourceProvider(const String& source, const SourceOrigin& sourceOrigin, const String& url, const TextPosition& startPosition, SourceProviderSourceType sourceType) >- : SourceProvider(sourceOrigin, url, startPosition, sourceType) >+ StringSourceProvider(const String& source, const SourceOrigin& sourceOrigin, URL&& url, const TextPosition& startPosition, SourceProviderSourceType sourceType) >+ : SourceProvider(sourceOrigin, WTFMove(url), startPosition, sourceType) > , m_source(source.isNull() ? *StringImpl::empty() : *source.impl()) > { > } >@@ -120,9 +121,9 @@ namespace JSC { > #if ENABLE(WEBASSEMBLY) > class WebAssemblySourceProvider : public SourceProvider { > public: >- static Ref<WebAssemblySourceProvider> create(Vector<uint8_t>&& data, const SourceOrigin& sourceOrigin, const String& url) >+ static Ref<WebAssemblySourceProvider> create(Vector<uint8_t>&& data, const SourceOrigin& sourceOrigin, URL&& url) > { >- return adoptRef(*new WebAssemblySourceProvider(WTFMove(data), sourceOrigin, url)); >+ return adoptRef(*new WebAssemblySourceProvider(WTFMove(data), sourceOrigin, WTFMove(url))); > } > > unsigned hash() const override >@@ -141,8 +142,8 @@ namespace JSC { > } > > private: >- WebAssemblySourceProvider(Vector<uint8_t>&& data, const SourceOrigin& sourceOrigin, const String& url) >- : SourceProvider(sourceOrigin, url, TextPosition(), SourceProviderSourceType::WebAssembly) >+ WebAssemblySourceProvider(Vector<uint8_t>&& data, const SourceOrigin& sourceOrigin, URL&& url) >+ : SourceProvider(sourceOrigin, WTFMove(url), TextPosition(), SourceProviderSourceType::WebAssembly) > , m_source("[WebAssembly source]") > , m_data(WTFMove(data)) > { >diff --git a/Source/JavaScriptCore/runtime/FunctionConstructor.cpp b/Source/JavaScriptCore/runtime/FunctionConstructor.cpp >index 7d3575fc37dbe6115641163cdee99a62d88efaba..11bd77d78d34319181f1b1183ceaec041db85b30 100644 >--- a/Source/JavaScriptCore/runtime/FunctionConstructor.cpp >+++ b/Source/JavaScriptCore/runtime/FunctionConstructor.cpp >@@ -142,7 +142,7 @@ JSObject* constructFunctionSkippingEvalEnabledCheck( > program = builder.toString(); > } > >- SourceCode source = makeSource(program, sourceOrigin, sourceURL, position); >+ SourceCode source = makeSource(program, sourceOrigin, URL({ }, sourceURL), position); > JSObject* exception = nullptr; > FunctionExecutable* function = FunctionExecutable::fromGlobalCode(functionName, *exec, source, exception, overrideLineNumber, functionConstructorParametersEndPosition); > if (!function) { >diff --git a/Source/JavaScriptCore/tools/CodeProfile.h b/Source/JavaScriptCore/tools/CodeProfile.h >index 4fa357d507d969f44755b8c1ae1a975879294af1..3dd0ddce5269e6ed0106a6bc48d0f2d4c90af58a 100644 >--- a/Source/JavaScriptCore/tools/CodeProfile.h >+++ b/Source/JavaScriptCore/tools/CodeProfile.h >@@ -35,7 +35,7 @@ class CodeProfile { > WTF_MAKE_FAST_ALLOCATED; > public: > CodeProfile(const SourceCode& source, CodeProfile* parent) >- : m_file(source.provider()->url().utf8()) >+ : m_file(String(source.provider()->url()).utf8()) > , m_lineNumber(source.firstLine().oneBasedInt()) > , m_parent(parent) > { >diff --git a/Source/JavaScriptCore/tools/FunctionOverrides.cpp b/Source/JavaScriptCore/tools/FunctionOverrides.cpp >index e83b6ee8a96ff2e936355fd191fbf8f16db66131..75e0999d26f80be397ca102dce329b6d13b83893 100644 >--- a/Source/JavaScriptCore/tools/FunctionOverrides.cpp >+++ b/Source/JavaScriptCore/tools/FunctionOverrides.cpp >@@ -126,7 +126,7 @@ static void initializeOverrideInfo(const SourceCode& origCode, const String& new > newProviderStr.append(origHeader); > newProviderStr.append(newBody); > >- Ref<SourceProvider> newProvider = StringSourceProvider::create(newProviderStr, SourceOrigin { "<overridden>" }, "<overridden>"); >+ Ref<SourceProvider> newProvider = StringSourceProvider::create(newProviderStr, SourceOrigin { "<overridden>" }, URL({ }, "<overridden>")); > > info.firstLine = 1; > info.lineCount = 1; // Faking it. This doesn't really matter for now. >diff --git a/Source/WebCore/bindings/js/CachedScriptSourceProvider.h b/Source/WebCore/bindings/js/CachedScriptSourceProvider.h >index 763a0e2328b33afe6d9c12b0ed729dd48425490e..ae444c64536b235ca165746d940a170bc91caeab 100644 >--- a/Source/WebCore/bindings/js/CachedScriptSourceProvider.h >+++ b/Source/WebCore/bindings/js/CachedScriptSourceProvider.h >@@ -1,5 +1,5 @@ > /* >- * Copyright (C) 2008 Apple Inc. All rights reserved. >+ * Copyright (C) 2008-2018 Apple Inc. All rights reserved. > * > * Redistribution and use in source and binary forms, with or without > * modification, are permitted provided that the following conditions >@@ -48,7 +48,7 @@ public: > > private: > CachedScriptSourceProvider(CachedScript* cachedScript, JSC::SourceProviderSourceType sourceType, Ref<CachedScriptFetcher>&& scriptFetcher) >- : SourceProvider(JSC::SourceOrigin { cachedScript->response().url(), WTFMove(scriptFetcher) }, cachedScript->response().url(), TextPosition(), sourceType) >+ : SourceProvider(JSC::SourceOrigin { cachedScript->response().url(), WTFMove(scriptFetcher) }, URL(cachedScript->response().url()), TextPosition(), sourceType) > , m_cachedScript(cachedScript) > { > m_cachedScript->addClient(*this); >diff --git a/Source/WebCore/bindings/js/ScheduledAction.cpp b/Source/WebCore/bindings/js/ScheduledAction.cpp >index 0343df82eefd447a1830ddb2039a220dc47bc79d..cc999daeb27df062578e1828a61f400439e8a2ee 100644 >--- a/Source/WebCore/bindings/js/ScheduledAction.cpp >+++ b/Source/WebCore/bindings/js/ScheduledAction.cpp >@@ -150,7 +150,7 @@ void ScheduledAction::execute(WorkerGlobalScope& workerGlobalScope) > JSWorkerGlobalScope* contextWrapper = scriptController->workerGlobalScopeWrapper(); > executeFunctionInContext(contextWrapper, contextWrapper, workerGlobalScope); > } else { >- ScriptSourceCode code(m_code, workerGlobalScope.url()); >+ ScriptSourceCode code(m_code, URL(workerGlobalScope.url())); > scriptController->evaluate(code); > } > } >diff --git a/Source/WebCore/bindings/js/ScriptController.cpp b/Source/WebCore/bindings/js/ScriptController.cpp >index 21d1d347ca1d07e17a62ba76b5af79b121e23524..3515ba272a360d9ed22dea49c8287a120c44123c 100644 >--- a/Source/WebCore/bindings/js/ScriptController.cpp >+++ b/Source/WebCore/bindings/js/ScriptController.cpp >@@ -543,7 +543,7 @@ void ScriptController::clearScriptObjects() > JSValue ScriptController::executeScriptInWorld(DOMWrapperWorld& world, const String& script, bool forceUserGesture, ExceptionDetails* exceptionDetails) > { > UserGestureIndicator gestureIndicator(forceUserGesture ? std::optional<ProcessingUserGestureState>(ProcessingUserGesture) : std::nullopt); >- ScriptSourceCode sourceCode(script, m_frame.document()->url(), TextPosition(), JSC::SourceProviderSourceType::Program, CachedScriptFetcher::create(m_frame.document()->charset())); >+ ScriptSourceCode sourceCode(script, URL(m_frame.document()->url()), TextPosition(), JSC::SourceProviderSourceType::Program, CachedScriptFetcher::create(m_frame.document()->charset())); > > if (!canExecuteScripts(AboutToExecuteScript) || isPaused()) > return { }; >@@ -572,7 +572,7 @@ bool ScriptController::canExecuteScripts(ReasonForCallingCanExecuteScripts reaso > JSValue ScriptController::executeScript(const String& script, bool forceUserGesture, ExceptionDetails* exceptionDetails) > { > UserGestureIndicator gestureIndicator(forceUserGesture ? std::optional<ProcessingUserGestureState>(ProcessingUserGesture) : std::nullopt); >- return executeScript(ScriptSourceCode(script, m_frame.document()->url(), TextPosition(), JSC::SourceProviderSourceType::Program, CachedScriptFetcher::create(m_frame.document()->charset())), exceptionDetails); >+ return executeScript(ScriptSourceCode(script, URL(m_frame.document()->url()), TextPosition(), JSC::SourceProviderSourceType::Program, CachedScriptFetcher::create(m_frame.document()->charset())), exceptionDetails); > } > > JSValue ScriptController::executeScript(const ScriptSourceCode& sourceCode, ExceptionDetails* exceptionDetails) >diff --git a/Source/WebCore/bindings/js/ScriptSourceCode.h b/Source/WebCore/bindings/js/ScriptSourceCode.h >index b7d7eb93cbacb74a81c007e5ef0981225bc9a97a..286a344f22e99bf83e59b97aea2d0f42b7a51273 100644 >--- a/Source/WebCore/bindings/js/ScriptSourceCode.h >+++ b/Source/WebCore/bindings/js/ScriptSourceCode.h >@@ -44,10 +44,9 @@ namespace WebCore { > > class ScriptSourceCode { > public: >- ScriptSourceCode(const String& source, const URL& url = URL(), const TextPosition& startPosition = TextPosition(), JSC::SourceProviderSourceType sourceType = JSC::SourceProviderSourceType::Program) >- : m_provider(JSC::StringSourceProvider::create(source, JSC::SourceOrigin { url.string() }, url.string(), startPosition, sourceType)) >+ ScriptSourceCode(const String& source, URL&& url = URL(), const TextPosition& startPosition = TextPosition(), JSC::SourceProviderSourceType sourceType = JSC::SourceProviderSourceType::Program) >+ : m_provider(JSC::StringSourceProvider::create(source, JSC::SourceOrigin { url.string() }, WTFMove(url), startPosition, sourceType)) > , m_code(m_provider.copyRef(), startPosition.m_line.oneBasedInt(), startPosition.m_column.oneBasedInt()) >- , m_url(url) > { > } > >@@ -58,10 +57,9 @@ public: > { > } > >- ScriptSourceCode(const String& source, const URL& url, const TextPosition& startPosition, JSC::SourceProviderSourceType sourceType, Ref<CachedScriptFetcher>&& scriptFetcher) >- : m_provider(JSC::StringSourceProvider::create(source, JSC::SourceOrigin { url.string(), WTFMove(scriptFetcher) }, url.string(), startPosition, sourceType)) >+ ScriptSourceCode(const String& source, URL&& url, const TextPosition& startPosition, JSC::SourceProviderSourceType sourceType, Ref<CachedScriptFetcher>&& scriptFetcher) >+ : m_provider(JSC::StringSourceProvider::create(source, JSC::SourceOrigin { url.string(), WTFMove(scriptFetcher) }, WTFMove(url), startPosition, sourceType)) > , m_code(m_provider.copyRef(), startPosition.m_line.oneBasedInt(), startPosition.m_column.oneBasedInt()) >- , m_url(url) > { > } > >@@ -75,13 +73,12 @@ public: > > CachedScript* cachedScript() const { return m_cachedScript.get(); } > >- const URL& url() const { return m_url; } >+ const URL& url() const { return m_provider->url(); } > > private: > Ref<JSC::SourceProvider> m_provider; > JSC::SourceCode m_code; > CachedResourceHandle<CachedScript> m_cachedScript; >- URL m_url; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/dom/ScriptElement.cpp b/Source/WebCore/dom/ScriptElement.cpp >index 488ab8e1ddba6c7dd1dbad2c98c0cdc790d287e0..aa43ee2df1403466c42f3c71f5b3771c6c48d4cb 100644 >--- a/Source/WebCore/dom/ScriptElement.cpp >+++ b/Source/WebCore/dom/ScriptElement.cpp >@@ -264,7 +264,7 @@ bool ScriptElement::prepareScript(const TextPosition& scriptStartPosition, Legac > } else { > ASSERT(scriptType == ScriptType::Classic); > TextPosition position = document.isInDocumentWrite() ? TextPosition() : scriptStartPosition; >- executeClassicScript(ScriptSourceCode(scriptContent(), document.url(), position, JSC::SourceProviderSourceType::Program, InlineClassicScript::create(*this))); >+ executeClassicScript(ScriptSourceCode(scriptContent(), URL(document.url()), position, JSC::SourceProviderSourceType::Program, InlineClassicScript::create(*this))); > } > > return true; >@@ -347,7 +347,7 @@ bool ScriptElement::requestModuleScript(const TextPosition& scriptStartPosition) > auto script = LoadableModuleScript::create(nonce, emptyString(), crossOriginMode, scriptCharset(), m_element.localName(), m_element.isInUserAgentShadowTree()); > > TextPosition position = m_element.document().isInDocumentWrite() ? TextPosition() : scriptStartPosition; >- ScriptSourceCode sourceCode(scriptContent(), m_element.document().url(), position, JSC::SourceProviderSourceType::Module, script.copyRef()); >+ ScriptSourceCode sourceCode(scriptContent(), URL(m_element.document().url()), position, JSC::SourceProviderSourceType::Module, script.copyRef()); > > ASSERT(m_element.document().contentSecurityPolicy()); > const auto& contentSecurityPolicy = *m_element.document().contentSecurityPolicy(); >@@ -435,7 +435,7 @@ void ScriptElement::executePendingScript(PendingScript& pendingScript) > else { > ASSERT(!pendingScript.error()); > ASSERT_WITH_MESSAGE(scriptType() == ScriptType::Classic, "Module script always have a loadableScript pointer."); >- executeClassicScript(ScriptSourceCode(scriptContent(), m_element.document().url(), pendingScript.startingPosition(), JSC::SourceProviderSourceType::Program, InlineClassicScript::create(*this))); >+ executeClassicScript(ScriptSourceCode(scriptContent(), URL(m_element.document().url()), pendingScript.startingPosition(), JSC::SourceProviderSourceType::Program, InlineClassicScript::create(*this))); > dispatchLoadEventRespectingUserGestureIndicator(); > } > } >diff --git a/Source/WebCore/html/HTMLMediaElement.cpp b/Source/WebCore/html/HTMLMediaElement.cpp >index 0dcc88905063d2eb2709e62e34e95ea073b288a4..5d19d01fc6b85aea2db0ddce325e5220e6ed53a2 100644 >--- a/Source/WebCore/html/HTMLMediaElement.cpp >+++ b/Source/WebCore/html/HTMLMediaElement.cpp >@@ -7231,7 +7231,7 @@ bool HTMLMediaElement::ensureMediaControlsInjectedScript() > #else > URL scriptURL; > #endif >- scriptController.evaluateInWorld(ScriptSourceCode(mediaControlsScript, scriptURL), world); >+ scriptController.evaluateInWorld(ScriptSourceCode(mediaControlsScript, WTFMove(scriptURL)), world); > if (UNLIKELY(scope.exception())) { > scope.clearException(); > return false; >diff --git a/Source/WebCore/page/Frame.cpp b/Source/WebCore/page/Frame.cpp >index 8d2c3ef583b2799a3fd1c69ec82e971ad9fe4e19..ae6fe408a8fc44c2effcbb3b3e5cf8bf8a49fc13 100644 >--- a/Source/WebCore/page/Frame.cpp >+++ b/Source/WebCore/page/Frame.cpp >@@ -737,7 +737,7 @@ void Frame::injectUserScriptImmediately(DOMWrapperWorld& world, const UserScript > > document->topDocument().setAsRunningUserScripts(); > loader().client().willInjectUserScript(world); >- m_script->evaluateInWorld(ScriptSourceCode(script.source(), script.url()), world); >+ m_script->evaluateInWorld(ScriptSourceCode(script.source(), URL(script.url())), world); > } > > RenderView* Frame::contentRenderer() const >diff --git a/Source/WebCore/workers/WorkerGlobalScope.cpp b/Source/WebCore/workers/WorkerGlobalScope.cpp >index 0e2a5091255c6d67ec88a2f657d439edb4d2b3e0..345c0e4edab7632a20a85f17bd8704b166478d09 100644 >--- a/Source/WebCore/workers/WorkerGlobalScope.cpp >+++ b/Source/WebCore/workers/WorkerGlobalScope.cpp >@@ -312,7 +312,7 @@ ExceptionOr<void> WorkerGlobalScope::importScripts(const Vector<String>& urls) > InspectorInstrumentation::scriptImported(*this, scriptLoader->identifier(), scriptLoader->script()); > > NakedPtr<JSC::Exception> exception; >- m_script->evaluate(ScriptSourceCode(scriptLoader->script(), scriptLoader->responseURL()), exception); >+ m_script->evaluate(ScriptSourceCode(scriptLoader->script(), URL(scriptLoader->responseURL())), exception); > if (exception) { > m_script->setException(exception); > return { }; >diff --git a/Source/WebCore/workers/WorkerThread.cpp b/Source/WebCore/workers/WorkerThread.cpp >index 9795543e1bfe588049f36c1f95712a1f02c36bc5..eb5631c3918008fa25658698828886cfc8369e36 100644 >--- a/Source/WebCore/workers/WorkerThread.cpp >+++ b/Source/WebCore/workers/WorkerThread.cpp >@@ -190,7 +190,7 @@ void WorkerThread::workerThread() > } > > String exceptionMessage; >- scriptController->evaluate(ScriptSourceCode(m_startupData->m_sourceCode, m_startupData->m_scriptURL), &exceptionMessage); >+ scriptController->evaluate(ScriptSourceCode(m_startupData->m_sourceCode, URL(m_startupData->m_scriptURL)), &exceptionMessage); > > callOnMainThread([evaluateCallback = WTFMove(m_evaluateCallback), message = exceptionMessage.isolatedCopy()] { > if (evaluateCallback) >diff --git a/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp b/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp >index d7998bb8970a3a6b74a88b25e7f60046d97c726d..99181a9f0162486d506764caf1f2e5be69ccedc2 100644 >--- a/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp >+++ b/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp >@@ -877,7 +877,7 @@ void XMLDocumentParser::endElementNs() > // the libxml2 and Qt XMLDocumentParser implementations. > > if (scriptElement.readyToBeParserExecuted()) >- scriptElement.executeClassicScript(ScriptSourceCode(scriptElement.scriptContent(), document()->url(), m_scriptStartPosition, JSC::SourceProviderSourceType::Program, InlineClassicScript::create(scriptElement))); >+ scriptElement.executeClassicScript(ScriptSourceCode(scriptElement.scriptContent(), URL(document()->url()), m_scriptStartPosition, JSC::SourceProviderSourceType::Program, InlineClassicScript::create(scriptElement))); > else if (scriptElement.willBeParserExecuted() && scriptElement.loadableScript()) { > m_pendingScript = PendingScript::create(scriptElement, *scriptElement.loadableScript()); > m_pendingScript->setClient(*this);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192734
:
357375
|
357381
|
357382
|
357385
|
357386
|
357393
|
357396
|
358029
|
358045
|
358046
|
358047
|
358122
|
358155
|
358156