Diff
Modified: trunk/Source/WebCore/ChangeLog (264723 => 264724)
--- trunk/Source/WebCore/ChangeLog 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/ChangeLog 2020-07-22 20:17:52 UTC (rev 264724)
@@ -1,3 +1,67 @@
+2020-07-22 Alex Christensen <[email protected]>
+
+ Safari does not present CertificateInfo for service-worker served documents
+ https://bugs.webkit.org/show_bug.cgi?id=206403
+ <rdar://problem/65410875>
+
+ Reviewed by Darin Adler and Youenn Fablet.
+
+ When loading a service worker _javascript_ resource, we need to tell the network process to include certificate info with the response.
+ We then pass that response to the ServiceWorkerContextData for storage. When the service worker generates responses to fetches, use that
+ certificate chain for WKWebView.serverTrust when the page is committed.
+
+ Covered by updating a test I wrote in r264687.
+
+ * platform/network/ResourceResponseBase.h:
+ (WebCore::ResourceResponseBase::setCertificateInfo):
+ * platform/network/cf/CertificateInfo.h:
+ * platform/network/cf/CertificateInfoCFNet.cpp:
+ (WebCore::CertificateInfo::isolatedCopy const):
+ * platform/network/soup/CertificateInfo.h:
+ (WebCore::CertificateInfo::isolatedCopy const):
+ * workers/Worker.cpp:
+ (WebCore::Worker::create):
+ * workers/WorkerScriptLoader.cpp:
+ (WebCore::WorkerScriptLoader::loadAsynchronously):
+ (WebCore::WorkerScriptLoader::didReceiveResponse):
+ * workers/WorkerScriptLoader.h:
+ (WebCore::WorkerScriptLoader::certificateInfo const):
+ * workers/service/ServiceWorkerContainer.cpp:
+ (WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
+ * workers/service/ServiceWorkerContainer.h:
+ * workers/service/ServiceWorkerContextData.cpp:
+ (WebCore::ServiceWorkerContextData::isolatedCopy const):
+ * workers/service/ServiceWorkerContextData.h:
+ (WebCore::ServiceWorkerContextData::encode const):
+ (WebCore::ServiceWorkerContextData::decode):
+ * workers/service/ServiceWorkerFetchResult.h:
+ (WebCore::ServiceWorkerFetchResult::isolatedCopy const):
+ (WebCore::serviceWorkerFetchError):
+ (WebCore::ServiceWorkerFetchResult::encode const):
+ (WebCore::ServiceWorkerFetchResult::decode):
+ * workers/service/ServiceWorkerGlobalScope.h:
+ * workers/service/ServiceWorkerJob.cpp:
+ (WebCore::ServiceWorkerJob::fetchScriptWithContext):
+ (WebCore::ServiceWorkerJob::notifyFinished):
+ * workers/service/ServiceWorkerJobClient.h:
+ * workers/service/context/ServiceWorkerFetch.cpp:
+ (WebCore::ServiceWorkerFetch::processResponse):
+ (WebCore::ServiceWorkerFetch::dispatchFetchEvent):
+ * workers/service/server/RegistrationDatabase.cpp:
+ (WebCore::RegistrationDatabase::importRecords):
+ * workers/service/server/SWServer.cpp:
+ (WebCore::SWServer::addRegistrationFromStore):
+ Also fix a possible use-after-move bug, depending on parameter evaluation order which is undefined behavior.
+ (WebCore::SWServer::updateWorker):
+ (WebCore::SWServer::installContextData):
+ * workers/service/server/SWServer.h:
+ * workers/service/server/SWServerJobQueue.cpp:
+ (WebCore::SWServerJobQueue::scriptFetchFinished):
+ * workers/service/server/SWServerWorker.cpp:
+ (WebCore::SWServerWorker::SWServerWorker):
+ (WebCore::SWServerWorker::contextData const):
+ * workers/service/server/SWServerWorker.h:
+
2020-07-22 David Kilzer <[email protected]>
Unreviewed build fix after r264710, r264719, r264721: use more HAVE_AVPLAYER_VIDEORANGEOVERRIDE.
Modified: trunk/Source/WebCore/platform/network/ResourceResponseBase.h (264723 => 264724)
--- trunk/Source/WebCore/platform/network/ResourceResponseBase.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/platform/network/ResourceResponseBase.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -136,6 +136,7 @@
WEBCORE_EXPORT static String sanitizeSuggestedFilename(const String&);
WEBCORE_EXPORT void includeCertificateInfo() const;
+ void setCertificateInfo(CertificateInfo&& info) { m_certificateInfo = WTFMove(info); }
const Optional<CertificateInfo>& certificateInfo() const { return m_certificateInfo; };
bool usedLegacyTLS() const { return m_usedLegacyTLS == UsedLegacyTLS::Yes; }
void setUsedLegacyTLS(UsedLegacyTLS used) { m_usedLegacyTLS = used; }
Modified: trunk/Source/WebCore/platform/network/cf/CertificateInfo.h (264723 => 264724)
--- trunk/Source/WebCore/platform/network/cf/CertificateInfo.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/platform/network/cf/CertificateInfo.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -69,6 +69,8 @@
{
}
+ CertificateInfo isolatedCopy() const { return *this; }
+
WEBCORE_EXPORT CFArrayRef certificateChain() const;
WEBCORE_EXPORT Type type() const;
Modified: trunk/Source/WebCore/platform/network/soup/CertificateInfo.h (264723 => 264724)
--- trunk/Source/WebCore/platform/network/soup/CertificateInfo.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/platform/network/soup/CertificateInfo.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -48,6 +48,8 @@
explicit CertificateInfo(GTlsCertificate*, GTlsCertificateFlags);
WEBCORE_EXPORT ~CertificateInfo();
+ CertificateInfo isolatedCopy() const { notImplemented(); return { }; }
+
GTlsCertificate* certificate() const { return m_certificate.get(); }
void setCertificate(GTlsCertificate* certificate) { m_certificate = certificate; }
GTlsCertificateFlags tlsErrors() const { return m_tlsErrors; }
Modified: trunk/Source/WebCore/workers/WorkerScriptLoader.cpp (264723 => 264724)
--- trunk/Source/WebCore/workers/WorkerScriptLoader.cpp 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/WorkerScriptLoader.cpp 2020-07-22 20:17:52 UTC (rev 264724)
@@ -127,6 +127,8 @@
options.credentials = FetchOptions::Credentials::SameOrigin;
options.sendLoadCallbacks = SendCallbackPolicy::SendCallbacks;
options.contentSecurityPolicyEnforcement = contentSecurityPolicyEnforcement;
+ if (fetchOptions.destination == FetchOptions::Destination::Serviceworker)
+ options.certificateInfoPolicy = CertificateInfoPolicy::IncludeCertificateInfo;
// A service worker job can be executed from a worker context or a document context.
options.serviceWorkersMode = serviceWorkerMode;
#if ENABLE(SERVICE_WORKER)
@@ -180,6 +182,7 @@
}
m_responseURL = response.url();
+ m_certificateInfo = response.certificateInfo() ? *response.certificateInfo() : CertificateInfo();
m_responseMIMEType = response.mimeType();
m_responseEncoding = response.textEncodingName();
m_contentSecurityPolicy = ContentSecurityPolicyResponseHeaders { response };
Modified: trunk/Source/WebCore/workers/WorkerScriptLoader.h (264723 => 264724)
--- trunk/Source/WebCore/workers/WorkerScriptLoader.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/WorkerScriptLoader.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -46,6 +46,7 @@
class ScriptExecutionContext;
class TextResourceDecoder;
class WorkerScriptLoaderClient;
+enum class CertificateInfoPolicy : uint8_t;
class WorkerScriptLoader : public RefCounted<WorkerScriptLoader>, public ThreadableLoaderClient {
WTF_MAKE_FAST_ALLOCATED;
@@ -65,6 +66,7 @@
const String& referrerPolicy() const { return m_referrerPolicy; }
const URL& url() const { return m_url; }
const URL& responseURL() const;
+ const CertificateInfo& certificateInfo() const { return m_certificateInfo; }
const String& responseMIMEType() const { return m_responseMIMEType; }
bool failed() const { return m_failed; }
unsigned long identifier() const { return m_identifier; }
@@ -96,6 +98,7 @@
StringBuilder m_script;
URL m_url;
URL m_responseURL;
+ CertificateInfo m_certificateInfo;
String m_responseMIMEType;
FetchOptions::Destination m_destination;
ContentSecurityPolicyResponseHeaders m_contentSecurityPolicy;
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp (264723 => 264724)
--- trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp 2020-07-22 20:17:52 UTC (rev 264724)
@@ -469,7 +469,7 @@
job.fetchScriptWithContext(*context, cachePolicy);
}
-void ServiceWorkerContainer::jobFinishedLoadingScript(ServiceWorkerJob& job, const String& script, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicy, const String& referrerPolicy)
+void ServiceWorkerContainer::jobFinishedLoadingScript(ServiceWorkerJob& job, const String& script, const CertificateInfo& certificateInfo, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicy, const String& referrerPolicy)
{
#ifndef NDEBUG
ASSERT(m_creationThread.ptr() == &Thread::current());
@@ -477,7 +477,7 @@
CONTAINER_RELEASE_LOG_IF_ALLOWED("jobFinishedLoadingScript: Successfuly finished fetching script for job %" PRIu64, job.identifier().toUInt64());
- ensureSWClientConnection().finishFetchingScriptInServer({ job.data().identifier(), job.data().registrationKey(), script, contentSecurityPolicy, referrerPolicy, { } });
+ ensureSWClientConnection().finishFetchingScriptInServer(ServiceWorkerFetchResult { job.data().identifier(), job.data().registrationKey(), script, certificateInfo, contentSecurityPolicy, referrerPolicy, { } });
}
void ServiceWorkerContainer::jobFailedLoadingScript(ServiceWorkerJob& job, const ResourceError& error, Exception&& exception)
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h (264723 => 264724)
--- trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -101,7 +101,7 @@
void jobResolvedWithRegistration(ServiceWorkerJob&, ServiceWorkerRegistrationData&&, ShouldNotifyWhenResolved) final;
void jobResolvedWithUnregistrationResult(ServiceWorkerJob&, bool unregistrationResult) final;
void startScriptFetchForJob(ServiceWorkerJob&, FetchOptions::Cache) final;
- void jobFinishedLoadingScript(ServiceWorkerJob&, const String& script, const ContentSecurityPolicyResponseHeaders&, const String& referrerPolicy) final;
+ void jobFinishedLoadingScript(ServiceWorkerJob&, const String& script, const CertificateInfo&, const ContentSecurityPolicyResponseHeaders&, const String& referrerPolicy) final;
void jobFailedLoadingScript(ServiceWorkerJob&, const ResourceError&, Exception&&) final;
void notifyFailedFetchingScript(ServiceWorkerJob&, const ResourceError&);
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerContextData.cpp (264723 => 264724)
--- trunk/Source/WebCore/workers/service/ServiceWorkerContextData.cpp 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerContextData.cpp 2020-07-22 20:17:52 UTC (rev 264724)
@@ -33,7 +33,19 @@
ServiceWorkerContextData ServiceWorkerContextData::isolatedCopy() const
{
- return { jobDataIdentifier, registration.isolatedCopy(), serviceWorkerIdentifier, script.isolatedCopy(), contentSecurityPolicy.isolatedCopy(), referrerPolicy.isolatedCopy(), scriptURL.isolatedCopy(), workerType, loadedFromDisk, crossThreadCopy(scriptResourceMap) };
+ return {
+ jobDataIdentifier,
+ registration.isolatedCopy(),
+ serviceWorkerIdentifier,
+ script.isolatedCopy(),
+ certificateInfo.isolatedCopy(),
+ contentSecurityPolicy.isolatedCopy(),
+ referrerPolicy.isolatedCopy(),
+ scriptURL.isolatedCopy(),
+ workerType,
+ loadedFromDisk,
+ crossThreadCopy(scriptResourceMap)
+ };
}
} // namespace WebCore
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerContextData.h (264723 => 264724)
--- trunk/Source/WebCore/workers/service/ServiceWorkerContextData.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerContextData.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -25,6 +25,7 @@
#pragma once
+#include "CertificateInfo.h"
#include "ContentSecurityPolicyResponseHeaders.h"
#include "ServiceWorkerIdentifier.h"
#include "ServiceWorkerJobDataIdentifier.h"
@@ -80,6 +81,7 @@
ServiceWorkerRegistrationData registration;
ServiceWorkerIdentifier serviceWorkerIdentifier;
String script;
+ CertificateInfo certificateInfo;
ContentSecurityPolicyResponseHeaders contentSecurityPolicy;
String referrerPolicy;
URL scriptURL;
@@ -98,6 +100,7 @@
{
encoder << jobDataIdentifier << registration << serviceWorkerIdentifier << script << contentSecurityPolicy << referrerPolicy << scriptURL << workerType << loadedFromDisk;
encoder << scriptResourceMap;
+ encoder << certificateInfo;
}
template<class Decoder>
@@ -145,7 +148,24 @@
if (!decoder.decode(scriptResourceMap))
return WTF::nullopt;
- return {{ WTFMove(*jobDataIdentifier), WTFMove(*registration), WTFMove(*serviceWorkerIdentifier), WTFMove(script), WTFMove(contentSecurityPolicy), WTFMove(referrerPolicy), WTFMove(scriptURL), workerType, loadedFromDisk, WTFMove(scriptResourceMap) }};
+ Optional<CertificateInfo> certificateInfo;
+ decoder >> certificateInfo;
+ if (!certificateInfo)
+ return WTF::nullopt;
+
+ return {{
+ WTFMove(*jobDataIdentifier),
+ WTFMove(*registration),
+ WTFMove(*serviceWorkerIdentifier),
+ WTFMove(script),
+ WTFMove(*certificateInfo),
+ WTFMove(contentSecurityPolicy),
+ WTFMove(referrerPolicy),
+ WTFMove(scriptURL),
+ workerType,
+ loadedFromDisk,
+ WTFMove(scriptResourceMap)
+ }};
}
} // namespace WebCore
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerFetchResult.h (264723 => 264724)
--- trunk/Source/WebCore/workers/service/ServiceWorkerFetchResult.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerFetchResult.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -38,11 +38,12 @@
ServiceWorkerJobDataIdentifier jobDataIdentifier;
ServiceWorkerRegistrationKey registrationKey;
String script;
+ CertificateInfo certificateInfo;
ContentSecurityPolicyResponseHeaders contentSecurityPolicy;
String referrerPolicy;
ResourceError scriptError;
- ServiceWorkerFetchResult isolatedCopy() const { return { jobDataIdentifier, registrationKey.isolatedCopy(), script.isolatedCopy(), contentSecurityPolicy.isolatedCopy(), referrerPolicy.isolatedCopy(), scriptError.isolatedCopy() }; }
+ ServiceWorkerFetchResult isolatedCopy() const { return { jobDataIdentifier, registrationKey.isolatedCopy(), script.isolatedCopy(), certificateInfo.isolatedCopy(), contentSecurityPolicy.isolatedCopy(), referrerPolicy.isolatedCopy(), scriptError.isolatedCopy() }; }
template<class Encoder> void encode(Encoder&) const;
template<class Decoder> static WARN_UNUSED_RETURN bool decode(Decoder&, ServiceWorkerFetchResult&);
@@ -50,7 +51,7 @@
inline ServiceWorkerFetchResult serviceWorkerFetchError(ServiceWorkerJobDataIdentifier jobDataIdentifier, ServiceWorkerRegistrationKey&& registrationKey, ResourceError&& error)
{
- return { jobDataIdentifier, WTFMove(registrationKey), { }, { }, { }, WTFMove(error) };
+ return { jobDataIdentifier, WTFMove(registrationKey), { }, { }, { }, { }, WTFMove(error) };
}
template<class Encoder>
@@ -57,6 +58,7 @@
void ServiceWorkerFetchResult::encode(Encoder& encoder) const
{
encoder << jobDataIdentifier << registrationKey << script << contentSecurityPolicy << referrerPolicy << scriptError;
+ encoder << certificateInfo;
}
template<class Decoder>
@@ -81,6 +83,12 @@
return false;
if (!decoder.decode(result.scriptError))
return false;
+
+ Optional<CertificateInfo> certificateInfo;
+ decoder >> certificateInfo;
+ if (!certificateInfo)
+ return false;
+ result.certificateInfo = WTFMove(*certificateInfo);
return true;
}
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.h (264723 => 264724)
--- trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -68,6 +68,8 @@
const ServiceWorkerContextData::ImportedScript* scriptResource(const URL&) const;
void setScriptResource(const URL&, ServiceWorkerContextData::ImportedScript&&);
+ const CertificateInfo& certificateInfo() const { return m_contextData.certificateInfo; }
+
private:
ServiceWorkerGlobalScope(const ServiceWorkerContextData&, const WorkerParameters&, Ref<SecurityOrigin>&&, ServiceWorkerThread&, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerJob.cpp (264723 => 264724)
--- trunk/Source/WebCore/workers/service/ServiceWorkerJob.cpp 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerJob.cpp 2020-07-22 20:17:52 UTC (rev 264724)
@@ -163,7 +163,7 @@
auto scriptLoader = WTFMove(m_scriptLoader);
if (!scriptLoader->failed()) {
- m_client.jobFinishedLoadingScript(*this, scriptLoader->script(), scriptLoader->contentSecurityPolicy(), scriptLoader->referrerPolicy());
+ m_client.jobFinishedLoadingScript(*this, scriptLoader->script(), scriptLoader->certificateInfo(), scriptLoader->contentSecurityPolicy(), scriptLoader->referrerPolicy());
return;
}
Modified: trunk/Source/WebCore/workers/service/ServiceWorkerJobClient.h (264723 => 264724)
--- trunk/Source/WebCore/workers/service/ServiceWorkerJobClient.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerJobClient.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -49,7 +49,7 @@
virtual void jobResolvedWithRegistration(ServiceWorkerJob&, ServiceWorkerRegistrationData&&, ShouldNotifyWhenResolved) = 0;
virtual void jobResolvedWithUnregistrationResult(ServiceWorkerJob&, bool unregistrationResult) = 0;
virtual void startScriptFetchForJob(ServiceWorkerJob&, FetchOptions::Cache) = 0;
- virtual void jobFinishedLoadingScript(ServiceWorkerJob&, const String& script, const ContentSecurityPolicyResponseHeaders&, const String& referrerPolicy) = 0;
+ virtual void jobFinishedLoadingScript(ServiceWorkerJob&, const String& script, const CertificateInfo&, const ContentSecurityPolicyResponseHeaders&, const String& referrerPolicy) = 0;
virtual void jobFailedLoadingScript(ServiceWorkerJob&, const ResourceError&, Exception&&) = 0;
};
Modified: trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp (264723 => 264724)
--- trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp 2020-07-22 20:17:52 UTC (rev 264724)
@@ -65,7 +65,7 @@
return { };
}
-static void processResponse(Ref<Client>&& client, Expected<Ref<FetchResponse>, ResourceError>&& result, FetchOptions::Mode mode, FetchOptions::Redirect redirect, const URL& requestURL)
+static void processResponse(Ref<Client>&& client, Expected<Ref<FetchResponse>, ResourceError>&& result, FetchOptions::Mode mode, FetchOptions::Redirect redirect, const URL& requestURL, CertificateInfo&& certificateInfo)
{
if (!result.has_value()) {
client->didFail(result.error());
@@ -97,6 +97,9 @@
resourceResponse.setMimeType("text/html"_s);
resourceResponse.setTextEncodingName("UTF-8"_s);
}
+
+ if (!resourceResponse.certificateInfo())
+ resourceResponse.setCertificateInfo(WTFMove(certificateInfo));
}
// As per https://fetch.spec.whatwg.org/#main-fetch step 9, copy request's url list in response's url list if empty.
@@ -171,8 +174,10 @@
init.cancelable = true;
auto event = FetchEvent::create(eventNames().fetchEvent, WTFMove(init), Event::IsTrusted::Yes);
- event->onResponse([client, mode, redirect, requestURL] (auto&& result) mutable {
- processResponse(WTFMove(client), WTFMove(result), mode, redirect, requestURL);
+ CertificateInfo certificateInfo = globalScope.certificateInfo();
+
+ event->onResponse([client, mode, redirect, requestURL, certificateInfo = WTFMove(certificateInfo)] (auto&& result) mutable {
+ processResponse(WTFMove(client), WTFMove(result), mode, redirect, requestURL, WTFMove(certificateInfo));
});
globalScope.dispatchEvent(event);
Modified: trunk/Source/WebCore/workers/service/server/RegistrationDatabase.cpp (264723 => 264724)
--- trunk/Source/WebCore/workers/service/server/RegistrationDatabase.cpp 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/server/RegistrationDatabase.cpp 2020-07-22 20:17:52 UTC (rev 264724)
@@ -49,11 +49,25 @@
namespace WebCore {
-static const uint64_t schemaVersion = 4;
+static const uint64_t schemaVersion = 5;
static const String recordsTableSchema(const String& tableName)
{
- return makeString("CREATE TABLE ", tableName, " (key TEXT NOT NULL ON CONFLICT FAIL UNIQUE ON CONFLICT REPLACE, origin TEXT NOT NULL ON CONFLICT FAIL, scopeURL TEXT NOT NULL ON CONFLICT FAIL, topOrigin TEXT NOT NULL ON CONFLICT FAIL, lastUpdateCheckTime DOUBLE NOT NULL ON CONFLICT FAIL, updateViaCache TEXT NOT NULL ON CONFLICT FAIL, scriptURL TEXT NOT NULL ON CONFLICT FAIL, script TEXT NOT NULL ON CONFLICT FAIL, workerType TEXT NOT NULL ON CONFLICT FAIL, contentSecurityPolicy BLOB NOT NULL ON CONFLICT FAIL, referrerPolicy TEXT NOT NULL ON CONFLICT FAIL, scriptResourceMap BLOB NOT NULL ON CONFLICT FAIL)");
+ return makeString("CREATE TABLE ", tableName, " ("
+ "key TEXT NOT NULL ON CONFLICT FAIL UNIQUE ON CONFLICT REPLACE"
+ ", origin TEXT NOT NULL ON CONFLICT FAIL"
+ ", scopeURL TEXT NOT NULL ON CONFLICT FAIL"
+ ", topOrigin TEXT NOT NULL ON CONFLICT FAIL"
+ ", lastUpdateCheckTime DOUBLE NOT NULL ON CONFLICT FAIL"
+ ", updateViaCache TEXT NOT NULL ON CONFLICT FAIL"
+ ", scriptURL TEXT NOT NULL ON CONFLICT FAIL"
+ ", script TEXT NOT NULL ON CONFLICT FAIL"
+ ", workerType TEXT NOT NULL ON CONFLICT FAIL"
+ ", contentSecurityPolicy BLOB NOT NULL ON CONFLICT FAIL"
+ ", referrerPolicy TEXT NOT NULL ON CONFLICT FAIL"
+ ", scriptResourceMap BLOB NOT NULL ON CONFLICT FAIL"
+ ", certificateInfo BLOB NOT NULL ON CONFLICT FAIL"
+ ")");
}
static const String recordsTableSchema()
@@ -321,7 +335,7 @@
SQLiteTransaction transaction(*m_database);
transaction.begin();
- SQLiteStatement sql(*m_database, "INSERT INTO Records VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"_s);
+ SQLiteStatement sql(*m_database, "INSERT INTO Records VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"_s);
if (sql.prepare() != SQLITE_OK) {
RELEASE_LOG_ERROR(ServiceWorker, "Failed to prepare statement to store registration data into records table (%i) - %s", m_database->lastError(), m_database->lastErrorMsg());
return;
@@ -344,6 +358,9 @@
WTF::Persistence::Encoder scriptResourceMapEncoder;
scriptResourceMapEncoder << data.scriptResourceMap;
+ WTF::Persistence::Encoder certificateInfoEncoder;
+ certificateInfoEncoder << data.certificateInfo;
+
if (sql.bindText(1, data.registration.key.toDatabaseKey()) != SQLITE_OK
|| sql.bindText(2, data.registration.scopeURL.protocolHostAndPort()) != SQLITE_OK
|| sql.bindText(3, data.registration.scopeURL.path().toString()) != SQLITE_OK
@@ -356,6 +373,7 @@
|| sql.bindBlob(10, cspEncoder.buffer(), cspEncoder.bufferSize()) != SQLITE_OK
|| sql.bindText(11, data.referrerPolicy) != SQLITE_OK
|| sql.bindBlob(12, scriptResourceMapEncoder.buffer(), scriptResourceMapEncoder.bufferSize()) != SQLITE_OK
+ || sql.bindBlob(13, certificateInfoEncoder.buffer(), certificateInfoEncoder.bufferSize()) != SQLITE_OK
|| sql.step() != SQLITE_DONE) {
RELEASE_LOG_ERROR(ServiceWorker, "Failed to store registration data into records table (%i) - %s", m_database->lastError(), m_database->lastErrorMsg());
return;
@@ -412,6 +430,15 @@
continue;
}
+ Vector<uint8_t> certificateInfoData;
+ sql.getColumnBlobAsVector(12, certificateInfoData);
+ Optional<CertificateInfo> certificateInfo;
+
+ WTF::Persistence::Decoder certificateInfoDecoder(certificateInfoData.data(), certificateInfoData.size());
+ certificateInfoDecoder >> certificateInfo;
+ if (!certificateInfo)
+ continue;
+
// Validate the input for this registration.
// If any part of this input is invalid, let's skip this registration.
// FIXME: Should we return an error skipping *all* registrations?
@@ -422,7 +449,7 @@
auto registrationIdentifier = ServiceWorkerRegistrationIdentifier::generate();
auto serviceWorkerData = ServiceWorkerData { workerIdentifier, scriptURL, ServiceWorkerState::Activated, *workerType, registrationIdentifier };
auto registration = ServiceWorkerRegistrationData { WTFMove(*key), registrationIdentifier, WTFMove(scopeURL), *updateViaCache, lastUpdateCheckTime, WTF::nullopt, WTF::nullopt, WTFMove(serviceWorkerData) };
- auto contextData = ServiceWorkerContextData { WTF::nullopt, WTFMove(registration), workerIdentifier, WTFMove(script), WTFMove(*contentSecurityPolicy), WTFMove(referrerPolicy), WTFMove(scriptURL), *workerType, true, WTFMove(*scriptResourceMap) };
+ auto contextData = ServiceWorkerContextData { WTF::nullopt, WTFMove(registration), workerIdentifier, WTFMove(script), WTFMove(*certificateInfo), WTFMove(*contentSecurityPolicy), WTFMove(referrerPolicy), WTFMove(scriptURL), *workerType, true, WTFMove(*scriptResourceMap) };
callOnMainThread([protectedThis = makeRef(*this), contextData = contextData.isolatedCopy()]() mutable {
protectedThis->addRegistrationToStore(WTFMove(contextData));
Modified: trunk/Source/WebCore/workers/service/server/SWServer.cpp (264723 => 264724)
--- trunk/Source/WebCore/workers/service/server/SWServer.cpp 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/server/SWServer.cpp 2020-07-22 20:17:52 UTC (rev 264724)
@@ -158,7 +158,8 @@
// Pages should not have been able to make a new registration to this key while the import was still taking place.
ASSERT(!m_scopeToRegistrationMap.contains(data.registration.key));
- validateRegistrationDomain(WebCore::RegistrableDomain(data.scriptURL), [this, weakThis = makeWeakPtr(this), data = "" (bool isValid) mutable {
+ auto registrableDomain = WebCore::RegistrableDomain(data.scriptURL);
+ validateRegistrationDomain(registrableDomain, [this, weakThis = makeWeakPtr(this), data = "" (bool isValid) mutable {
if (!weakThis)
return;
if (m_hasServiceWorkerEntitlement || isValid) {
@@ -167,7 +168,7 @@
auto registrationPtr = registration.get();
addRegistration(WTFMove(registration));
- auto worker = SWServerWorker::create(*this, *registrationPtr, data.scriptURL, data.script, data.contentSecurityPolicy, WTFMove(data.referrerPolicy), data.workerType, data.serviceWorkerIdentifier, WTFMove(data.scriptResourceMap));
+ auto worker = SWServerWorker::create(*this, *registrationPtr, data.scriptURL, data.script, data.certificateInfo, data.contentSecurityPolicy, WTFMove(data.referrerPolicy), data.workerType, data.serviceWorkerIdentifier, WTFMove(data.scriptResourceMap));
registrationPtr->updateRegistrationState(ServiceWorkerRegistrationState::Active, worker.ptr());
worker->setState(ServiceWorkerState::Activated);
}
@@ -629,9 +630,9 @@
registration->removeClientServiceWorkerRegistration(connection.identifier());
}
-void SWServer::updateWorker(const ServiceWorkerJobDataIdentifier& jobDataIdentifier, SWServerRegistration& registration, const URL& url, const String& script, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicy, const String& referrerPolicy, WorkerType type, HashMap<URL, ServiceWorkerContextData::ImportedScript>&& scriptResourceMap)
+void SWServer::updateWorker(const ServiceWorkerJobDataIdentifier& jobDataIdentifier, SWServerRegistration& registration, const URL& url, const String& script, const CertificateInfo& certificateInfo, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicy, const String& referrerPolicy, WorkerType type, HashMap<URL, ServiceWorkerContextData::ImportedScript>&& scriptResourceMap)
{
- tryInstallContextData({ jobDataIdentifier, registration.data(), ServiceWorkerIdentifier::generate(), script, contentSecurityPolicy, referrerPolicy, url, type, false, WTFMove(scriptResourceMap) });
+ tryInstallContextData(ServiceWorkerContextData { jobDataIdentifier, registration.data(), ServiceWorkerIdentifier::generate(), script, certificateInfo, contentSecurityPolicy, referrerPolicy, url, type, false, WTFMove(scriptResourceMap) });
}
void SWServer::tryInstallContextData(ServiceWorkerContextData&& data)
@@ -679,7 +680,7 @@
}
auto* registration = m_scopeToRegistrationMap.get(data.registration.key).get();
- auto worker = SWServerWorker::create(*this, *registration, data.scriptURL, data.script, data.contentSecurityPolicy, String { data.referrerPolicy }, data.workerType, data.serviceWorkerIdentifier, HashMap<URL, ServiceWorkerContextData::ImportedScript> { data.scriptResourceMap });
+ auto worker = SWServerWorker::create(*this, *registration, data.scriptURL, data.script, data.certificateInfo, data.contentSecurityPolicy, String { data.referrerPolicy }, data.workerType, data.serviceWorkerIdentifier, HashMap<URL, ServiceWorkerContextData::ImportedScript> { data.scriptResourceMap });
auto* connection = worker->contextConnection();
ASSERT(connection);
Modified: trunk/Source/WebCore/workers/service/server/SWServer.h (264723 => 264724)
--- trunk/Source/WebCore/workers/service/server/SWServer.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/server/SWServer.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -151,7 +151,7 @@
void resolveUnregistrationJob(const ServiceWorkerJobData&, const ServiceWorkerRegistrationKey&, bool unregistrationResult);
void startScriptFetch(const ServiceWorkerJobData&, bool shouldRefreshCache);
- void updateWorker(const ServiceWorkerJobDataIdentifier&, SWServerRegistration&, const URL&, const String& script, const ContentSecurityPolicyResponseHeaders&, const String& referrerPolicy, WorkerType, HashMap<URL, ServiceWorkerContextData::ImportedScript>&&);
+ void updateWorker(const ServiceWorkerJobDataIdentifier&, SWServerRegistration&, const URL&, const String& script, const CertificateInfo&, const ContentSecurityPolicyResponseHeaders&, const String& referrerPolicy, WorkerType, HashMap<URL, ServiceWorkerContextData::ImportedScript>&&);
void fireInstallEvent(SWServerWorker&);
void fireActivateEvent(SWServerWorker&);
Modified: trunk/Source/WebCore/workers/service/server/SWServerJobQueue.cpp (264723 => 264724)
--- trunk/Source/WebCore/workers/service/server/SWServerJobQueue.cpp 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/server/SWServerJobQueue.cpp 2020-07-22 20:17:52 UTC (rev 264724)
@@ -102,7 +102,7 @@
// FIXME: Update all the imported scripts as per spec. For now, we just do as if there is none.
// FIXME: Support the proper worker type (classic vs module)
- m_server.updateWorker(job.identifier(), *registration, job.scriptURL, result.script, result.contentSecurityPolicy, result.referrerPolicy, WorkerType::Classic, { });
+ m_server.updateWorker(job.identifier(), *registration, job.scriptURL, result.script, result.certificateInfo, result.contentSecurityPolicy, result.referrerPolicy, WorkerType::Classic, { });
}
// https://w3c.github.io/ServiceWorker/#update-algorithm
Modified: trunk/Source/WebCore/workers/service/server/SWServerWorker.cpp (264723 => 264724)
--- trunk/Source/WebCore/workers/service/server/SWServerWorker.cpp 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/server/SWServerWorker.cpp 2020-07-22 20:17:52 UTC (rev 264724)
@@ -49,12 +49,13 @@
}
// FIXME: Use r-value references for script and contentSecurityPolicy
-SWServerWorker::SWServerWorker(SWServer& server, SWServerRegistration& registration, const URL& scriptURL, const String& script, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicy, String&& referrerPolicy, WorkerType type, ServiceWorkerIdentifier identifier, HashMap<URL, ServiceWorkerContextData::ImportedScript>&& scriptResourceMap)
+SWServerWorker::SWServerWorker(SWServer& server, SWServerRegistration& registration, const URL& scriptURL, const String& script, const CertificateInfo& certificateInfo, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicy, String&& referrerPolicy, WorkerType type, ServiceWorkerIdentifier identifier, HashMap<URL, ServiceWorkerContextData::ImportedScript>&& scriptResourceMap)
: m_server(makeWeakPtr(server))
, m_registrationKey(registration.key())
, m_registration(makeWeakPtr(registration))
, m_data { identifier, scriptURL, ServiceWorkerState::Redundant, type, registration.identifier() }
, m_script(script)
+ , m_certificateInfo(certificateInfo)
, m_contentSecurityPolicy(contentSecurityPolicy)
, m_referrerPolicy(WTFMove(referrerPolicy))
, m_registrableDomain(m_data.scriptURL)
@@ -84,7 +85,7 @@
{
ASSERT(m_registration);
- return { WTF::nullopt, m_registration->data(), m_data.identifier, m_script, m_contentSecurityPolicy, m_referrerPolicy, m_data.scriptURL, m_data.type, false, m_scriptResourceMap };
+ return { WTF::nullopt, m_registration->data(), m_data.identifier, m_script, m_certificateInfo, m_contentSecurityPolicy, m_referrerPolicy, m_data.scriptURL, m_data.type, false, m_scriptResourceMap };
}
void SWServerWorker::terminate(CompletionHandler<void()>&& callback)
Modified: trunk/Source/WebCore/workers/service/server/SWServerWorker.h (264723 => 264724)
--- trunk/Source/WebCore/workers/service/server/SWServerWorker.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebCore/workers/service/server/SWServerWorker.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -126,7 +126,7 @@
void didFailHeartBeatCheck();
private:
- SWServerWorker(SWServer&, SWServerRegistration&, const URL&, const String& script, const ContentSecurityPolicyResponseHeaders&, String&& referrerPolicy, WorkerType, ServiceWorkerIdentifier, HashMap<URL, ServiceWorkerContextData::ImportedScript>&&);
+ SWServerWorker(SWServer&, SWServerRegistration&, const URL&, const String& script, const CertificateInfo&, const ContentSecurityPolicyResponseHeaders&, String&& referrerPolicy, WorkerType, ServiceWorkerIdentifier, HashMap<URL, ServiceWorkerContextData::ImportedScript>&&);
void callWhenActivatedHandler(bool success);
@@ -140,6 +140,7 @@
WeakPtr<SWServerRegistration> m_registration;
ServiceWorkerData m_data;
String m_script;
+ CertificateInfo m_certificateInfo;
ContentSecurityPolicyResponseHeaders m_contentSecurityPolicy;
String m_referrerPolicy;
bool m_hasPendingEvents { false };
Modified: trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp (264723 => 264724)
--- trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp 2020-07-22 20:17:52 UTC (rev 264724)
@@ -137,6 +137,8 @@
void ServiceWorkerSoftUpdateLoader::didReceiveResponse(ResourceResponse&& response, ResponseCompletionHandler&& completionHandler)
{
+ // FIXME: If the certificate info changes but the script content does not, treat that as an update.
+ m_certificateInfo = response.certificateInfo() ? *response.certificateInfo() : CertificateInfo();
if (response.httpStatusCode() == 304 && m_cacheEntry) {
loadWithCacheEntry(*m_cacheEntry);
completionHandler(PolicyAction::Ignore);
@@ -186,7 +188,7 @@
{
if (m_decoder)
m_script.append(m_decoder->flush());
- m_completionHandler({ m_jobData.identifier(), m_jobData.registrationKey(), m_script.toString(), m_contentSecurityPolicy, m_referrerPolicy, { } });
+ m_completionHandler({ m_jobData.identifier(), m_jobData.registrationKey(), m_script.toString(), m_certificateInfo, m_contentSecurityPolicy, m_referrerPolicy, { } });
didComplete();
}
Modified: trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.h (264723 => 264724)
--- trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.h 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.h 2020-07-22 20:17:52 UTC (rev 264724)
@@ -85,6 +85,7 @@
std::unique_ptr<NetworkCache::Entry> m_cacheEntry;
RefPtr<WebCore::TextResourceDecoder> m_decoder;
StringBuilder m_script;
+ WebCore::CertificateInfo m_certificateInfo;
};
} // namespace WebKit
Modified: trunk/Tools/ChangeLog (264723 => 264724)
--- trunk/Tools/ChangeLog 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Tools/ChangeLog 2020-07-22 20:17:52 UTC (rev 264724)
@@ -1,3 +1,13 @@
+2020-07-22 Alex Christensen <[email protected]>
+
+ Safari does not present CertificateInfo for service-worker served documents
+ https://bugs.webkit.org/show_bug.cgi?id=206403
+ <rdar://problem/65410875>
+
+ Reviewed by Darin Adler and Youenn Fablet.
+
+ * TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
+
2020-07-22 Yusuke Suzuki <[email protected]>
TestWTF.WTF_Packed.PackedAlignedPtr should be adjusted because ARM macOS is using 48 bits for effective address width
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm (264723 => 264724)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm 2020-07-22 20:17:52 UTC (rev 264724)
@@ -1952,7 +1952,7 @@
auto path = store._configuration._serviceWorkerRegistrationDirectory.path;
NSURL* directory = [NSURL fileURLWithPath:path isDirectory:YES];
- NSURL *swDBPath = [directory URLByAppendingPathComponent:@"ServiceWorkerRegistrations-4.sqlite3"];
+ NSURL *swDBPath = [directory URLByAppendingPathComponent:@"ServiceWorkerRegistrations-5.sqlite3"];
EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:swDBPath.path]);
@@ -1979,7 +1979,7 @@
EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:swPath.path]);
[[NSFileManager defaultManager] createDirectoryAtURL:swPath withIntermediateDirectories:YES attributes:nil error:nil];
- [[NSFileManager defaultManager] copyItemAtURL:url1 toURL:[swPath URLByAppendingPathComponent:@"ServiceWorkerRegistrations-4.sqlite3"] error:nil];
+ [[NSFileManager defaultManager] copyItemAtURL:url1 toURL:[swPath URLByAppendingPathComponent:@"ServiceWorkerRegistrations-5.sqlite3"] error:nil];
auto websiteDataStoreConfiguration = adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]);
websiteDataStoreConfiguration.get()._serviceWorkerRegistrationDirectory = swPath;
@@ -2213,7 +2213,7 @@
[webView reload];
EXPECT_WK_STREQ([webView _test_waitForAlert], expectedAlert);
EXPECT_EQ(server.totalRequests(), expectedServerRequests2);
- EXPECT_NULL(webView.get().serverTrust); // FIXME: This should be EXPECT_TRUE(isTestServerTrust(webView.get().serverTrust));
+ EXPECT_TRUE(isTestServerTrust(webView.get().serverTrust));
}
TEST(ServiceWorkers, ServerTrust)
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/SimpleServiceWorkerRegistrations-4.sqlite3 (264723 => 264724)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/SimpleServiceWorkerRegistrations-4.sqlite3 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/SimpleServiceWorkerRegistrations-4.sqlite3 2020-07-22 20:17:52 UTC (rev 264724)
@@ -1,11 +1,9 @@
-SQLite format 3������@ ��������������������������������������������������������������������������������������������������������������������������������������.$\x80+SQLite format 3������@ ��������������������������������������������������������������������������������������������������������������������������������������.4 \xF8��-e��-e\xC9���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������������\x84a\x89tableRecordsRecordsCREATE TABLE Records (key TEXT NOT NULL ON CONFLICT FAIL UNIQUE ON CONFLICT REPLACE, origin TEXT NOT NULL ON CONFLICT FAIL, scopeURL TEXT NOT NULL ON CONFLICT FAIL, topOrigin TEXT NOT NULL ON CONFLICT FAIL, lastUpdateCheckTime DOUBLE NOT NULL ON CONFLICT FAIL, updateViaCache TEXT NOT NULL ON CONFLICT FAIL, scriptURL TEXT NOT NULL ON CONFLICT FAIL, script TEXT NOT NULL ON CONFLICT FAIL, workerTy
pe TEXT NOT NULL ON CONFLICT FAIL, contentSecurityPolicy BLOB NOT NULL ON CONFLICT FAIL, referrerPolicy TEXT NOT NULL ON CONFLICT FAIL, scriptResourceMap BLOB NOT NULL ON CONFLICT FAIL)-A��indexsqlite_autoindex_Records_1Records��������������-������
-9��
-9������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\x8BDs77S\x94$-https_mdn.github.io__https://mdn.github.io/sw-test/https://mdn.github.io/sw-test/https_mdn.github.io_0A\xD7\x94P\xE4^\xE1Importshttps://mdn.github.io/sw-test/sw.jsself.addEventListener('install', function(event) {
+5��+5\xC9����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\x85\x89ytableRecordsRecordsCREATE TABLE Records (key TEXT NOT NULL ON CONFLICT FAIL UNIQUE ON CONFLICT REPLACE, origin TEXT NOT NULL ON CONFLICT FAIL, scopeURL TEXT NOT NULL ON CONFLICT FAIL, topOrigin TEXT NOT NULL ON CONFLICT FAIL, lastUpdateCheckTime DOUBLE NOT NULL ON CONFLICT FAIL, updateViaCache TEXT NOT NULL ON CONFLICT FAIL, scriptURL TEXT NOT NULL ON CONFLICT FAIL, script TEXT N
OT NULL ON CONFLICT FAIL, workerType TEXT NOT NULL ON CONFLICT FAIL, contentSecurityPolicy BLOB NOT NULL ON CONFLICT FAIL, referrerPolicy TEXT NOT NULL ON CONFLICT FAIL, scriptResourceMap BLOB NOT NULL ON CONFLICT FAIL, certificateInfo BLOB NOT NULL ON CONFLICT FAIL)-A��indexsqlite_autoindex_Re
cords_1Records��������������+������ L�� L�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\xCD%s77S\x94$+\x81\x83Hhttps_mdn.github.io__https://mdn.github.io/sw-test/https://mdn.github.io/sw-test/https_mdn.github.io_0A\xD7\xC6&\xDD[Importshttps://mdn.git
hub.io/sw-test/sw.jsself.addEventListener('install', function(event) {
event.waitUntil(
caches.open('v1').then(function(cache) {
return cache.addAll([
@@ -46,5 +44,109 @@
}
}));
});
-Classic����������������\xC8����������������������
-������\xC9��\xC9������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������������������6s https_mdn.github.io__https://mdn.github.io/sw-test/
\ No newline at end of file
+Classic����������������\xC8������������������������������������\xCD ������������1\x82 \xC90result0anchorsOnly��0details01��1��1��0keychainsAllowed0$
+verifyDate20200722194939.309592Z0&info10CertificateTransparency0\x82\xEA responses0\x82\xDB\x82\xD70\x82\xD3
+��\xA0\x82\xCC0\x82\xC8 +0\x82\xB90\x82\xB50������
+������\xC9��\xC9������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������������������6s https_mdn.github.io__https://mdn.github.io/sw-test/������\x81\x9E\xA2Qh\xFF\x90\xAFu<\xCC\xD9edb\xA2\xB8Yr;20200718074457Z0s0q0I0 +��\xCF&\xF5\xFA\xC9~\x8F\x8C\xB3B\xE0/j\x9E\x8E_
+Qh\xFF\x90\xAFu<\xCC\xD9edb\xA2\xB8Yr;I>\xFA\x9E7Z-\xBB\xC6\x94Cπ��20200718074457Z\xA020200725065957Z0+ *\x86H\x86\xF7+��\x82��N'\Ib\xCB\x9F\x8E\xEB\xC5&\xDB\xFA͗+-\xB0\x9C\x89mX\xF3H\xE8\xFF\x92\x91\xCA2I\xCC\xE3V#\xE9=\x95\xF8\xC9\xE7_4\xD53\xFAuI\xED P)c\xE7nJ\xAA\x81\x97\xCDH\x88\xD2hֲ\xB3\xA1\xD9\xE3\xE22¹{r\xBDL\x9F6\xF5\x99ؙ\xBE��4;\xF8\x81\x94X+BNAP\xB1\xF78\xB6ћ>ünt&Q\x8C-X\xD1\xB4#\xB4\xF6\x91B\x90g\x82{B\xF7.\x8C"w\xE20\x9D\xAFv"IY}_X\xEA3\xC1ф߾uz\x8C\x87P\xEEt\xFA\xA2\xEFM\xA7\xFC0\x9B\xA9\xEA\xA3\xE7F`\xE8\xE1\xBC\xFB\x98\xC4+\x8E\xDA\xC5\xDE4\x9C<\xC3S\xEF\xFB\xC9g\xAA\xE2\xC4S\x8DS6\xB9o\x8D\x86\x92\xF3@+\x81\x84\x92\x91\x88\x8C3\x9A\xF4ץF\xC1A0\x82lpolicies0\x82^1\x82Z0 SecPolicyPolicyName sslServer0&SecPolicyOid1.2.840.113635.100.1.30\x82+policyOptions1\x82\xF90 IdLinkage0WeakKeySize0+ServerAuthEKU0+WeakSignature0GrayLis
tedLeaf0BlackListedLeaf0NonEmptySubject0BasicConstraints0TemporalValidity0CriticalExtensions0ValidityPeriodMaximums0SSLHostname+mdn.github.io0SystemTrustedCTRequired0KeySize1042��073��0=ExtendedKeyUsage0)��U%��+
++\x827
+ `\x86H\x86\xF8B0lSignatureHashAlgorithms0QSignatureDigestMD2SignatureDigestMD4SignatureDigestMD5SignatureDigestSHA10\x82certificates0\x82\xF1\x8240\x8200\x82\xA0I>\xFA\x9E7Z-\xBB\xC6\x94C\xCF0+ *\x86H\x86\xF7+��0p10 UUS10U
+DigiCert Inc10Uwww.digicert.com1/0-U&DigiCert SHA2 High Assurance Server CA0+200506000000Z+220414120000Z0j10 UUS10U
+California10U+San Francisco10U
+GitHub, Inc.10Uwww.github.com0\x82"0+ *\x86H\x86\xF7+��\x82��0\x82
+\x82��\xB2>=\xEA2}\xF6\xF7\x84\\xEE\xD6w\x90g\xB8\x9D\xB4)\xC3r6jA\xE0\xE2˭9\xED,\x8F܃QY\xEA\x87
+?Ȃ<\xFB.\x89\xA6M\xE0\xEF\x92\xE9>\x96+\x8E#\xB0b\x9Fɒ\x95\x9B\xA4\xD4U\xA5\xBDrh\xFD\xE6R\xF9<.!\x86\xFB%'6sC\xABvU^RH\xA4\\xE96\xAA\xBB+\x9D\xBFM\x8C1\x96\xE8.\xE7\xF0E_+\xF4\x9D2\x888,)\x9C$\xFF\xF5Z\x9BӀ\x88\xB1b\xD8@,\xB7G\xD8\x8E=\x8CW\x83h\xA0\xF8X\xC0O\xAB\xA4\xF1\xD6"\x967W?;+\xC8\xDF(\xD1��\x9D\xFF\xC3 +}a5\xBA\xF3C\xE0\xEF\xDF:\x8C}nS\xEF8\xA2Ԭ4\xCB\xAE\x94\xC4\xFF\xBA\xB5\xA5a/\xE4\xD0\xC5͑v\x88sM\xF3\x9B0\x89\xDC\xB5\xC7F#\xC87}\x82\xF8\xF1\xB4\x91\xCB��\xA3\x82\xCA0\x82\xC60U#0\x80Qh\xFF\x90\xAFu<\xCC\xD9edb\xA2\xB8Yr;0U\x8C\xA0
+iG܉2\xB0M\xC6Eb_/\x96N:0{Ut0r\x82www.github.com\x82*.github.com\x82
+github.com\x82*.github.io\x82 github.io\x82*.githubusercontent.com\x82githubusercontent.com0U\xFF\xA00U%0++0uUn0l04\xA02\xA00\x86.http://crl3.digicert.com/sha2-ha-server-g6.crl04\xA02\xA00\x86.http://crl4.digicert.com/sha2-ha-server-g6.crl0LU E0C07 `\x86H\x86\xFDl0*0(+https://www.digicert.com/CPS0g\x810\x81\x83+w0u0$+0\x86http://ocsp.digicert.com0M+0\x86Ahttp://cacerts.digicert.com/DigiCertSHA2HighAssuranceServerCA.crt0U\xFF0��0\x82}
++\xD6y\x82m\x82ig��v��F\xA5U\xEBu\xFA\x91 0\xB5\xA2\x89i\xF4\xF3},At\xBE\xFDI\xB8\x85\xAB\xF2\xFCp\xFEmG����q\xEB/������G0E!��\xE7ܺ\xC3\xDA\xA0
+\xD9\xFBū\xA2\xA8}\x85\x91\x87LQ\x9B\x85D\xA3\xDBaH q&\xC0\xED!\x96RZ9\xED\x8B%˺rQ\xE7\x803o\xA13U\xC3Qе:\xF7��u��"EEYU$V\x96?\xA1/\xF1\xF7m\x86\xE0#&c\xAD\xC0K]ƃ\n\xE2����q\xEB/\xBF������F0D f8\xA2\xA16\xDC\xD7\xFF\xE1\x89\xD8!~\x8E\xF2a\xE6\x82\xD1T`\x93ƴ\xC1}$S\xDB g>\xF1ݓH) <\xA3\x85i\xA5\xB7\xD0<\xE1\xC0\xFA\x83dn]i\xD0��v��Q\xA3\xB0\xF5\xFDy\x9CVm\xB87x\x8F\xA4z\xCC'\xCB\xF7\x9E\x88B\x9A+\xFEԋ\xE5����q\xEB/ ������G0E ?\xE8I~L \xADZ\xEA)\xEC\x87^\xAC\xDD>o)\xF9\xB0:\xDEN\xEF\x97\xCFq\xA2c\xC7!��\xED/7EuP\xAA\x98\xE3mf\xC8T<\xF0\xD9\xFF\xAE&\x9F\xE4\x96\xFC\x87z W\xC70+ *\x86H\x86\xF7+��\x82����\xF3\xBB\xF2?\xE1\xD3\xC0n\xCC\xC1GfhY\xDC\xFF\x97\xB5\xA3K\xA8\xE3H\xCDs\xF3\x9C&\xB8\xF3\J\x80x\x8D\x93\x93NI\xE5\xC0\xE2\xC1^p^\xAB%W\xBA\xDD\xE9\xC4t\xAFT\x996\x92\xFB\xB2\xED\xD1K\xAEu\xDF5r\xB1ޏ\x9E;v\xA5\xDD\xFF*T\x83$\xC8O\xBCz\xE6HAd\xE0yg\xAE\x95\xED7\xB3\x92LeXe 4
h\x9A\xC3 \xDB%
]ٔ/\xD1:\x88a\xA4H\xA5v>,\xB4n\x82\x90\xF2i}&\xAEY\xAD}\x91\x99\xEA\xD0G\x97\xFC\xF4\xBE\xB1\xE7K\xAC\xECk\x96\x96a\xFAeE!\xB8_\xF4C\xB4\xD9��7 \xC5;lMb-c\x98\xA7\xEB+a\x9A/59N)1\xBC^\xFB$[\xFB\x9F_\xF2\xF0b릹\x8A\xA4\x90+\xFEĽD\xE5\xFDG80{r\x93 Ϊx\xA5\x82\xB50\x82\xB10\x82\x99\xA0\xE1\xE7\xA4\xDC\\xF2\xF3m\xC0+B\xB8]\x9F0+ *\x86H\x86\xF7+��0l10 UUS10U
+DigiCert Inc10Uwww.digicert.com1+0)U"DigiCert High Assurance EV Root CA0+131022120000Z+281022120000Z0p10 UUS10U
+DigiCert Inc10Uwww.digicert.com1/0-U&DigiCert SHA2 High Assurance Server CA0\x82"0+ *\x86H\x86\xF7+��\x82��0\x82
+\x82��\xB6\xE0/\xC2$\xC8m_\xD7\xEF
+d\xB2}"&e\xAEB@\x9B\xCEܟ\x9Fv>\xC30U\x87\xB9O\x94Z\x94UV\xB4\xC2*\xAFИ\xEE@\xD7\xC4\xD0;r\xC8\x9E\xA9\xAE\xD2ȸC:\xD9\xD5Օ\xF5@\xAF\xC8\xEDM\x9C_W\xB7\x86Ph\x99\xF5\x8A\xDA\xD2\xC7\xA8\x97\xC9ܤ\xB1\x82\x84-ƭ\xA5\x9C\xC7\x82\xA6\x85^DX*7\x8F\xFD5\xF1'2Z\x{17B2DE}\xA4\xBDQ\xD0'\xE2\xDD;B3\xA3(Ļ(̚\xAC+#+x\xC6{\xE6^q\xB7J>\xFB\x81\xB7\xA1\x9D#M\xE5ג\xACu\xA4\x9C\xBA\xCD\xB2D5eS%9\xD1
+\x9Ac\x92th
+7\xC2\xC2RH\xCB9Z\xA2\xB6\xE1]\xC1ݠ \xB8!\xA2\x93&oJ!A\xC7\xEDm\x9B\xF2H/\xF3\xF5\xA2h\x92S/^\xE3��\xA3\x82I0\x82E0U\xFF0\xFF��0U\xFF\x860U%0++04+(0&0$+0\x86http://ocsp.digicert.com0KUD0B0@\xA0>\xA0<\x86:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl0=U 60402U ��0*0(+https://www.digicert.com/CPS0UQh\xFF\x90\xAFu<\xCC\xD9edb\xA2\xB8Yr;0U#0\x80\xB1>\xC3i\xF8\xBFGԘ&\xEFcd+\xC30+ *\x86H\x86\xF7+��\x82��\x8A\x95\x89\xE6m\xDF\\xFCh\xEAJ\x8F\x83\xD6Q/\x8DkD\x9E\xACc\xF5\xD2nl\x84\x99\x8B\xAA\x81q\x84[\xED4N\xB0\xB7y\x92)\xCC-\x80j\xF0\x8E \xE1y\xA4\xFEG\xEA\xF5\x86\xCAYq}\xF4\x96k\xD3YX=\xFE\xD31%\8\x84\xA3柂\xFD\x8C[\x981N\xCDx\x9E\xFD\x85\xCBI\xAA\xF2'\x8B\x99r\xFC>\xAA\xD5A\xDA\xD56\xA1\xBFnGI^\xD9H|\xD9\xFD\x8BI\xA0\x98&B@\xEB֒\xA4d
+WT\xC4\xF5\xD6^k\xAC\xEEĀ\x9Ar\xFAV\x93\xD7\xFF\xBF0\x850\xBFN\xFFW\x9D$\xED\x85\xC3+\xFB\xA6u\xA8\xAC-\xEF}y'\xB2\xEBꪅ\xD3\xA3 (A��������YC(ҁ\xE3\xAA\xF6\xEC{;w\xB6@b\x80AE\xEF>\xDE\xC03\x9Bg\xD3a.r\x87\xE4i\xFC��W@p\xF5ɴ0\x82\xC9chain0\x82\xBE\x8240\x8200\x82\xA0I>\xFA\x9E7Z-\xBB\xC6\x94C\xCF0+ *\x86H\x86\xF7+��0p10 UUS10U
+DigiCert Inc10Uwww.digicert.com1/0-U&DigiCert SHA2 High Assurance Server CA0+200506000000Z+220414120000Z0j10 UUS10U
+California10U+San Francisco10U
+GitHub, Inc.10Uwww.github.com0\x82"0+ *\x86H\x86\xF7+��\x82��0\x82
+\x82��\xB2>=\xEA2}\xF6\xF7\x84\\xEE\xD6w\x90g\xB8\x9D\xB4)\xC3r6jA\xE0\xE2˭9\xED,\x8F܃QY\xEA\x87
+?Ȃ<\xFB.\x89\xA6M\xE0\xEF\x92\xE9>\x96+\x8E#\xB0b\x9Fɒ\x95\x9B\xA4\xD4U\xA5\xBDrh\xFD\xE6R\xF9<.!\x86\xFB%'6sC\xABvU^RH\xA4\\xE96\xAA\xBB+\x9D\xBFM\x8C1\x96\xE8.\xE7\xF0E_+\xF4\x9D2\x888,)\x9C$\xFF\xF5Z\x9BӀ\x88\xB1b\xD8@,\xB7G\xD8\x8E=\x8CW\x83h\xA0\xF8X\xC0O\xAB\xA4\xF1\xD6"\x967W?;+\xC8\xDF(\xD1��\x9D\xFF\xC3 +}a5\xBA\xF3C\xE0\xEF\xDF:\x8C}nS\xEF8\xA2Ԭ4\xCB\xAE\x94\xC4\xFF\xBA\xB5\xA5a/\xE4\xD0\xC5͑v\x88sM\xF3\x9B0\x89\xDC\xB5\xC7F#\xC87}\x82\xF8\xF1\xB4\x91\xCB��\xA3\x82\xCA0\x82\xC60U#0\x80Qh\xFF\x90\xAFu<\xCC\xD9edb\xA2\xB8Yr;0U\x8C\xA0
+iG܉2\xB0M\xC6Eb_/\x96N:0{Ut0r\x82www.github.com\x82*.github.com\x82
+github.com\x82*.github.io\x82 github.io\x82*.githubusercontent.com\x82githubusercontent.com0U\xFF\xA00U%0++0uUn0l04\xA02\xA00\x86.http://crl3.digicert.com/sha2-ha-server-g6.crl04\xA02\xA00\x86.http://crl4.digicert.com/sha2-ha-server-g6.crl0LU E0C07 `\x86H\x86\xFDl0*0(+https://www.digicert.com/CPS0g\x810\x81\x83+w0u0$+0\x86http://ocsp.digicert.com0M+0\x86Ahttp://cacerts.digicert.com/DigiCertSHA2HighAssuranceServerCA.crt0U\xFF0��0\x82}
++\xD6y\x82m\x82ig��v��F\xA5U\xEBu\xFA\x91 0\xB5\xA2\x89i\xF4\xF3},At\xBE\xFDI\xB8\x85\xAB\xF2\xFCp\xFEmG����q\xEB/������G0E!��\xE7ܺ\xC3\xDA\xA0
+\xD9\xFBū\xA2\xA8}\x85\x91\x87LQ\x9B\x85D\xA3\xDBaH q&\xC0\xED!\x96RZ9\xED\x8B%˺rQ\xE7\x803o\xA13U\xC3Qе:\xF7��u��"EEYU$V\x96?\xA1/\xF1\xF7m\x86\xE0#&c\xAD\xC0K]ƃ\n\xE2����q\xEB/\xBF������F0D f8\xA2\xA16\xDC\xD7\xFF\xE1\x89\xD8!~\x8E\xF2a\xE6\x82\xD1T`\x93ƴ\xC1}$S\xDB g>\xF1ݓH) <\xA3\x85i\xA5\xB7\xD0<\xE1\xC0\xFA\x83dn]i\xD0��v��Q\xA3\xB0\xF5\xFDy\x9CVm\xB87x\x8F\xA4z\xCC'\xCB\xF7\x9E\x88B\x9A+\xFEԋ\xE5����q\xEB/ ������G0E ?\xE8I~L \xADZ\xEA)\xEC\x87^\xAC\xDD>o)\xF9\xB0:\xDEN\xEF\x97\xCFq\xA2c\xC7!��\xED/7EuP\xAA\x98\xE3mf\xC8T<\xF0\xD9\xFF\xAE&\x9F\xE4\x96\xFC\x87z W\xC70+ *\x86H\x86\xF7+��\x82����\xF3\xBB\xF2?\xE1\xD3\xC0n\xCC\xC1GfhY\xDC\xFF\x97\xB5\xA3K\xA8\xE3H\xCDs\xF3\x9C&\xB8\xF3\J\x80x\x8D\x93\x93NI\xE5\xC0\xE2\xC1^p^\xAB%W\xBA\xDD\xE9\xC4t\xAFT\x996\x92\xFB\xB2\xED\xD1K\xAEu\xDF5r\xB1ޏ\x9E;v\xA5\xDD\xFF*T\x83$\xC8O\xBCz\xE6HAd\xE0yg\xAE\x95\xED7\xB3\x92LeXe 4
h\x9A\xC3 \xDB%
]ٔ/\xD1:\x88a\xA4H\xA5v>,\xB4n\x82\x90\xF2i}&\xAEY\xAD}\x91\x99\xEA\xD0G\x97\xFC\xF4\xBE\xB1\xE7K\xAC\xECk\x96\x96a\xFAeE!\xB8_\xF4C\xB4\xD9��7 \xC5;lMb-c\x98\xA7\xEB+a\x9A/59N)1\xBC^\xFB$[\xFB\x9F_\xF2\xF0b릹\x8A\xA4\x90+\xFEĽD\xE5\xFDG80{r\x93 Ϊx\xA5\x82\xB50\x82\xB10\x82\x99\xA0\xE1\xE7\xA4\xDC\\xF2\xF3m\xC0+B\xB8]\x9F0+ *\x86H\x86\xF7+��0l10 UUS10U
+DigiCert Inc10Uwww.digicert.com1+0)U"DigiCert High Assurance EV Root CA0+131022120000Z+281022120000Z0p10 UUS10U
+DigiCert Inc10Uwww.digicert.com1/0-U&DigiCert SHA2 High Assurance Server CA0\x82"0+ *\x86H\x86\xF7+��\x82��0\x82
+\x82��\xB6\xE0/\xC2$\xC8m_\xD7\xEF
+d\xB2}"&e\xAEB@\x9B\xCEܟ\x9Fv>\xC30U\x87\xB9O\x94Z\x94UV\xB4\xC2*\xAFИ\xEE@\xD7\xC4\xD0;r\xC8\x9E\xA9\xAE\xD2ȸC:\xD9\xD5Օ\xF5@\xAF\xC8\xEDM\x9C_W\xB7\x86Ph\x99\xF5\x8A\xDA\xD2\xC7\xA8\x97\xC9ܤ\xB1\x82\x84-ƭ\xA5\x9C\xC7\x82\xA6\x85^DX*7\x8F\xFD5\xF1'2Z\x{17B2DE}\xA4\xBDQ\xD0'\xE2\xDD;B3\xA3(Ļ(̚\xAC+#+x\xC6{\xE6^q\xB7J>\xFB\x81\xB7\xA1\x9D#M\xE5ג\xACu\xA4\x9C\xBA\xCD\xB2D5eS%9\xD1
+\x9Ac\x92th
+7\xC2\xC2RH\xCB9Z\xA2\xB6\xE1]\xC1ݠ \xB8!\xA2\x93&oJ!A\xC7\xEDm\x9B\xF2H/\xF3\xF5\xA2h\x92S/^\xE3��\xA3\x82I0\x82E0U\xFF0\xFF��0U\xFF\x860U%0++04+(0&0$+0\x86http://ocsp.digicert.com0KUD0B0@\xA0>\xA0<\x86:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl0=U 60402U ��0*0(+https://www.digicert.com/CPS0UQh\xFF\x90\xAFu<\xCC\xD9edb\xA2\xB8Yr;0U#0\x80\xB1>\xC3i\xF8\xBFGԘ&\xEFcd+\xC30+ *\x86H\x86\xF7+��\x82��\x8A\x95\x89\xE6m\xDF\\xFCh\xEAJ\x8F\x83\xD6Q/\x8DkD\x9E\xACc\xF5\xD2nl\x84\x99\x8B\xAA\x81q\x84[\xED4N\xB0\xB7y\x92)\xCC-\x80j\xF0\x8E \xE1y\xA4\xFEG\xEA\xF5\x86\xCAYq}\xF4\x96k\xD3YX=\xFE\xD31%\8\x84\xA3柂\xFD\x8C[\x981N\xCDx\x9E\xFD\x85\xCBI\xAA\xF2'\x8B\x99r\xFC>\xAA\xD5A\xDA\xD56\xA1\xBFnGI^\xD9H|\xD9\xFD\x8BI\xA0\x98&B@\xEB֒\xA4d
+WT\xC4\xF5\xD6^k\xAC\xEEĀ\x9Ar\xFAV\x93\xD7\xFF\xBF0\x850\xBFN\xFFW\x9D$\xED\x85\xC3+\xFB\xA6u\xA8\xAC-\xEF}y'\xB2\xEBꪅ\xD3\xA3 (AYC(ҁ\xE3\xAA\xF6\xEC{;w\xB6@b\x80AE\xEF>\xDE\xC03\x9Bg\xD3a.r\x87\xE4i\xFC��W@p\xF5ɴ\x82\xC90\x82\xC50\x82\xAD\xA0\xAC\&j@\x9B\x8Fy\xF2\xAEF%w0+ *\x86H\x86\xF7+��0l10 UUS10U
+DigiCert Inc10Uwww.digicert.com1+0)U"DigiCert High Assurance EV Root CA0+061110000000Z+311110000000Z0l10 UUS10U
+DigiCert Inc10Uwww.digicert.com1+0)U"DigiCert High Assurance EV Root CA0\x82"0+ *\x86H\x86\xF7+��\x82��0\x82
+\x82��\xC6\xCC\xE5s\xE6\xFBԻ\xE5--2\xA6\xDF\xE5\x81?\xC9\xCD%I\xB6q*\xC3Ք4g\xA2
+\xB0_i\xA6@\xB1ķ\xB2\x8FИ\xA4\xA9AY:\xD3ܔ\xD6<\xDBt8\xA4J\xCCM%\x82\xF7J\xA5S8\xEE\xF3Imq\x91~c\xB6\xAB\xA6_ä\x84\xF8ObQ\xBE\xF8\xC5\xEC\xDB8\x92\xE3\xE5\x91\xC4(AU\xFB\xCBZ\x89~q\xE85\xBFMr =\xBE:8P[w1\x8D\xB3\xC7$E\x9A\xA7\xACm��Z\xB7\xBA\xEBQ
+\x98AA"Nea\x87\x81AP\xA6y\\x89\xDEJW\xD5.\xE6]S,~\x98\xCD\xA4hs\xD04\\xA1q\xD3Z|U\xDB^d\xE17\x870V\xE5\xB4)\x80\xF1y9\x88\xA2|'f\xB7\x88\xB7x\xF2\xCA
+\xA88\xAB
+d¿f]\x95\x84\xC1\xA1%\x87]P \xCCA\xBBnQ8\xB8K\xCB��\xA3c0a0U\xFF\x860U\xFF0\xFF0U\xB1>\xC3i\xF8\xBFGԘ&\xEFcd+\xC30U#0\x80\xB1>\xC3i\xF8\xBFGԘ&\xEFcd+\xC30+ *\x86H\x86\xF7+��\x82��\x97\xDCל\x9F<\x88fW!\xDB!G\xF8*g\xAA\xBF2v@W\xC1\x8A\xF3z\xD9e\x8E5\xFA\x9E\xFCE\xB5\x9E\xD9L1K\xB8\x91\xE8C,\x8E\xB3x\xCE\xDB\xE3Syq\xD6\xE5!\x94\xDAU\x87\x9A$d\xF6\x8Af\xCCޜ7ͨ4\xB1i\x9B#Ȟx"+pC\xE3UG1a\xEFXŅ/N0\xF6\xA01#\xC8\xE7\xE2e3˿\xA0=\xF8\xCA^\x8B1\x8B`\x89-\R\xB7\xC4\xF9
+\x98\xD1_\x9F\xBE|6c8\xBDD\xA4\xE4&+
+ėi+\xE9\x8C\xE2\xC0W\xB8\xC8v\x91U\xF2Hiؼ*[D\xD4 1\xDB\xF4\xBAp&]\x90`\x9E\xBCK /\xB4\xCBCh\xC9'\xC1\xD2\\xF7\xEA!\xB9h\x9C<\x9C\xBF\x9E\xFC\x80\\x9Bc\xCD\xECG\xAA%'g\xA07\xF3��\x82}Tש\xF8\xE9.\xA3w\xE8J
\ No newline at end of file
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm (264723 => 264724)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm 2020-07-22 20:16:00 UTC (rev 264723)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm 2020-07-22 20:17:52 UTC (rev 264724)
@@ -295,7 +295,7 @@
EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:swPath.path]);
[[NSFileManager defaultManager] createDirectoryAtURL:swPath withIntermediateDirectories:YES attributes:nil error:nil];
- [[NSFileManager defaultManager] copyItemAtURL:url1 toURL:[swPath URLByAppendingPathComponent:@"ServiceWorkerRegistrations-4.sqlite3"] error:nil];
+ [[NSFileManager defaultManager] copyItemAtURL:url1 toURL:[swPath URLByAppendingPathComponent:@"ServiceWorkerRegistrations-5.sqlite3"] error:nil];
auto websiteDataStoreConfiguration = adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]);
websiteDataStoreConfiguration.get()._serviceWorkerRegistrationDirectory = swPath;