Changeset 86205 in webkit


Ignore:
Timestamp:
May 10, 2011 6:53:30 PM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2011-05-10 Anton D'Auria <adauria@apple.com>

Reviewed by David Levin.

StorageTracker should report actual local storage usage on disk
https://bugs.webkit.org/show_bug.cgi?id=60558

  • storage/domstorage/localstorage/storagetracker/storage-tracker-6-create-expected.txt: Added.
  • storage/domstorage/localstorage/storagetracker/storage-tracker-6-create.html: Added.
  • storage/domstorage/localstorage/storagetracker/storage-tracker-7-usage-expected.txt: Added.
  • storage/domstorage/localstorage/storagetracker/storage-tracker-7-usage.html: Added.

2011-05-10 Anton D'Auria <adauria@apple.com>

Reviewed by David Levin.

StorageTracker should report actual local storage usage on disk
https://bugs.webkit.org/show_bug.cgi?id=60558

Tests: storage/domstorage/localstorage/storagetracker/storage-tracker-6-create.html

storage/domstorage/localstorage/storagetracker/storage-tracker-7-usage.html

Use SQLiteFileSystem::getDatabaseFileSize to get actual usage by
an origin's local storage db. Factored out code that retrieves
path of local storage db.

  • WebCore.exp.in: Sorted alphabetically StorageTracker's mangled function names.
  • storage/StorageTracker.cpp: (WebCore::StorageTracker::syncDeleteOrigin): Uses helper function to get path of origin's db (WebCore::StorageTracker::databasePathForOrigin): New helper function. that gets the path of an origin's local storage db from StorageTracker. (WebCore::StorageTracker::diskUsageForOrigin): New API.
  • storage/StorageTracker.h:

2011-05-10 Anton D'Auria <adauria@apple.com>

Reviewed by David Levin.

Add ApplicationCache API to get disk usage per origin
https://bugs.webkit.org/show_bug.cgi?id=57127

Added Mac port API.

  • WebCoreSupport/WebApplicationCache.h:
  • WebCoreSupport/WebApplicationCache.mm: (+[WebApplicationCache diskUsageForOrigin:]):

2011-05-10 Anton D'Auria <adauria@apple.com>

Reviewed by David Levin.

StorageTracker should report actual local storage usage on disk
https://bugs.webkit.org/show_bug.cgi?id=60558

  • DumpRenderTree/LayoutTestController.cpp: (localStorageDiskUsageForOriginCallback): (LayoutTestController::staticFunctions):
  • DumpRenderTree/LayoutTestController.h:
  • DumpRenderTree/chromium/LayoutTestController.cpp: (LayoutTestController::LayoutTestController): (LayoutTestController::localStorageDiskUsageForOrigin):
  • DumpRenderTree/chromium/LayoutTestController.h:
  • DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: (LayoutTestController::localStorageDiskUsageForOrigin):
  • DumpRenderTree/mac/LayoutTestControllerMac.mm: (LayoutTestController::localStorageDiskUsageForOrigin):
  • DumpRenderTree/qt/LayoutTestControllerQt.cpp: (LayoutTestController::localStorageDiskUsageForOrigin):
  • DumpRenderTree/qt/LayoutTestControllerQt.h:
  • DumpRenderTree/win/LayoutTestControllerWin.cpp: (LayoutTestController::localStorageDiskUsageForOrigin):
