Changeset 243806 in webkit
- Timestamp:
- Apr 3, 2019, 10:00:36 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/http/wpt/cache-storage/quota-third-party.https-expected.txt (modified) (2 diffs)
-
LayoutTests/http/wpt/cache-storage/quota-third-party.https.html (modified) (1 diff)
-
LayoutTests/platform/mac-wk2/TestExpectations (modified) (1 diff)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkProcess.cpp (modified) (4 diffs)
-
Source/WebKit/NetworkProcess/NetworkProcess.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r243805 r243806 1 2019-04-03 Youenn Fablet <youenn@apple.com> 2 3 Resetting quota should take into account third party origins 4 https://bugs.webkit.org/show_bug.cgi?id=196462 5 6 Reviewed by Geoffrey Garen. 7 8 * http/wpt/cache-storage/quota-third-party.https-expected.txt: 9 * http/wpt/cache-storage/quota-third-party.https.html: 10 * platform/mac-wk2/TestExpectations: 11 1 12 2019-04-03 Diego Pino Garcia <dpino@igalia.com> 2 13 -
trunk/LayoutTests/http/wpt/cache-storage/quota-third-party.https-expected.txt
r243247 r243806 1 CONSOLE MESSAGE: Cache API operation failed: Quota exceeded 1 2 CONSOLE MESSAGE: Cache API operation failed: Quota exceeded 2 3 … … 4 5 PASS same origin iframe has regular quota 5 6 PASS cross origin iframe has reduced quota 7 PASS cross origin iframe has reduced quota after resetting quota 6 8 -
trunk/LayoutTests/http/wpt/cache-storage/quota-third-party.https.html
r243247 r243806 25 25 }, "cross origin iframe has reduced quota"); 26 26 27 promise_test(async () => { 28 // Clear DOMCaches to reset quotas. 29 if (window.testRunner) 30 testRunner.clearDOMCaches(); 31 32 assert_equals(await load_iframe("https://127.0.0.1:9443/WebKit/cache-storage/resources/quota-third-party-iframe.html"), "FAIL"); 33 }, "cross origin iframe has reduced quota after resetting quota"); 34 27 35 </script> 28 36 </body> -
trunk/LayoutTests/platform/mac-wk2/TestExpectations
r243745 r243806 932 932 webkit.org/b/196307 http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html [ Pass Failure ] 933 933 934 webkit.org/b/196358 http/wpt/cache-storage/quota-third-party.https.html [ Pass Failure ]935 936 934 webkit.org/b/196376 storage/domstorage/localstorage/private-browsing-affects-storage.html [ Pass Failure ] 937 935 -
trunk/Source/WebKit/ChangeLog
r243804 r243806 1 2019-04-03 Youenn Fablet <youenn@apple.com> 2 3 Resetting quota should take into account third party origins 4 https://bugs.webkit.org/show_bug.cgi?id=196462 5 6 Reviewed by Geoffrey Garen. 7 8 When clearing the storage quota, we were resetting it to the default value 9 without taking care of whether third party or not. 10 Updated the code to ensure that the default quota is computed based on the origin. 11 12 Updated existing test to cover this case. 13 14 * NetworkProcess/NetworkProcess.cpp: 15 (WebKit::NetworkProcess::clearStorageQuota): 16 (WebKit::NetworkProcess::setCacheStorageParameters): 17 (WebKit::NetworkProcess::updateQuotaBasedOnSpaceUsageForTesting): 18 (WebKit::NetworkProcess::storageQuotaManager): 19 * NetworkProcess/NetworkProcess.h: 20 (WebKit::NetworkProcess::StorageQuotaManagers::defaultQuota const): 21 (WebKit::NetworkProcess::StorageQuotaManagers::setDefaultQuotas): 22 (WebKit::NetworkProcess::StorageQuotaManagers::managersPerOrigin): 23 1 24 2019-04-03 Michael Catanzaro <mcatanzaro@igalia.com> 2 25 -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp
r243632 r243806 1486 1486 return; 1487 1487 1488 for (auto& manager : iterator->value.managersPerOrigin.values()) 1489 manager->resetQuota(iterator->value.defaultQuota); 1488 auto& managers = iterator->value; 1489 for (auto& manager : managers.managersPerOrigin()) 1490 manager.value->resetQuota(managers.defaultQuota(manager.key)); 1490 1491 } 1491 1492 … … 2034 2035 return StorageQuotaManagers { }; 2035 2036 }).iterator->value; 2036 managers.defaultQuota = quota; 2037 // FIXME: Pass default third party quota as a parameter. 2038 managers.defaultThirdPartyQuota = quota / 10; 2037 managers.setDefaultQuotas(quota, quota / 10); 2039 2038 2040 2039 auto iterator = m_cacheStorageParametersCallbacks.find(sessionID); … … 2233 2232 { 2234 2233 auto& manager = storageQuotaManager(sessionID, origin); 2235 manager.resetQuota(m_storageQuotaManagers.find(sessionID)->value.defaultQuota );2234 manager.resetQuota(m_storageQuotaManagers.find(sessionID)->value.defaultQuota(origin)); 2236 2235 manager.updateQuotaBasedOnSpaceUsage(); 2237 2236 } … … 2444 2443 return StorageQuotaManagers { }; 2445 2444 }).iterator->value; 2446 return *storageQuotaManagers.managersPerOrigin.ensure(origin, [this, &storageQuotaManagers, sessionID, &origin] { 2447 auto quota = origin.topOrigin == origin.clientOrigin ? storageQuotaManagers.defaultQuota : storageQuotaManagers.defaultThirdPartyQuota; 2448 auto manager = std::make_unique<StorageQuotaManager>(quota, [this, sessionID, origin](uint64_t quota, uint64_t currentSpace, uint64_t spaceIncrease, auto callback) { 2445 return *storageQuotaManagers.managersPerOrigin().ensure(origin, [this, &storageQuotaManagers, sessionID, &origin] { 2446 auto manager = std::make_unique<StorageQuotaManager>(storageQuotaManagers.defaultQuota(origin), [this, sessionID, origin](uint64_t quota, uint64_t currentSpace, uint64_t spaceIncrease, auto callback) { 2449 2447 this->requestStorageSpace(sessionID, origin, quota, currentSpace, spaceIncrease, WTFMove(callback)); 2450 2448 }); -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.h
r243632 r243806 533 533 #endif 534 534 535 struct StorageQuotaManagers { 536 uint64_t defaultQuota { WebCore::StorageQuotaManager::defaultQuota() }; 537 uint64_t defaultThirdPartyQuota { WebCore::StorageQuotaManager::defaultThirdPartyQuota() }; 538 HashMap<WebCore::ClientOrigin, std::unique_ptr<WebCore::StorageQuotaManager>> managersPerOrigin; 535 class StorageQuotaManagers { 536 public: 537 uint64_t defaultQuota(const WebCore::ClientOrigin& origin) const { return origin.topOrigin == origin.clientOrigin ? m_defaultQuota : m_defaultThirdPartyQuota; } 538 void setDefaultQuotas(uint64_t defaultQuota, uint64_t defaultThirdPartyQuota) 539 { 540 m_defaultQuota = defaultQuota; 541 m_defaultThirdPartyQuota = defaultThirdPartyQuota; 542 } 543 544 HashMap<WebCore::ClientOrigin, std::unique_ptr<WebCore::StorageQuotaManager>>& managersPerOrigin() { return m_managersPerOrigin; } 545 546 private: 547 uint64_t m_defaultQuota { WebCore::StorageQuotaManager::defaultQuota() }; 548 uint64_t m_defaultThirdPartyQuota { WebCore::StorageQuotaManager::defaultThirdPartyQuota() }; 549 HashMap<WebCore::ClientOrigin, std::unique_ptr<WebCore::StorageQuotaManager>> m_managersPerOrigin; 539 550 }; 540 551 HashMap<PAL::SessionID, StorageQuotaManagers> m_storageQuotaManagers;
Note:
See TracChangeset
for help on using the changeset viewer.