Diff
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (256011 => 256012)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2020-02-07 09:11:09 UTC (rev 256012)
@@ -1,3 +1,15 @@
+2020-02-07 Rob Buis <[email protected]>
+
+ Fix fetch/api/policies/referrer-origin-worker.html
+ https://bugs.webkit.org/show_bug.cgi?id=206520
+
+ Reviewed by Youenn Fablet.
+
+ Updated improved test result.
+
+ * web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-worker-expected.txt:
+ * web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt:
+
2020-02-06 Cathie Chen <[email protected]>
Add support for scroll behavior relies on ScrollAnimation of the Web process
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-worker-expected.txt (256011 => 256012)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-worker-expected.txt 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-worker-expected.txt 2020-02-07 09:11:09 UTC (rev 256012)
@@ -1,3 +1,3 @@
-FAIL Request's referrer is origin assert_equals: request's referrer is http://localhost:8800/ expected "http://localhost:8800/" but got "http://localhost:8800/fetch/api/policies/referrer-origin-when-cross-origin.js?pipe=sub"
+PASS Request's referrer is origin
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt (256011 => 256012)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt 2020-02-07 09:11:09 UTC (rev 256012)
@@ -1,4 +1,4 @@
-FAIL Request's referrer is origin assert_equals: request's referrer is http://localhost:8800/ expected "http://localhost:8800/" but got "http://localhost:8800/fetch/api/policies/referrer-origin.js?pipe=sub"
-FAIL Cross-origin referrer is overridden by client origin assert_equals: request's referrer is http://localhost:8800/ expected "http://localhost:8800/" but got "http://localhost:8800/fetch/api/policies/referrer-origin.js?pipe=sub"
+PASS Request's referrer is origin
+PASS Cross-origin referrer is overridden by client origin
Modified: trunk/Source/WebCore/ChangeLog (256011 => 256012)
--- trunk/Source/WebCore/ChangeLog 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/ChangeLog 2020-02-07 09:11:09 UTC (rev 256012)
@@ -1,3 +1,61 @@
+2020-02-07 Rob Buis <[email protected]>
+
+ Fix fetch/api/policies/referrer-origin-worker.html
+ https://bugs.webkit.org/show_bug.cgi?id=206520
+
+ Reviewed by Youenn Fablet.
+
+ Expose referrer policy as part of the worker global scope [1] through
+ the new ScriptExecutionContext::referrerPolicy method.
+ Call it as environment settings object when starting a fetch in case
+ the FetchRequestInit has no referrerPolicy set [2].
+
+ Test: imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker.html
+
+ [1] https://html.spec.whatwg.org/multipage/workers.html#set-up-a-worker-environment-settings-object
+ [2] https://fetch.spec.whatwg.org/#ref-for-concept-main-fetchâ‘ (Step 2.5)
+
+ * Modules/fetch/FetchLoader.cpp:
+ (WebCore::FetchLoader::start):
+ * dom/Document.h:
+ (WebCore::Document::referrerPolicy const): Deleted.
+ * dom/ScriptExecutionContext.h:
+ * workers/DedicatedWorkerGlobalScope.cpp:
+ (WebCore::DedicatedWorkerGlobalScope::create):
+ (WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):
+ * workers/DedicatedWorkerGlobalScope.h:
+ * workers/DedicatedWorkerThread.cpp:
+ (WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
+ (WebCore::DedicatedWorkerThread::createWorkerGlobalScope):
+ * workers/DedicatedWorkerThread.h:
+ * workers/Worker.cpp:
+ (WebCore::Worker::notifyFinished):
+ * workers/WorkerGlobalScope.cpp:
+ (WebCore::WorkerGlobalScope::WorkerGlobalScope):
+ (WebCore::WorkerGlobalScope::referrerPolicy const):
+ * workers/WorkerGlobalScope.h:
+ * workers/WorkerGlobalScopeProxy.h:
+ * workers/WorkerMessagingProxy.cpp:
+ (WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
+ * workers/WorkerMessagingProxy.h:
+ * workers/WorkerThread.cpp:
+ (WebCore::WorkerParameters::isolatedCopy const):
+ (WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
+ (WebCore::WorkerThread::WorkerThread):
+ (WebCore::WorkerThread::workerThread):
+ * workers/WorkerThread.h:
+ * workers/service/ServiceWorkerGlobalScope.cpp:
+ (WebCore::ServiceWorkerGlobalScope::create):
+ (WebCore::ServiceWorkerGlobalScope::ServiceWorkerGlobalScope):
+ * workers/service/ServiceWorkerGlobalScope.h:
+ * workers/service/context/ServiceWorkerThread.cpp:
+ (WebCore::ServiceWorkerThread::ServiceWorkerThread):
+ (WebCore::ServiceWorkerThread::createWorkerGlobalScope):
+ * workers/service/context/ServiceWorkerThread.h:
+ * worklets/WorkletGlobalScope.cpp:
+ (WebCore::WorkletGlobalScope::referrerPolicy const):
+ * worklets/WorkletGlobalScope.h:
+
2020-02-07 youenn fablet <[email protected]>
[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
Modified: trunk/Source/WebCore/Modules/fetch/FetchLoader.cpp (256011 => 256012)
--- trunk/Source/WebCore/Modules/fetch/FetchLoader.cpp 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/Modules/fetch/FetchLoader.cpp 2020-02-07 09:11:09 UTC (rev 256012)
@@ -113,6 +113,8 @@
referrer = String();
} else
referrer = (referrer == "client") ? context.url().strippedForUseAsReferrer() : URL(context.url(), referrer).strippedForUseAsReferrer();
+ if (options.referrerPolicy == ReferrerPolicy::EmptyString)
+ options.referrerPolicy = context.referrerPolicy();
m_loader = ThreadableLoader::create(context, *this, WTFMove(fetchRequest), options, WTFMove(referrer));
m_isStarted = m_loader;
Modified: trunk/Source/WebCore/dom/Document.h (256011 => 256012)
--- trunk/Source/WebCore/dom/Document.h 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/dom/Document.h 2020-02-07 09:11:09 UTC (rev 256012)
@@ -420,7 +420,7 @@
#endif
void setReferrerPolicy(ReferrerPolicy);
- ReferrerPolicy referrerPolicy() const { return m_referrerPolicy.valueOr(ReferrerPolicy::NoReferrerWhenDowngrade); }
+ ReferrerPolicy referrerPolicy() const final { return m_referrerPolicy.valueOr(ReferrerPolicy::NoReferrerWhenDowngrade); }
WEBCORE_EXPORT DocumentType* doctype() const;
Modified: trunk/Source/WebCore/dom/ScriptExecutionContext.h (256011 => 256012)
--- trunk/Source/WebCore/dom/ScriptExecutionContext.h 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/dom/ScriptExecutionContext.h 2020-02-07 09:11:09 UTC (rev 256012)
@@ -65,6 +65,7 @@
class ResourceRequest;
class SecurityOrigin;
class SocketProvider;
+enum class ReferrerPolicy : uint8_t;
enum class TaskSource : uint8_t;
#if ENABLE(SERVICE_WORKER)
@@ -99,6 +100,8 @@
virtual String userAgent(const URL&) const = 0;
+ virtual ReferrerPolicy referrerPolicy() const = 0;
+
virtual void disableEval(const String& errorMessage) = 0;
virtual void disableWebAssembly(const String& errorMessage) = 0;
Modified: trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp (256011 => 256012)
--- trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp 2020-02-07 09:11:09 UTC (rev 256012)
@@ -44,17 +44,17 @@
WTF_MAKE_ISO_ALLOCATED_IMPL(DedicatedWorkerGlobalScope);
-Ref<DedicatedWorkerGlobalScope> DedicatedWorkerGlobalScope::create(const URL& url, Ref<SecurityOrigin>&& origin, const String& name, const String& identifier, const String& userAgent, bool isOnline, DedicatedWorkerThread& thread, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
+Ref<DedicatedWorkerGlobalScope> DedicatedWorkerGlobalScope::create(const WorkerParameters& params, Ref<SecurityOrigin>&& origin, DedicatedWorkerThread& thread, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
{
- auto context = adoptRef(*new DedicatedWorkerGlobalScope(url, WTFMove(origin), name, identifier, userAgent, isOnline, thread, shouldBypassMainWorldContentSecurityPolicy, WTFMove(topOrigin), timeOrigin, connectionProxy, socketProvider));
- if (!shouldBypassMainWorldContentSecurityPolicy)
- context->applyContentSecurityPolicyResponseHeaders(contentSecurityPolicyResponseHeaders);
+ auto context = adoptRef(*new DedicatedWorkerGlobalScope(params, WTFMove(origin), thread, WTFMove(topOrigin), connectionProxy, socketProvider));
+ if (!params.shouldBypassMainWorldContentSecurityPolicy)
+ context->applyContentSecurityPolicyResponseHeaders(params.contentSecurityPolicyResponseHeaders);
return context;
}
-DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(const URL& url, Ref<SecurityOrigin>&& origin, const String& name, const String& identifier, const String& userAgent, bool isOnline, DedicatedWorkerThread& thread, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
- : WorkerGlobalScope(url, WTFMove(origin), identifier, userAgent, isOnline, thread, shouldBypassMainWorldContentSecurityPolicy, WTFMove(topOrigin), timeOrigin, connectionProxy, socketProvider)
- , m_name(name)
+DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(const WorkerParameters& params, Ref<SecurityOrigin>&& origin, DedicatedWorkerThread& thread, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
+ : WorkerGlobalScope(params, WTFMove(origin), thread, WTFMove(topOrigin), connectionProxy, socketProvider)
+ , m_name(params.name)
{
}
Modified: trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.h (256011 => 256012)
--- trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.h 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.h 2020-02-07 09:11:09 UTC (rev 256012)
@@ -50,7 +50,7 @@
class DedicatedWorkerGlobalScope final : public WorkerGlobalScope {
WTF_MAKE_ISO_ALLOCATED(DedicatedWorkerGlobalScope);
public:
- static Ref<DedicatedWorkerGlobalScope> create(const URL&, Ref<SecurityOrigin>&&, const String& name, const String& identifier, const String& userAgent, bool isOnline, DedicatedWorkerThread&, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
+ static Ref<DedicatedWorkerGlobalScope> create(const WorkerParameters&, Ref<SecurityOrigin>&&, DedicatedWorkerThread&, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
virtual ~DedicatedWorkerGlobalScope();
const String& name() const { return m_name; }
@@ -62,7 +62,7 @@
private:
using Base = WorkerGlobalScope;
- DedicatedWorkerGlobalScope(const URL&, Ref<SecurityOrigin>&&, const String& name, const String& identifier, const String& userAgent, bool isOnline, DedicatedWorkerThread&, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
+ DedicatedWorkerGlobalScope(const WorkerParameters&, Ref<SecurityOrigin>&&, DedicatedWorkerThread&, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
bool isDedicatedWorkerGlobalScope() const final { return true; }
ExceptionOr<void> importScripts(const Vector<String>& urls) final;
Modified: trunk/Source/WebCore/workers/DedicatedWorkerThread.cpp (256011 => 256012)
--- trunk/Source/WebCore/workers/DedicatedWorkerThread.cpp 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/DedicatedWorkerThread.cpp 2020-02-07 09:11:09 UTC (rev 256012)
@@ -38,8 +38,8 @@
namespace WebCore {
-DedicatedWorkerThread::DedicatedWorkerThread(const URL& url, const String& name, const String& identifier, const String& userAgent, bool isOnline, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerDebuggerProxy& workerDebuggerProxy, WorkerObjectProxy& workerObjectProxy, WorkerThreadStartMode startMode, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider, JSC::RuntimeFlags runtimeFlags)
- : WorkerThread(url, name, identifier, userAgent, isOnline, sourceCode, workerLoaderProxy, workerDebuggerProxy, workerObjectProxy, startMode, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, topOrigin, timeOrigin, connectionProxy, socketProvider, runtimeFlags)
+DedicatedWorkerThread::DedicatedWorkerThread(const WorkerParameters& params, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerDebuggerProxy& workerDebuggerProxy, WorkerObjectProxy& workerObjectProxy, WorkerThreadStartMode startMode, const SecurityOrigin& topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider, JSC::RuntimeFlags runtimeFlags)
+ : WorkerThread(params, sourceCode, workerLoaderProxy, workerDebuggerProxy, workerObjectProxy, startMode, topOrigin, connectionProxy, socketProvider, runtimeFlags)
, m_workerObjectProxy(workerObjectProxy)
{
}
@@ -46,9 +46,9 @@
DedicatedWorkerThread::~DedicatedWorkerThread() = default;
-Ref<WorkerGlobalScope> DedicatedWorkerThread::createWorkerGlobalScope(const URL& url, Ref<SecurityOrigin>&& origin, const String& name, const String& identifier, const String& userAgent, bool isOnline, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin)
+Ref<WorkerGlobalScope> DedicatedWorkerThread::createWorkerGlobalScope(const WorkerParameters& params, Ref<SecurityOrigin>&& origin, Ref<SecurityOrigin>&& topOrigin)
{
- return DedicatedWorkerGlobalScope::create(url, WTFMove(origin), name, identifier, userAgent, isOnline, *this, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, WTFMove(topOrigin), timeOrigin, idbConnectionProxy(), socketProvider());
+ return DedicatedWorkerGlobalScope::create(params, WTFMove(origin), *this, WTFMove(topOrigin), idbConnectionProxy(), socketProvider());
}
void DedicatedWorkerThread::runEventLoop()
Modified: trunk/Source/WebCore/workers/DedicatedWorkerThread.h (256011 => 256012)
--- trunk/Source/WebCore/workers/DedicatedWorkerThread.h 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/DedicatedWorkerThread.h 2020-02-07 09:11:09 UTC (rev 256012)
@@ -50,11 +50,11 @@
void start() { WorkerThread::start(nullptr); }
protected:
- Ref<WorkerGlobalScope> createWorkerGlobalScope(const URL&, Ref<SecurityOrigin>&&, const String& name, const String& identifier, const String& userAgent, bool isOnline, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin) override;
+ Ref<WorkerGlobalScope> createWorkerGlobalScope(const WorkerParameters&, Ref<SecurityOrigin>&&, Ref<SecurityOrigin>&& topOrigin) override;
void runEventLoop() override;
private:
- DedicatedWorkerThread(const URL&, const String& name, const String& identifier, const String& userAgent, bool isOnline, const String& sourceCode, WorkerLoaderProxy&, WorkerDebuggerProxy&, WorkerObjectProxy&, WorkerThreadStartMode, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*, JSC::RuntimeFlags);
+ DedicatedWorkerThread(const WorkerParameters&, const String& sourceCode, WorkerLoaderProxy&, WorkerDebuggerProxy&, WorkerObjectProxy&, WorkerThreadStartMode, const SecurityOrigin& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*, JSC::RuntimeFlags);
WorkerObjectProxy& m_workerObjectProxy;
};
Modified: trunk/Source/WebCore/workers/Worker.cpp (256011 => 256012)
--- trunk/Source/WebCore/workers/Worker.cpp 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/Worker.cpp 2020-02-07 09:11:09 UTC (rev 256012)
@@ -211,7 +211,10 @@
bool isOnline = platformStrategies()->loaderStrategy()->isOnLine();
const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders = m_contentSecurityPolicyResponseHeaders ? m_contentSecurityPolicyResponseHeaders.value() : context->contentSecurityPolicy()->responseHeaders();
- m_contextProxy.startWorkerGlobalScope(m_scriptLoader->url(), m_name, context->userAgent(m_scriptLoader->url()), isOnline, m_scriptLoader->script(), contentSecurityPolicyResponseHeaders, m_shouldBypassMainWorldContentSecurityPolicy, m_workerCreationTime, m_runtimeFlags);
+ ReferrerPolicy referrerPolicy = ReferrerPolicy::EmptyString;
+ if (auto policy = parseReferrerPolicy(m_scriptLoader->referrerPolicy(), ReferrerPolicySource::HTTPHeader))
+ referrerPolicy = *policy;
+ m_contextProxy.startWorkerGlobalScope(m_scriptLoader->url(), m_name, context->userAgent(m_scriptLoader->url()), isOnline, m_scriptLoader->script(), contentSecurityPolicyResponseHeaders, m_shouldBypassMainWorldContentSecurityPolicy, m_workerCreationTime, referrerPolicy, m_runtimeFlags);
InspectorInstrumentation::scriptImported(*context, m_scriptLoader->identifier(), m_scriptLoader->script());
}
Modified: trunk/Source/WebCore/workers/WorkerGlobalScope.cpp (256011 => 256012)
--- trunk/Source/WebCore/workers/WorkerGlobalScope.cpp 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/WorkerGlobalScope.cpp 2020-02-07 09:11:09 UTC (rev 256012)
@@ -62,21 +62,22 @@
WTF_MAKE_ISO_ALLOCATED_IMPL(WorkerGlobalScope);
-WorkerGlobalScope::WorkerGlobalScope(const URL& url, Ref<SecurityOrigin>&& origin, const String& identifier, const String& userAgent, bool isOnline, WorkerThread& thread, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
- : m_url(url)
- , m_identifier(identifier)
- , m_userAgent(userAgent)
+WorkerGlobalScope::WorkerGlobalScope(const WorkerParameters& params, Ref<SecurityOrigin>&& origin, WorkerThread& thread, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
+ : m_url(params.scriptURL)
+ , m_identifier(params.identifier)
+ , m_userAgent(params.userAgent)
, m_thread(thread)
, m_script(makeUnique<WorkerScriptController>(this))
, m_inspectorController(makeUnique<WorkerInspectorController>(*this))
- , m_isOnline(isOnline)
- , m_shouldBypassMainWorldContentSecurityPolicy(shouldBypassMainWorldContentSecurityPolicy)
+ , m_isOnline(params.isOnline)
+ , m_shouldBypassMainWorldContentSecurityPolicy(params.shouldBypassMainWorldContentSecurityPolicy)
, m_topOrigin(WTFMove(topOrigin))
#if ENABLE(INDEXED_DATABASE)
, m_connectionProxy(connectionProxy)
#endif
, m_socketProvider(socketProvider)
- , m_performance(Performance::create(this, timeOrigin))
+ , m_performance(Performance::create(this, params.timeOrigin))
+ , m_referrerPolicy(params.referrerPolicy)
{
#if !ENABLE(INDEXED_DATABASE)
UNUSED_PARAM(connectionProxy);
@@ -535,4 +536,9 @@
return *m_cssValuePool;
}
+ReferrerPolicy WorkerGlobalScope::referrerPolicy() const
+{
+ return m_referrerPolicy;
+}
+
} // namespace WebCore
Modified: trunk/Source/WebCore/workers/WorkerGlobalScope.h (256011 => 256012)
--- trunk/Source/WebCore/workers/WorkerGlobalScope.h 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/WorkerGlobalScope.h 2020-02-07 09:11:09 UTC (rev 256012)
@@ -53,6 +53,7 @@
class WorkerNavigator;
class WorkerSWClientConnection;
class WorkerThread;
+struct WorkerParameters;
namespace IDBClient {
class IDBConnectionProxy;
@@ -138,8 +139,10 @@
CSSValuePool& cssValuePool();
+ ReferrerPolicy referrerPolicy() const final;
+
protected:
- WorkerGlobalScope(const URL&, Ref<SecurityOrigin>&&, const String& identifier, const String& userAgent, bool isOnline, WorkerThread&, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
+ WorkerGlobalScope(const WorkerParameters&, Ref<SecurityOrigin>&&, WorkerThread&, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
void applyContentSecurityPolicyResponseHeaders(const ContentSecurityPolicyResponseHeaders&);
@@ -216,6 +219,7 @@
RefPtr<WorkerSWClientConnection> m_swClientConnection;
#endif
std::unique_ptr<CSSValuePool> m_cssValuePool;
+ ReferrerPolicy m_referrerPolicy;
};
} // namespace WebCore
Modified: trunk/Source/WebCore/workers/WorkerGlobalScopeProxy.h (256011 => 256012)
--- trunk/Source/WebCore/workers/WorkerGlobalScopeProxy.h 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/WorkerGlobalScopeProxy.h 2020-02-07 09:11:09 UTC (rev 256012)
@@ -39,6 +39,7 @@
class ContentSecurityPolicyResponseHeaders;
class Worker;
+enum class ReferrerPolicy : uint8_t;
// A proxy to talk to the worker context.
class WorkerGlobalScopeProxy {
@@ -45,7 +46,7 @@
public:
static WorkerGlobalScopeProxy& create(Worker&);
- virtual void startWorkerGlobalScope(const URL& scriptURL, const String& name, const String& userAgent, bool isOnline, const String& sourceCode, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, MonotonicTime timeOrigin, JSC::RuntimeFlags) = 0;
+ virtual void startWorkerGlobalScope(const URL& scriptURL, const String& name, const String& userAgent, bool isOnline, const String& sourceCode, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, MonotonicTime timeOrigin, ReferrerPolicy, JSC::RuntimeFlags) = 0;
virtual void terminateWorkerGlobalScope() = 0;
virtual void postMessageToWorkerGlobalScope(MessageWithMessagePorts&&) = 0;
virtual bool hasPendingActivity() const = 0;
Modified: trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp (256011 => 256012)
--- trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp 2020-02-07 09:11:09 UTC (rev 256012)
@@ -72,7 +72,7 @@
|| (is<WorkerGlobalScope>(*m_scriptExecutionContext) && downcast<WorkerGlobalScope>(*m_scriptExecutionContext).thread().thread() == &Thread::current()));
}
-void WorkerMessagingProxy::startWorkerGlobalScope(const URL& scriptURL, const String& name, const String& userAgent, bool isOnline, const String& sourceCode, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, MonotonicTime timeOrigin, JSC::RuntimeFlags runtimeFlags)
+void WorkerMessagingProxy::startWorkerGlobalScope(const URL& scriptURL, const String& name, const String& userAgent, bool isOnline, const String& sourceCode, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, MonotonicTime timeOrigin, ReferrerPolicy referrerPolicy, JSC::RuntimeFlags runtimeFlags)
{
// FIXME: This need to be revisited when we support nested worker one day
ASSERT(m_scriptExecutionContext);
@@ -88,7 +88,8 @@
SocketProvider* socketProvider = document.socketProvider();
- auto thread = DedicatedWorkerThread::create(scriptURL, name, identifier, userAgent, isOnline, sourceCode, *this, *this, *this, startMode, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, document.topOrigin(), timeOrigin, proxy, socketProvider, runtimeFlags);
+ WorkerParameters params = { scriptURL, name, identifier, userAgent, isOnline, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, timeOrigin, referrerPolicy };
+ auto thread = DedicatedWorkerThread::create(params, sourceCode, *this, *this, *this, startMode, document.topOrigin(), proxy, socketProvider, runtimeFlags);
workerThreadCreated(thread.get());
thread->start();
Modified: trunk/Source/WebCore/workers/WorkerMessagingProxy.h (256011 => 256012)
--- trunk/Source/WebCore/workers/WorkerMessagingProxy.h 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/WorkerMessagingProxy.h 2020-02-07 09:11:09 UTC (rev 256012)
@@ -50,7 +50,7 @@
private:
// Implementations of WorkerGlobalScopeProxy.
// (Only use these functions in the worker object thread.)
- void startWorkerGlobalScope(const URL& scriptURL, const String& name, const String& userAgent, bool isOnline, const String& sourceCode, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, MonotonicTime timeOrigin, JSC::RuntimeFlags) final;
+ void startWorkerGlobalScope(const URL& scriptURL, const String& name, const String& userAgent, bool isOnline, const String& sourceCode, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, MonotonicTime timeOrigin, ReferrerPolicy, JSC::RuntimeFlags) final;
void terminateWorkerGlobalScope() final;
void postMessageToWorkerGlobalScope(MessageWithMessagePorts&&) final;
bool hasPendingActivity() const final;
Modified: trunk/Source/WebCore/workers/WorkerThread.cpp (256011 => 256012)
--- trunk/Source/WebCore/workers/WorkerThread.cpp 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/WorkerThread.cpp 2020-02-07 09:11:09 UTC (rev 256012)
@@ -27,13 +27,11 @@
#include "config.h"
#include "WorkerThread.h"
-#include "ContentSecurityPolicyResponseHeaders.h"
#include "IDBConnectionProxy.h"
#include "ScriptSourceCode.h"
#include "SecurityOrigin.h"
#include "SocketProvider.h"
#include "ThreadGlobalData.h"
-#include <wtf/URL.h>
#include "WorkerGlobalScope.h"
#include "WorkerInspectorController.h"
#include <utility>
@@ -71,48 +69,49 @@
return workerThreads(lock).size();
}
+WorkerParameters WorkerParameters::isolatedCopy() const
+{
+ return {
+ scriptURL.isolatedCopy(),
+ name.isolatedCopy(),
+ identifier.isolatedCopy(),
+ userAgent.isolatedCopy(),
+ isOnline,
+ contentSecurityPolicyResponseHeaders,
+ shouldBypassMainWorldContentSecurityPolicy,
+ timeOrigin,
+ referrerPolicy,
+ };
+}
+
struct WorkerThreadStartupData {
WTF_MAKE_NONCOPYABLE(WorkerThreadStartupData); WTF_MAKE_FAST_ALLOCATED;
public:
- WorkerThreadStartupData(const URL& scriptURL, const String& name, const String& identifier, const String& userAgent, bool isOnline, const String& sourceCode, WorkerThreadStartMode, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin& topOrigin, MonotonicTime timeOrigin);
+ WorkerThreadStartupData(const WorkerParameters& params, const String& sourceCode, WorkerThreadStartMode, const SecurityOrigin& topOrigin);
- URL m_scriptURL;
- Ref<SecurityOrigin> m_origin;
- String m_name;
- String m_identifier;
- String m_userAgent;
- String m_sourceCode;
- WorkerThreadStartMode m_startMode;
- ContentSecurityPolicyResponseHeaders m_contentSecurityPolicyResponseHeaders;
- bool m_shouldBypassMainWorldContentSecurityPolicy;
- bool m_isOnline;
- Ref<SecurityOrigin> m_topOrigin;
- MonotonicTime m_timeOrigin;
+ WorkerParameters params;
+ Ref<SecurityOrigin> origin;
+ String sourceCode;
+ WorkerThreadStartMode startMode;
+ Ref<SecurityOrigin> topOrigin;
};
-WorkerThreadStartupData::WorkerThreadStartupData(const URL& scriptURL, const String& name, const String& identifier, const String& userAgent, bool isOnline, const String& sourceCode, WorkerThreadStartMode startMode, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin& topOrigin, MonotonicTime timeOrigin)
- : m_scriptURL(scriptURL.isolatedCopy())
- , m_origin(SecurityOrigin::create(m_scriptURL)->isolatedCopy())
- , m_name(name.isolatedCopy())
- , m_identifier(identifier.isolatedCopy())
- , m_userAgent(userAgent.isolatedCopy())
- , m_sourceCode(sourceCode.isolatedCopy())
- , m_startMode(startMode)
- , m_contentSecurityPolicyResponseHeaders(contentSecurityPolicyResponseHeaders.isolatedCopy())
- , m_shouldBypassMainWorldContentSecurityPolicy(shouldBypassMainWorldContentSecurityPolicy)
- , m_isOnline(isOnline)
- , m_topOrigin(topOrigin.isolatedCopy())
- , m_timeOrigin(timeOrigin)
+WorkerThreadStartupData::WorkerThreadStartupData(const WorkerParameters& other, const String& sourceCode, WorkerThreadStartMode startMode, const SecurityOrigin& topOrigin)
+ : params(other.isolatedCopy())
+ , origin(SecurityOrigin::create(other.scriptURL)->isolatedCopy())
+ , sourceCode(sourceCode.isolatedCopy())
+ , startMode(startMode)
+ , topOrigin(topOrigin.isolatedCopy())
{
}
-WorkerThread::WorkerThread(const URL& scriptURL, const String& name, const String& identifier, const String& userAgent, bool isOnline, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerDebuggerProxy& workerDebuggerProxy, WorkerReportingProxy& workerReportingProxy, WorkerThreadStartMode startMode, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider, JSC::RuntimeFlags runtimeFlags)
- : m_identifier(identifier.isolatedCopy())
+WorkerThread::WorkerThread(const WorkerParameters& params, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerDebuggerProxy& workerDebuggerProxy, WorkerReportingProxy& workerReportingProxy, WorkerThreadStartMode startMode, const SecurityOrigin& topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider, JSC::RuntimeFlags runtimeFlags)
+ : m_identifier(params.identifier.isolatedCopy())
, m_workerLoaderProxy(workerLoaderProxy)
, m_workerDebuggerProxy(workerDebuggerProxy)
, m_workerReportingProxy(workerReportingProxy)
, m_runtimeFlags(runtimeFlags)
- , m_startupData(makeUnique<WorkerThreadStartupData>(scriptURL, name, identifier, userAgent, isOnline, sourceCode, startMode, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, topOrigin, timeOrigin))
+ , m_startupData(makeUnique<WorkerThreadStartupData>(params, sourceCode, startMode, topOrigin))
#if ENABLE(INDEXED_DATABASE)
, m_idbConnectionProxy(connectionProxy)
#endif
@@ -168,7 +167,7 @@
// while WorkerThread::stop() is accessing it. Note that WorkerThread::stop() can
// be called before we've finished creating the WorkerGlobalScope.
LockHolder lock(m_threadCreationAndWorkerGlobalScopeMutex);
- m_workerGlobalScope = createWorkerGlobalScope(m_startupData->m_scriptURL, WTFMove(m_startupData->m_origin), m_startupData->m_name, m_startupData->m_identifier, m_startupData->m_userAgent, m_startupData->m_isOnline, m_startupData->m_contentSecurityPolicyResponseHeaders, m_startupData->m_shouldBypassMainWorldContentSecurityPolicy, WTFMove(m_startupData->m_topOrigin), m_startupData->m_timeOrigin);
+ m_workerGlobalScope = createWorkerGlobalScope(m_startupData->params, WTFMove(m_startupData->origin), WTFMove(m_startupData->topOrigin));
scriptController = m_workerGlobalScope->script();
@@ -180,7 +179,7 @@
}
}
- if (m_startupData->m_startMode == WorkerThreadStartMode::WaitForInspector) {
+ if (m_startupData->startMode == WorkerThreadStartMode::WaitForInspector) {
startRunningDebuggerTasks();
// If the worker was somehow terminated while processing debugger commands.
@@ -189,7 +188,7 @@
}
String exceptionMessage;
- scriptController->evaluate(ScriptSourceCode(m_startupData->m_sourceCode, URL(m_startupData->m_scriptURL)), &exceptionMessage);
+ scriptController->evaluate(ScriptSourceCode(m_startupData->sourceCode, URL(m_startupData->params.scriptURL)), &exceptionMessage);
finishedEvaluatingScript();
Modified: trunk/Source/WebCore/workers/WorkerThread.h (256011 => 256012)
--- trunk/Source/WebCore/workers/WorkerThread.h 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/WorkerThread.h 2020-02-07 09:11:09 UTC (rev 256012)
@@ -25,6 +25,7 @@
#pragma once
+#include "ContentSecurityPolicyResponseHeaders.h"
#include "WorkerRunLoop.h"
#include <_javascript_Core/RuntimeFlags.h>
#include <memory>
@@ -31,6 +32,7 @@
#include <wtf/Forward.h>
#include <wtf/Function.h>
#include <wtf/RefCounted.h>
+#include <wtf/URL.h>
#include <wtf/threads/BinarySemaphore.h>
namespace WebCore {
@@ -55,6 +57,21 @@
struct WorkerThreadStartupData;
+struct WorkerParameters {
+public:
+ URL scriptURL;
+ String name;
+ String identifier;
+ String userAgent;
+ bool isOnline;
+ ContentSecurityPolicyResponseHeaders contentSecurityPolicyResponseHeaders;
+ bool shouldBypassMainWorldContentSecurityPolicy;
+ MonotonicTime timeOrigin;
+ ReferrerPolicy referrerPolicy;
+
+ WorkerParameters isolatedCopy() const;
+};
+
class WorkerThread : public ThreadSafeRefCounted<WorkerThread> {
public:
virtual ~WorkerThread();
@@ -90,10 +107,10 @@
String identifier() const { return m_identifier; }
protected:
- WorkerThread(const URL&, const String& name, const String& identifier, const String& userAgent, bool isOnline, const String& sourceCode, WorkerLoaderProxy&, WorkerDebuggerProxy&, WorkerReportingProxy&, WorkerThreadStartMode, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*, JSC::RuntimeFlags);
+ WorkerThread(const WorkerParameters&, const String& sourceCode, WorkerLoaderProxy&, WorkerDebuggerProxy&, WorkerReportingProxy&, WorkerThreadStartMode, const SecurityOrigin& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*, JSC::RuntimeFlags);
// Factory method for creating a new worker context for the thread.
- virtual Ref<WorkerGlobalScope> createWorkerGlobalScope(const URL&, Ref<SecurityOrigin>&&, const String& name, const String& identifier, const String& userAgent, bool isOnline, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin) = 0;
+ virtual Ref<WorkerGlobalScope> createWorkerGlobalScope(const WorkerParameters&, Ref<SecurityOrigin>&&, Ref<SecurityOrigin>&& topOrigin) = 0;
// Executes the event loop for the worker thread. Derived classes can override to perform actions before/after entering the event loop.
virtual void runEventLoop();
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp (256011 => 256012)
--- trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp 2020-02-07 09:11:09 UTC (rev 256012)
@@ -43,15 +43,15 @@
WTF_MAKE_ISO_ALLOCATED_IMPL(ServiceWorkerGlobalScope);
-Ref<ServiceWorkerGlobalScope> ServiceWorkerGlobalScope::create(const ServiceWorkerContextData& data, const URL& url, Ref<SecurityOrigin>&& origin, const String& identifier, const String& userAgent, bool isOnline, ServiceWorkerThread& thread, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicy, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
+Ref<ServiceWorkerGlobalScope> ServiceWorkerGlobalScope::create(const ServiceWorkerContextData& data, const WorkerParameters& params, Ref<SecurityOrigin>&& origin, ServiceWorkerThread& thread, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
{
- auto scope = adoptRef(*new ServiceWorkerGlobalScope { data, url, WTFMove(origin), identifier, userAgent, isOnline, thread, shouldBypassMainWorldContentSecurityPolicy, WTFMove(topOrigin), timeOrigin, connectionProxy, socketProvider });
- scope->applyContentSecurityPolicyResponseHeaders(contentSecurityPolicy);
+ auto scope = adoptRef(*new ServiceWorkerGlobalScope { data, params, WTFMove(origin), thread, WTFMove(topOrigin), connectionProxy, socketProvider });
+ scope->applyContentSecurityPolicyResponseHeaders(params.contentSecurityPolicyResponseHeaders);
return scope;
}
-ServiceWorkerGlobalScope::ServiceWorkerGlobalScope(const ServiceWorkerContextData& data, const URL& url, Ref<SecurityOrigin>&& origin, const String& identifier, const String& userAgent, bool isOnline, ServiceWorkerThread& thread, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
- : WorkerGlobalScope(url, WTFMove(origin), identifier, userAgent, isOnline, thread, shouldBypassMainWorldContentSecurityPolicy, WTFMove(topOrigin), timeOrigin, connectionProxy, socketProvider)
+ServiceWorkerGlobalScope::ServiceWorkerGlobalScope(const ServiceWorkerContextData& data, const WorkerParameters& params, Ref<SecurityOrigin>&& origin, ServiceWorkerThread& thread, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
+ : WorkerGlobalScope(params, WTFMove(origin), thread, WTFMove(topOrigin), connectionProxy, socketProvider)
, m_contextData(crossThreadCopy(data))
, m_registration(ServiceWorkerRegistration::getOrCreate(*this, navigator().serviceWorker(), WTFMove(m_contextData.registration)))
, m_clients(ServiceWorkerClients::create())
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.h (256011 => 256012)
--- trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.h 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.h 2020-02-07 09:11:09 UTC (rev 256012)
@@ -44,7 +44,7 @@
class ServiceWorkerGlobalScope final : public WorkerGlobalScope {
WTF_MAKE_ISO_ALLOCATED(ServiceWorkerGlobalScope);
public:
- static Ref<ServiceWorkerGlobalScope> create(const ServiceWorkerContextData&, const URL&, Ref<SecurityOrigin>&&, const String& identifier, const String& userAgent, bool isOnline, ServiceWorkerThread&, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
+ static Ref<ServiceWorkerGlobalScope> create(const ServiceWorkerContextData&, const WorkerParameters&, Ref<SecurityOrigin>&&, ServiceWorkerThread&, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
~ServiceWorkerGlobalScope();
@@ -69,7 +69,7 @@
void setScriptResource(const URL&, ServiceWorkerContextData::ImportedScript&&);
private:
- ServiceWorkerGlobalScope(const ServiceWorkerContextData&, const URL&, Ref<SecurityOrigin>&&, const String& identifier, const String& userAgent, bool isOnline, ServiceWorkerThread&, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
+ ServiceWorkerGlobalScope(const ServiceWorkerContextData&, const WorkerParameters&, Ref<SecurityOrigin>&&, ServiceWorkerThread&, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
bool hasPendingEvents() const { return !m_extendedEvents.isEmpty(); }
Modified: trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.cpp (256011 => 256012)
--- trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.cpp 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.cpp 2020-02-07 09:11:09 UTC (rev 256012)
@@ -73,7 +73,7 @@
// FIXME: Use valid runtime flags
ServiceWorkerThread::ServiceWorkerThread(const ServiceWorkerContextData& data, String&& userAgent, WorkerLoaderProxy& loaderProxy, WorkerDebuggerProxy& debuggerProxy, IDBClient::IDBConnectionProxy* idbConnectionProxy, SocketProvider* socketProvider)
- : WorkerThread(data.scriptURL, emptyString(), "serviceworker:" + Inspector::IdentifiersFactory::createIdentifier(), WTFMove(userAgent), platformStrategies()->loaderStrategy()->isOnLine(), data.script, loaderProxy, debuggerProxy, DummyServiceWorkerThreadProxy::shared(), WorkerThreadStartMode::Normal, data.contentSecurityPolicy, false, data.registration.key.topOrigin().securityOrigin().get(), MonotonicTime::now(), idbConnectionProxy, socketProvider, JSC::RuntimeFlags::createAllEnabled())
+ : WorkerThread({ data.scriptURL, emptyString(), "serviceworker:" + Inspector::IdentifiersFactory::createIdentifier(), WTFMove(userAgent), platformStrategies()->loaderStrategy()->isOnLine(), data.contentSecurityPolicy, false, MonotonicTime::now(), { } }, data.script, loaderProxy, debuggerProxy, DummyServiceWorkerThreadProxy::shared(), WorkerThreadStartMode::Normal, data.registration.key.topOrigin().securityOrigin().get(), idbConnectionProxy, socketProvider, JSC::RuntimeFlags::createAllEnabled())
, m_data(data.isolatedCopy())
, m_workerObjectProxy(DummyServiceWorkerThreadProxy::shared())
, m_heartBeatTimeout(SWContextManager::singleton().connection()->shouldUseShortTimeout() ? heartBeatTimeoutForTest : heartBeatTimeout)
@@ -84,10 +84,9 @@
ServiceWorkerThread::~ServiceWorkerThread() = default;
-Ref<WorkerGlobalScope> ServiceWorkerThread::createWorkerGlobalScope(const URL& url, Ref<SecurityOrigin>&& origin, const String& name, const String& identifier, const String& userAgent, bool isOnline, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicy, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin)
+Ref<WorkerGlobalScope> ServiceWorkerThread::createWorkerGlobalScope(const WorkerParameters& params, Ref<SecurityOrigin>&& origin, Ref<SecurityOrigin>&& topOrigin)
{
- UNUSED_PARAM(name);
- return ServiceWorkerGlobalScope::create(m_data, url, WTFMove(origin), identifier, userAgent, isOnline, *this, contentSecurityPolicy, shouldBypassMainWorldContentSecurityPolicy, WTFMove(topOrigin), timeOrigin, idbConnectionProxy(), socketProvider());
+ return ServiceWorkerGlobalScope::create(m_data, params, WTFMove(origin), *this, WTFMove(topOrigin), idbConnectionProxy(), socketProvider());
}
void ServiceWorkerThread::runEventLoop()
Modified: trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.h (256011 => 256012)
--- trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.h 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.h 2020-02-07 09:11:09 UTC (rev 256012)
@@ -74,7 +74,7 @@
void stopFetchEventMonitoring() { m_isHandlingFetchEvent = false; }
protected:
- Ref<WorkerGlobalScope> createWorkerGlobalScope(const URL&, Ref<SecurityOrigin>&&, const String& name, const String& identifier, const String& userAgent, bool isOnline, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, Ref<SecurityOrigin>&& topOrigin, MonotonicTime timeOrigin) final;
+ Ref<WorkerGlobalScope> createWorkerGlobalScope(const WorkerParameters&, Ref<SecurityOrigin>&&, Ref<SecurityOrigin>&& topOrigin) final;
void runEventLoop() override;
private:
Modified: trunk/Source/WebCore/worklets/WorkletGlobalScope.cpp (256011 => 256012)
--- trunk/Source/WebCore/worklets/WorkletGlobalScope.cpp 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/worklets/WorkletGlobalScope.cpp 2020-02-07 09:11:09 UTC (rev 256012)
@@ -166,5 +166,10 @@
m_document->addMessage(source, level, messageText, sourceURL, lineNumber, columnNumber, WTFMove(callStack), nullptr, requestIdentifier);
}
+ReferrerPolicy WorkletGlobalScope::referrerPolicy() const
+{
+ return ReferrerPolicy::NoReferrer;
+}
+
} // namespace WebCore
#endif
Modified: trunk/Source/WebCore/worklets/WorkletGlobalScope.h (256011 => 256012)
--- trunk/Source/WebCore/worklets/WorkletGlobalScope.h 2020-02-07 08:55:58 UTC (rev 256011)
+++ trunk/Source/WebCore/worklets/WorkletGlobalScope.h 2020-02-07 09:11:09 UTC (rev 256012)
@@ -65,6 +65,8 @@
void evaluate();
+ ReferrerPolicy referrerPolicy() const final;
+
using RefCounted::ref;
using RefCounted::deref;