Skip to content
  • commit-queue@webkit.org's avatar
    Need a method to close all idle localstorage databases immediately. · eb3a703e
    commit-queue@webkit.org authored
    https://bugs.webkit.org/show_bug.cgi?id=103469
    
    Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2012-12-02
    Reviewed by David Kilzer.
    
    Source/WebCore:
    
    Add a new PageGroup method closeIdleLocalStorageDatabases, which walks through
    all local storage areas that don't have document referencing to them and closes
    their underlying databases.
    
    Test: storage/domstorage/localstorage/close-idle-localstorage-databases-immediately.html
    
    * WebCore.exp.in:
    * page/PageGroup.cpp:
    (WebCore::PageGroup::clearLocalStorageForOrigin):
    (WebCore):
    (WebCore::PageGroup::closeIdleLocalStorageDatabases): walking through all idle local storages and
        closing their databases.
    * page/PageGroup.h:
    (PageGroup):
    * storage/StorageArea.h:
    (WebCore::StorageArea::closeDatabaseIfIdle):
    * storage/StorageAreaImpl.cpp:
    (WebCore::StorageAreaImpl::closeDatabaseIfIdle): close the database if it is idle.
    (WebCore):
    * storage/StorageAreaImpl.h:
    (StorageAreaImpl):
    * storage/StorageNamespace.h:
    (StorageNamespace):
    * storage/StorageNamespaceImpl.cpp:
    (WebCore::StorageNamespaceImpl::closeIdleLocalStorageDatabases):
    (WebCore):
    * storage/StorageNamespaceImpl.h:
    (StorageNamespaceImpl):
    
    Source/WebKit/mac:
    
    Add a new method to WebStorageManager that we can call to close all
    idle local storage databases.
    
    * Storage/WebStorageManager.mm:
    (+[WebStorageManager closeIdleLocalStorageDatabases]):
    * Storage/WebStorageManagerPrivate.h:
    
    Tools:
    
    Add an JS method to TestRunner, to enable testing closing idle local storage databases in
    DumpRenderTree layout tests.
    
    * DumpRenderTree/TestRunner.cpp:
    (closeIdleLocalStorageDatabasesCallback):
    (TestRunner::staticFunctions):
    * DumpRenderTree/TestRunner.h:
    (TestRunner):
    * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
    (TestRunner::closeIdleLocalStorageDatabases):
    * DumpRenderTree/efl/TestRunnerEfl.cpp:
    (TestRunner::closeIdleLocalStorageDatabases):
    * DumpRenderTree/gtk/TestRunnerGtk.cpp:
    (TestRunner::closeIdleLocalStorageDatabases):
    * DumpRenderTree/mac/TestRunnerMac.mm:
    (TestRunner::closeIdleLocalStorageDatabases):
    * DumpRenderTree/win/TestRunnerWin.cpp:
    (TestRunner::closeIdleLocalStorageDatabases):
    * DumpRenderTree/wx/TestRunnerWx.cpp:
    (TestRunner::closeIdleLocalStorageDatabases):
    
    LayoutTests:
    
    * storage/domstorage/localstorage/close-idle-localstorage-databases-immediately-expected.txt: Added.
    * storage/domstorage/localstorage/close-idle-localstorage-databases-immediately.html: Added.
    * storage/resources/storage-close-idle-localstorage-databases-immediately.html: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@136323 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    eb3a703e