Changeset 215315 in webkit for trunk/Source/WebCore/page/Page.cpp


Ignore:
Timestamp:
Apr 12, 2017, 11:38:19 PM (8 years ago)
Author:
[email protected]
Message:

QuotaExceededError when saving to localStorage in private mode.
https://bugs.webkit.org/show_bug.cgi?id=157010

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (Covered by changes to existing test).

LocalStorage in private browsing is now effectively SessionStorage.
It's ephemeral, per-tab, and copied over to tabs window.open()'ed from the current.

  • loader/EmptyClients.cpp:

(WebCore::EmptyStorageNamespaceProvider::createEphemeralLocalStorageNamespace):

  • page/Chrome.cpp:

(WebCore::Chrome::createWindow):

  • page/Page.cpp:

(WebCore::Page::ephemeralLocalStorage):
(WebCore::Page::setEphemeralLocalStorage):

  • page/Page.h:
  • page/SecurityOriginData.h:
  • storage/Storage.cpp:

(WebCore::Storage::length):
(WebCore::Storage::key):
(WebCore::Storage::getItem):
(WebCore::Storage::setItem):
(WebCore::Storage::removeItem):
(WebCore::Storage::clear):
(WebCore::Storage::contains):
(WebCore::Storage::isDisabledByPrivateBrowsing): Deleted.

  • storage/StorageMap.h:
  • storage/StorageNamespaceProvider.cpp:

(WebCore::StorageNamespaceProvider::localStorageArea):

  • storage/StorageNamespaceProvider.h:
  • storage/StorageType.h:

(WebCore::isLocalStorage):
(WebCore::isPersistentLocalStorage):

Source/WebKit:

  • Storage/StorageNamespaceImpl.cpp:

(WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
(WebKit::StorageNamespaceImpl::StorageNamespaceImpl):
(WebKit::StorageNamespaceImpl::~StorageNamespaceImpl):
(WebKit::StorageNamespaceImpl::copy):
(WebKit::StorageNamespaceImpl::close):

  • Storage/StorageNamespaceImpl.h:
  • Storage/WebStorageNamespaceProvider.cpp:

(WebKit::WebStorageNamespaceProvider::createEphemeralLocalStorageNamespace):

  • Storage/WebStorageNamespaceProvider.h:

Source/WebKit2:

  • WebProcess/Storage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::StorageAreaMap):
(WebKit::StorageAreaMap::~StorageAreaMap):

  • WebProcess/Storage/StorageNamespaceImpl.cpp:

(WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
(WebKit::StorageNamespaceImpl::storageArea):
(WebKit::StorageNamespaceImpl::ephemeralLocalStorageArea):
(WebKit::StorageNamespaceImpl::copy):

  • WebProcess/Storage/StorageNamespaceImpl.h:
  • WebProcess/Storage/WebStorageNamespaceProvider.cpp:

(WebKit::WebStorageNamespaceProvider::createEphemeralLocalStorageNamespace):

  • WebProcess/Storage/WebStorageNamespaceProvider.h:

LayoutTests:

  • platform/mac-wk2/TestExpectations:
  • storage/domstorage/localstorage/private-browsing-affects-storage-expected.txt:
  • storage/domstorage/localstorage/private-browsing-affects-storage.html:
  • storage/domstorage/localstorage/resources/private-browsing-1.html: Added.
  • storage/domstorage/localstorage/resources/private-browsing-2.html: Added.
  • storage/domstorage/localstorage/resources/private-browsing-3.html: Added.
  • storage/domstorage/localstorage/resources/private-browsing-storage-2.html: Added.
  • storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt: Removed.
  • storage/domstorage/sessionstorage/private-browsing-affects-storage.html: Removed.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/page/Page.cpp

    r214893 r215315  
    13121312}
    13131313
     1314StorageNamespace* Page::ephemeralLocalStorage(bool optionalCreate)
     1315{
     1316    if (!m_ephemeralLocalStorage && optionalCreate)
     1317        m_ephemeralLocalStorage = m_storageNamespaceProvider->createEphemeralLocalStorageNamespace(*this, m_settings->sessionStorageQuota());
     1318
     1319    return m_ephemeralLocalStorage.get();
     1320}
     1321
     1322void Page::setEphemeralLocalStorage(RefPtr<StorageNamespace>&& newStorage)
     1323{
     1324    m_ephemeralLocalStorage = WTFMove(newStorage);
     1325}
     1326
    13141327bool Page::hasCustomHTMLTokenizerTimeDelay() const
    13151328{
Note: See TracChangeset for help on using the changeset viewer.