<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[284351] branches/safari-612-branch</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/284351">284351</a></dd>
<dt>Author</dt> <dd>sihui_liu@apple.com</dd>
<dt>Date</dt> <dd>2021-10-18 01:41:27 -0700 (Mon, 18 Oct 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Apply patch rdar://83955868</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccessidlharnesshttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/idlharness.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccessidlharnesshttpsanyworkerexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/idlharness.https.any.worker-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandleIndexedDBhttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandleisSameEntryhttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageBroadcastChannelhttpswindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.https.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageErrorhttpswindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-Error.https.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageMessagePortframeshttpswindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-frames.https.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageMessagePortwindowshttpswindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-windows.https.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageMessagePortworkershttpswindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-workers.https.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageframeshttpswindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-frames.https.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessagewindowshttpswindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-windows.https.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageworkershttpswindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-workers.https.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandleremovehttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemDirectoryHandlegetDirectoryHandlehttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemDirectoryHandlegetFileHandlehttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemDirectoryHandleiterationhttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemDirectoryHandleremoveEntryhttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemDirectoryHandleresolvehttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemFileHandlecreatesyncaccesshandlededicatedworkerhttpstentativewindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-create-sync-access-handle-dedicated-worker.https.tentative.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemFileHandlegetFilehttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemWritableFileStreampipedhttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemWritableFileStreamwritehttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemWritableFileStreamhttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateindexeddbhttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-indexeddb.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateparallelhttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-parallel.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateusagedetailsapplicationcachehttpstentativeexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-application-cache.https.tentative-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateusagedetailscacheshttpstentativeanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-caches.https.tentative.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateusagedetailsindexeddbhttpstentativeanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-indexeddb.https.tentative.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateusagedetailsserviceworkershttpstentativewindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-service-workers.https.tentative.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateusagedetailshttpstentativeanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details.https.tentative.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageidlharnesshttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/idlharness.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageidlharnesshttpsanyworkerexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/idlharness.https.any.worker-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageopaqueoriginhttpswindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/opaque-origin.https.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragepermissionqueryhttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/permission-query.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragepersistedhttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/persisted.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragequotachangeindetachediframetentativehttpsexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/quotachange-in-detached-iframe.tentative.https-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragestoragemanagerestimatehttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-estimate.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragestoragemanagerpersisthttpswindowexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-persist.https.window-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragestoragemanagerpersistedhttpsanyexpectedtxt">branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-persisted.https.any-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsplatformmacwk1fastdomnavigatordetachednocrashexpectedtxt">branches/safari-612-branch/LayoutTests/platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt</a></li>
<li><a href="#branchessafari612branchLayoutTestsplatformmacwk2fastdomnavigatordetachednocrashexpectedtxt">branches/safari-612-branch/LayoutTests/platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt</a></li>
<li><a href="#branchessafari612branchSourceWTFScriptsPreferencesWebPreferencesExperimentalyaml">branches/safari-612-branch/Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml</a></li>
<li><a href="#branchessafari612branchSourceWebCoreCMakeListstxt">branches/safari-612-branch/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#branchessafari612branchSourceWebCoreDerivedSourcesinputxcfilelist">branches/safari-612-branch/Source/WebCore/DerivedSources-input.xcfilelist</a></li>
<li><a href="#branchessafari612branchSourceWebCoreDerivedSourcesoutputxcfilelist">branches/safari-612-branch/Source/WebCore/DerivedSources-output.xcfilelist</a></li>
<li><a href="#branchessafari612branchSourceWebCoreDerivedSourcesmake">branches/safari-612-branch/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#branchessafari612branchSourceWebCoreHeaderscmake">branches/safari-612-branch/Source/WebCore/Headers.cmake</a></li>
<li><a href="#branchessafari612branchSourceWebCoreSourcestxt">branches/safari-612-branch/Source/WebCore/Sources.txt</a></li>
<li><a href="#branchessafari612branchSourceWebCoreWebCorexcodeprojprojectpbxproj">branches/safari-612-branch/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchessafari612branchSourceWebCorebindingsjsWebCoreBuiltinNamesh">branches/safari-612-branch/Source/WebCore/bindings/js/WebCoreBuiltinNames.h</a></li>
<li><a href="#branchessafari612branchSourceWebCoredomDocumentcpp">branches/safari-612-branch/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebCoredomDocumenth">branches/safari-612-branch/Source/WebCore/dom/Document.h</a></li>
<li><a href="#branchessafari612branchSourceWebCoredomScriptExecutionContexth">branches/safari-612-branch/Source/WebCore/dom/ScriptExecutionContext.h</a></li>
<li><a href="#branchessafari612branchSourceWebCoreloaderEmptyClientscpp">branches/safari-612-branch/Source/WebCore/loader/EmptyClients.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebCorepageNavigatoridl">branches/safari-612-branch/Source/WebCore/page/Navigator.idl</a></li>
<li><a href="#branchessafari612branchSourceWebCorepageNavigatorBasecpp">branches/safari-612-branch/Source/WebCore/page/NavigatorBase.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebCorepageNavigatorBaseh">branches/safari-612-branch/Source/WebCore/page/NavigatorBase.h</a></li>
<li><a href="#branchessafari612branchSourceWebCorepagePagecpp">branches/safari-612-branch/Source/WebCore/page/Page.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebCorepagePageh">branches/safari-612-branch/Source/WebCore/page/Page.h</a></li>
<li><a href="#branchessafari612branchSourceWebCorepagePageConfigurationcpp">branches/safari-612-branch/Source/WebCore/page/PageConfiguration.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebCorepagePageConfigurationh">branches/safari-612-branch/Source/WebCore/page/PageConfiguration.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitCMakeListstxt">branches/safari-612-branch/Source/WebKit/CMakeLists.txt</a></li>
<li><a href="#branchessafari612branchSourceWebKitDerivedSourcesinputxcfilelist">branches/safari-612-branch/Source/WebKit/DerivedSources-input.xcfilelist</a></li>
<li><a href="#branchessafari612branchSourceWebKitDerivedSourcesoutputxcfilelist">branches/safari-612-branch/Source/WebKit/DerivedSources-output.xcfilelist</a></li>
<li><a href="#branchessafari612branchSourceWebKitDerivedSourcesmake">branches/safari-612-branch/Source/WebKit/DerivedSources.make</a></li>
<li><a href="#branchessafari612branchSourceWebKitNetworkProcessNetworkProcesscpp">branches/safari-612-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitNetworkProcessNetworkProcessh">branches/safari-612-branch/Source/WebKit/NetworkProcess/NetworkProcess.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitSharedWebsiteDataStoreParameterscpp">branches/safari-612-branch/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitSharedWebsiteDataStoreParametersh">branches/safari-612-branch/Source/WebKit/Shared/WebsiteDataStoreParameters.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitSourcestxt">branches/safari-612-branch/Source/WebKit/Sources.txt</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessAPICWKWebsiteDataStoreConfigurationRefcpp">branches/safari-612-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessAPICWKWebsiteDataStoreConfigurationRefh">branches/safari-612-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessAPICocoa_WKWebsiteDataStoreConfigurationh">branches/safari-612-branch/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessAPICocoa_WKWebsiteDataStoreConfigurationmm">branches/safari-612-branch/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessWebsiteDataCocoaWebsiteDataStoreCocoamm">branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessWebsiteDataWebsiteDataStorecpp">branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessWebsiteDataWebsiteDataStoreh">branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessWebsiteDataWebsiteDataStoreConfigurationcpp">branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessWebsiteDataWebsiteDataStoreConfigurationh">branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessWebsiteDataplaystationWebsiteDataStorePlayStationcpp">branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/playstation/WebsiteDataStorePlayStation.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessWebsiteDatawinWebsiteDataStoreWincpp">branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/win/WebsiteDataStoreWin.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitUIProcessglibWebsiteDataStoreGLibcpp">branches/safari-612-branch/Source/WebKit/UIProcess/glib/WebsiteDataStoreGLib.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitWebKitxcodeprojprojectpbxproj">branches/safari-612-branch/Source/WebKit/WebKit.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchessafari612branchSourceWebKitWebProcessWebPageRemoteLayerTreePlatformCALayerRemoteModelHostingh">branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteModelHosting.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitWebProcessWebPageWebPagecpp">branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach">branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitLegacymacWebViewWebViewmm">branches/safari-612-branch/Source/WebKitLegacy/mac/WebView/WebView.mm</a></li>
<li><a href="#branchessafari612branchSourceWebKitLegacywinWebViewcpp">branches/safari-612-branch/Source/WebKitLegacy/win/WebView.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#branchessafari612branchSourceWebCoreModulesstorageDummyStorageProviderh">branches/safari-612-branch/Source/WebCore/Modules/storage/DummyStorageProvider.h</a></li>
<li><a href="#branchessafari612branchSourceWebCoreModulesstorageStorageConnectionh">branches/safari-612-branch/Source/WebCore/Modules/storage/StorageConnection.h</a></li>
<li><a href="#branchessafari612branchSourceWebCoreModulesstorageStorageManagercpp">branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebCoreModulesstorageStorageManagerh">branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.h</a></li>
<li><a href="#branchessafari612branchSourceWebCoreModulesstorageStorageManageridl">branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.idl</a></li>
<li><a href="#branchessafari612branchSourceWebCoreModulesstorageStorageProviderh">branches/safari-612-branch/Source/WebCore/Modules/storage/StorageProvider.h</a></li>
<li><a href="#branchessafari612branchSourceWebCorepageNavigatorStorageidl">branches/safari-612-branch/Source/WebCore/page/NavigatorStorage.idl</a></li>
<li><a href="#branchessafari612branchSourceWebKitNetworkProcessstorageNetworkStorageManagercpp">branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitNetworkProcessstorageNetworkStorageManagerh">branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitNetworkProcessstorageNetworkStorageManagermessagesin">branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in</a></li>
<li><a href="#branchessafari612branchSourceWebKitNetworkProcessstorageOriginStorageManagercpp">branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitNetworkProcessstorageOriginStorageManagerh">branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitWebProcessWebCoreSupportWebStorageConnectioncpp">branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageConnection.cpp</a></li>
<li><a href="#branchessafari612branchSourceWebKitWebProcessWebCoreSupportWebStorageConnectionh">branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageConnection.h</a></li>
<li><a href="#branchessafari612branchSourceWebKitWebProcessWebCoreSupportWebStorageProviderh">branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageProvider.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccessidlharnesshttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/idlharness.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/idlharness.https.any-expected.txt      2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/idlharness.https.any-expected.txt 2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> FAIL FileSystemWritableFileStream interface: operation write(FileSystemWriteChunkType) assert_own_property: self does not have own property "FileSystemWritableFileStream" expected property "FileSystemWritableFileStream" missing
</span><span class="cx"> FAIL FileSystemWritableFileStream interface: operation seek(unsigned long long) assert_own_property: self does not have own property "FileSystemWritableFileStream" expected property "FileSystemWritableFileStream" missing
</span><span class="cx"> FAIL FileSystemWritableFileStream interface: operation truncate(unsigned long long) assert_own_property: self does not have own property "FileSystemWritableFileStream" expected property "FileSystemWritableFileStream" missing
</span><del>-FAIL StorageManager interface: operation getDirectory() assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
</del><ins>+FAIL StorageManager interface: operation getDirectory() assert_own_property: interface prototype object missing non-static operation expected property "getDirectory" missing
</ins><span class="cx"> FAIL DataTransferItem interface: operation getAsFileSystemHandle() assert_own_property: interface prototype object missing non-static operation expected property "getAsFileSystemHandle" missing
</span><span class="cx"> FAIL Window interface: operation showOpenFilePicker(optional OpenFilePickerOptions) assert_own_property: global object missing non-static operation expected property "showOpenFilePicker" missing
</span><span class="cx"> FAIL Window interface: operation showSaveFilePicker(optional SaveFilePickerOptions) assert_own_property: global object missing non-static operation expected property "showSaveFilePicker" missing
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccessidlharnesshttpsanyworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/idlharness.https.any.worker-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/idlharness.https.any.worker-expected.txt       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/idlharness.https.any.worker-expected.txt  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -53,5 +53,5 @@
</span><span class="cx"> FAIL FileSystemWritableFileStream interface: operation write(FileSystemWriteChunkType) assert_own_property: self does not have own property "FileSystemWritableFileStream" expected property "FileSystemWritableFileStream" missing
</span><span class="cx"> FAIL FileSystemWritableFileStream interface: operation seek(unsigned long long) assert_own_property: self does not have own property "FileSystemWritableFileStream" expected property "FileSystemWritableFileStream" missing
</span><span class="cx"> FAIL FileSystemWritableFileStream interface: operation truncate(unsigned long long) assert_own_property: self does not have own property "FileSystemWritableFileStream" expected property "FileSystemWritableFileStream" missing
</span><del>-FAIL StorageManager interface: operation getDirectory() assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
</del><ins>+FAIL StorageManager interface: operation getDirectory() assert_own_property: interface prototype object missing non-static operation expected property "getDirectory" missing
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandleIndexedDBhttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any-expected.txt        2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any-expected.txt   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> 
</span><del>-FAIL Store handle in IndexedDB and read from pending transaction. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Store handle in IndexedDB and read from new transaction. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Store handles and blobs in IndexedDB. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Store handle in IndexedDB and read using a cursor. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Store handle in IndexedDB using inline keys. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL Store handle in IndexedDB and read from pending transaction. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Store handle in IndexedDB and read from new transaction. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Store handles and blobs in IndexedDB. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Store handle in IndexedDB and read using a cursor. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Store handle in IndexedDB using inline keys. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandleisSameEntryhttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any-expected.txt      2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any-expected.txt 2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,10 +1,10 @@
</span><span class="cx"> 
</span><del>-FAIL isSameEntry for identical directory handles returns true promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL isSameEntry for different directories returns false promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL isSameEntry for different handles for the same directory promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL isSameEntry for identical file handles returns true promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL isSameEntry for different files returns false promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL isSameEntry for different handles for the same file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL isSameEntry comparing a file to a file in a different directory returns false promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL isSameEntry comparing a file to a directory returns false promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL isSameEntry for identical directory handles returns true promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL isSameEntry for different directories returns false promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL isSameEntry for different handles for the same directory promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL isSameEntry for identical file handles returns true promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL isSameEntry for different files returns false promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL isSameEntry for different handles for the same file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL isSameEntry comparing a file to a file in a different directory returns false promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL isSameEntry comparing a file to a directory returns false promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageBroadcastChannelhttpswindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.https.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.https.window-expected.txt  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.https.window-expected.txt     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL Send and receive messages using a broadcast channel in an iframe, dedicated worker and service worker. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL Send and receive messages using a broadcast channel in an iframe, dedicated worker and service worker. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageErrorhttpswindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-Error.https.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-Error.https.window-expected.txt     2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-Error.https.window-expected.txt        2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,12 +1,12 @@
</span><span class="cx"> 
</span><del>-FAIL Fail to send and receive messages using a cross origin iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Fail to send and receive messages using a cross origin message port in an iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Fail to send to a sandboxed iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Fail to send messages using a message port to a sandboxed iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Fail to send messages to a data URI iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Fail to send messages using a message port in a data URI iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Fail to send and receive messages using a cross origin window. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Fail to send and receive messages using a cross origin message port in a window. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Fail to send messages to  a sandboxed window. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Fail to send messages using a message port to a sandboxed window. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL Fail to send and receive messages using a cross origin iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Fail to send and receive messages using a cross origin message port in an iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Fail to send to a sandboxed iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Fail to send messages using a message port to a sandboxed iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Fail to send messages to a data URI iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Fail to send messages using a message port in a data URI iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Fail to send and receive messages using a cross origin window. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Fail to send and receive messages using a cross origin message port in a window. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Fail to send messages to  a sandboxed window. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Fail to send messages using a message port to a sandboxed window. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageMessagePortframeshttpswindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-frames.https.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-frames.https.window-expected.txt        2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-frames.https.window-expected.txt   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> 
</span><del>-FAIL Send and receive messages using a message port in a same origin iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using a message port in a sandboxed same origin iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using a message port in a blob iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using a message port in an iframe srcdoc. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL Send and receive messages using a message port in a same origin iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using a message port in a sandboxed same origin iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using a message port in a blob iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using a message port in an iframe srcdoc. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageMessagePortwindowshttpswindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-windows.https.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-windows.https.window-expected.txt       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-windows.https.window-expected.txt  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> 
</span><del>-FAIL Send and receive messages using a message port in a same origin window. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using a message port in a blob window. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using a message port in a sandboxed same origin window. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL Send and receive messages using a message port in a same origin window. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using a message port in a blob window. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using a message port in a sandboxed same origin window. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageMessagePortworkershttpswindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-workers.https.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-workers.https.window-expected.txt       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-workers.https.window-expected.txt  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> 
</span><del>-FAIL Send and receive messages using a message port in a dedicated worker. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using a message port in a service worker. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL Send and receive messages using a message port in a dedicated worker. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using a message port in a service worker. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageframeshttpswindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-frames.https.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-frames.https.window-expected.txt    2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-frames.https.window-expected.txt       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> 
</span><del>-FAIL Send and receive messages using a same origin iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using a sandboxed same origin iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using a blob iframe. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using an iframe srcdoc. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL Send and receive messages using a same origin iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using a sandboxed same origin iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using a blob iframe. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using an iframe srcdoc. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessagewindowshttpswindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-windows.https.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-windows.https.window-expected.txt   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-windows.https.window-expected.txt      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> 
</span><del>-FAIL Send and receive messages using a same origin window. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using a blob window. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using a sandboxed same origin window. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL Send and receive messages using a same origin window. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using a blob window. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using a sandboxed same origin window. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandlepostMessageworkershttpswindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-workers.https.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-workers.https.window-expected.txt   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-workers.https.window-expected.txt      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> 
</span><del>-FAIL Send and receive messages using a dedicated worker. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Send and receive messages using a service worker. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL Send and receive messages using a dedicated worker. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Send and receive messages using a service worker. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemBaseHandleremovehttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any-expected.txt   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any-expected.txt      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,9 +1,9 @@
</span><span class="cx"> 
</span><del>-FAIL remove() to remove a file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL remove() on an already removed file should fail promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL remove() to remove an empty directory promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL remove() on an already removed directory should fail promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL remove() on a non-empty directory should fail promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL remove() on a directory recursively should delete all sub-items promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL remove() on a file should ignore the recursive option promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL remove() to remove a file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL remove() on an already removed file should fail promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL remove() to remove an empty directory promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL remove() on an already removed directory should fail promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL remove() on a non-empty directory should fail promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL remove() on a directory recursively should delete all sub-items promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL remove() on a file should ignore the recursive option promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemDirectoryHandlegetDirectoryHandlehttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any-expected.txt  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any-expected.txt     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,12 +1,12 @@
</span><span class="cx"> 
</span><del>-FAIL getDirectoryHandle(create=false) rejects for non-existing directories promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getDirectoryHandle(create=true) creates an empty directory promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getDirectoryHandle(create=false) returns existing directories promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getDirectoryHandle(create=true) returns existing directories without erasing promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getDirectoryHandle() when a file already exists with the same name promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getDirectoryHandle() with empty name promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getDirectoryHandle() with "." name promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getDirectoryHandle() with ".." name promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getDirectoryHandle(create=false) with a path separator when the directory exists promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getDirectoryHandle(create=true) with a path separator promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL getDirectoryHandle(create=false) rejects for non-existing directories promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getDirectoryHandle(create=true) creates an empty directory promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getDirectoryHandle(create=false) returns existing directories promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getDirectoryHandle(create=true) returns existing directories without erasing promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getDirectoryHandle() when a file already exists with the same name promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getDirectoryHandle() with empty name promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getDirectoryHandle() with "." name promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getDirectoryHandle() with ".." name promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getDirectoryHandle(create=false) with a path separator when the directory exists promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getDirectoryHandle(create=true) with a path separator promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemDirectoryHandlegetFileHandlehttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any-expected.txt       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any-expected.txt  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,13 +1,13 @@
</span><span class="cx"> 
</span><del>-FAIL getFileHandle(create=false) rejects for non-existing files promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getFileHandle(create=true) creates an empty file for non-existing files promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getFileHandle(create=false) returns existing files promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getFileHandle(create=true) returns existing files without erasing promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getFileHandle(create=false) when a directory already exists with the same name promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getFileHandle(create=true) when a directory already exists with the same name promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getFileHandle() with empty name promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getFileHandle() with "." name promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getFileHandle() with ".." name promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getFileHandle(create=false) with a path separator when the file exists. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getFileHandle(create=true) with a path separator promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL getFileHandle(create=false) rejects for non-existing files promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getFileHandle(create=true) creates an empty file for non-existing files promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getFileHandle(create=false) returns existing files promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getFileHandle(create=true) returns existing files without erasing promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getFileHandle(create=false) when a directory already exists with the same name promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getFileHandle(create=true) when a directory already exists with the same name promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getFileHandle() with empty name promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getFileHandle() with "." name promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getFileHandle() with ".." name promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getFileHandle(create=false) with a path separator when the file exists. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getFileHandle(create=true) with a path separator promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemDirectoryHandleiterationhttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any-expected.txt   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any-expected.txt      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,8 +1,8 @@
</span><span class="cx"> 
</span><del>-FAIL returning early from an iteration doesn't crash promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL @@asyncIterator: full iteration works promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL entries: full iteration works promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL values: full iteration works promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL keys: full iteration works promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL iteration while iterator gets garbage collected promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL returning early from an iteration doesn't crash promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL @@asyncIterator: full iteration works promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL entries: full iteration works promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL values: full iteration works promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL keys: full iteration works promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL iteration while iterator gets garbage collected promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemDirectoryHandleremoveEntryhttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any-expected.txt 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any-expected.txt    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,11 +1,11 @@
</span><span class="cx"> 
</span><del>-FAIL removeEntry() to remove a file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL removeEntry() on an already removed file should fail promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL removeEntry() to remove an empty directory promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL removeEntry() on a non-empty directory should fail promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL removeEntry() on a directory recursively should delete all sub-items promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL removeEntry() with empty name should fail promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL removeEntry() with "." name should fail promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL removeEntry() with ".." name should fail promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL removeEntry() with a path separator should fail. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL removeEntry() to remove a file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL removeEntry() on an already removed file should fail promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL removeEntry() to remove an empty directory promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL removeEntry() on a non-empty directory should fail promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL removeEntry() on a directory recursively should delete all sub-items promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL removeEntry() with empty name should fail promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL removeEntry() with "." name should fail promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL removeEntry() with ".." name should fail promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL removeEntry() with a path separator should fail. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemDirectoryHandleresolvehttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any-expected.txt     2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any-expected.txt        2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> 
</span><del>-FAIL Resolve returns empty array for same directory promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Resolve returns correct path promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Resolve returns correct path with non-ascii characters promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL Resolve returns null when entry is not a child promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL Resolve returns empty array for same directory promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Resolve returns correct path promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Resolve returns correct path with non-ascii characters promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL Resolve returns null when entry is not a child promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemFileHandlecreatesyncaccesshandlededicatedworkerhttpstentativewindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-create-sync-access-handle-dedicated-worker.https.tentative.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-create-sync-access-handle-dedicated-worker.https.tentative.window-expected.txt  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-create-sync-access-handle-dedicated-worker.https.tentative.window-expected.txt     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL Attempt to create a sync access handle. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL Attempt to create a sync access handle. promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemFileHandlegetFilehttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any-expected.txt  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any-expected.txt     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> 
</span><del>-FAIL getFile() provides a file that can be sliced promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getFile() returns last modified time promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL getFile() provides a file that can be sliced promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getFile() returns last modified time promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemWritableFileStreampipedhttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any-expected.txt    2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any-expected.txt       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,10 +1,10 @@
</span><span class="cx"> 
</span><del>-FAIL can be piped to with a string promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL can be piped to with an ArrayBuffer promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL can be piped to with a Blob promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL can be piped to with a param object with write command promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL can be piped to with a param object with multiple commands promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL multiple operations can be queued promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL plays well with fetch promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL abort() aborts write promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL can be piped to with a string promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL can be piped to with an ArrayBuffer promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL can be piped to with a Blob promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL can be piped to with a param object with write command promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL can be piped to with a param object with multiple commands promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL multiple operations can be queued promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL plays well with fetch promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL abort() aborts write promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemWritableFileStreamwritehttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any-expected.txt    2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any-expected.txt       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,31 +1,31 @@
</span><span class="cx"> 
</span><del>-FAIL write() with an empty blob to an empty file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() a blob to an empty file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() with WriteParams without position to an empty file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() a string to an empty file with zero offset promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() a blob to an empty file with zero offset promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() called consecutively appends promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() WriteParams without position and string appends promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() WriteParams without position and blob appends promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() called with a string and a valid offset promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() called with a blob and a valid offset promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() called with an offset beyond the end of the file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() with an empty string to an empty file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() with a valid utf-8 string promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() with a string with unix line ending preserved promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() with a string with windows line ending preserved promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() with an empty array buffer to an empty file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() with a valid typed array buffer promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL atomic writes: close() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL atomic writes: writable file streams make atomic changes on close promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL atomic writes: write() after close() fails promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL atomic writes: truncate() after close() fails promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL atomic writes: close() after close() fails promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL atomic writes: only one close() operation may succeed promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL atomic writes: writable file stream persists file on close, even if file is removed promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL getWriter() can be used promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL WriteParams: truncate missing size param promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL WriteParams: write missing data param promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL WriteParams: seek missing position param promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() with an invalid blob to an empty file should reject promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL write() with an empty blob to an empty file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() a blob to an empty file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() with WriteParams without position to an empty file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() a string to an empty file with zero offset promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() a blob to an empty file with zero offset promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() called consecutively appends promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() WriteParams without position and string appends promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() WriteParams without position and blob appends promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() called with a string and a valid offset promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() called with a blob and a valid offset promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() called with an offset beyond the end of the file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() with an empty string to an empty file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() with a valid utf-8 string promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() with a string with unix line ending preserved promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() with a string with windows line ending preserved promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() with an empty array buffer to an empty file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() with a valid typed array buffer promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL atomic writes: close() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL atomic writes: writable file streams make atomic changes on close promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL atomic writes: write() after close() fails promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL atomic writes: truncate() after close() fails promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL atomic writes: close() after close() fails promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL atomic writes: only one close() operation may succeed promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL atomic writes: writable file stream persists file on close, even if file is removed promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL getWriter() can be used promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL WriteParams: truncate missing size param promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL WriteParams: write missing data param promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL WriteParams: seek missing position param promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() with an invalid blob to an empty file should reject promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsfilesystemaccesssandboxed_FileSystemWritableFileStreamhttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any-expected.txt  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any-expected.txt     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,12 +1,12 @@
</span><span class="cx"> 
</span><del>-FAIL truncate() to shrink a file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL truncate() to grow a file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL createWritable() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL write() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL truncate() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL createWritable({keepExistingData: true}): atomic writable file stream initialized with source contents promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL createWritable({keepExistingData: false}): atomic writable file stream initialized with empty file promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL cursor position: truncate size > offset promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL cursor position: truncate size < offset promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
-FAIL commands are queued, stream is unlocked after each operation promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.getDirectory')"
</del><ins>+FAIL truncate() to shrink a file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL truncate() to grow a file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL createWritable() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL write() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL truncate() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL createWritable({keepExistingData: true}): atomic writable file stream initialized with source contents promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL createWritable({keepExistingData: false}): atomic writable file stream initialized with empty file promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL cursor position: truncate size > offset promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL cursor position: truncate size < offset promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
+FAIL commands are queued, stream is unlocked after each operation promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.getDirectory is not a function. (In 'navigator.storage.getDirectory()', 'navigator.storage.getDirectory' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateindexeddbhttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-indexeddb.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-indexeddb.https.any-expected.txt 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-indexeddb.https.any-expected.txt    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> 
</span><del>-FAIL estimate() method exists and returns a Promise navigator.storage is not an Object. (evaluating ''estimate' in navigator.storage')
-FAIL estimate() resolves to dictionary with members promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.estimate')"
-FAIL estimate() shows usage increase after large value is stored promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.estimate')"
</del><ins>+FAIL estimate() method exists and returns a Promise assert_true: expected true got false
+FAIL estimate() resolves to dictionary with members promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)"
+FAIL estimate() shows usage increase after large value is stored promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateparallelhttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-parallel.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-parallel.https.any-expected.txt  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-parallel.https.any-expected.txt     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL Multiple estimate() calls in parallel should complete promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.estimate')"
</del><ins>+FAIL Multiple estimate() calls in parallel should complete promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateusagedetailsapplicationcachehttpstentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-application-cache.https.tentative-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-application-cache.https.tentative-expected.txt     2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-application-cache.https.tentative-expected.txt        2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL estimate() shows usage increase after app is cached promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.estimate')"
</del><ins>+FAIL estimate() shows usage increase after app is cached promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateusagedetailscacheshttpstentativeanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-caches.https.tentative.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-caches.https.tentative.any-expected.txt    2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-caches.https.tentative.any-expected.txt       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL estimate() shows usage increase after large value is stored promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.estimate')"
</del><ins>+FAIL estimate() shows usage increase after large value is stored promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateusagedetailsindexeddbhttpstentativeanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-indexeddb.https.tentative.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-indexeddb.https.tentative.any-expected.txt 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-indexeddb.https.tentative.any-expected.txt    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> 
</span><del>-FAIL estimate() resolves to dictionary with usageDetails member promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.estimate')"
-FAIL estimate() usage details reflects increase in indexedDB after large value is stored promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.estimate')"
</del><ins>+FAIL estimate() resolves to dictionary with usageDetails member promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)"
+FAIL estimate() usage details reflects increase in indexedDB after large value is stored promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateusagedetailsserviceworkershttpstentativewindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-service-workers.https.tentative.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-service-workers.https.tentative.window-expected.txt        2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details-service-workers.https.tentative.window-expected.txt   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL estimate() shows usage increase after large value is stored promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.estimate')"
</del><ins>+FAIL estimate() shows usage increase after large value is stored promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageestimateusagedetailshttpstentativeanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details.https.tentative.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details.https.tentative.any-expected.txt   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/estimate-usage-details.https.tentative.any-expected.txt      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL estimate() resolves to dictionary with members, including usageDetails promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.estimate')"
</del><ins>+FAIL estimate() resolves to dictionary with members, including usageDetails promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageidlharnesshttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/idlharness.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/idlharness.https.any-expected.txt 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/idlharness.https.any-expected.txt    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -15,20 +15,20 @@
</span><span class="cx"> PASS WorkerNavigator includes NavigatorLanguage: member names are unique
</span><span class="cx"> PASS WorkerNavigator includes NavigatorOnLine: member names are unique
</span><span class="cx"> PASS WorkerNavigator includes NavigatorConcurrentHardware: member names are unique
</span><del>-FAIL StorageManager interface: existence and properties of interface object assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface object length assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface object name assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface: existence and properties of interface prototype object assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface: operation persisted() assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface: operation persist() assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface: operation estimate() assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager must be primary interface of navigator.storage assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL Stringification of navigator.storage assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL StorageManager interface: navigator.storage must inherit property "persisted()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL StorageManager interface: navigator.storage must inherit property "persist()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL StorageManager interface: navigator.storage must inherit property "estimate()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
-FAIL Navigator interface: attribute storage assert_true: The prototype object must have a property "storage" expected true got false
-FAIL Navigator interface: navigator must inherit property "storage" with the proper type assert_inherits: property "storage" not found in prototype chain
</del><ins>+PASS StorageManager interface: existence and properties of interface object
+PASS StorageManager interface object length
+PASS StorageManager interface object name
+PASS StorageManager interface: existence and properties of interface prototype object
+PASS StorageManager interface: existence and properties of interface prototype object's "constructor" property
+PASS StorageManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS StorageManager interface: operation persisted()
+PASS StorageManager interface: operation persist()
+FAIL StorageManager interface: operation estimate() assert_own_property: interface prototype object missing non-static operation expected property "estimate" missing
+PASS StorageManager must be primary interface of navigator.storage
+PASS Stringification of navigator.storage
+PASS StorageManager interface: navigator.storage must inherit property "persisted()" with the proper type
+PASS StorageManager interface: navigator.storage must inherit property "persist()" with the proper type
+FAIL StorageManager interface: navigator.storage must inherit property "estimate()" with the proper type assert_inherits: property "estimate" not found in prototype chain
+PASS Navigator interface: attribute storage
+PASS Navigator interface: navigator must inherit property "storage" with the proper type
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageidlharnesshttpsanyworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/idlharness.https.any.worker-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/idlharness.https.any.worker-expected.txt  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/idlharness.https.any.worker-expected.txt     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -15,15 +15,15 @@
</span><span class="cx"> PASS WorkerNavigator includes NavigatorLanguage: member names are unique
</span><span class="cx"> PASS WorkerNavigator includes NavigatorOnLine: member names are unique
</span><span class="cx"> PASS WorkerNavigator includes NavigatorConcurrentHardware: member names are unique
</span><del>-FAIL StorageManager interface: existence and properties of interface object assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface object length assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface object name assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface: existence and properties of interface prototype object assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface: operation persisted() assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
-FAIL StorageManager interface: member persist undefined is not an Object. (evaluating 'member.name in this.get_interface_object()')
-FAIL StorageManager interface: operation estimate() assert_own_property: self does not have own property "StorageManager" expected property "StorageManager" missing
</del><ins>+PASS StorageManager interface: existence and properties of interface object
+PASS StorageManager interface object length
+PASS StorageManager interface object name
+PASS StorageManager interface: existence and properties of interface prototype object
+PASS StorageManager interface: existence and properties of interface prototype object's "constructor" property
+PASS StorageManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS StorageManager interface: operation persisted()
+PASS StorageManager interface: member persist
+FAIL StorageManager interface: operation estimate() assert_own_property: interface prototype object missing non-static operation expected property "estimate" missing
</ins><span class="cx"> FAIL StorageManager must be primary interface of navigator.storage assert_equals: wrong typeof object expected "object" but got "undefined"
</span><span class="cx"> FAIL Stringification of navigator.storage assert_equals: wrong typeof object expected "object" but got "undefined"
</span><span class="cx"> FAIL StorageManager interface: navigator.storage must inherit property "persisted()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstorageopaqueoriginhttpswindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/opaque-origin.https.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/opaque-origin.https.window-expected.txt   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/opaque-origin.https.window-expected.txt      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,8 +1,8 @@
</span><span class="cx"> 
</span><del>-FAIL navigator.storage.persisted() in non-sandboxed iframe should not reject assert_equals: navigator.storage.persisted() should not reject expected "no rejection" but got "API access threw"
-FAIL navigator.storage.persisted() in sandboxed iframe should reject with TypeError assert_equals: navigator.storage.persisted() should reject with TypeError expected "correct rejection" but got "API access threw"
</del><ins>+PASS navigator.storage.persisted() in non-sandboxed iframe should not reject
+FAIL navigator.storage.persisted() in sandboxed iframe should reject with TypeError assert_equals: navigator.storage.persisted() should reject with TypeError expected "correct rejection" but got "no rejection"
</ins><span class="cx"> FAIL navigator.storage.estimate() in non-sandboxed iframe should not reject assert_equals: navigator.storage.estimate() should not reject expected "no rejection" but got "API access threw"
</span><span class="cx"> FAIL navigator.storage.estimate() in sandboxed iframe should reject with TypeError assert_equals: navigator.storage.estimate() should reject with TypeError expected "correct rejection" but got "API access threw"
</span><del>-FAIL navigator.storage.persist() in non-sandboxed iframe should not reject assert_equals: navigator.storage.persist() should not reject expected "no rejection" but got "API access threw"
-FAIL navigator.storage.persist() in sandboxed iframe should reject with TypeError assert_equals: navigator.storage.persist() should reject with TypeError expected "correct rejection" but got "API access threw"
</del><ins>+PASS navigator.storage.persist() in non-sandboxed iframe should not reject
+FAIL navigator.storage.persist() in sandboxed iframe should reject with TypeError assert_equals: navigator.storage.persist() should reject with TypeError expected "correct rejection" but got "no rejection"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragepermissionqueryhttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/permission-query.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/permission-query.https.any-expected.txt   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/permission-query.https.any-expected.txt      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL The "persistent-storage" permission is recognized promise_test: Unhandled rejection with value: object "TypeError: Type error"
</del><ins>+FAIL The "persistent-storage" permission is recognized promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.permissions.query')"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragepersistedhttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/persisted.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/persisted.https.any-expected.txt  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/persisted.https.any-expected.txt     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> 
</span><del>-FAIL persisted() method exists and returns a Promise navigator.storage is not an Object. (evaluating ''persisted' in navigator.storage')
-FAIL persisted() returns a promise and resolves as boolean with false undefined is not an object (evaluating 'navigator.storage.persisted')
</del><ins>+PASS persisted() method exists and returns a Promise
+FAIL persisted() returns a promise and resolves as boolean with false assert_equals: expected false but got true
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragequotachangeindetachediframetentativehttpsexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/quotachange-in-detached-iframe.tentative.https-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/quotachange-in-detached-iframe.tentative.https-expected.txt       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/quotachange-in-detached-iframe.tentative.https-expected.txt  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL Add quotachange listener on detached iframe. undefined is not an object (evaluating 'storageManager.addEventListener')
</del><ins>+FAIL Add quotachange listener on detached iframe. storageManager.addEventListener is not a function. (In 'storageManager.addEventListener('quotachange', emptyListener)', 'storageManager.addEventListener' is undefined)
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragestoragemanagerestimatehttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-estimate.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-estimate.https.any-expected.txt    2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-estimate.https.any-expected.txt       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> 
</span><del>-FAIL estimate() method returns a Promise undefined is not an object (evaluating 'navigator.storage.estimate')
-FAIL estimate() resolves to dictionary with members undefined is not an object (evaluating 'navigator.storage.estimate')
-FAIL estimate() shows usage increase after 1MB IndexedDB record is stored promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'navigator.storage.estimate')"
</del><ins>+FAIL estimate() method returns a Promise navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)
+FAIL estimate() resolves to dictionary with members navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)
+FAIL estimate() shows usage increase after 1MB IndexedDB record is stored promise_test: Unhandled rejection with value: object "TypeError: navigator.storage.estimate is not a function. (In 'navigator.storage.estimate()', 'navigator.storage.estimate' is undefined)"
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragestoragemanagerpersisthttpswindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-persist.https.window-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-persist.https.window-expected.txt  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-persist.https.window-expected.txt     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL navigator.storage.persist() returns a promise that resolves. undefined is not an object (evaluating 'navigator.storage.persist')
</del><ins>+PASS navigator.storage.persist() returns a promise that resolves.
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsimportedw3cwebplatformtestsstoragestoragemanagerpersistedhttpsanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-persisted.https.any-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-persisted.https.any-expected.txt   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/storage/storagemanager-persisted.https.any-expected.txt      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL navigator.storage.persisted() returns a promise that resolves. undefined is not an object (evaluating 'navigator.storage.persisted')
</del><ins>+PASS navigator.storage.persisted() returns a promise that resolves.
</ins><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsplatformmacwk1fastdomnavigatordetachednocrashexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt        2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -18,6 +18,7 @@
</span><span class="cx"> navigator.product is OK
</span><span class="cx"> navigator.productSub is OK
</span><span class="cx"> navigator.requestMediaKeySystemAccess() is OK
</span><ins>+navigator.storage is OK
</ins><span class="cx"> navigator.userAgent is OK
</span><span class="cx"> navigator.vendor is OK
</span><span class="cx"> navigator.vendorSub is OK
</span><span class="lines">@@ -40,6 +41,7 @@
</span><span class="cx"> navigator.product is OK
</span><span class="cx"> navigator.productSub is OK
</span><span class="cx"> navigator.requestMediaKeySystemAccess() is OK
</span><ins>+navigator.storage is OK
</ins><span class="cx"> navigator.userAgent is OK
</span><span class="cx"> navigator.vendor is OK
</span><span class="cx"> navigator.vendorSub is OK
</span></span></pre></div>
<a id="branchessafari612branchLayoutTestsplatformmacwk2fastdomnavigatordetachednocrashexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/LayoutTests/platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/LayoutTests/platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt        2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/LayoutTests/platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> navigator.setLoggedIn() is OK
</span><span class="cx"> navigator.setLoggedOut() is OK
</span><span class="cx"> navigator.share() is OK
</span><ins>+navigator.storage is OK
</ins><span class="cx"> navigator.userAgent is OK
</span><span class="cx"> navigator.vendor is OK
</span><span class="cx"> navigator.vendorSub is OK
</span><span class="lines">@@ -60,6 +61,7 @@
</span><span class="cx"> navigator.setLoggedIn() is OK
</span><span class="cx"> navigator.setLoggedOut() is OK
</span><span class="cx"> navigator.share() is OK
</span><ins>+navigator.storage is OK
</ins><span class="cx"> navigator.userAgent is OK
</span><span class="cx"> navigator.vendor is OK
</span><span class="cx"> navigator.vendorSub is OK
</span></span></pre></div>
<a id="branchessafari612branchSourceWTFScriptsPreferencesWebPreferencesExperimentalyaml"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml        2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1046,6 +1046,18 @@
</span><span class="cx">     WebCore:
</span><span class="cx">       default: false
</span><span class="cx"> 
</span><ins>+StorageAPIEnabled:
+  type: bool
+  humanReadableName: "Storage API"
+  humanReadableDescription: "Enable Storage API"
+  defaultValue:
+    WebKitLegacy:
+      default: false
+    WebKit:
+      default: false
+    WebCore:
+      default: false
+
</ins><span class="cx"> SyntheticEditingCommandsEnabled:
</span><span class="cx">   type: bool
</span><span class="cx">   humanReadableName: "Synthetic Editing Commands"
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/CMakeLists.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/CMakeLists.txt 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/CMakeLists.txt    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -52,6 +52,7 @@
</span><span class="cx">     "${WEBCORE_DIR}/Modules/plugins"
</span><span class="cx">     "${WEBCORE_DIR}/Modules/remoteplayback"
</span><span class="cx">     "${WEBCORE_DIR}/Modules/speech"
</span><ins>+    "${WEBCORE_DIR}/Modules/storage"
</ins><span class="cx">     "${WEBCORE_DIR}/Modules/streams"
</span><span class="cx">     "${WEBCORE_DIR}/Modules/webaudio"
</span><span class="cx">     "${WEBCORE_DIR}/Modules/webauthn"
</span><span class="lines">@@ -202,6 +203,7 @@
</span><span class="cx">     Modules/notifications
</span><span class="cx">     Modules/paymentrequest
</span><span class="cx">     Modules/speech
</span><ins>+    Modules/storage
</ins><span class="cx">     Modules/streams
</span><span class="cx">     Modules/webaudio
</span><span class="cx">     Modules/webdatabase
</span><span class="lines">@@ -481,6 +483,8 @@
</span><span class="cx">     Modules/speech/SpeechSynthesisUtterance.idl
</span><span class="cx">     Modules/speech/SpeechSynthesisVoice.idl
</span><span class="cx"> 
</span><ins>+    Modules/storage/StorageManager.idl
+
</ins><span class="cx">     Modules/streams/ByteLengthQueuingStrategy.idl
</span><span class="cx">     Modules/streams/CountQueuingStrategy.idl
</span><span class="cx">     Modules/streams/ReadableByteStreamController.idl
</span><span class="lines">@@ -1058,6 +1062,7 @@
</span><span class="cx">     page/NavigatorPlugins.idl
</span><span class="cx">     page/NavigatorServiceWorker.idl
</span><span class="cx">     page/NavigatorShare.idl
</span><ins>+    page/NavigatorStorage.idl
</ins><span class="cx">     page/Performance+NavigationTiming.idl
</span><span class="cx">     page/Performance+PerformanceTimeline.idl
</span><span class="cx">     page/Performance+ResourceTiming.idl
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoreDerivedSourcesinputxcfilelist"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/DerivedSources-input.xcfilelist (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/DerivedSources-input.xcfilelist        2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/DerivedSources-input.xcfilelist   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -409,6 +409,7 @@
</span><span class="cx"> $(PROJECT_DIR)/Modules/speech/SpeechSynthesisEvent.idl
</span><span class="cx"> $(PROJECT_DIR)/Modules/speech/SpeechSynthesisUtterance.idl
</span><span class="cx"> $(PROJECT_DIR)/Modules/speech/SpeechSynthesisVoice.idl
</span><ins>+$(PROJECT_DIR)/Modules/storage/StorageManager.idl
</ins><span class="cx"> $(PROJECT_DIR)/Modules/streams/ByteLengthQueuingStrategy.idl
</span><span class="cx"> $(PROJECT_DIR)/Modules/streams/ByteLengthQueuingStrategy.js
</span><span class="cx"> $(PROJECT_DIR)/Modules/streams/CountQueuingStrategy.idl
</span><span class="lines">@@ -1136,6 +1137,8 @@
</span><span class="cx"> $(PROJECT_DIR)/page/NavigatorPlugins.idl
</span><span class="cx"> $(PROJECT_DIR)/page/NavigatorServiceWorker.idl
</span><span class="cx"> $(PROJECT_DIR)/page/NavigatorShare.idl
</span><ins>+$(PROJECT_DIR)/page/NavigatorStorage.idl
+$(PROJECT_DIR)/page/NavigatorStorageManager.idl
</ins><span class="cx"> $(PROJECT_DIR)/page/Performance+NavigationTiming.idl
</span><span class="cx"> $(PROJECT_DIR)/page/Performance+PerformanceTimeline.idl
</span><span class="cx"> $(PROJECT_DIR)/page/Performance+ResourceTiming.idl
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoreDerivedSourcesoutputxcfilelist"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/DerivedSources-output.xcfilelist (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/DerivedSources-output.xcfilelist       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/DerivedSources-output.xcfilelist  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1407,6 +1407,8 @@
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSNavigatorServiceWorker.h
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSNavigatorShare.cpp
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSNavigatorShare.h
</span><ins>+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSNavigatorStorage.cpp
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSNavigatorStorage.h
</ins><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSNavigatorWebDriver.cpp
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSNavigatorWebDriver.h
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSNavigatorWebXR.cpp
</span><span class="lines">@@ -2171,6 +2173,8 @@
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSStorage.h
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSStorageEvent.cpp
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSStorageEvent.h
</span><ins>+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSStorageManager.cpp
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSStorageManager.h
</ins><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSStringCallback.cpp
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSStringCallback.h
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSStyleMedia.cpp
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/DerivedSources.make (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/DerivedSources.make    2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/DerivedSources.make       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -359,6 +359,7 @@
</span><span class="cx">     $(WebCore)/Modules/streams/WritableStreamDefaultController.idl \
</span><span class="cx">     $(WebCore)/Modules/streams/WritableStreamDefaultWriter.idl \
</span><span class="cx">     $(WebCore)/Modules/streams/WritableStreamSink.idl \
</span><ins>+    $(WebCore)/Modules/storage/StorageManager.idl \
</ins><span class="cx">     $(WebCore)/Modules/webaudio/AnalyserNode.idl \
</span><span class="cx">     $(WebCore)/Modules/webaudio/AnalyserOptions.idl \
</span><span class="cx">     $(WebCore)/Modules/webaudio/AudioBuffer.idl \
</span><span class="lines">@@ -984,6 +985,7 @@
</span><span class="cx">     $(WebCore)/page/NavigatorPlugins.idl \
</span><span class="cx">     $(WebCore)/page/NavigatorServiceWorker.idl \
</span><span class="cx">     $(WebCore)/page/NavigatorShare.idl \
</span><ins>+    $(WebCore)/page/NavigatorStorage.idl \
</ins><span class="cx">     $(WebCore)/page/Performance+NavigationTiming.idl \
</span><span class="cx">     $(WebCore)/page/Performance+PerformanceTimeline.idl \
</span><span class="cx">     $(WebCore)/page/Performance+ResourceTiming.idl \
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoreHeaderscmake"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/Headers.cmake (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/Headers.cmake  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/Headers.cmake     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -143,6 +143,11 @@
</span><span class="cx">     Modules/speech/SpeechRecognitionUpdate.h
</span><span class="cx">     Modules/speech/SpeechRecognizer.h
</span><span class="cx"> 
</span><ins>+    Modules/storage/DummyStorageProvider.h
+    Modules/storage/StorageConnection.h
+    Modules/storage/StorageManager.h
+    Modules/storage/StorageProvider.h
+
</ins><span class="cx">     Modules/streams/ReadableStreamSink.h
</span><span class="cx">     Modules/streams/ReadableStreamSource.h
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoreModulesstorageDummyStorageProviderhfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebCore/Modules/storage/DummyStorageProvider.h (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/Modules/storage/DummyStorageProvider.h                         (rev 0)
+++ branches/safari-612-branch/Source/WebCore/Modules/storage/DummyStorageProvider.h    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "StorageProvider.h"
+
+namespace WebCore {
+
+class DummyStorageProvider final : public StorageProvider {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+    DummyStorageProvider() = default;
+
+private:
+    class DummyStorageConnection final : public StorageConnection {
+    public:
+        static Ref<DummyStorageConnection> create()
+        {
+            return adoptRef(*new DummyStorageConnection());
+        }
+
+        void persisted(ClientOrigin&&, CompletionHandler<void(bool)>&& completionHandler)
+        {
+            completionHandler(false);
+        }
+
+        void persist(ClientOrigin&&, CompletionHandler<void(bool)>&& completionHandler)
+        {
+            completionHandler(false);
+        }
+    };
+
+    StorageConnection& storageConnection() final
+    {
+        if (!m_connection)
+            m_connection = DummyStorageConnection::create();
+
+        return *m_connection;
+    }
+
+    RefPtr<DummyStorageConnection> m_connection;
+};
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebCoreModulesstorageStorageConnectionhfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebCore/Modules/storage/StorageConnection.h (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/Modules/storage/StorageConnection.h                            (rev 0)
+++ branches/safari-612-branch/Source/WebCore/Modules/storage/StorageConnection.h       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <wtf/CompletionHandler.h>
+#include <wtf/RefCounted.h>
+
+namespace WebCore {
+
+struct ClientOrigin;
+
+class StorageConnection : public RefCounted<StorageConnection> {
+public:
+    virtual ~StorageConnection() = default;
+    virtual void persisted(ClientOrigin&&, CompletionHandler<void(bool)>&&) = 0;
+    virtual void persist(ClientOrigin&&, CompletionHandler<void(bool)>&&) = 0;
+};
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebCoreModulesstorageStorageManagercpp"></a>
<div class="addfile"><h4>Added: branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.cpp (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.cpp                             (rev 0)
+++ branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.cpp        2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "StorageManager.h"
+
+#include "ClientOrigin.h"
+#include "JSDOMPromiseDeferred.h"
+#include "NavigatorBase.h"
+#include "SecurityOrigin.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(StorageManager);
+
+Ref<StorageManager> StorageManager::create(NavigatorBase& navigator)
+{
+    return adoptRef(*new StorageManager(navigator));
+}
+
+StorageManager::StorageManager(NavigatorBase& navigator)
+    : m_navigator(navigator)
+{
+}
+
+static ClientOrigin clientOrigin(ScriptExecutionContext& context)
+{
+    auto* origin = context.securityOrigin();
+    return { context.topOrigin().data(), origin ? origin->data() : SecurityOriginData { } };
+}
+
+void StorageManager::persisted(DOMPromiseDeferred<IDLBoolean>&& promise)
+{
+    auto context = m_navigator.scriptExecutionContext();
+    if (!context)
+        return promise.reject(Exception { InvalidStateError, "The context is invalid"_s });
+
+    if (auto connection = context->storageConnection()) {
+        return connection->persisted(clientOrigin(*context), [promise = WTFMove(promise)](bool persisted) mutable {
+            promise.resolve(persisted);
+        });
+    }
+
+    return promise.reject(Exception { InvalidStateError, "The connection is invalid"_s });
+}
+
+void StorageManager::persist(DOMPromiseDeferred<IDLBoolean>&& promise)
+{
+    auto context = m_navigator.scriptExecutionContext();
+    if (!context)
+        return promise.reject(Exception { InvalidStateError, "The context is invalid"_s });
+
+    if (auto connection = context->storageConnection()) {
+        return connection->persist(clientOrigin(*context), [promise = WTFMove(promise)](bool persisted) mutable {
+            promise.resolve(persisted);
+        });
+    }
+
+    return promise.reject(Exception { InvalidStateError, "The connection is invalid"_s });
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebCoreModulesstorageStorageManagerhfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.h (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.h                               (rev 0)
+++ branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.h  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "IDLTypes.h"
+#include <wtf/IsoMalloc.h>
+
+namespace WebCore {
+
+class NavigatorBase;
+template<typename> class DOMPromiseDeferred;
+
+class StorageManager : public RefCounted<StorageManager> {
+    WTF_MAKE_ISO_ALLOCATED(StorageManager);
+public:
+    static Ref<StorageManager> create(NavigatorBase&);
+    void persisted(DOMPromiseDeferred<IDLBoolean>&&);
+    void persist(DOMPromiseDeferred<IDLBoolean>&&);
+
+private:
+    explicit StorageManager(NavigatorBase&);
+
+    NavigatorBase& m_navigator;
+};
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebCoreModulesstorageStorageManageridlfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.idl (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.idl                             (rev 0)
+++ branches/safari-612-branch/Source/WebCore/Modules/storage/StorageManager.idl        2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// https://storage.spec.whatwg.org/#storagemanager
+
+[
+    EnabledBySetting=StorageAPI,
+    ImplementationLacksVTable,
+    SecureContext,
+    Exposed=(Window,Worker)
+] interface StorageManager {
+    Promise<boolean> persisted();
+    [Exposed=Window] Promise<boolean> persist();
+
+    // FIXME: add Promise<StorageEstimate> estimate();
+};
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebCoreModulesstorageStorageProviderhfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebCore/Modules/storage/StorageProvider.h (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/Modules/storage/StorageProvider.h                              (rev 0)
+++ branches/safari-612-branch/Source/WebCore/Modules/storage/StorageProvider.h 2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+namespace WebCore {
+
+class StorageConnection;
+
+class StorageProvider {
+public:
+    StorageProvider() = default;
+    virtual ~StorageProvider() = default;
+    virtual StorageConnection& storageConnection() = 0;
+};
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebCoreSourcestxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/Sources.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/Sources.txt    2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/Sources.txt       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -222,6 +222,7 @@
</span><span class="cx"> Modules/speech/SpeechSynthesisEvent.cpp
</span><span class="cx"> Modules/speech/SpeechSynthesisUtterance.cpp
</span><span class="cx"> Modules/speech/SpeechSynthesisVoice.cpp
</span><ins>+Modules/storage/StorageManager.cpp
</ins><span class="cx"> Modules/streams/ReadableStreamSink.cpp
</span><span class="cx"> Modules/streams/ReadableStreamSource.cpp
</span><span class="cx"> Modules/webaudio/AnalyserNode.cpp
</span><span class="lines">@@ -3558,6 +3559,7 @@
</span><span class="cx"> JSStereoPannerOptions.cpp
</span><span class="cx"> JSStaticRange.cpp
</span><span class="cx"> JSStorage.cpp
</span><ins>+JSStorageManager.cpp
</ins><span class="cx"> JSStorageEvent.cpp
</span><span class="cx"> JSStringCallback.cpp
</span><span class="cx"> JSStyleMedia.cpp
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/WebCore.xcodeproj/project.pbxproj (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/WebCore.xcodeproj/project.pbxproj      2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -2765,6 +2765,10 @@
</span><span class="cx">          9305B24D098F1B6B00C28855 /* Timer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9305B24C098F1B6B00C28855 /* Timer.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          9307F1D80AF2D59000DBA31A /* HitTestResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9307F1D60AF2D59000DBA31A /* HitTestResult.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          930841341CDDB15500B0958C /* JSDOMConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 930841331CDDB15500B0958C /* JSDOMConvert.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+               93085DB726E02AFE000EC6A7 /* StorageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 93085DB526E006D0000EC6A7 /* StorageManager.h */; };
+               93085DBD26E18ED9000EC6A7 /* StorageConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 93085DB926E14FBA000EC6A7 /* StorageConnection.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               93085DBE26E18EE4000EC6A7 /* StorageProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 93085DB826E14FBA000EC6A7 /* StorageProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               93085DF826E822C7000EC6A7 /* DummyStorageProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 93085DF626E822C6000EC6A7 /* DummyStorageProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">           930908910AF7EDE40081DF01 /* HitTestRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 930908900AF7EDE40081DF01 /* HitTestRequest.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          930AAC9A250EB8490013DA9F /* CSSConditionRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 930AAC98250EB8170013DA9F /* CSSConditionRule.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          930AAC9F250ED4090013DA9F /* JSCSSConditionRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 930AAC9D250ED4090013DA9F /* JSCSSConditionRule.h */; };
</span><span class="lines">@@ -11468,6 +11472,13 @@
</span><span class="cx">          9307F1D50AF2D59000DBA31A /* HitTestResult.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HitTestResult.cpp; sourceTree = "<group>"; };
</span><span class="cx">          9307F1D60AF2D59000DBA31A /* HitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HitTestResult.h; sourceTree = "<group>"; };
</span><span class="cx">          930841331CDDB15500B0958C /* JSDOMConvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMConvert.h; sourceTree = "<group>"; };
</span><ins>+               93085DB126E000BD000EC6A7 /* NavigatorStorage.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = NavigatorStorage.idl; sourceTree = "<group>"; };
+               93085DB426E006CF000EC6A7 /* StorageManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageManager.cpp; sourceTree = "<group>"; };
+               93085DB526E006D0000EC6A7 /* StorageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageManager.h; sourceTree = "<group>"; };
+               93085DB626E006D0000EC6A7 /* StorageManager.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = StorageManager.idl; sourceTree = "<group>"; };
+               93085DB826E14FBA000EC6A7 /* StorageProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageProvider.h; sourceTree = "<group>"; };
+               93085DB926E14FBA000EC6A7 /* StorageConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageConnection.h; sourceTree = "<group>"; };
+               93085DF626E822C6000EC6A7 /* DummyStorageProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DummyStorageProvider.h; sourceTree = "<group>"; };
</ins><span class="cx">           930908900AF7EDE40081DF01 /* HitTestRequest.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HitTestRequest.h; sourceTree = "<group>"; };
</span><span class="cx">          930AAC96250EB8170013DA9F /* CSSConditionRule.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSConditionRule.cpp; sourceTree = "<group>"; };
</span><span class="cx">          930AAC98250EB8170013DA9F /* CSSConditionRule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSConditionRule.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -22004,6 +22015,7 @@
</span><span class="cx">                          7C017C3D24969F1300DC0C02 /* NavigatorPlugins.idl */,
</span><span class="cx">                          5182C24B1F313AE00059BA7C /* NavigatorServiceWorker.idl */,
</span><span class="cx">                          1DC553FD211BA12A004B780E /* NavigatorShare.idl */,
</span><ins>+                               93085DB126E000BD000EC6A7 /* NavigatorStorage.idl */,
</ins><span class="cx">                           00146288103CD1DE000B20DB /* OriginAccessEntry.cpp */,
</span><span class="cx">                          00146289103CD1DE000B20DB /* OriginAccessEntry.h */,
</span><span class="cx">                          65FEA86809833ADE00BED4AB /* Page.cpp */,
</span><span class="lines">@@ -22963,6 +22975,19 @@
</span><span class="cx">                  path = mac;
</span><span class="cx">                  sourceTree = "<group>";
</span><span class="cx">          };
</span><ins>+               93085DB326E0068E000EC6A7 /* storage */ = {
+                       isa = PBXGroup;
+                       children = (
+                               93085DF626E822C6000EC6A7 /* DummyStorageProvider.h */,
+                               93085DB926E14FBA000EC6A7 /* StorageConnection.h */,
+                               93085DB426E006CF000EC6A7 /* StorageManager.cpp */,
+                               93085DB526E006D0000EC6A7 /* StorageManager.h */,
+                               93085DB626E006D0000EC6A7 /* StorageManager.idl */,
+                               93085DB826E14FBA000EC6A7 /* StorageProvider.h */,
+                       );
+                       path = storage;
+                       sourceTree = "<group>";
+               };
</ins><span class="cx">           93309D86099E64910056E581 /* editing */ = {
</span><span class="cx">                  isa = PBXGroup;
</span><span class="cx">                  children = (
</span><span class="lines">@@ -23775,6 +23800,7 @@
</span><span class="cx">                          072AE1DE183C0513000A5988 /* plugins */,
</span><span class="cx">                          CDC312E022FCD0B0001204EC /* remoteplayback */,
</span><span class="cx">                          AA2A5AB716A485A400975A25 /* speech */,
</span><ins>+                               93085DB326E0068E000EC6A7 /* storage */,
</ins><span class="cx">                           41A023EA1A39DB7900F722CF /* streams */,
</span><span class="cx">                          FD315FA212B025B100C1A359 /* webaudio */,
</span><span class="cx">                          57D8462A1FEAF57F00CA3682 /* webauthn */,
</span><span class="lines">@@ -31825,6 +31851,7 @@
</span><span class="cx">                          81F65FF613788FAA00FF6F2D /* DragState.h in Headers */,
</span><span class="cx">                          510A91F624D32DDC00BFD89C /* Dualshock3HIDGamepad.h in Headers */,
</span><span class="cx">                          93D6B7A82551D41F0058DD3A /* DummySpeechRecognitionProvider.h in Headers */,
</span><ins>+                               93085DF826E822C7000EC6A7 /* DummyStorageProvider.h in Headers */,
</ins><span class="cx">                           E1BA66F11742BD8600C20251 /* DynamicLinkerInterposing.h in Headers */,
</span><span class="cx">                          FD6ED2C8136B8E66003CF072 /* DynamicsCompressor.h in Headers */,
</span><span class="cx">                          FD537357137B653B00008DCE /* DynamicsCompressorKernel.h in Headers */,
</span><span class="lines">@@ -34658,11 +34685,14 @@
</span><span class="cx">                          1AC2D845171734A100652FC0 /* Storage.h in Headers */,
</span><span class="cx">                          51BE37E00DAEE00E001085FC /* StorageArea.h in Headers */,
</span><span class="cx">                          BC4A533725605AE10028C592 /* StorageBlockingPolicy.h in Headers */,
</span><ins>+                               93085DBD26E18ED9000EC6A7 /* StorageConnection.h in Headers */,
</ins><span class="cx">                           51E0BABB0DA5547100A9E417 /* StorageEvent.h in Headers */,
</span><span class="cx">                          C5EBDD84105EDDEC0056816F /* StorageEventDispatcher.h in Headers */,
</span><ins>+                               93085DB726E02AFE000EC6A7 /* StorageManager.h in Headers */,
</ins><span class="cx">                           51E0BB380DA5ACB600A9E417 /* StorageMap.h in Headers */,
</span><span class="cx">                          C50D0E830FF4272900AC2644 /* StorageNamespace.h in Headers */,
</span><span class="cx">                          1A37636C1A2E68BB009A7EE2 /* StorageNamespaceProvider.h in Headers */,
</span><ins>+                               93085DBE26E18EE4000EC6A7 /* StorageProvider.h in Headers */,
</ins><span class="cx">                           41DE7C7C222DA14300532B65 /* StorageQuotaManager.h in Headers */,
</span><span class="cx">                          5C9EF2F321F06190003BDC56 /* StorageSessionProvider.h in Headers */,
</span><span class="cx">                          5166D3CD1E8ED48F00AD62E3 /* StorageType.h in Headers */,
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCorebindingsjsWebCoreBuiltinNamesh"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/bindings/js/WebCoreBuiltinNames.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/bindings/js/WebCoreBuiltinNames.h      2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/bindings/js/WebCoreBuiltinNames.h 2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -238,6 +238,7 @@
</span><span class="cx">     macro(StereoPannerNode) \
</span><span class="cx">     macro(StylePropertyMapReadOnly) \
</span><span class="cx">     macro(StylePropertyMap) \
</span><ins>+    macro(StorageManager) \
</ins><span class="cx">     macro(SubtleCrypto) \
</span><span class="cx">     macro(TextDecoderStream) \
</span><span class="cx">     macro(TextDecoderStreamDecoder) \
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/dom/Document.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/dom/Document.cpp       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/dom/Document.cpp  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -3559,6 +3559,11 @@
</span><span class="cx">     return m_idbConnectionProxy.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RefPtr<StorageConnection> Document::storageConnection()
+{
+    return page() ? &page()->storageConnection() : nullptr;
+}
+
</ins><span class="cx"> SocketProvider* Document::socketProvider()
</span><span class="cx"> {
</span><span class="cx">     return m_socketProvider.get();
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoredomDocumenth"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/dom/Document.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/dom/Document.h 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/dom/Document.h    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -701,6 +701,7 @@
</span><span class="cx">     void disableWebAssembly(const String& errorMessage) final;
</span><span class="cx"> 
</span><span class="cx">     IDBClient::IDBConnectionProxy* idbConnectionProxy() final;
</span><ins>+    RefPtr<StorageConnection> storageConnection() final;
</ins><span class="cx">     SocketProvider* socketProvider() final;
</span><span class="cx">     RefPtr<RTCDataChannelRemoteHandlerConnection> createRTCDataChannelRemoteHandlerConnection() final;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoredomScriptExecutionContexth"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/dom/ScriptExecutionContext.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/dom/ScriptExecutionContext.h   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/dom/ScriptExecutionContext.h      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include "SecurityContext.h"
</span><span class="cx"> #include "ServiceWorkerTypes.h"
</span><span class="cx"> #include "Settings.h"
</span><ins>+#include "StorageConnection.h"
</ins><span class="cx"> #include <JavaScriptCore/ConsoleTypes.h>
</span><span class="cx"> #include <JavaScriptCore/HandleTypes.h>
</span><span class="cx"> #include <wtf/CrossThreadTask.h>
</span><span class="lines">@@ -74,7 +75,6 @@
</span><span class="cx"> class PublicURLManager;
</span><span class="cx"> class RejectedPromiseTracker;
</span><span class="cx"> class ResourceRequest;
</span><del>-class SecurityOrigin;
</del><span class="cx"> class SocketProvider;
</span><span class="cx"> enum class ReferrerPolicy : uint8_t;
</span><span class="cx"> enum class TaskSource : uint8_t;
</span><span class="lines">@@ -116,6 +116,7 @@
</span><span class="cx">     virtual void disableWebAssembly(const String& errorMessage) = 0;
</span><span class="cx"> 
</span><span class="cx">     virtual IDBClient::IDBConnectionProxy* idbConnectionProxy() = 0;
</span><ins>+    virtual RefPtr<StorageConnection> storageConnection() { return nullptr; }
</ins><span class="cx"> 
</span><span class="cx">     virtual SocketProvider* socketProvider() = 0;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCoreloaderEmptyClientscpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/loader/EmptyClients.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/loader/EmptyClients.cpp        2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/loader/EmptyClients.cpp   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> #include "DocumentLoader.h"
</span><span class="cx"> #include "DragClient.h"
</span><span class="cx"> #include "DummySpeechRecognitionProvider.h"
</span><ins>+#include "DummyStorageProvider.h"
</ins><span class="cx"> #include "EditorClient.h"
</span><span class="cx"> #include "EmptyFrameLoaderClient.h"
</span><span class="cx"> #include "FileChooser.h"
</span><span class="lines">@@ -1193,7 +1194,8 @@
</span><span class="cx">         makeUniqueRef<EmptyFrameLoaderClient>(),
</span><span class="cx">         makeUniqueRef<DummySpeechRecognitionProvider>(),
</span><span class="cx">         makeUniqueRef<EmptyMediaRecorderProvider>(),
</span><del>-        EmptyBroadcastChannelRegistry::create()
</del><ins>+        EmptyBroadcastChannelRegistry::create(),
+        makeUniqueRef<DummyStorageProvider>()
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     static NeverDestroyed<EmptyChromeClient> dummyChromeClient;
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCorepageNavigatoridl"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/page/Navigator.idl (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/page/Navigator.idl     2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/page/Navigator.idl        2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -38,3 +38,4 @@
</span><span class="cx"> Navigator includes NavigatorPlugins;
</span><span class="cx"> Navigator includes NavigatorServiceWorker;
</span><span class="cx"> Navigator includes NavigatorShare;
</span><ins>+Navigator includes NavigatorStorage;
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebCorepageNavigatorBasecpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/page/NavigatorBase.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/page/NavigatorBase.cpp 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/page/NavigatorBase.cpp    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #include "Document.h"
</span><span class="cx"> #include "RuntimeEnabledFeatures.h"
</span><span class="cx"> #include "ServiceWorkerContainer.h"
</span><ins>+#include "StorageManager.h"
</ins><span class="cx"> #include <mutex>
</span><span class="cx"> #include <wtf/Language.h>
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="lines">@@ -139,6 +140,14 @@
</span><span class="cx">     return { defaultLanguage() };
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+ExceptionOr<StorageManager&> NavigatorBase::storage()
+{
+    if (!m_storageManager)
+        m_storageManager = StorageManager::create(*this);
+
+    return *m_storageManager;
+}
+
</ins><span class="cx"> #if ENABLE(SERVICE_WORKER)
</span><span class="cx"> ServiceWorkerContainer& NavigatorBase::serviceWorker()
</span><span class="cx"> {
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCorepageNavigatorBaseh"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/page/NavigatorBase.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/page/NavigatorBase.h   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/page/NavigatorBase.h      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> class ScriptExecutionContext;
</span><span class="cx"> class ServiceWorkerContainer;
</span><ins>+class StorageManager;
</ins><span class="cx"> 
</span><span class="cx"> class NavigatorBase : public RefCounted<NavigatorBase>, public ContextDestructionObserver, public CanMakeWeakPtr<NavigatorBase> {
</span><span class="cx"> public:
</span><span class="lines">@@ -58,9 +59,14 @@
</span><span class="cx">     static String language();
</span><span class="cx">     static Vector<String> languages();
</span><span class="cx"> 
</span><ins>+    ExceptionOr<StorageManager&> storage();
+
</ins><span class="cx"> protected:
</span><span class="cx">     explicit NavigatorBase(ScriptExecutionContext*);
</span><span class="cx"> 
</span><ins>+private:
+    RefPtr<StorageManager> m_storageManager;
+
</ins><span class="cx"> #if ENABLE(SERVICE_WORKER)
</span><span class="cx"> public:
</span><span class="cx">     ServiceWorkerContainer& serviceWorker();
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCorepageNavigatorStorageidlfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebCore/page/NavigatorStorage.idl (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/page/NavigatorStorage.idl                              (rev 0)
+++ branches/safari-612-branch/Source/WebCore/page/NavigatorStorage.idl 2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */

+ // https://storage.spec.whatwg.org/#navigatorstorage

+ [
+    EnabledBySetting=StorageAPI,
+    SecureContext
+] interface mixin NavigatorStorage {
+    [SameObject] readonly attribute StorageManager storage;
+};
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebCorepagePagecpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/page/Page.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/page/Page.cpp  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/page/Page.cpp     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -135,6 +135,7 @@
</span><span class="cx"> #include "StorageArea.h"
</span><span class="cx"> #include "StorageNamespace.h"
</span><span class="cx"> #include "StorageNamespaceProvider.h"
</span><ins>+#include "StorageProvider.h"
</ins><span class="cx"> #include "StyleAdjuster.h"
</span><span class="cx"> #include "StyleResolver.h"
</span><span class="cx"> #include "StyleScope.h"
</span><span class="lines">@@ -327,6 +328,7 @@
</span><span class="cx">     , m_shouldRelaxThirdPartyCookieBlocking(pageConfiguration.shouldRelaxThirdPartyCookieBlocking)
</span><span class="cx">     , m_httpsUpgradeEnabled(pageConfiguration.httpsUpgradeEnabled)
</span><span class="cx">     , m_reportingEndpointsCache(WTFMove(pageConfiguration.reportingEndpointsCache))
</span><ins>+    , m_storageProvider(WTFMove(pageConfiguration.storageProvider))
</ins><span class="cx"> {
</span><span class="cx">     updateTimerThrottlingState();
</span><span class="cx"> 
</span><span class="lines">@@ -3692,4 +3694,9 @@
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(IMAGE_ANALYSIS)
</span><span class="cx"> 
</span><ins>+StorageConnection& Page::storageConnection()
+{
+    return m_storageProvider->storageConnection();
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCorepagePageh"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/page/Page.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/page/Page.h    2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/page/Page.h       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -146,10 +146,11 @@
</span><span class="cx"> class ServicesOverlayController;
</span><span class="cx"> class Settings;
</span><span class="cx"> class SocketProvider;
</span><ins>+class SpeechRecognitionProvider;
</ins><span class="cx"> class SpeechSynthesisClient;
</span><span class="cx"> class StorageNamespace;
</span><span class="cx"> class StorageNamespaceProvider;
</span><del>-class SpeechRecognitionProvider;
</del><ins>+class StorageProvider;
</ins><span class="cx"> class UserContentProvider;
</span><span class="cx"> class UserContentURLPattern;
</span><span class="cx"> class UserInputBridge;
</span><span class="lines">@@ -875,6 +876,8 @@
</span><span class="cx">     void cacheTextRecognitionResult(const HTMLElement&, const IntRect& containerRect, const TextRecognitionResult&);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    WEBCORE_EXPORT StorageConnection& storageConnection();
+
</ins><span class="cx"> private:
</span><span class="cx">     struct Navigation {
</span><span class="cx">         RegistrableDomain domain;
</span><span class="lines">@@ -1198,6 +1201,7 @@
</span><span class="cx">     mutable MediaSessionGroupIdentifier m_mediaSessionGroupIdentifier;
</span><span class="cx"> 
</span><span class="cx">     RefPtr<ReportingEndpointsCache> m_reportingEndpointsCache;
</span><ins>+    UniqueRef<StorageProvider> m_storageProvider;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(IMAGE_ANALYSIS)
</span><span class="cx">     // FIXME: These should be refactored to use a weak hash map of HTMLElement to std::pair<TextRecognitionResult, IntSize>.
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCorepagePageConfigurationcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/page/PageConfiguration.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/page/PageConfiguration.cpp     2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/page/PageConfiguration.cpp        2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -47,6 +47,7 @@
</span><span class="cx"> #include "SpeechRecognitionProvider.h"
</span><span class="cx"> #include "SpeechSynthesisClient.h"
</span><span class="cx"> #include "StorageNamespaceProvider.h"
</span><ins>+#include "StorageProvider.h"
</ins><span class="cx"> #include "UserContentController.h"
</span><span class="cx"> #include "UserContentURLPattern.h"
</span><span class="cx"> #include "ValidationMessageClient.h"
</span><span class="lines">@@ -60,7 +61,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-PageConfiguration::PageConfiguration(PAL::SessionID sessionID, UniqueRef<EditorClient>&& editorClient, Ref<SocketProvider>&& socketProvider, UniqueRef<LibWebRTCProvider>&& libWebRTCProvider, Ref<CacheStorageProvider>&& cacheStorageProvider, Ref<UserContentProvider>&& userContentProvider, Ref<BackForwardClient>&& backForwardClient, Ref<CookieJar>&& cookieJar, UniqueRef<ProgressTrackerClient>&& progressTrackerClient, UniqueRef<FrameLoaderClient>&& loaderClientForMainFrame, UniqueRef<SpeechRecognitionProvider>&& speechRecognitionProvider, UniqueRef<MediaRecorderProvider>&& mediaRecorderProvider, Ref<BroadcastChannelRegistry>&& broadcastChannelRegistry)
</del><ins>+PageConfiguration::PageConfiguration(PAL::SessionID sessionID, UniqueRef<EditorClient>&& editorClient, Ref<SocketProvider>&& socketProvider, UniqueRef<LibWebRTCProvider>&& libWebRTCProvider, Ref<CacheStorageProvider>&& cacheStorageProvider, Ref<UserContentProvider>&& userContentProvider, Ref<BackForwardClient>&& backForwardClient, Ref<CookieJar>&& cookieJar, UniqueRef<ProgressTrackerClient>&& progressTrackerClient, UniqueRef<FrameLoaderClient>&& loaderClientForMainFrame, UniqueRef<SpeechRecognitionProvider>&& speechRecognitionProvider, UniqueRef<MediaRecorderProvider>&& mediaRecorderProvider, Ref<BroadcastChannelRegistry>&& broadcastChannelRegistry, UniqueRef<StorageProvider>&& storageProvider)
</ins><span class="cx">     : sessionID(sessionID)
</span><span class="cx">     , editorClient(WTFMove(editorClient))
</span><span class="cx">     , socketProvider(WTFMove(socketProvider))
</span><span class="lines">@@ -74,6 +75,7 @@
</span><span class="cx">     , broadcastChannelRegistry(WTFMove(broadcastChannelRegistry))
</span><span class="cx">     , speechRecognitionProvider(WTFMove(speechRecognitionProvider))
</span><span class="cx">     , mediaRecorderProvider(WTFMove(mediaRecorderProvider))
</span><ins>+    , storageProvider(WTFMove(storageProvider))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchSourceWebCorepagePageConfigurationh"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebCore/page/PageConfiguration.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebCore/page/PageConfiguration.h       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebCore/page/PageConfiguration.h  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -65,6 +65,7 @@
</span><span class="cx"> class SocketProvider;
</span><span class="cx"> class SpeechRecognitionProvider;
</span><span class="cx"> class StorageNamespaceProvider;
</span><ins>+class StorageProvider;
</ins><span class="cx"> class UserContentProvider;
</span><span class="cx"> class UserContentURLPattern;
</span><span class="cx"> class ValidationMessageClient;
</span><span class="lines">@@ -75,7 +76,7 @@
</span><span class="cx"> class PageConfiguration {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(PageConfiguration); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    WEBCORE_EXPORT PageConfiguration(PAL::SessionID, UniqueRef<EditorClient>&&, Ref<SocketProvider>&&, UniqueRef<LibWebRTCProvider>&&, Ref<CacheStorageProvider>&&, Ref<UserContentProvider>&&, Ref<BackForwardClient>&&, Ref<CookieJar>&&, UniqueRef<ProgressTrackerClient>&&, UniqueRef<FrameLoaderClient>&&, UniqueRef<SpeechRecognitionProvider>&&, UniqueRef<MediaRecorderProvider>&&, Ref<BroadcastChannelRegistry>&&);
</del><ins>+    WEBCORE_EXPORT PageConfiguration(PAL::SessionID, UniqueRef<EditorClient>&&, Ref<SocketProvider>&&, UniqueRef<LibWebRTCProvider>&&, Ref<CacheStorageProvider>&&, Ref<UserContentProvider>&&, Ref<BackForwardClient>&&, Ref<CookieJar>&&, UniqueRef<ProgressTrackerClient>&&, UniqueRef<FrameLoaderClient>&&, UniqueRef<SpeechRecognitionProvider>&&, UniqueRef<MediaRecorderProvider>&&, Ref<BroadcastChannelRegistry>&&, UniqueRef<StorageProvider>&&);
</ins><span class="cx">     WEBCORE_EXPORT ~PageConfiguration();
</span><span class="cx">     PageConfiguration(PageConfiguration&&);
</span><span class="cx"> 
</span><span class="lines">@@ -140,6 +141,7 @@
</span><span class="cx">     bool userScriptsShouldWaitUntilNotification { true };
</span><span class="cx">     ShouldRelaxThirdPartyCookieBlocking shouldRelaxThirdPartyCookieBlocking { ShouldRelaxThirdPartyCookieBlocking::No };
</span><span class="cx">     bool httpsUpgradeEnabled { true };
</span><ins>+    UniqueRef<StorageProvider> storageProvider;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitCMakeListstxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/CMakeLists.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/CMakeLists.txt  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/CMakeLists.txt     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx">     "${WEBKIT_DIR}/NetworkProcess/ServiceWorker"
</span><span class="cx">     "${WEBKIT_DIR}/NetworkProcess/WebStorage"
</span><span class="cx">     "${WEBKIT_DIR}/NetworkProcess/cache"
</span><ins>+    "${WEBKIT_DIR}/NetworkProcess/storage"
</ins><span class="cx">     "${WEBKIT_DIR}/NetworkProcess/watchos"
</span><span class="cx">     "${WEBKIT_DIR}/NetworkProcess/webrtc"
</span><span class="cx">     "${WEBKIT_DIR}/Platform"
</span><span class="lines">@@ -173,6 +174,8 @@
</span><span class="cx"> 
</span><span class="cx">     NetworkProcess/cache/CacheStorageEngineConnection
</span><span class="cx"> 
</span><ins>+    NetworkProcess/storage/NetworkStorageManager
+
</ins><span class="cx">     NetworkProcess/webrtc/NetworkMDNSRegister
</span><span class="cx">     NetworkProcess/webrtc/NetworkRTCMonitor
</span><span class="cx">     NetworkProcess/webrtc/NetworkRTCProvider
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitDerivedSourcesinputxcfilelist"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/DerivedSources-input.xcfilelist (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/DerivedSources-input.xcfilelist 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/DerivedSources-input.xcfilelist    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -69,6 +69,7 @@
</span><span class="cx"> $(PROJECT_DIR)/NetworkProcess/WebStorage/StorageManagerSet.messages.in
</span><span class="cx"> $(PROJECT_DIR)/NetworkProcess/cache/CacheStorageEngineConnection.messages.in
</span><span class="cx"> $(PROJECT_DIR)/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in
</span><ins>+$(PROJECT_DIR)/NetworkProcess/storage/NetworkStorageManager.messages.in
</ins><span class="cx"> $(PROJECT_DIR)/NetworkProcess/webrtc/NetworkMDNSRegister.messages.in
</span><span class="cx"> $(PROJECT_DIR)/NetworkProcess/webrtc/NetworkRTCMonitor.messages.in
</span><span class="cx"> $(PROJECT_DIR)/NetworkProcess/webrtc/NetworkRTCProvider.messages.in
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitDerivedSourcesoutputxcfilelist"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/DerivedSources-output.xcfilelist (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/DerivedSources-output.xcfilelist        2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/DerivedSources-output.xcfilelist   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -112,6 +112,9 @@
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/NetworkSocketStreamMessageReceiver.cpp
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/NetworkSocketStreamMessages.h
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/NetworkSocketStreamMessagesReplies.h
</span><ins>+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/NetworkStorageManagerMessageReceiver.cpp
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/NetworkStorageManagerMessages.h
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/NetworkStorageManagerMessagesReplies.h
</ins><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/PlatformXRSystemMessageReceiver.cpp
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/PlatformXRSystemMessages.h
</span><span class="cx"> $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/PlatformXRSystemMessagesReplies.h
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/DerivedSources.make (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/DerivedSources.make     2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/DerivedSources.make        2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx">     $(WebKit2)/NetworkProcess/IndexedDB \
</span><span class="cx">     $(WebKit2)/NetworkProcess/ServiceWorker \
</span><span class="cx">     $(WebKit2)/NetworkProcess/WebStorage \
</span><ins>+    $(WebKit2)/NetworkProcess/storage \
</ins><span class="cx">     $(WebKit2)/PluginProcess \
</span><span class="cx">     $(WebKit2)/PluginProcess/mac \
</span><span class="cx">     $(WebKit2)/Resources/SandboxProfiles/ios \
</span><span class="lines">@@ -137,6 +138,7 @@
</span><span class="cx">  NetworkProcess/webrtc/NetworkRTCMonitor \
</span><span class="cx">  NetworkProcess/webrtc/RTCDataChannelRemoteManagerProxy \
</span><span class="cx">  NetworkProcess/Cookies/WebCookieManager \
</span><ins>+       NetworkProcess/storage/NetworkStorageManager \
</ins><span class="cx">   Shared/Plugins/NPObjectMessageReceiver \
</span><span class="cx">  Shared/AuxiliaryProcess \
</span><span class="cx">  Shared/API/Cocoa/RemoteObjectRegistry \
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitNetworkProcessNetworkProcesscpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -47,6 +47,7 @@
</span><span class="cx"> #include "NetworkResourceLoader.h"
</span><span class="cx"> #include "NetworkSession.h"
</span><span class="cx"> #include "NetworkSessionCreationParameters.h"
</span><ins>+#include "NetworkStorageManager.h"
</ins><span class="cx"> #include "PreconnectTask.h"
</span><span class="cx"> #include "PrivateClickMeasurementStore.h"
</span><span class="cx"> #include "RemoteNetworkingContext.h"
</span><span class="lines">@@ -400,6 +401,8 @@
</span><span class="cx"> 
</span><span class="cx">     m_storageManagerSet->addConnection(connection.connection());
</span><span class="cx">     webIDBServer(sessionID).addConnection(connection.connection(), identifier);
</span><ins>+    if (auto manager = m_storageManagers.get(sessionID))
+        manager->startReceivingMessageFromConnection(connection.connection());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void NetworkProcess::clearCachedCredentials(PAL::SessionID sessionID)
</span><span class="lines">@@ -415,6 +418,7 @@
</span><span class="cx"> {
</span><span class="cx">     auto sessionID = parameters.networkSessionParameters.sessionID;
</span><span class="cx"> 
</span><ins>+    addStorageManagerForSession(sessionID, parameters.generalStorageDirectory, parameters.generalStorageDirectoryHandle);
</ins><span class="cx">     addSessionStorageQuotaManager(sessionID, parameters.perOriginStorageQuota, parameters.perThirdPartyOriginStorageQuota, parameters.cacheStorageDirectory, parameters.cacheStorageDirectoryExtensionHandle);
</span><span class="cx"> 
</span><span class="cx">     addIndexedDatabaseSession(sessionID, parameters.indexedDatabaseDirectory, parameters.indexedDatabaseDirectoryExtensionHandle);
</span><span class="lines">@@ -447,6 +451,19 @@
</span><span class="cx">     m_sessionStorageQuotaManagers.remove(sessionID);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void NetworkProcess::addStorageManagerForSession(PAL::SessionID sessionID, const String& generalStoragePath, SandboxExtension::Handle& generalStoragePathHandle)
+{
+    m_storageManagers.ensure(sessionID, [&] {
+        SandboxExtension::consumePermanently(generalStoragePathHandle);
+        return NetworkStorageManager::create(sessionID, generalStoragePath);
+    });
+}
+
+void NetworkProcess::removeStorageManagerForSession(PAL::SessionID sessionID)
+{
+    m_storageManagers.remove(sessionID);
+}
+
</ins><span class="cx"> void NetworkProcess::forEachNetworkSession(const Function<void(NetworkSession&)>& functor)
</span><span class="cx"> {
</span><span class="cx">     for (auto& session : m_networkSessions.values())
</span><span class="lines">@@ -557,6 +574,7 @@
</span><span class="cx">     m_storageManagerSet->remove(sessionID);
</span><span class="cx">     if (auto server = m_webIDBServers.take(sessionID))
</span><span class="cx">         server->close();
</span><ins>+    removeStorageManagerForSession(sessionID);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(RESOURCE_LOAD_STATISTICS)
</span><span class="lines">@@ -2693,6 +2711,9 @@
</span><span class="cx"> 
</span><span class="cx">     if (auto* server = m_webIDBServers.get(sessionID))
</span><span class="cx">         server->removeConnection(connection);
</span><ins>+
+    if (auto manager = m_storageManagers.get(sessionID))
+        manager->stopReceivingMessageFromConnection(connection);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> NetworkConnectionToWebProcess* NetworkProcess::webProcessConnection(ProcessIdentifier identifier) const
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitNetworkProcessNetworkProcessh"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/NetworkProcess/NetworkProcess.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/NetworkProcess/NetworkProcess.h 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/NetworkProcess/NetworkProcess.h    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -107,6 +107,7 @@
</span><span class="cx"> class NetworkProcessSupplement;
</span><span class="cx"> class NetworkProximityManager;
</span><span class="cx"> class NetworkResourceLoader;
</span><ins>+class NetworkStorageManager;
</ins><span class="cx"> class ProcessAssertion;
</span><span class="cx"> class StorageManagerSet;
</span><span class="cx"> class WebPageNetworkParameters;
</span><span class="lines">@@ -542,6 +543,9 @@
</span><span class="cx">     void addSessionStorageQuotaManager(PAL::SessionID, uint64_t defaultQuota, uint64_t defaultThirdPartyQuota, const String& cacheRootPath, SandboxExtension::Handle&);
</span><span class="cx">     void removeSessionStorageQuotaManager(PAL::SessionID);
</span><span class="cx"> 
</span><ins>+    void addStorageManagerForSession(PAL::SessionID, const String& path, SandboxExtension::Handle&);
+    void removeStorageManagerForSession(PAL::SessionID);
+
</ins><span class="cx">     // Connections to WebProcesses.
</span><span class="cx">     HashMap<WebCore::ProcessIdentifier, Ref<NetworkConnectionToWebProcess>> m_webProcessConnections;
</span><span class="cx"> 
</span><span class="lines">@@ -614,6 +618,8 @@
</span><span class="cx"> 
</span><span class="cx">     bool m_privateClickMeasurementEnabled { true };
</span><span class="cx">     bool m_ftpEnabled { false };
</span><ins>+
+    HashMap<PAL::SessionID, Ref<NetworkStorageManager>> m_storageManagers;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitNetworkProcessstorageNetworkStorageManagercpp"></a>
<div class="addfile"><h4>Added: branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp                                (rev 0)
+++ branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,115 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "NetworkStorageManager.h"
+
+#include "NetworkStorageManagerMessages.h"
+#include "OriginStorageManager.h"
+#include <pal/crypto/CryptoDigest.h>
+#include <wtf/text/Base64.h>
+
+namespace WebKit {
+
+Ref<NetworkStorageManager> NetworkStorageManager::create(PAL::SessionID sessionID, const String& path)
+{
+    return adoptRef(*new NetworkStorageManager(sessionID, path));
+}
+
+NetworkStorageManager::NetworkStorageManager(PAL::SessionID sessionID, const String& path)
+    : m_sessionID(sessionID)
+    , m_queue(WorkQueue::create("com.apple.WebKit.Storage"))
+{
+    ASSERT(RunLoop::isMain());
+
+    m_queue->dispatch([this, protectedThis = makeRef(*this), path = path.isolatedCopy()]() mutable {
+        m_path = path;
+        if (!m_path.isEmpty()) {
+            auto saltPath = FileSystem::pathByAppendingComponent(m_path, "salt");
+            m_salt = FileSystem::readOrMakeSalt(saltPath).value_or(FileSystem::Salt());
+        }
+    });
+}
+
+void NetworkStorageManager::startReceivingMessageFromConnection(IPC::Connection& connection)
+{
+    ASSERT(RunLoop::isMain());
+
+    connection.addWorkQueueMessageReceiver(Messages::NetworkStorageManager::messageReceiverName(), m_queue.get(), this);
+}
+
+void NetworkStorageManager::stopReceivingMessageFromConnection(IPC::Connection& connection)
+{
+    ASSERT(RunLoop::isMain());
+
+    connection.removeWorkQueueMessageReceiver(Messages::NetworkStorageManager::messageReceiverName());
+}
+
+static String encode(const String& string, FileSystem::Salt salt)
+{
+    auto crypto = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_256);
+    auto utf8String = string.utf8();
+    crypto->addBytes(utf8String.data(), utf8String.length());
+    crypto->addBytes(salt.data(), salt.size());
+    auto hash = crypto->computeHash();
+    return base64URLEncodeToString(hash.data(), hash.size());
+}
+
+static String originPath(const String& rootPath, const WebCore::ClientOrigin& origin, FileSystem::Salt salt)
+{
+    if (rootPath.isEmpty())
+        return rootPath;
+
+    auto encodedTopOrigin = encode(origin.topOrigin.toString(), salt);
+    auto encodedOpeningOrigin = encode(origin.clientOrigin.toString(), salt);
+    return FileSystem::pathByAppendingComponents(rootPath, { encodedTopOrigin, encodedOpeningOrigin });
+}
+
+OriginStorageManager& NetworkStorageManager::localOriginStorageManager(const WebCore::ClientOrigin& origin)
+{
+    ASSERT(!RunLoop::isMain());
+
+    return *m_localOriginStorageManagers.ensure(origin, [path = m_path, origin, salt = m_salt] {
+        return makeUnique<OriginStorageManager>(originPath(path, origin, salt));
+    }).iterator->value;
+}
+
+void NetworkStorageManager::persisted(const WebCore::ClientOrigin& origin, CompletionHandler<void(bool)>&& completionHandler)
+{
+    ASSERT(!RunLoop::isMain());
+
+    completionHandler(localOriginStorageManager(origin).persisted());
+}
+
+void NetworkStorageManager::persist(const WebCore::ClientOrigin& origin, CompletionHandler<void(bool)>&& completionHandler)
+{
+    ASSERT(!RunLoop::isMain());
+
+    localOriginStorageManager(origin).persist();
+    completionHandler(true);
+}
+
+} // namespace WebKit
+
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebKitNetworkProcessstorageNetworkStorageManagerhfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h                          (rev 0)
+++ branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "Connection.h"
+#include "OriginStorageManager.h"
+#include <WebCore/ClientOrigin.h>
+#include <pal/SessionID.h>
+
+namespace WebCore {
+struct ClientOrigin;
+}
+
+namespace WebKit {
+
+class NetworkStorageManager : public IPC::Connection::WorkQueueMessageReceiver {
+public:
+    static Ref<NetworkStorageManager> create(PAL::SessionID, const String& path);
+
+    void startReceivingMessageFromConnection(IPC::Connection&);
+    void stopReceivingMessageFromConnection(IPC::Connection&);
+
+    PAL::SessionID sessionID() const { return m_sessionID; }
+
+private:
+    NetworkStorageManager(PAL::SessionID, const String& path);
+    OriginStorageManager& localOriginStorageManager(const WebCore::ClientOrigin&);
+
+    // IPC::MessageReceiver (implemented by generated code)
+    void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
+
+    // Message Handlers
+    void persisted(const WebCore::ClientOrigin&, CompletionHandler<void(bool)>&&);
+    void persist(const WebCore::ClientOrigin&, CompletionHandler<void(bool)>&&);
+
+    PAL::SessionID m_sessionID;
+    Ref<WorkQueue> m_queue;
+    String m_path;
+    FileSystem::Salt m_salt;
+    HashMap<WebCore::ClientOrigin, std::unique_ptr<OriginStorageManager>> m_localOriginStorageManagers;
+    HashMap<WebCore::ClientOrigin, std::unique_ptr<OriginStorageManager>> m_sessionOriginStorageManagers;
+};
+
+} // namespace WebKit
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebKitNetworkProcessstorageNetworkStorageManagermessagesinfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in                                (rev 0)
+++ branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */

+ messages -> NetworkStorageManager {
+    Persisted(struct WebCore::ClientOrigin origin) -> (bool persisted) Async
+    Persist(struct WebCore::ClientOrigin origin) -> (bool persisted) Async
+}
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebKitNetworkProcessstorageOriginStorageManagercppfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp                         (rev 0)
+++ branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "OriginStorageManager.h"
+
+namespace WebKit {
+
+enum class OriginStorageManager::StorageBucketMode : bool { BestEffort, Persistent };
+
+class OriginStorageManager::StorageBucket {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+    StorageBucket(const String& rootPath, const String& identifier)
+        : m_rootPath(rootPath)
+        , m_identifier(identifier)
+    {
+    }
+    StorageBucketMode mode() const { return m_mode; }
+    void setMode(StorageBucketMode mode) { m_mode = mode; }
+private:
+    String m_rootPath;
+    String m_identifier;
+    StorageBucketMode m_mode { StorageBucketMode::BestEffort };
+};
+
+OriginStorageManager::OriginStorageManager(String&& path)
+    : m_path(WTFMove(path))
+{
+}
+
+OriginStorageManager::~OriginStorageManager() = default;
+
+void OriginStorageManager::persist()
+{
+    m_persisted = true;
+    
+    if (!m_defaultBucket)
+        m_defaultBucket = makeUnique<StorageBucket>(m_path, "default"_s);
+
+    m_defaultBucket->setMode(StorageBucketMode::Persistent);
+}
+
+} // namespace WebKit
+
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebKitNetworkProcessstorageOriginStorageManagerhfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.h (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.h                           (rev 0)
+++ branches/safari-612-branch/Source/WebKit/NetworkProcess/storage/OriginStorageManager.h      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+namespace WebKit {
+
+class OriginStorageManager {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+    explicit OriginStorageManager(String&& path);
+    ~OriginStorageManager();
+
+    bool persisted() const { return m_persisted; }
+    void persist();
+
+private:
+    enum class StorageBucketMode : bool;
+    class StorageBucket;
+
+    std::unique_ptr<StorageBucket> m_defaultBucket;
+    String m_path;
+    bool m_persisted { false };
+};
+
+} // namespace WebKit
+
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebKitSharedWebsiteDataStoreParameterscpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -47,8 +47,8 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     encoder << localStorageDirectory << localStorageDirectoryExtensionHandle;
</span><del>-
</del><span class="cx">     encoder << cacheStorageDirectory << cacheStorageDirectoryExtensionHandle;
</span><ins>+    encoder << generalStorageDirectory << generalStorageDirectoryHandle;
</ins><span class="cx"> 
</span><span class="cx">     encoder << perOriginStorageQuota;
</span><span class="cx">     encoder << perThirdPartyOriginStorageQuota;
</span><span class="lines">@@ -132,6 +132,18 @@
</span><span class="cx">         return std::nullopt;
</span><span class="cx">     parameters.cacheStorageDirectoryExtensionHandle = WTFMove(*cacheStorageDirectoryExtensionHandle);
</span><span class="cx"> 
</span><ins>+    std::optional<String> generalStorageDirectory;
+    decoder >> generalStorageDirectory;
+    if (!generalStorageDirectory)
+        return std::nullopt;
+    parameters.generalStorageDirectory = WTFMove(*generalStorageDirectory);
+
+    std::optional<SandboxExtension::Handle> generalStorageDirectoryHandle;
+    decoder >> generalStorageDirectoryHandle;
+    if (!generalStorageDirectoryHandle)
+        return std::nullopt;
+    parameters.generalStorageDirectoryHandle = WTFMove(*generalStorageDirectoryHandle);
+
</ins><span class="cx">     std::optional<uint64_t> perOriginStorageQuota;
</span><span class="cx">     decoder >> perOriginStorageQuota;
</span><span class="cx">     if (!perOriginStorageQuota)
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitSharedWebsiteDataStoreParametersh"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/Shared/WebsiteDataStoreParameters.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/Shared/WebsiteDataStoreParameters.h     2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/Shared/WebsiteDataStoreParameters.h        2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -68,6 +68,9 @@
</span><span class="cx">     String cacheStorageDirectory;
</span><span class="cx">     SandboxExtension::Handle cacheStorageDirectoryExtensionHandle;
</span><span class="cx"> 
</span><ins>+    String generalStorageDirectory;
+    SandboxExtension::Handle generalStorageDirectoryHandle;
+
</ins><span class="cx">     uint64_t perOriginStorageQuota { WebCore::StorageQuotaManager::defaultQuota() };
</span><span class="cx">     uint64_t perThirdPartyOriginStorageQuota { WebCore::StorageQuotaManager::defaultThirdPartyQuota() };
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitSourcestxt"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/Sources.txt (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/Sources.txt     2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/Sources.txt        2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -109,6 +109,9 @@
</span><span class="cx"> NetworkProcess/ServiceWorker/WebSWServerConnection.cpp @no-unify
</span><span class="cx"> NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp @no-unify
</span><span class="cx"> 
</span><ins>+NetworkProcess/storage/NetworkStorageManager.cpp
+NetworkProcess/storage/OriginStorageManager.cpp
+
</ins><span class="cx"> NetworkProcess/WebStorage/LocalStorageDatabase.cpp
</span><span class="cx"> NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp
</span><span class="cx"> NetworkProcess/WebStorage/LocalStorageNamespace.cpp
</span><span class="lines">@@ -708,6 +711,7 @@
</span><span class="cx"> WebProcess/WebCoreSupport/WebUserMediaClient.cpp
</span><span class="cx"> WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.cpp
</span><span class="cx"> WebProcess/WebCoreSupport/WebSpeechSynthesisClient.cpp
</span><ins>+WebProcess/WebCoreSupport/WebStorageConnection.cpp
</ins><span class="cx"> 
</span><span class="cx"> WebProcess/WebPage/DrawingArea.cpp
</span><span class="cx"> WebProcess/WebPage/EventDispatcher.cpp
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessAPICWKWebsiteDataStoreConfigurationRefcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -100,6 +100,16 @@
</span><span class="cx">     WebKit::toImpl(configuration)->setCacheStorageDirectory(WebKit::toImpl(directory)->string());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+WKStringRef WKWebsiteDataStoreConfigurationCopyGeneralStorageDirectory(WKWebsiteDataStoreConfigurationRef configuration)
+{
+    return WebKit::toCopiedAPI(WebKit::toImpl(configuration)->generalStorageDirectory());
+}
+
+void WKWebsiteDataStoreConfigurationSetGeneralStorageDirectory(WKWebsiteDataStoreConfigurationRef configuration, WKStringRef directory)
+{
+    WebKit::toImpl(configuration)->setGeneralStorageDirectory(WebKit::toImpl(directory)->string());
+}
+
</ins><span class="cx"> WKStringRef WKWebsiteDataStoreConfigurationCopyMediaKeysStorageDirectory(WKWebsiteDataStoreConfigurationRef configuration)
</span><span class="cx"> {
</span><span class="cx">     return WebKit::toCopiedAPI(WebKit::toImpl(configuration)->mediaKeysStorageDirectory());
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessAPICWKWebsiteDataStoreConfigurationRefh"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h    2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -54,6 +54,9 @@
</span><span class="cx"> WK_EXPORT WKStringRef WKWebsiteDataStoreConfigurationCopyCacheStorageDirectory(WKWebsiteDataStoreConfigurationRef configuration);
</span><span class="cx"> WK_EXPORT void WKWebsiteDataStoreConfigurationSetCacheStorageDirectory(WKWebsiteDataStoreConfigurationRef configuration, WKStringRef directory);
</span><span class="cx"> 
</span><ins>+WK_EXPORT WKStringRef WKWebsiteDataStoreConfigurationCopyGeneralStorageDirectory(WKWebsiteDataStoreConfigurationRef configuration);
+WK_EXPORT void WKWebsiteDataStoreConfigurationSetGeneralStorageDirectory(WKWebsiteDataStoreConfigurationRef configuration, WKStringRef directory);
+
</ins><span class="cx"> WK_EXPORT WKStringRef WKWebsiteDataStoreConfigurationCopyMediaKeysStorageDirectory(WKWebsiteDataStoreConfigurationRef configuration);
</span><span class="cx"> WK_EXPORT void WKWebsiteDataStoreConfigurationSetMediaKeysStorageDirectory(WKWebsiteDataStoreConfigurationRef configuration, WKStringRef directory);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessAPICocoa_WKWebsiteDataStoreConfigurationh"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -78,8 +78,8 @@
</span><span class="cx"> @property (nonatomic) BOOL allowsHSTSWithUntrustedRootCertificate WK_API_AVAILABLE(macos(12.0), ios(15.0));
</span><span class="cx"> 
</span><span class="cx"> @property (nonatomic, nullable, copy) NSURL *alternativeServicesStorageDirectory WK_API_AVAILABLE(macos(11.0), ios(14.0));
</span><del>-
</del><span class="cx"> @property (nonatomic, nullable, copy) NSURL *standaloneApplicationURL WK_API_AVAILABLE(macos(11.0), ios(14.0));
</span><ins>+@property (nonatomic, nullable, copy) NSURL *storageDirectory WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
</ins><span class="cx"> 
</span><span class="cx"> // Testing only.
</span><span class="cx"> @property (nonatomic) BOOL allLoadsBlockedByDeviceManagementRestrictionsForTesting WK_API_AVAILABLE(macos(10.15), ios(13.0));
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessAPICocoa_WKWebsiteDataStoreConfigurationmm"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -335,6 +335,22 @@
</span><span class="cx">     _configuration->setAlternativeServicesDirectory(url.path);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (NSURL *)generalStorageDirectory
+{
+    auto& directory = _configuration->generalStorageDirectory();
+    if (directory.isNull())
+        return nil;
+    return [NSURL fileURLWithPath:directory isDirectory:YES];
+}
+
+- (void)setGeneralStorageDirectory:(NSURL *)url
+{
+    if (!_configuration->isPersistent())
+        [NSException raise:NSInvalidArgumentException format:@"Cannot set storageDirectory on a non-persistent _WKWebsiteDataStoreConfiguration."];
+    checkURLArgument(url);
+    _configuration->setGeneralStorageDirectory(url.path);
+}
+
</ins><span class="cx"> - (BOOL)deviceManagementRestrictionsEnabled
</span><span class="cx"> {
</span><span class="cx">     return _configuration->deviceManagementRestrictionsEnabled();
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessWebsiteDataCocoaWebsiteDataStoreCocoamm"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm    2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -271,6 +271,11 @@
</span><span class="cx">     return cacheDirectoryFileSystemRepresentation("CacheStorage");
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String WebsiteDataStore::defaultGeneralStorageDirectory()
+{
+    return cacheDirectoryFileSystemRepresentation("Storage");
+}
+
</ins><span class="cx"> WTF::String WebsiteDataStore::defaultNetworkCacheDirectory()
</span><span class="cx"> {
</span><span class="cx">     return cacheDirectoryFileSystemRepresentation("NetworkCache");
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessWebsiteDataWebsiteDataStorecpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp      2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -271,6 +271,8 @@
</span><span class="cx">         m_resolvedConfiguration->setCacheStorageDirectory(resolvePathForSandboxExtension(m_configuration->cacheStorageDirectory()));
</span><span class="cx">     if (!m_configuration->hstsStorageDirectory().isEmpty() && m_resolvedConfiguration->hstsStorageDirectory().isEmpty())
</span><span class="cx">         m_resolvedConfiguration->setHSTSStorageDirectory(resolvePathForSandboxExtension(m_configuration->hstsStorageDirectory()));
</span><ins>+    if (!m_configuration->generalStorageDirectory().isEmpty())
+        m_resolvedConfiguration->setGeneralStorageDirectory(resolveAndCreateReadWriteDirectoryForSandboxExtension(m_configuration->generalStorageDirectory()));
</ins><span class="cx"> #if HAVE(ARKIT_INLINE_PREVIEW)
</span><span class="cx">     if (!m_configuration->modelElementCacheDirectory().isEmpty())
</span><span class="cx">         m_resolvedConfiguration->setModelElementCacheDirectory(resolveAndCreateReadWriteDirectoryForSandboxExtension(m_configuration->modelElementCacheDirectory()));
</span><span class="lines">@@ -2094,6 +2096,12 @@
</span><span class="cx">             parameters.cacheStorageDirectoryExtensionHandle = WTFMove(*handle);
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    if (auto directory = generalStorageDirectory(); !directory.isEmpty()) {
+        parameters.generalStorageDirectory = directory;
+        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(directory))
+            parameters.generalStorageDirectoryHandle = WTFMove(*handle);
+    }
+
</ins><span class="cx">     parameters.perOriginStorageQuota = perOriginStorageQuota();
</span><span class="cx">     parameters.perThirdPartyOriginStorageQuota = perThirdPartyOriginStorageQuota();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessWebsiteDataWebsiteDataStoreh"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h        2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -158,6 +158,7 @@
</span><span class="cx">     uint64_t perOriginStorageQuota() const { return m_resolvedConfiguration->perOriginStorageQuota(); }
</span><span class="cx">     uint64_t perThirdPartyOriginStorageQuota() const;
</span><span class="cx">     const String& cacheStorageDirectory() const { return m_resolvedConfiguration->cacheStorageDirectory(); }
</span><ins>+    const String& generalStorageDirectory() const { return m_resolvedConfiguration->generalStorageDirectory(); }
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(RESOURCE_LOAD_STATISTICS)
</span><span class="cx">     void clearResourceLoadStatisticsInWebProcesses(CompletionHandler<void()>&&);
</span><span class="lines">@@ -344,6 +345,7 @@
</span><span class="cx"> #endif
</span><span class="cx">     static WTF::String defaultIndexedDBDatabaseDirectory();
</span><span class="cx">     static WTF::String defaultCacheStorageDirectory();
</span><ins>+    static WTF::String defaultGeneralStorageDirectory();
</ins><span class="cx">     static WTF::String defaultMediaCacheDirectory();
</span><span class="cx">     static WTF::String defaultMediaKeysStorageDirectory();
</span><span class="cx">     static WTF::String defaultDeviceIdHashSaltsStorageDirectory();
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessWebsiteDataWebsiteDataStoreConfigurationcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx">     if (isPersistent == IsPersistent::Yes && willCopyPaths == WillCopyPathsFromExistingConfiguration::No) {
</span><span class="cx">         setApplicationCacheDirectory(WebsiteDataStore::defaultApplicationCacheDirectory());
</span><span class="cx">         setCacheStorageDirectory(WebsiteDataStore::defaultCacheStorageDirectory());
</span><ins>+        setGeneralStorageDirectory(WebsiteDataStore::defaultGeneralStorageDirectory());
</ins><span class="cx">         setNetworkCacheDirectory(WebsiteDataStore::defaultNetworkCacheDirectory());
</span><span class="cx">         setAlternativeServicesDirectory(WebsiteDataStore::defaultAlternativeServicesDirectory());
</span><span class="cx">         setMediaCacheDirectory(WebsiteDataStore::defaultMediaCacheDirectory());
</span><span class="lines">@@ -62,6 +63,7 @@
</span><span class="cx">     copy->m_networkCacheSpeculativeValidationEnabled = this->m_networkCacheSpeculativeValidationEnabled;
</span><span class="cx">     copy->m_staleWhileRevalidateEnabled = this->m_staleWhileRevalidateEnabled;
</span><span class="cx">     copy->m_cacheStorageDirectory = this->m_cacheStorageDirectory;
</span><ins>+    copy->m_generalStorageDirectory = this->m_generalStorageDirectory;
</ins><span class="cx">     copy->m_perOriginStorageQuota = this->m_perOriginStorageQuota;
</span><span class="cx">     copy->m_networkCacheDirectory = this->m_networkCacheDirectory;
</span><span class="cx">     copy->m_applicationCacheDirectory = this->m_applicationCacheDirectory;
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessWebsiteDataWebsiteDataStoreConfigurationh"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -125,7 +125,10 @@
</span><span class="cx">     
</span><span class="cx">     const String& cacheStorageDirectory() const { return m_cacheStorageDirectory; }
</span><span class="cx">     void setCacheStorageDirectory(String&& directory) { m_cacheStorageDirectory = WTFMove(directory); }
</span><del>-    
</del><ins>+
+    const String& generalStorageDirectory() const { return m_generalStorageDirectory; }
+    void setGeneralStorageDirectory(String&& directory) { m_generalStorageDirectory = WTFMove(directory); }
+
</ins><span class="cx">     const String& applicationCacheFlatFileSubdirectoryName() const { return m_applicationCacheFlatFileSubdirectoryName; }
</span><span class="cx">     void setApplicationCacheFlatFileSubdirectoryName(String&& directory) { m_applicationCacheFlatFileSubdirectoryName = WTFMove(directory); }
</span><span class="cx">     
</span><span class="lines">@@ -181,6 +184,7 @@
</span><span class="cx">     IsPersistent m_isPersistent { IsPersistent::No };
</span><span class="cx"> 
</span><span class="cx">     String m_cacheStorageDirectory;
</span><ins>+    String m_generalStorageDirectory;
</ins><span class="cx">     uint64_t m_perOriginStorageQuota { WebCore::StorageQuotaManager::defaultQuota() };
</span><span class="cx">     String m_networkCacheDirectory;
</span><span class="cx">     String m_applicationCacheDirectory;
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessWebsiteDataplaystationWebsiteDataStorePlayStationcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/playstation/WebsiteDataStorePlayStation.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/playstation/WebsiteDataStorePlayStation.cpp       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/playstation/WebsiteDataStorePlayStation.cpp  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -56,6 +56,11 @@
</span><span class="cx">     return { };
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String WebsiteDataStore::defaultGeneralStorageDirectory()
+{
+    return { };
+}
+
</ins><span class="cx"> String WebsiteDataStore::defaultNetworkCacheDirectory()
</span><span class="cx"> {
</span><span class="cx">     return { };
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessWebsiteDatawinWebsiteDataStoreWincpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/win/WebsiteDataStoreWin.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/win/WebsiteDataStoreWin.cpp       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/WebsiteData/win/WebsiteDataStoreWin.cpp  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -56,6 +56,11 @@
</span><span class="cx">     return FileSystem::pathByAppendingComponent(FileSystem::localUserSpecificStorageDirectory(), "CacheStorage");
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String WebsiteDataStore::defaultGeneralStorageDirectory()
+{
+    return FileSystem::pathByAppendingComponent(FileSystem::localUserSpecificStorageDirectory(), "Storage");
+}
+
</ins><span class="cx"> String WebsiteDataStore::defaultNetworkCacheDirectory()
</span><span class="cx"> {
</span><span class="cx">     return FileSystem::pathByAppendingComponent(FileSystem::localUserSpecificStorageDirectory(), "NetworkCache");
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitUIProcessglibWebsiteDataStoreGLibcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/UIProcess/glib/WebsiteDataStoreGLib.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/UIProcess/glib/WebsiteDataStoreGLib.cpp 2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/UIProcess/glib/WebsiteDataStoreGLib.cpp    2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -54,6 +54,11 @@
</span><span class="cx">     return cacheDirectoryFileSystemRepresentation(FileSystem::pathByAppendingComponent(FileSystem::stringFromFileSystemRepresentation(g_get_prgname()), "CacheStorage"));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+WTF::String WebsiteDataStore::defaultGeneralStorageDirectory()
+{
+    return websiteDataDirectoryFileSystemRepresentation(BASE_DIRECTORY G_DIR_SEPARATOR_S "storage");
+}
+
</ins><span class="cx"> WTF::String WebsiteDataStore::defaultIndexedDBDatabaseDirectory()
</span><span class="cx"> {
</span><span class="cx">     return websiteDataDirectoryFileSystemRepresentation(BASE_DIRECTORY G_DIR_SEPARATOR_S "databases" G_DIR_SEPARATOR_S "indexeddb");
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitWebKitxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/WebKit.xcodeproj/project.pbxproj (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/WebKit.xcodeproj/project.pbxproj        2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/WebKit.xcodeproj/project.pbxproj   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -1465,6 +1465,11 @@
</span><span class="cx">          9197940823DBC4CB00257892 /* WebPageInspectorAgentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9197940723DBC4CA00257892 /* WebPageInspectorAgentBase.h */; };
</span><span class="cx">          9197940A23DBC4E000257892 /* APIInspectorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 9197940923DBC4E000257892 /* APIInspectorClient.h */; };
</span><span class="cx">          9197940C23DBC50300257892 /* _WKInspectorDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9197940B23DBC50300257892 /* _WKInspectorDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+               93085DBF26E192F9000EC6A7 /* WebStorageProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 93085DBA26E152C2000EC6A7 /* WebStorageProvider.h */; };
+               93085DC026E19313000EC6A7 /* WebStorageConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 93085DBB26E172F9000EC6A7 /* WebStorageConnection.h */; };
+               93085DCA26E29775000EC6A7 /* OriginStorageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 93085DC626E1C6CF000EC6A7 /* OriginStorageManager.h */; };
+               93085DD026E2F100000EC6A7 /* WebSpeechRecognitionConnectionMessagesReplies.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D6B77E254CCABB0058DD3A /* WebSpeechRecognitionConnectionMessagesReplies.h */; };
+               93085DD226E2F58D000EC6A7 /* NetworkStorageManagerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93085DCC26E2E902000EC6A7 /* NetworkStorageManagerMessageReceiver.cpp */; };
</ins><span class="cx">           9321D5861A38EE3C008052BE /* WKImmediateActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9321D5851A38EE3C008052BE /* WKImmediateActionController.h */; };
</span><span class="cx">          9321D58A1A38F196008052BE /* WKImmediateActionTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 9321D5891A38F196008052BE /* WKImmediateActionTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          9323611E1B015DA800FA9232 /* _WKOverlayScrollbarStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 9323611D1B015DA800FA9232 /* _WKOverlayScrollbarStyle.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -1511,11 +1516,11 @@
</span><span class="cx">          93D6B784254CCD0E0058DD3A /* SpeechRecognitionServerMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D6B780254CCABC0058DD3A /* SpeechRecognitionServerMessages.h */; };
</span><span class="cx">          93D6B785254CCD430058DD3A /* SpeechRecognitionServerMessagesReplies.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D6B77F254CCABB0058DD3A /* SpeechRecognitionServerMessagesReplies.h */; };
</span><span class="cx">          93D6B787254CCD8C0058DD3A /* WebSpeechRecognitionConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D6B786254CCD8B0058DD3A /* WebSpeechRecognitionConnectionMessages.h */; };
</span><del>-               93D6B788254CCD940058DD3A /* WebSpeechRecognitionConnectionMessagesReplies.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D6B77E254CCABB0058DD3A /* WebSpeechRecognitionConnectionMessagesReplies.h */; };
</del><span class="cx">           93D6B78A254CD43E0058DD3A /* WebSpeechRecognitionConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93D6B77D254CCABB0058DD3A /* WebSpeechRecognitionConnectionMessageReceiver.cpp */; };
</span><span class="cx">          93D6B7B4255268D50058DD3A /* SpeechRecognitionPermissionRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D6B7AF255268A10058DD3A /* SpeechRecognitionPermissionRequest.h */; };
</span><span class="cx">          93D6B7B5255268D70058DD3A /* SpeechRecognitionPermissionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D6B7B2255268A20058DD3A /* SpeechRecognitionPermissionManager.h */; };
</span><span class="cx">          93D6B7B925534A170058DD3A /* WKSpeechRecognitionPermissionCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D6B7B725534A110058DD3A /* WKSpeechRecognitionPermissionCallback.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+               93E5B4772717FC21004C6368 /* NetworkStorageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 93085DC426E1BBBD000EC6A7 /* NetworkStorageManager.h */; };
</ins><span class="cx">           93E6A4EE1BC5DD3900F8A0E7 /* _WKHitTestResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 93E6A4ED1BC5DD3900F8A0E7 /* _WKHitTestResult.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          93F549B41E3174B7000E7239 /* WKSnapshotConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F549B31E3174B7000E7239 /* WKSnapshotConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
</span><span class="cx">          950F2880252414EA00B74F1C /* WKMouseDeviceObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 950F287E252414E900B74F1C /* WKMouseDeviceObserver.h */; };
</span><span class="lines">@@ -4871,6 +4876,17 @@
</span><span class="cx">          9197940723DBC4CA00257892 /* WebPageInspectorAgentBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPageInspectorAgentBase.h; sourceTree = "<group>"; };
</span><span class="cx">          9197940923DBC4E000257892 /* APIInspectorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIInspectorClient.h; sourceTree = "<group>"; };
</span><span class="cx">          9197940B23DBC50300257892 /* _WKInspectorDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKInspectorDelegate.h; sourceTree = "<group>"; };
</span><ins>+               93085DBA26E152C2000EC6A7 /* WebStorageProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebStorageProvider.h; sourceTree = "<group>"; };
+               93085DBB26E172F9000EC6A7 /* WebStorageConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebStorageConnection.h; sourceTree = "<group>"; };
+               93085DBC26E174ED000EC6A7 /* WebStorageConnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebStorageConnection.cpp; sourceTree = "<group>"; };
+               93085DC326E1BBBD000EC6A7 /* NetworkStorageManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkStorageManager.cpp; sourceTree = "<group>"; };
+               93085DC426E1BBBD000EC6A7 /* NetworkStorageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkStorageManager.h; sourceTree = "<group>"; };
+               93085DC526E1C6CF000EC6A7 /* OriginStorageManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OriginStorageManager.cpp; sourceTree = "<group>"; };
+               93085DC626E1C6CF000EC6A7 /* OriginStorageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OriginStorageManager.h; sourceTree = "<group>"; };
+               93085DC726E1C6EE000EC6A7 /* NetworkStorageManager.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NetworkStorageManager.messages.in; sourceTree = "<group>"; };
+               93085DCC26E2E902000EC6A7 /* NetworkStorageManagerMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkStorageManagerMessageReceiver.cpp; sourceTree = "<group>"; };
+               93085DCD26E2E902000EC6A7 /* NetworkStorageManagerMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkStorageManagerMessages.h; sourceTree = "<group>"; };
+               93085DCE26E2E902000EC6A7 /* NetworkStorageManagerMessagesReplies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkStorageManagerMessagesReplies.h; sourceTree = "<group>"; };
</ins><span class="cx">           9321D5851A38EE3C008052BE /* WKImmediateActionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKImmediateActionController.h; sourceTree = "<group>"; };
</span><span class="cx">          9321D5871A38EE74008052BE /* WKImmediateActionController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKImmediateActionController.mm; sourceTree = "<group>"; };
</span><span class="cx">          9321D5891A38F196008052BE /* WKImmediateActionTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKImmediateActionTypes.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -8693,6 +8709,7 @@
</span><span class="cx">                          510CC7DC16138E2900D03ED3 /* mac */,
</span><span class="cx">                          5C01BC3526D46AD400FEB42F /* PrivateClickMeasurement */,
</span><span class="cx">                          93BA04D92151ADCD007F455F /* ServiceWorker */,
</span><ins>+                               93085DC226E1BB65000EC6A7 /* storage */,
</ins><span class="cx">                           413075971DE84ED70039EC69 /* webrtc */,
</span><span class="cx">                          93B26143227D143100B97A76 /* WebStorage */,
</span><span class="cx">                          5C826D6E26D58A16008AEC91 /* DatabaseUtilities.cpp */,
</span><span class="lines">@@ -9623,6 +9640,18 @@
</span><span class="cx">                  path = mac;
</span><span class="cx">                  sourceTree = "<group>";
</span><span class="cx">          };
</span><ins>+               93085DC226E1BB65000EC6A7 /* storage */ = {
+                       isa = PBXGroup;
+                       children = (
+                               93085DC326E1BBBD000EC6A7 /* NetworkStorageManager.cpp */,
+                               93085DC426E1BBBD000EC6A7 /* NetworkStorageManager.h */,
+                               93085DC726E1C6EE000EC6A7 /* NetworkStorageManager.messages.in */,
+                               93085DC526E1C6CF000EC6A7 /* OriginStorageManager.cpp */,
+                               93085DC626E1C6CF000EC6A7 /* OriginStorageManager.h */,
+                       );
+                       path = storage;
+                       sourceTree = "<group>";
+               };
</ins><span class="cx">           939288E021404DF000EBBA33 /* IndexedDB */ = {
</span><span class="cx">                  isa = PBXGroup;
</span><span class="cx">                  children = (
</span><span class="lines">@@ -9985,6 +10014,9 @@
</span><span class="cx">                          C149380322341DF7000CD707 /* WebSpeechSynthesisClient.cpp */,
</span><span class="cx">                          C149380222341C60000CD707 /* WebSpeechSynthesisClient.h */,
</span><span class="cx">                          C149380A223853BE000CD707 /* WebSpeechSynthesisVoice.h */,
</span><ins>+                               93085DBC26E174ED000EC6A7 /* WebStorageConnection.cpp */,
+                               93085DBB26E172F9000EC6A7 /* WebStorageConnection.h */,
+                               93085DBA26E152C2000EC6A7 /* WebStorageProvider.h */,
</ins><span class="cx">                           4A410F4819AF7B80002EBAB5 /* WebUserMediaClient.cpp */,
</span><span class="cx">                          4A410F4919AF7B80002EBAB5 /* WebUserMediaClient.h */,
</span><span class="cx">                          83EE57591DB7D60600C74C50 /* WebValidationMessageClient.cpp */,
</span><span class="lines">@@ -11198,6 +11230,9 @@
</span><span class="cx">                          31F060DD1654317500F3281C /* NetworkSocketChannelMessageReceiver.cpp */,
</span><span class="cx">                          5C0B17741E7C879C00E9123C /* NetworkSocketStreamMessageReceiver.cpp */,
</span><span class="cx">                          5C0B17751E7C879C00E9123C /* NetworkSocketStreamMessages.h */,
</span><ins>+                               93085DCC26E2E902000EC6A7 /* NetworkStorageManagerMessageReceiver.cpp */,
+                               93085DCD26E2E902000EC6A7 /* NetworkStorageManagerMessages.h */,
+                               93085DCE26E2E902000EC6A7 /* NetworkStorageManagerMessagesReplies.h */,
</ins><span class="cx">                           1A2D8437127F65D5001EB962 /* NPObjectMessageReceiverMessageReceiver.cpp */,
</span><span class="cx">                          1A2D8438127F65D5001EB962 /* NPObjectMessageReceiverMessages.h */,
</span><span class="cx">                          CDA29A241CBEB67A00901CCF /* PlaybackSessionManagerMessageReceiver.cpp */,
</span><span class="lines">@@ -12283,6 +12318,7 @@
</span><span class="cx">                          3754D5451B3A29FD003A4C7F /* NSInvocationSPI.h in Headers */,
</span><span class="cx">                          41DD72AB2682167300A90C71 /* NWSPI.h in Headers */,
</span><span class="cx">                          BC8ACA1316670D89004C1941 /* ObjCObjectGraph.h in Headers */,
</span><ins>+                               93085DCA26E29775000EC6A7 /* OriginStorageManager.h in Headers */,
</ins><span class="cx">                           F4EB4AFD269CD7F300D297AE /* OSStateSPI.h in Headers */,
</span><span class="cx">                          7CF47FFB17275C57008ACB91 /* PageBanner.h in Headers */,
</span><span class="cx">                          BC6EDAA6111271C600E7678B /* PageClient.h in Headers */,
</span><span class="lines">@@ -12418,6 +12454,7 @@
</span><span class="cx">                          46F38E8C2416E6730059375A /* RunningBoardServicesSPI.h in Headers */,
</span><span class="cx">                          0E97D74D200E900400BF6643 /* SafeBrowsingSPI.h in Headers */,
</span><span class="cx">                          5CA9854A210BEB640057EB6B /* SafeBrowsingWarning.h in Headers */,
</span><ins>+                               93E5B4772717FC21004C6368 /* NetworkStorageManager.h in Headers */,
</ins><span class="cx">                           BC2D021712AC41CB00E732A3 /* SameDocumentNavigationType.h in Headers */,
</span><span class="cx">                          1AAB4A8D1296F0A20023952F /* SandboxExtension.h in Headers */,
</span><span class="cx">                          E1E552C516AE065F004ED653 /* SandboxInitializationParameters.h in Headers */,
</span><span class="lines">@@ -12747,10 +12784,12 @@
</span><span class="cx">                          417915B12256C0D600D6F97E /* WebSocketChannelManager.h in Headers */,
</span><span class="cx">                          93D6B773254BB8C70058DD3A /* WebSpeechRecognitionConnection.h in Headers */,
</span><span class="cx">                          93D6B787254CCD8C0058DD3A /* WebSpeechRecognitionConnectionMessages.h in Headers */,
</span><del>-                               93D6B788254CCD940058DD3A /* WebSpeechRecognitionConnectionMessagesReplies.h in Headers */,
</del><ins>+                                93085DD026E2F100000EC6A7 /* WebSpeechRecognitionConnectionMessagesReplies.h in Headers */,
</ins><span class="cx">                           C149380922347104000CD707 /* WebSpeechSynthesisClient.h in Headers */,
</span><span class="cx">                          836034A01ACB34D600626549 /* WebSQLiteDatabaseTracker.h in Headers */,
</span><ins>+                               93085DC026E19313000EC6A7 /* WebStorageConnection.h in Headers */,
</ins><span class="cx">                           1A52C0F81A38CDC70016160A /* WebStorageNamespaceProvider.h in Headers */,
</span><ins>+                               93085DBF26E192F9000EC6A7 /* WebStorageProvider.h in Headers */,
</ins><span class="cx">                           9356F2DC2152B6B500E6D5DF /* WebSWClientConnection.h in Headers */,
</span><span class="cx">                          517A53101F47A86200DCDC0A /* WebSWClientConnectionMessages.h in Headers */,
</span><span class="cx">                          466BC03C1FA266DA002FA9C1 /* WebSWContextManagerConnection.h in Headers */,
</span><span class="lines">@@ -14293,6 +14332,7 @@
</span><span class="cx">                          41E242E026E0C908009A8C64 /* NetworkRTCUtilitiesCocoa.mm in Sources */,
</span><span class="cx">                          31F060E11654318500F3281C /* NetworkSocketChannelMessageReceiver.cpp in Sources */,
</span><span class="cx">                          5C0B17781E7C880E00E9123C /* NetworkSocketStreamMessageReceiver.cpp in Sources */,
</span><ins>+                               93085DD226E2F58D000EC6A7 /* NetworkStorageManagerMessageReceiver.cpp in Sources */,
</ins><span class="cx">                           2D92A790212B6AD400F493FD /* NPIdentifierData.cpp in Sources */,
</span><span class="cx">                          2D913446212CF9F000128AFD /* NPJSObject.cpp in Sources */,
</span><span class="cx">                          2D92A791212B6AD400F493FD /* NPObjectMessageReceiver.cpp in Sources */,
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitWebProcessWebCoreSupportWebStorageConnectioncppfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageConnection.cpp (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageConnection.cpp                              (rev 0)
+++ branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageConnection.cpp 2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "WebStorageConnection.h"
+
+#include "NetworkProcessConnection.h"
+#include "NetworkStorageManagerMessages.h"
+#include "WebProcess.h"
+#include <WebCore/ClientOrigin.h>
+
+namespace WebKit {
+
+Ref<WebStorageConnection> WebStorageConnection::create()
+{
+    return adoptRef(*new WebStorageConnection);
+}
+
+void WebStorageConnection::persisted(WebCore::ClientOrigin&& origin, CompletionHandler<void(bool)>&& completionHandler)
+{
+    connection().sendWithAsyncReply(Messages::NetworkStorageManager::Persisted(origin), WTFMove(completionHandler));
+}
+
+void WebStorageConnection::persist(WebCore::ClientOrigin&& origin, CompletionHandler<void(bool)>&& completionHandler)
+{
+    connection().sendWithAsyncReply(Messages::NetworkStorageManager::Persist(origin), WTFMove(completionHandler));
+}
+
+IPC::Connection& WebStorageConnection::connection()
+{
+    return WebProcess::singleton().ensureNetworkProcessConnection().connection();
+}
+
+} // namespace WebKit
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebKitWebProcessWebCoreSupportWebStorageConnectionhfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageConnection.h (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageConnection.h                                (rev 0)
+++ branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageConnection.h   2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <WebCore/StorageConnection.h>
+
+namespace IPC {
+class Connection;
+}
+
+namespace WebKit {
+
+class WebStorageConnection final : public WebCore::StorageConnection {
+public:
+    static Ref<WebStorageConnection> create();
+
+private:
+    void persisted(WebCore::ClientOrigin&&, CompletionHandler<void(bool)>&&) final;
+    void persist(WebCore::ClientOrigin&&, CompletionHandler<void(bool)>&&) final;
+
+    IPC::Connection& connection();
+};
+
+} // namespace WebKit
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebKitWebProcessWebCoreSupportWebStorageProviderhfromrev284346branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="copfile"><h4>Copied: branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageProvider.h (from rev 284346, branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h) (0 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageProvider.h                          (rev 0)
+++ branches/safari-612-branch/Source/WebKit/WebProcess/WebCoreSupport/WebStorageProvider.h     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "WebStorageConnection.h"
+#include <WebCore/StorageProvider.h>
+
+namespace WebKit {
+
+class WebStorageProvider final : public WebCore::StorageProvider {
+    WTF_MAKE_FAST_ALLOCATED;
+private:
+    WebCore::StorageConnection& storageConnection() final
+    {
+        ASSERT(WTF::isMainRunLoop());
+
+        if (!m_connection)
+            m_connection = WebStorageConnection::create();
+        
+        return *m_connection;
+    }
+
+    RefPtr<WebStorageConnection> m_connection;
+};
+
+} // namespace WebKit
</ins></span></pre></div>
<a id="branchessafari612branchSourceWebKitWebProcessWebPageRemoteLayerTreePlatformCALayerRemoteModelHostingh"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteModelHosting.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteModelHosting.h  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteModelHosting.h     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -43,9 +43,9 @@
</span><span class="cx">     
</span><span class="cx">     void populateCreationProperties(RemoteLayerTreeTransaction::LayerCreationProperties&, const RemoteLayerTreeContext&, WebCore::PlatformCALayer::LayerType) override;
</span><span class="cx">     
</span><del>-    void dumpAdditionalProperties(TextStream&, OptionSet<PlatformLayerTreeAsTextFlags>) final;
</del><ins>+    void dumpAdditionalProperties(TextStream&, OptionSet<WebCore::PlatformLayerTreeAsTextFlags>) final;
</ins><span class="cx"> 
</span><del>-    Ref<Model> m_model;
</del><ins>+    Ref<WebCore::Model> m_model;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitWebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp  2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp     2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -135,6 +135,7 @@
</span><span class="cx"> #include "WebSpeechRecognitionProvider.h"
</span><span class="cx"> #include "WebSpeechSynthesisClient.h"
</span><span class="cx"> #include "WebStorageNamespaceProvider.h"
</span><ins>+#include "WebStorageProvider.h"
</ins><span class="cx"> #include "WebTouchEvent.h"
</span><span class="cx"> #include "WebURLSchemeHandlerProxy.h"
</span><span class="cx"> #include "WebUndoStep.h"
</span><span class="lines">@@ -570,7 +571,8 @@
</span><span class="cx">         makeUniqueRef<WebFrameLoaderClient>(m_mainFrame.copyRef()),
</span><span class="cx">         makeUniqueRef<WebSpeechRecognitionProvider>(m_identifier),
</span><span class="cx">         makeUniqueRef<MediaRecorderProvider>(*this),
</span><del>-        WebProcess::singleton().broadcastChannelRegistry()
</del><ins>+        WebProcess::singleton().broadcastChannelRegistry(),
+        makeUniqueRef<WebStorageProvider>()
</ins><span class="cx">     );
</span><span class="cx">     pageConfiguration.chromeClient = new WebChromeClient(*this);
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitWebProcessWebPagemacDisplayRefreshMonitorMach"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h       2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h  2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx">     bool startNotificationMechanism() final;
</span><span class="cx">     void stopNotificationMechanism() final;
</span><span class="cx"> 
</span><del>-    void adjustPreferredFramesPerSecond(FramesPerSecond) final;
</del><ins>+    void adjustPreferredFramesPerSecond(WebCore::FramesPerSecond) final;
</ins><span class="cx"> 
</span><span class="cx">     DisplayLinkObserverID m_observerID;
</span><span class="cx">     std::unique_ptr<WebCore::RunLoopObserver> m_runLoopObserver;
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitLegacymacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKitLegacy/mac/WebView/WebView.mm (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKitLegacy/mac/WebView/WebView.mm    2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKitLegacy/mac/WebView/WebView.mm       2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -151,6 +151,7 @@
</span><span class="cx"> #import <WebCore/DragData.h>
</span><span class="cx"> #import <WebCore/DragItem.h>
</span><span class="cx"> #import <WebCore/DummySpeechRecognitionProvider.h>
</span><ins>+#import <WebCore/DummyStorageProvider.h>
</ins><span class="cx"> #import <WebCore/Editing.h>
</span><span class="cx"> #import <WebCore/Editor.h>
</span><span class="cx"> #import <WebCore/Event.h>
</span><span class="lines">@@ -1541,7 +1542,8 @@
</span><span class="cx">         makeUniqueRef<WebFrameLoaderClient>(),
</span><span class="cx">         makeUniqueRef<WebCore::DummySpeechRecognitionProvider>(),
</span><span class="cx">         makeUniqueRef<WebCore::MediaRecorderProvider>(),
</span><del>-        WebBroadcastChannelRegistry::getOrCreate([[self preferences] privateBrowsingEnabled])
</del><ins>+        WebBroadcastChannelRegistry::getOrCreate([[self preferences] privateBrowsingEnabled]),
+        makeUniqueRef<WebCore::DummyStorageProvider>()
</ins><span class="cx">     );
</span><span class="cx"> #if !PLATFORM(IOS_FAMILY)
</span><span class="cx">     pageConfiguration.chromeClient = new WebChromeClient(self);
</span><span class="lines">@@ -1819,7 +1821,8 @@
</span><span class="cx">         makeUniqueRef<WebFrameLoaderClient>(),
</span><span class="cx">         makeUniqueRef<WebCore::DummySpeechRecognitionProvider>(),
</span><span class="cx">         makeUniqueRef<WebCore::MediaRecorderProvider>(),
</span><del>-        WebBroadcastChannelRegistry::getOrCreate([[self preferences] privateBrowsingEnabled])
</del><ins>+        WebBroadcastChannelRegistry::getOrCreate([[self preferences] privateBrowsingEnabled]),
+        makeUniqueRef<WebCore::DummyStorageProvider>()
</ins><span class="cx">     );
</span><span class="cx">     pageConfiguration.chromeClient = new WebChromeClientIOS(self);
</span><span class="cx"> #if ENABLE(DRAG_SUPPORT)
</span></span></pre></div>
<a id="branchessafari612branchSourceWebKitLegacywinWebViewcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612-branch/Source/WebKitLegacy/win/WebView.cpp (284350 => 284351)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612-branch/Source/WebKitLegacy/win/WebView.cpp   2021-10-18 08:25:28 UTC (rev 284350)
+++ branches/safari-612-branch/Source/WebKitLegacy/win/WebView.cpp      2021-10-18 08:41:27 UTC (rev 284351)
</span><span class="lines">@@ -96,6 +96,7 @@
</span><span class="cx"> #include <WebCore/DragController.h>
</span><span class="cx"> #include <WebCore/DragData.h>
</span><span class="cx"> #include <WebCore/DummySpeechRecognitionProvider.h>
</span><ins>+#include <WebCore/DummyStorageProvider.h>
</ins><span class="cx"> #include <WebCore/Editor.h>
</span><span class="cx"> #include <WebCore/EventHandler.h>
</span><span class="cx"> #include <WebCore/EventNames.h>
</span><span class="lines">@@ -3130,7 +3131,8 @@
</span><span class="cx">         makeUniqueRef<WebFrameLoaderClient>(webFrame),
</span><span class="cx">         makeUniqueRef<DummySpeechRecognitionProvider>(),
</span><span class="cx">         makeUniqueRef<MediaRecorderProvider>(),
</span><del>-        WebBroadcastChannelRegistry::getOrCreate(false)
</del><ins>+        WebBroadcastChannelRegistry::getOrCreate(false),
+        makeUniqueRef<WebCore::DummyStorageProvider>()
</ins><span class="cx">     );
</span><span class="cx">     configuration.chromeClient = new WebChromeClient(this);
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span></span></pre>
</div>
</div>

</body>
</html>