Diff
Modified: trunk/LayoutTests/ChangeLog (223651 => 223652)
--- trunk/LayoutTests/ChangeLog 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/LayoutTests/ChangeLog 2017-10-19 03:29:51 UTC (rev 223652)
@@ -1,3 +1,16 @@
+2017-10-18 Chris Dumez <cdu...@apple.com>
+
+ Implement ServiceWorkerRegistration.scope / updateViaCache
+ https://bugs.webkit.org/show_bug.cgi?id=178497
+
+ Reviewed by Youenn Fablet.
+
+ Extend layout test coverage.
+
+ * http/tests/workers/service/basic-register-expected.txt:
+ * http/tests/workers/service/resources/basic-register.js:
+ (then):
+
2017-10-18 Youenn Fablet <you...@apple.com>
Add preliminary support for ServiceWorker Handle Fetch
Modified: trunk/LayoutTests/http/tests/workers/service/basic-register-expected.txt (223651 => 223652)
--- trunk/LayoutTests/http/tests/workers/service/basic-register-expected.txt 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/LayoutTests/http/tests/workers/service/basic-register-expected.txt 2017-10-19 03:29:51 UTC (rev 223652)
@@ -1,6 +1,8 @@
PASS: No service worker is initially registered for this origin
PASS: No service worker is initially registered for this origin in private session
Registered!
+PASS: registration object's scope is valid
+PASS: registration object's updateViaCache is valid
PASS: A service worker is now registered for this origin
PASS: No service worker is registered for this origin in private session
Registered!
Modified: trunk/LayoutTests/http/tests/workers/service/resources/basic-register.js (223651 => 223652)
--- trunk/LayoutTests/http/tests/workers/service/resources/basic-register.js 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/LayoutTests/http/tests/workers/service/resources/basic-register.js 2017-10-19 03:29:51 UTC (rev 223652)
@@ -30,10 +30,20 @@
testRunner.setPrivateBrowsingEnabled(false);
-navigator.serviceWorker.register("resources/empty-worker.js", { })
+navigator.serviceWorker.register("resources/empty-worker.js", { scope: "/test", updateViaCache: "none" })
.then(function(r) {
log("Registered!");
+ if (r.scope == "http://127.0.0.1:8000/test")
+ log("PASS: registration object's scope is valid");
+ else
+ log("FAIL: registration object's scope is invalid, got: " + r.scope);
+
+ if (r.updateViaCache == "none")
+ log("PASS: registration object's updateViaCache is valid");
+ else
+ log("FAIL: registration object's updateViaCache is invalid, got: " + r.updateViaCache);
+
if (internals.hasServiceWorkerRegisteredForOrigin(self.origin))
log("PASS: A service worker is now registered for this origin");
else
Modified: trunk/Source/WebCore/ChangeLog (223651 => 223652)
--- trunk/Source/WebCore/ChangeLog 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/ChangeLog 2017-10-19 03:29:51 UTC (rev 223652)
@@ -1,3 +1,45 @@
+2017-10-18 Chris Dumez <cdu...@apple.com>
+
+ Implement ServiceWorkerRegistration.scope / updateViaCache
+ https://bugs.webkit.org/show_bug.cgi?id=178497
+
+ Reviewed by Youenn Fablet.
+
+ Implement ServiceWorkerRegistration.scope / updateViaCache.
+
+ No new tests, updated existing test.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * workers/service/ServiceWorkerContainer.cpp:
+ (WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
+ * workers/service/ServiceWorkerContainer.h:
+ * workers/service/ServiceWorkerJob.cpp:
+ (WebCore::ServiceWorkerJob::resolvedWithRegistration):
+ * workers/service/ServiceWorkerJob.h:
+ * workers/service/ServiceWorkerJobClient.h:
+ * workers/service/ServiceWorkerRegistration.cpp:
+ (WebCore::ServiceWorkerRegistration::ServiceWorkerRegistration):
+ (WebCore::ServiceWorkerRegistration::scope const):
+ (WebCore::ServiceWorkerRegistration::updateViaCache const):
+ (WebCore::ServiceWorkerRegistration::update):
+ (WebCore::ServiceWorkerRegistration::unregister):
+ (WebCore::ServiceWorkerRegistration::scriptExecutionContext const):
+ (WebCore::ServiceWorkerRegistration::activeDOMObjectName const):
+ (WebCore::ServiceWorkerRegistration::canSuspendForDocumentSuspension const):
+ * workers/service/ServiceWorkerRegistration.h:
+ * workers/service/ServiceWorkerRegistration.idl:
+ * workers/service/ServiceWorkerRegistrationData.cpp:
+ (WebCore::ServiceWorkerRegistrationData::isolatedCopy const):
+ * workers/service/ServiceWorkerRegistrationData.h:
+ (WebCore::ServiceWorkerRegistrationData::encode const):
+ (WebCore::ServiceWorkerRegistrationData::decode):
+ * workers/service/server/SWClientConnection.cpp:
+ (WebCore::SWClientConnection::jobResolvedInServer):
+ * workers/service/server/SWClientConnection.h:
+ * workers/service/server/SWServerRegistration.cpp:
+ (WebCore::SWServerRegistration::scriptContextStarted):
+ (WebCore::SWServerRegistration::data const):
+
2017-10-18 Youenn Fablet <you...@apple.com>
Add preliminary support for ServiceWorker Handle Fetch
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (223651 => 223652)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2017-10-19 03:29:51 UTC (rev 223652)
@@ -2491,7 +2491,7 @@
51F175671F3EBC8300C74950 /* ServiceWorkerRegistration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F1754D1F3EBC0C00C74950 /* ServiceWorkerRegistration.cpp */; };
51F175681F3EBC8300C74950 /* ServiceWorkerRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F1754C1F3EBC0C00C74950 /* ServiceWorkerRegistration.h */; };
51F175691F3EBC8300C74950 /* ServiceWorkerRegistrationOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F1754A1F3EBC0C00C74950 /* ServiceWorkerRegistrationOptions.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 51F1756C1F3EBC8300C74950 /* ServiceWorkerUpdateViaCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F175471F3EBC0C00C74950 /* ServiceWorkerUpdateViaCache.h */; };
+ 51F1756C1F3EBC8300C74950 /* ServiceWorkerUpdateViaCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F175471F3EBC0C00C74950 /* ServiceWorkerUpdateViaCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
51F645621F45398F00B54DED /* ExceptionData.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F645601F45398B00B54DED /* ExceptionData.h */; settings = {ATTRIBUTES = (Private, ); }; };
51F645691F4539B900B54DED /* ServiceWorkerJobData.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F645661F45399F00B54DED /* ServiceWorkerJobData.h */; settings = {ATTRIBUTES = (Private, ); }; };
51F6456A1F4539C000B54DED /* ServiceWorkerJobType.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F645651F45399F00B54DED /* ServiceWorkerJobType.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -32708,9 +32708,8 @@
0F4966AA1DB40C4300A274BB /* JSDOMPoint.cpp in Sources */,
0F4966AC1DB40C4300A274BB /* JSDOMPointInit.cpp in Sources */,
0F4966AE1DB40C4300A274BB /* JSDOMPointReadOnly.cpp in Sources */,
- 41AF379D1F8DB1B500111C31 /* JSDOMPromise.cpp in Sources */,
- E172AF8F1811BC3700FBADB9 /* JSDOMPromiseDeferred.cpp in Sources */,
- 0FF3B9281EE3B6DE00B84144 /* JSDOMQuad.cpp in Sources */,
+ 41AF379D1F8DB1B500111C31 /* JSDOMPromise.cpp in Sources */,
+ 0FF3B9281EE3B6DE00B84144 /* JSDOMQuad.cpp in Sources */,
0FF3B92A1EE3B6DE00B84144 /* JSDOMQuadInit.cpp in Sources */,
0F4710BB1DB56BE8002DCEC3 /* JSDOMRect.cpp in Sources */,
0F4710BD1DB56BE8002DCEC3 /* JSDOMRectInit.cpp in Sources */,
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp (223651 => 223652)
--- trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp 2017-10-19 03:29:51 UTC (rev 223652)
@@ -167,7 +167,7 @@
jobDidFinish(job);
}
-void ServiceWorkerContainer::jobResolvedWithRegistration(ServiceWorkerJob& job, const ServiceWorkerRegistrationData& data)
+void ServiceWorkerContainer::jobResolvedWithRegistration(ServiceWorkerJob& job, ServiceWorkerRegistrationData&& data)
{
ScopeGuard guard([this, &job] {
jobDidFinish(job);
@@ -182,7 +182,7 @@
// FIXME: Implement proper selection of service workers.
context->setSelectedServiceWorkerIdentifier(data.identifier);
- auto registration = ServiceWorkerRegistration::create(*context, data);
+ auto registration = ServiceWorkerRegistration::create(*context, WTFMove(data));
job.promise().resolve<IDLInterface<ServiceWorkerRegistration>>(registration.get());
}
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h (223651 => 223652)
--- trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h 2017-10-19 03:29:51 UTC (rev 223652)
@@ -72,7 +72,7 @@
void scheduleJob(Ref<ServiceWorkerJob>&&);
void jobFailedWithException(ServiceWorkerJob&, const Exception&) final;
- void jobResolvedWithRegistration(ServiceWorkerJob&, const ServiceWorkerRegistrationData&) final;
+ void jobResolvedWithRegistration(ServiceWorkerJob&, ServiceWorkerRegistrationData&&) final;
void startScriptFetchForJob(ServiceWorkerJob&) final;
void jobFinishedLoadingScript(ServiceWorkerJob&, const String&) final;
void jobFailedLoadingScript(ServiceWorkerJob&, const ResourceError&) final;
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerJob.cpp (223651 => 223652)
--- trunk/Source/WebCore/workers/service/ServiceWorkerJob.cpp 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerJob.cpp 2017-10-19 03:29:51 UTC (rev 223652)
@@ -57,13 +57,13 @@
m_client->jobFailedWithException(*this, exception);
}
-void ServiceWorkerJob::resolvedWithRegistration(const ServiceWorkerRegistrationData& data)
+void ServiceWorkerJob::resolvedWithRegistration(ServiceWorkerRegistrationData&& data)
{
ASSERT(currentThread() == m_creationThread);
ASSERT(!m_completed);
m_completed = true;
- m_client->jobResolvedWithRegistration(*this, data);
+ m_client->jobResolvedWithRegistration(*this, WTFMove(data));
}
void ServiceWorkerJob::startScriptFetch()
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerJob.h (223651 => 223652)
--- trunk/Source/WebCore/workers/service/ServiceWorkerJob.h 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerJob.h 2017-10-19 03:29:51 UTC (rev 223652)
@@ -55,7 +55,7 @@
WEBCORE_EXPORT ~ServiceWorkerJob();
void failedWithException(const Exception&);
- void resolvedWithRegistration(const ServiceWorkerRegistrationData&);
+ void resolvedWithRegistration(ServiceWorkerRegistrationData&&);
void startScriptFetch();
ServiceWorkerJobData data() const { return m_jobData; }
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerJobClient.h (223651 => 223652)
--- trunk/Source/WebCore/workers/service/ServiceWorkerJobClient.h 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerJobClient.h 2017-10-19 03:29:51 UTC (rev 223652)
@@ -40,7 +40,7 @@
virtual ~ServiceWorkerJobClient() { };
virtual void jobFailedWithException(ServiceWorkerJob&, const Exception&) = 0;
- virtual void jobResolvedWithRegistration(ServiceWorkerJob&, const ServiceWorkerRegistrationData&) = 0;
+ virtual void jobResolvedWithRegistration(ServiceWorkerJob&, ServiceWorkerRegistrationData&&) = 0;
virtual void startScriptFetchForJob(ServiceWorkerJob&) = 0;
virtual void jobFinishedLoadingScript(ServiceWorkerJob&, const String&) = 0;
virtual void jobFailedLoadingScript(ServiceWorkerJob&, const ResourceError&) = 0;
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp (223651 => 223652)
--- trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp 2017-10-19 03:29:51 UTC (rev 223652)
@@ -30,9 +30,9 @@
namespace WebCore {
-ServiceWorkerRegistration::ServiceWorkerRegistration(ScriptExecutionContext& context, const ServiceWorkerRegistrationData& registrationData)
+ServiceWorkerRegistration::ServiceWorkerRegistration(ScriptExecutionContext& context, ServiceWorkerRegistrationData&& registrationData)
: ActiveDOMObject(&context)
- , m_registrationData(registrationData)
+ , m_registrationData(WTFMove(registrationData))
{
suspendIfNeeded();
}
@@ -54,22 +54,22 @@
const String& ServiceWorkerRegistration::scope() const
{
- return emptyString();
+ return m_registrationData.scopeURL;
}
-ServiceWorkerRegistration::UpdateViaCache ServiceWorkerRegistration::updateViaCache() const
+ServiceWorkerUpdateViaCache ServiceWorkerRegistration::updateViaCache() const
{
- return UpdateViaCache::Imports;
+ return m_registrationData.updateViaCache;
}
void ServiceWorkerRegistration::update(Ref<DeferredPromise>&& promise)
{
- promise->reject(Exception(UnknownError, ASCIILiteral("ServiceWorkerRegistration::update not yet implemented")));
+ promise->reject(Exception(NotSupportedError, ASCIILiteral("ServiceWorkerRegistration::update not yet implemented")));
}
void ServiceWorkerRegistration::unregister(Ref<DeferredPromise>&& promise)
{
- promise->reject(Exception(UnknownError, ASCIILiteral("ServiceWorkerRegistration::unregister not yet implemented")));
+ promise->reject(Exception(NotSupportedError, ASCIILiteral("ServiceWorkerRegistration::unregister not yet implemented")));
}
EventTargetInterface ServiceWorkerRegistration::eventTargetInterface() const
@@ -79,9 +79,19 @@
ScriptExecutionContext* ServiceWorkerRegistration::scriptExecutionContext() const
{
- return nullptr;
+ return ActiveDOMObject::scriptExecutionContext();
}
+const char* ServiceWorkerRegistration::activeDOMObjectName() const
+{
+ return "ServiceWorkerRegistration";
+}
+
+bool ServiceWorkerRegistration::canSuspendForDocumentSuspension() const
+{
+ return !hasPendingActivity();
+}
+
} // namespace WebCore
#endif // ENABLE(SERVICE_WORKER)
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.h (223651 => 223652)
--- trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.h 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.h 2017-10-19 03:29:51 UTC (rev 223652)
@@ -39,15 +39,9 @@
class ServiceWorkerRegistration final : public RefCounted<ServiceWorkerRegistration>, public EventTargetWithInlineData, public ActiveDOMObject {
public:
- enum class UpdateViaCache {
- Imports,
- All,
- None,
- };
-
- static Ref<ServiceWorkerRegistration> create(ScriptExecutionContext& context, const ServiceWorkerRegistrationData& data)
+ static Ref<ServiceWorkerRegistration> create(ScriptExecutionContext& context, ServiceWorkerRegistrationData&& data)
{
- return adoptRef(*new ServiceWorkerRegistration(context, data));
+ return adoptRef(*new ServiceWorkerRegistration(context, WTFMove(data)));
}
virtual ~ServiceWorkerRegistration() = default;
@@ -57,7 +51,7 @@
ServiceWorker* active();
const String& scope() const;
- UpdateViaCache updateViaCache() const;
+ ServiceWorkerUpdateViaCache updateViaCache() const;
void update(Ref<DeferredPromise>&&);
void unregister(Ref<DeferredPromise>&&);
@@ -66,15 +60,15 @@
using RefCounted::deref;
private:
- ServiceWorkerRegistration(ScriptExecutionContext&, const ServiceWorkerRegistrationData&);
+ ServiceWorkerRegistration(ScriptExecutionContext&, ServiceWorkerRegistrationData&&);
- virtual EventTargetInterface eventTargetInterface() const;
- virtual ScriptExecutionContext* scriptExecutionContext() const;
+ EventTargetInterface eventTargetInterface() const final;
+ ScriptExecutionContext* scriptExecutionContext() const final;
void refEventTarget() final { ref(); }
void derefEventTarget() final { deref(); }
- const char* activeDOMObjectName() const { return "ServiceWorkerRegistration"; }
- bool canSuspendForDocumentSuspension() const { return false; }
+ const char* activeDOMObjectName() const final;
+ bool canSuspendForDocumentSuspension() const final;
ServiceWorkerRegistrationData m_registrationData;
};
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.idl (223651 => 223652)
--- trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.idl 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.idl 2017-10-19 03:29:51 UTC (rev 223652)
@@ -45,9 +45,3 @@
// event
attribute EventHandler onupdatefound;
};
-
-enum ServiceWorkerUpdateViaCache {
- "imports",
- "all",
- "none"
-};
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationData.cpp (223651 => 223652)
--- trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationData.cpp 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationData.cpp 2017-10-19 03:29:51 UTC (rev 223652)
@@ -32,10 +32,12 @@
ServiceWorkerRegistrationData ServiceWorkerRegistrationData::isolatedCopy() const
{
- ServiceWorkerRegistrationData result;
- result.key = key.isolatedCopy();
- result.identifier = identifier;
- return result;
+ return {
+ key.isolatedCopy(),
+ identifier,
+ scopeURL.isolatedCopy(),
+ updateViaCache
+ };
}
} // namespace WTF
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationData.h (223651 => 223652)
--- trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationData.h 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationData.h 2017-10-19 03:29:51 UTC (rev 223652)
@@ -31,9 +31,13 @@
namespace WebCore {
+enum class ServiceWorkerUpdateViaCache;
+
struct ServiceWorkerRegistrationData {
ServiceWorkerRegistrationKey key;
uint64_t identifier;
+ URL scopeURL;
+ ServiceWorkerUpdateViaCache updateViaCache;
ServiceWorkerRegistrationData isolatedCopy() const;
@@ -45,7 +49,7 @@
template<class Encoder>
void ServiceWorkerRegistrationData::encode(Encoder& encoder) const
{
- encoder << key << identifier;
+ encoder << key << identifier << scopeURL << updateViaCache;
}
template<class Decoder>
@@ -60,8 +64,18 @@
decoder >> identifier;
if (!identifier)
return std::nullopt;
-
- return {{ WTFMove(*key), WTFMove(*identifier) }};
+
+ std::optional<URL> scopeURL;
+ decoder >> scopeURL;
+ if (!scopeURL)
+ return std::nullopt;
+
+ std::optional<ServiceWorkerUpdateViaCache> updateViaCache;
+ decoder >> updateViaCache;
+ if (!updateViaCache)
+ return std::nullopt;
+
+ return { { WTFMove(*key), WTFMove(*identifier), WTFMove(*scopeURL), WTFMove(*updateViaCache) } };
}
} // namespace WTF
Modified: trunk/Source/WebCore/workers/service/server/SWClientConnection.cpp (223651 => 223652)
--- trunk/Source/WebCore/workers/service/server/SWClientConnection.cpp 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/server/SWClientConnection.cpp 2017-10-19 03:29:51 UTC (rev 223652)
@@ -75,7 +75,7 @@
job->failedWithException(exceptionData.toException());
}
-void SWClientConnection::jobResolvedInServer(uint64_t jobIdentifier, const ServiceWorkerRegistrationData& registrationData)
+void SWClientConnection::jobResolvedInServer(uint64_t jobIdentifier, ServiceWorkerRegistrationData&& registrationData)
{
auto job = m_scheduledJobs.take(jobIdentifier);
if (!job) {
@@ -83,7 +83,7 @@
return;
}
- job->resolvedWithRegistration(registrationData);
+ job->resolvedWithRegistration(WTFMove(registrationData));
}
void SWClientConnection::startScriptFetchForServer(uint64_t jobIdentifier)
Modified: trunk/Source/WebCore/workers/service/server/SWClientConnection.h (223651 => 223652)
--- trunk/Source/WebCore/workers/service/server/SWClientConnection.h 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/server/SWClientConnection.h 2017-10-19 03:29:51 UTC (rev 223652)
@@ -54,7 +54,7 @@
protected:
WEBCORE_EXPORT void jobRejectedInServer(uint64_t jobIdentifier, const ExceptionData&);
- WEBCORE_EXPORT void jobResolvedInServer(uint64_t jobIdentifier, const ServiceWorkerRegistrationData&);
+ WEBCORE_EXPORT void jobResolvedInServer(uint64_t jobIdentifier, ServiceWorkerRegistrationData&&);
WEBCORE_EXPORT void startScriptFetchForServer(uint64_t jobIdentifier);
private:
Modified: trunk/Source/WebCore/workers/service/server/SWServerRegistration.cpp (223651 => 223652)
--- trunk/Source/WebCore/workers/service/server/SWServerRegistration.cpp 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebCore/workers/service/server/SWServerRegistration.cpp 2017-10-19 03:29:51 UTC (rev 223652)
@@ -34,6 +34,7 @@
#include "SecurityOrigin.h"
#include "ServiceWorkerFetchResult.h"
#include "ServiceWorkerRegistrationData.h"
+#include "ServiceWorkerUpdateViaCache.h"
#include "WorkerType.h"
namespace WebCore {
@@ -96,8 +97,7 @@
void SWServerRegistration::scriptContextStarted(SWServer::Connection&, uint64_t identifier, const String& workerID)
{
UNUSED_PARAM(workerID);
-
- resolveCurrentJob(ServiceWorkerRegistrationData { m_registrationKey, identifier });
+ resolveCurrentJob(ServiceWorkerRegistrationData { m_registrationKey, identifier, m_scopeURL, m_updateViaCache.value_or(ServiceWorkerUpdateViaCache::Imports) });
}
void SWServerRegistration::startNextJob()
@@ -249,7 +249,7 @@
ServiceWorkerRegistrationData SWServerRegistration::data() const
{
- return { m_registrationKey, identifier() };
+ return { m_registrationKey, identifier(), m_scopeURL, m_updateViaCache.value_or(ServiceWorkerUpdateViaCache::Imports) };
}
Modified: trunk/Source/WebKit/ChangeLog (223651 => 223652)
--- trunk/Source/WebKit/ChangeLog 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebKit/ChangeLog 2017-10-19 03:29:51 UTC (rev 223652)
@@ -1,3 +1,13 @@
+2017-10-18 Chris Dumez <cdu...@apple.com>
+
+ Implement ServiceWorkerRegistration.scope / updateViaCache
+ https://bugs.webkit.org/show_bug.cgi?id=178497
+
+ Reviewed by Youenn Fablet.
+
+ * Shared/WebCoreArgumentCoders.h:
+ * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
+
2017-10-18 Youenn Fablet <you...@apple.com>
Add preliminary support for ServiceWorker Handle Fetch
Modified: trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h (223651 => 223652)
--- trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h 2017-10-19 02:26:07 UTC (rev 223651)
+++ trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h 2017-10-19 03:29:51 UTC (rev 223652)
@@ -39,6 +39,7 @@
#include <WebCore/PaymentHeaders.h>
#include <WebCore/RealtimeMediaSource.h>
#include <WebCore/ScrollSnapOffsetsInfo.h>
+#include <WebCore/ServiceWorkerUpdateViaCache.h>
#include <WebCore/StoredCredentialsPolicy.h>
namespace WTF {
@@ -784,4 +785,15 @@
>;
};
+#if ENABLE(SERVICE_WORKER)
+template <> struct EnumTraits<WebCore::ServiceWorkerUpdateViaCache> {
+ using values = EnumValues<
+ WebCore::ServiceWorkerUpdateViaCache,
+ WebCore::ServiceWorkerUpdateViaCache::Imports,
+ WebCore::ServiceWorkerUpdateViaCache::All,
+ WebCore::ServiceWorkerUpdateViaCache::None
+ >;
+};
+#endif
+
} // namespace WTF