Location:
trunk
Files:
4 added
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r86204 r86205  
     12011-05-10  Anton D'Auria  <adauria@apple.com>
     2
     3        Reviewed by David Levin.
     4
     5        StorageTracker should report actual local storage usage on disk
     6        https://bugs.webkit.org/show_bug.cgi?id=60558
     7
     8        * storage/domstorage/localstorage/storagetracker/storage-tracker-6-create-expected.txt: Added.
     9        * storage/domstorage/localstorage/storagetracker/storage-tracker-6-create.html: Added.
     10        * storage/domstorage/localstorage/storagetracker/storage-tracker-7-usage-expected.txt: Added.
     11        * storage/domstorage/localstorage/storagetracker/storage-tracker-7-usage.html: Added.
     12
    1132011-05-10  Anton D'Auria  <adauria@apple.com>
    214
  • trunk/Source/WebCore/ChangeLog

    r86204 r86205  
     12011-05-10  Anton D'Auria  <adauria@apple.com>
     2
     3        Reviewed by David Levin.
     4
     5        StorageTracker should report actual local storage usage on disk
     6        https://bugs.webkit.org/show_bug.cgi?id=60558
     7
     8        Tests: storage/domstorage/localstorage/storagetracker/storage-tracker-6-create.html
     9               storage/domstorage/localstorage/storagetracker/storage-tracker-7-usage.html
     10
     11        Use SQLiteFileSystem::getDatabaseFileSize to get actual usage by
     12        an origin's local storage db. Factored out code that retrieves
     13        path of local storage db.
     14
     15        * WebCore.exp.in: Sorted alphabetically StorageTracker's mangled
     16        function names.
     17        * storage/StorageTracker.cpp:
     18        (WebCore::StorageTracker::syncDeleteOrigin): Uses helper function
     19        to get path of origin's db
     20        (WebCore::StorageTracker::databasePathForOrigin): New helper function.
     21        that gets the path of an origin's local storage db from StorageTracker.
     22        (WebCore::StorageTracker::diskUsageForOrigin): New API.
     23        * storage/StorageTracker.h:
     24
    1252011-05-10  Anton D'Auria  <adauria@apple.com>
    226
  • trunk/Source/WebCore/WebCore.exp.in

    r86204 r86205  
    14031403
    14041404#if ENABLE(DOM_STORAGE)
     1405__ZN7WebCore14StorageTracker7originsERN3WTF6VectorINS1_6RefPtrINS_14SecurityOriginEEELm0EEE
     1406__ZN7WebCore14StorageTracker7trackerEv
     1407__ZN7WebCore14StorageTracker9setClientEPNS_20StorageTrackerClientE
     1408__ZN7WebCore14StorageTracker12deleteOriginEPNS_14SecurityOriginE
     1409__ZN7WebCore14StorageTracker16deleteAllOriginsEv
     1410__ZN7WebCore14StorageTracker16syncLocalStorageEv
    14051411__ZN7WebCore14StorageTracker17initializeTrackerERKN3WTF6StringE
    1406 __ZN7WebCore14StorageTracker16deleteAllOriginsEv
    1407 __ZN7WebCore14StorageTracker12deleteOriginEPNS_14SecurityOriginE
    1408 __ZN7WebCore14StorageTracker7trackerEv
    1409 __ZN7WebCore14StorageTracker7originsERN3WTF6VectorINS1_6RefPtrINS_14SecurityOriginEEELm0EEE
    1410 __ZN7WebCore14StorageTracker9setClientEPNS_20StorageTrackerClientE
    1411 __ZN7WebCore14StorageTracker16syncLocalStorageEv
     1412__ZN7WebCore14StorageTracker18diskUsageForOriginEPNS_14SecurityOriginE
    14121413__ZN7WebCore14StorageTracker32syncFileSystemAndTrackerDatabaseEv
    14131414#endif
  • trunk/Source/WebCore/storage/StorageTracker.cpp

    r84208 r86205  
    454454        return;
    455455   
    456     // Get origin's db file path, delete entry in tracker's db, then delete db file.
    457     SQLiteStatement pathStatement(m_database, "SELECT path FROM Origins WHERE origin=?");
    458     if (pathStatement.prepare() != SQLResultOk) {
    459         LOG_ERROR("Unable to prepare selection of path for origin '%s'", originIdentifier.ascii().data());
    460         return;
    461     }
    462     pathStatement.bindText(1, originIdentifier);
    463     int result = pathStatement.step();
    464     if (result != SQLResultRow) {
    465         LOG_ERROR("Unable to find origin '%s' in Origins table", originIdentifier.ascii().data());
    466         return;
    467     }
    468    
    469     String path = pathStatement.getColumnText(0);
     456    String path = databasePathForOrigin(originIdentifier);
    470457
    471458    ASSERT(!path.isEmpty());
     
    559546    m_isActive = flag;
    560547}
    561 
     548   
     549String StorageTracker::databasePathForOrigin(const String& originIdentifier)
     550{
     551    ASSERT(!m_databaseGuard.tryLock());
     552    ASSERT(m_isActive);
     553   
     554    if (!m_database.isOpen())
     555        return String();
     556   
     557    SQLiteStatement pathStatement(m_database, "SELECT path FROM Origins WHERE origin=?");
     558    if (pathStatement.prepare() != SQLResultOk) {
     559        LOG_ERROR("Unable to prepare selection of path for origin '%s'", originIdentifier.ascii().data());
     560        return String();
     561    }
     562    pathStatement.bindText(1, originIdentifier);
     563    int result = pathStatement.step();
     564    if (result != SQLResultRow)
     565        return String();
     566
     567    return pathStatement.getColumnText(0);
     568}
     569   
     570long long StorageTracker::diskUsageForOrigin(SecurityOrigin* origin)
     571{
     572    if (!m_isActive)
     573        return 0;
     574
     575    MutexLocker lock(m_databaseGuard);
     576
     577    String path = databasePathForOrigin(origin->databaseIdentifier());
     578    if (path.isEmpty())
     579        return 0;
     580
     581    return SQLiteFileSystem::getDatabaseFileSize(path);
     582}
     583   
    562584} // namespace WebCore
    563585
  • trunk/Source/WebCore/storage/StorageTracker.h

    r84208 r86205  
    5858    void deleteOrigin(const String& originIdentifier);
    5959    void origins(Vector<RefPtr<SecurityOrigin> >& result);
    60 
     60    long long diskUsageForOrigin(SecurityOrigin*);
     61   
    6162    void cancelDeletingOrigin(const String& originIdentifier);
    6263   
     
    8384
    8485    void deleteTrackerFiles();
     86    String databasePathForOrigin(const String& originIdentifier);
    8587
    8688    bool canDeleteOrigin(const String& originIdentifier);
  • trunk/Source/WebKit/mac/ChangeLog

    r86204 r86205  
     12011-05-10  Anton D'Auria  <adauria@apple.com>
     2
     3        Reviewed by David Levin.
     4
     5        Add ApplicationCache API to get disk usage per origin
     6        https://bugs.webkit.org/show_bug.cgi?id=57127
     7
     8        Added Mac port API.
     9
     10        * WebCoreSupport/WebApplicationCache.h:
     11        * WebCoreSupport/WebApplicationCache.mm:
     12        (+[WebApplicationCache diskUsageForOrigin:]):
     13
    1142011-05-10  Anton D'Auria  <adauria@apple.com>
    215
  • trunk/Source/WebKit/mac/Storage/WebStorageManager.mm

    r80892 r86205  
    7676}
    7777
     78- (unsigned long long)diskUsageForOrigin:(WebSecurityOrigin *)origin
     79{
     80    return StorageTracker::tracker().diskUsageForOrigin([origin _core]);
     81}
     82
    7883- (void)syncLocalStorage
    7984{
  • trunk/Source/WebKit/mac/Storage/WebStorageManagerPrivate.h

    r80892 r86205  
    3838- (void)deleteAllOrigins;
    3939- (void)deleteOrigin:(WebSecurityOrigin *)origin;
     40- (unsigned long long)diskUsageForOrigin:(WebSecurityOrigin *)origin;
    4041
    4142- (void)syncLocalStorage;
  • trunk/Tools/ChangeLog

    r86204 r86205  
     12011-05-10  Anton D'Auria  <adauria@apple.com>
     2
     3        Reviewed by David Levin.
     4
     5        StorageTracker should report actual local storage usage on disk
     6        https://bugs.webkit.org/show_bug.cgi?id=60558
     7
     8        * DumpRenderTree/LayoutTestController.cpp:
     9        (localStorageDiskUsageForOriginCallback):
     10        (LayoutTestController::staticFunctions):
     11        * DumpRenderTree/LayoutTestController.h:
     12        * DumpRenderTree/chromium/LayoutTestController.cpp:
     13        (LayoutTestController::LayoutTestController):
     14        (LayoutTestController::localStorageDiskUsageForOrigin):
     15        * DumpRenderTree/chromium/LayoutTestController.h:
     16        * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
     17        (LayoutTestController::localStorageDiskUsageForOrigin):
     18        * DumpRenderTree/mac/LayoutTestControllerMac.mm:
     19        (LayoutTestController::localStorageDiskUsageForOrigin):
     20        * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
     21        (LayoutTestController::localStorageDiskUsageForOrigin):
     22        * DumpRenderTree/qt/LayoutTestControllerQt.h:
     23        * DumpRenderTree/win/LayoutTestControllerWin.cpp:
     24        (LayoutTestController::localStorageDiskUsageForOrigin):
     25
    1262011-05-10  Anton D'Auria  <adauria@apple.com>
    227
  • trunk/Tools/DumpRenderTree/LayoutTestController.cpp

    r86204 r86205  
    495495
    496496    return JSValueMakeUndefined(context);
     497}
     498
     499static JSValueRef localStorageDiskUsageForOriginCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
     500{
     501    LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
     502
     503    if (argumentCount < 1)
     504        return JSValueMakeUndefined(context);
     505
     506    JSRetainPtr<JSStringRef> originURL(Adopt, JSValueToStringCopy(context, arguments[0], exception));
     507    ASSERT(!*exception);
     508
     509    return JSValueMakeNumber(context, controller->localStorageDiskUsageForOrigin(originURL.get()));
    497510}
    498511
     
    23862399        { "observeStorageTrackerNotifications", observeStorageTrackerNotificationsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },       
    23872400        { "deleteLocalStorageForOrigin", deleteLocalStorageForOriginCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     2401        { "localStorageDiskUsageForOrigin", localStorageDiskUsageForOriginCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    23882402        { "originsWithLocalStorage", originsWithLocalStorageCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    23892403        { "setShouldPaintBrokenImage", setShouldPaintBrokenImageCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
  • trunk/Tools/DumpRenderTree/LayoutTestController.h

    r86204 r86205  
    332332    void deleteAllLocalStorage();
    333333    void deleteLocalStorageForOrigin(JSStringRef originIdentifier);
     334    long long localStorageDiskUsageForOrigin(JSStringRef originIdentifier);
    334335    void observeStorageTrackerNotifications(unsigned number);
    335336    void syncLocalStorage();
  • trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp

    r86204 r86205  
    209209    bindMethod("storeWebScriptObject", &LayoutTestController::storeWebScriptObject);
    210210    bindMethod("deleteAllLocalStorage", &LayoutTestController::deleteAllLocalStorage);
     211    bindMethod("localStorageDiskUsageForOrigin", &LayoutTestController::localStorageDiskUsageForOrigin);
    211212    bindMethod("originsWithLocalStorage", &LayoutTestController::originsWithLocalStorage);
    212213    bindMethod("deleteLocalStorageForOrigin", &LayoutTestController::deleteLocalStorageForOrigin);
     
    17781779}
    17791780
     1781void LayoutTestController::localStorageDiskUsageForOrigin(const CppArgumentList& arguments, CppVariant*)
     1782{
     1783    // Not Implemented
     1784}
     1785
    17801786void LayoutTestController::originsWithLocalStorage(const CppArgumentList& arguments, CppVariant*)
    17811787{
  • trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h

    r86204 r86205  
    365365    void originsWithLocalStorage(const CppArgumentList&, CppVariant*);
    366366    void deleteLocalStorageForOrigin(const CppArgumentList&, CppVariant*);
     367    void localStorageDiskUsageForOrigin(const CppArgumentList&, CppVariant*);
    367368    void observeStorageTrackerNotifications(const CppArgumentList&, CppVariant*);
    368369    void syncLocalStorage(const CppArgumentList&, CppVariant*);
  • trunk/Tools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp

    r86204 r86205  
    661661}
    662662
     663long long LayoutTestController::localStorageDiskUsageForOrigin(JSStringRef originIdentifier)
     664{
     665    // FIXME: Implement to support getting disk usage in bytes for an origin.
     666    return 0;
     667}
     668
    663669JSValueRef LayoutTestController::originsWithApplicationCache(JSContextRef context)
    664670{
  • trunk/Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm

    r86204 r86205  
    148148}
    149149
     150long long LayoutTestController::localStorageDiskUsageForOrigin(JSStringRef url)
     151{
     152    RetainPtr<CFStringRef> urlCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, url));
     153    WebSecurityOrigin *origin = [[WebSecurityOrigin alloc] initWithURL:[NSURL URLWithString:(NSString *)urlCF.get()]];
     154    return [[WebStorageManager sharedWebStorageManager] diskUsageForOrigin:origin];
     155}
     156
    150157void LayoutTestController::observeStorageTrackerNotifications(unsigned number)
    151158{
  • trunk/Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp

    r86204 r86205  
    565565}
    566566
     567long long LayoutTestController::localStorageDiskUsageForOrigin(const QString& originIdentifier)
     568{
     569    // FIXME: Implement to support getting disk usage in bytes for an origin.
     570    return 0;
     571}
     572
    567573void LayoutTestController::setApplicationCacheOriginQuota(unsigned long long quota)
    568574{
  • trunk/Tools/DumpRenderTree/qt/LayoutTestControllerQt.h

    r86204 r86205  
    268268    void deleteAllLocalStorage();
    269269    void deleteLocalStorageForOrigin(const QString& originIdentifier);
     270    long long localStorageDiskUsageForOrigin(const QString& originIdentifier);
    270271    void observeStorageTrackerNotifications(unsigned number);
    271272    void syncLocalStorage();
  • trunk/Tools/DumpRenderTree/win/LayoutTestControllerWin.cpp

    r86204 r86205  
    15441544}
    15451545
     1546long long LayoutTestController::localStorageDiskUsageForOrigin(JSStringRef originIdentifier)
     1547{
     1548    // FIXME: Implement to support getting local storage disk usage for an origin.
     1549    return 0;
     1550}
     1551
    15461552void LayoutTestController::deleteLocalStorageForOrigin(JSStringRef URL)
    15471553{
Note: See TracChangeset for help on using the changeset viewer.