WebKit Bugzilla
Attachment 373771 Details for
Bug 199641
: LocalStorage in ephemeral session should be isolated per tab
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-199641-20190709150439.patch (text/plain), 6.00 KB, created by
Sihui Liu
on 2019-07-09 15:04:40 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Sihui Liu
Created:
2019-07-09 15:04:40 PDT
Size:
6.00 KB
patch
obsolete
>Subversion Revision: 247207 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 03ef68d1c17eda36b0d281685377e41ef4079f03..ec037cea5366eaa1220f5dbfb18c37b494a52dcc 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,23 @@ >+2019-07-09 Sihui Liu <sihui_liu@apple.com> >+ >+ LocalStorage in ephemeral session should be isolated per tab >+ https://bugs.webkit.org/show_bug.cgi?id=199641 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ According to r215315, localStorage in private browsing mode should have the same behavior as sessionStorage. >+ Therefore, when a new window is opened in private browsing mode, it should have its own LocalStorageNameSpace >+ and its storage is separate from its parent. >+ >+ This change also makes things easier with PSON, as we currently use pageID for storageNameSpaceID of session >+ storage. If a page uses parent window's storageNameSpaceID, it will need to remember that value so storage >+ information is not lost when swapped between processes. >+ >+ * WebProcess/WebStorage/StorageAreaMap.cpp: >+ (WebKit::StorageAreaMap::~StorageAreaMap): >+ * WebProcess/WebStorage/StorageNamespaceImpl.cpp: >+ (WebKit::StorageNamespaceImpl::copy): >+ > 2019-07-07 Antoine Quint <graouts@apple.com> > > [Pointer Events] touch-action should affect the behavior of pinch-to-zoom to show tabs in Safari >diff --git a/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp b/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp >index dd743a9f969c4dd015659910bd7365f8b7eb3b46..fea04ddcf3b2d3cb828fa574851f0da4561ab29a 100644 >--- a/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp >+++ b/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp >@@ -76,8 +76,7 @@ StorageAreaMap::StorageAreaMap(StorageNamespaceImpl* storageNamespace, Ref<WebCo > > StorageAreaMap::~StorageAreaMap() > { >- if (m_storageType != StorageType::EphemeralLocal) >- WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::StorageManager::DestroyStorageMap(m_storageMapID), 0); >+ WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::StorageManager::DestroyStorageMap(m_storageMapID), 0); > > m_storageNamespace->didDestroyStorageAreaMap(*this); > >diff --git a/Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp b/Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp >index f59c79b7fa2be2fc9a72052c1b9e53cb6a323fd0..dcbed98d8f635bf6e2934600a7d18aa8d548a6b9 100644 >--- a/Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp >+++ b/Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp >@@ -99,7 +99,7 @@ Ref<StorageNamespace> StorageNamespaceImpl::copy(Page* newPage) > return createSessionStorageNamespace(WebPage::fromCorePage(newPage)->pageID().toUInt64(), m_quotaInBytes); > > ASSERT(m_storageType == StorageType::EphemeralLocal); >- auto newNamespace = adoptRef(*new StorageNamespaceImpl(m_storageType, m_storageNamespaceID, m_topLevelOrigin.get(), m_quotaInBytes)); >+ auto newNamespace = adoptRef(*new StorageNamespaceImpl(m_storageType, WebPage::fromCorePage(newPage)->pageID().toUInt64(), m_topLevelOrigin.get(), m_quotaInBytes)); > > return newNamespace; > } >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 64f079d784818e71add312992451f8e53c7e7c64..a38523883ddaabb9cdb02f72a1a98d382e7fcefa 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,16 @@ >+2019-07-09 Sihui Liu <sihui_liu@apple.com> >+ >+ LocalStorage in ephemeral session should be isolated per tab >+ https://bugs.webkit.org/show_bug.cgi?id=199641 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Modify WKWebView.LocalStorageOpenWindowPrivate to include new test case. >+ >+ * TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm: >+ (TEST): >+ * TestWebKitAPI/Tests/WebKitCocoa/localstorage-open-window-private.html: >+ > 2019-07-08 Antoine Quint <graouts@apple.com> > > [Pointer Events] Enable only on the most recent version of the supported iOS family >diff --git a/Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm b/Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm >index 11562bb56934f54d63f977a7bde09d943549ab27..51a5d5c3cc524f1c4d79bd14baf476589aa0d03a 100644 >--- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm >+++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm >@@ -231,5 +231,5 @@ TEST(WKWebView, LocalStorageOpenWindowPrivate) > > receivedScriptMessage = false; > TestWebKitAPI::Util::run(&receivedScriptMessage); >- EXPECT_WK_STREQ(@"local:storage", [lastScriptMessage body]); >+ EXPECT_WK_STREQ(@"local:storage, newLocal:null", [lastScriptMessage body]); > } >diff --git a/Tools/TestWebKitAPI/Tests/WebKitCocoa/localstorage-open-window-private.html b/Tools/TestWebKitAPI/Tests/WebKitCocoa/localstorage-open-window-private.html >index 40ce7a8656edd770725ad9bdcc066ab73022546c..8f80c7fd855f02ede5970e06f77311814b016357 100644 >--- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/localstorage-open-window-private.html >+++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/localstorage-open-window-private.html >@@ -1,11 +1,13 @@ > <!DOCTYPE html> > <script> >-window.localStorage.setItem("local", "storage"); >- >-var newWindow = window.open("about:blank"); >-if (newWindow) >- window.webkit.messageHandlers.testHandler.postMessage("local:" + newWindow.localStorage.getItem("local")); >-else >- window.webkit.messageHandlers.testHandler.postMessage("open window fails"); >+if (!window.location.search) { >+ window.localStorage.setItem("local", "storage"); > >+ var newWindow = window.open("localstorage-open-window-private.html?child"); >+ if (newWindow) { >+ window.localStorage.setItem("newLocal", "newStorage"); >+ window.webkit.messageHandlers.testHandler.postMessage("local:" + newWindow.localStorage.getItem("local") + ", newLocal:" + newWindow.localStorage.getItem("newLocal")); >+ } else >+ window.webkit.messageHandlers.testHandler.postMessage("open window fails"); >+} > </script>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
ggaren
:
review-
ews-watchlist
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 199641
: 373771 |
373792