Need a more robust WebSQL disk usage computation.
authormark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 26 Feb 2013 05:06:12 +0000 (05:06 +0000)
committermark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 26 Feb 2013 05:06:12 +0000 (05:06 +0000)
https://bugs.webkit.org/show_bug.cgi?id=110805.

Reviewed by Geoffrey Garen.

- Changed DatabaseTracker::usageForOrigin() to compute the disk usage
  for a specified origin by fetching database sizes from the file system
  instead of using cached file size values.

- The OriginQuotaManager and OriginUsageRecord are no longer needed.
  Updated build files to reflect this.

- Removed getMaxSizeForDatabase() from DatabaseManager, DatabaseServer,
  and AbstractDatabaseServer since it is only needed in the backend.

- DatabaseTracker::getMaxSizeForDatabase() now calls usageForOrigin()
  to get the disk usage for its computation.

- The performance difference for this changes is a 1.6% degradation
  per additional database whose size needs to be fetched. This is a
  worst case estimated based on the disk-stat-speed-test.html benchmark
  (attached to bugzilla). The benchmark writes an average of 16 bytes per
  transaction. Most real-world transactions will likely write more
  content than that. Since disk write IO time will dominate over memory
  read time for fetching the file size, the degradation ratio will only
  reduce with larger workloads.

No layout test, but there is a quota-test.html attached to bugzilla.
The test is a webpage that can be loaded into multiple tabs to
consuming storage space. While the test is running, we can run a
"du -k; du -k *" on the database directory to verify that the total
disk usage does not far exceed the allowed quota (some small error
is expected). Without this change, each database from each tab may
exceed the quota by that same maginitude of error.

* CMakeLists.txt:
* GNUmakefile.list.am:
* Modules/webdatabase/AbstractDatabaseServer.h:
* Modules/webdatabase/Database.cpp:
* Modules/webdatabase/Database.h:
* Modules/webdatabase/DatabaseBackendBase.cpp:
(WebCore::DatabaseBackendBase::maximumSize):
* Modules/webdatabase/DatabaseManager.cpp:
* Modules/webdatabase/DatabaseManager.h:
* Modules/webdatabase/DatabaseServer.cpp:
* Modules/webdatabase/DatabaseServer.h:
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::hasAdequateQuotaForOrigin):
(WebCore::DatabaseTracker::canEstablishDatabase):
(WebCore::DatabaseTracker::retryCanEstablishDatabase):
(WebCore::DatabaseTracker::getMaxSizeForDatabase):
(WebCore::DatabaseTracker::fullPathForDatabaseNoLock):
(WebCore::DatabaseTracker::fullPathForDatabase):
(WebCore::DatabaseTracker::addOpenDatabase):
(WebCore::DatabaseTracker::removeOpenDatabase):
(WebCore::DatabaseTracker::usageForOrigin):
(WebCore::DatabaseTracker::deleteOrigin):
(WebCore::DatabaseTracker::deleteDatabase):
* Modules/webdatabase/DatabaseTracker.h:
* Modules/webdatabase/OriginQuotaManager.cpp: Removed.
* Modules/webdatabase/OriginQuotaManager.h: Removed.
* Modules/webdatabase/OriginUsageRecord.cpp: Removed.
* Modules/webdatabase/OriginUsageRecord.h: Removed.
* Modules/webdatabase/SQLTransactionBackend.cpp:
(WebCore::SQLTransactionBackend::runCurrentStatementAndGetNextState):
* Modules/webdatabase/SQLTransactionBackendSync.cpp:
(WebCore::SQLTransactionBackendSync::executeSQL):
* Modules/webdatabase/SQLTransactionClient.cpp:
* Modules/webdatabase/SQLTransactionClient.h:
* Modules/webdatabase/chromium/SQLTransactionClientChromium.cpp:
* Target.pri:
* WebCore.gyp/WebCore.gyp:
* WebCore.gypi:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@144006 268f45cc-cd09-0410-ab3c-d52691b4dbfc

29 files changed:
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/GNUmakefile.list.am
Source/WebCore/Modules/webdatabase/AbstractDatabaseServer.h
Source/WebCore/Modules/webdatabase/Database.cpp
Source/WebCore/Modules/webdatabase/Database.h
Source/WebCore/Modules/webdatabase/DatabaseBackendBase.cpp
Source/WebCore/Modules/webdatabase/DatabaseManager.cpp
Source/WebCore/Modules/webdatabase/DatabaseManager.h
Source/WebCore/Modules/webdatabase/DatabaseServer.cpp
Source/WebCore/Modules/webdatabase/DatabaseServer.h
Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp
Source/WebCore/Modules/webdatabase/DatabaseTracker.h
Source/WebCore/Modules/webdatabase/OriginQuotaManager.cpp [deleted file]
Source/WebCore/Modules/webdatabase/OriginQuotaManager.h [deleted file]
Source/WebCore/Modules/webdatabase/OriginUsageRecord.cpp [deleted file]
Source/WebCore/Modules/webdatabase/OriginUsageRecord.h [deleted file]
Source/WebCore/Modules/webdatabase/SQLTransactionBackend.cpp
Source/WebCore/Modules/webdatabase/SQLTransactionBackendSync.cpp
Source/WebCore/Modules/webdatabase/SQLTransactionClient.cpp
Source/WebCore/Modules/webdatabase/SQLTransactionClient.h
Source/WebCore/Modules/webdatabase/chromium/SQLTransactionClientChromium.cpp
Source/WebCore/Target.pri
Source/WebCore/WebCore.gyp/WebCore.gyp
Source/WebCore/WebCore.gypi
Source/WebCore/WebCore.vcproj/WebCore.vcproj
Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters
Source/WebCore/WebCore.xcodeproj/project.pbxproj

index 6c3e574..765bc0c 100644 (file)
@@ -951,8 +951,6 @@ set(WebCore_SOURCES
     Modules/webdatabase/DatabaseTask.cpp
     Modules/webdatabase/DatabaseThread.cpp
     Modules/webdatabase/DatabaseTracker.cpp
-    Modules/webdatabase/OriginQuotaManager.cpp
-    Modules/webdatabase/OriginUsageRecord.cpp
     Modules/webdatabase/SQLException.cpp
     Modules/webdatabase/SQLResultSet.cpp
     Modules/webdatabase/SQLResultSetRowList.cpp
index 59433c1..a3bd731 100644 (file)
@@ -1,3 +1,83 @@
+2013-02-25  Mark Lam  <mark.lam@apple.com>
+
+        Need a more robust WebSQL disk usage computation.
+        https://bugs.webkit.org/show_bug.cgi?id=110805.
+
+        Reviewed by Geoffrey Garen.
+
+        - Changed DatabaseTracker::usageForOrigin() to compute the disk usage
+          for a specified origin by fetching database sizes from the file system
+          instead of using cached file size values.
+
+        - The OriginQuotaManager and OriginUsageRecord are no longer needed.
+          Updated build files to reflect this.
+
+        - Removed getMaxSizeForDatabase() from DatabaseManager, DatabaseServer,
+          and AbstractDatabaseServer since it is only needed in the backend.
+
+        - DatabaseTracker::getMaxSizeForDatabase() now calls usageForOrigin()
+          to get the disk usage for its computation.
+
+        - The performance difference for this changes is a 1.6% degradation
+          per additional database whose size needs to be fetched. This is a
+          worst case estimated based on the disk-stat-speed-test.html benchmark
+          (attached to bugzilla). The benchmark writes an average of 16 bytes per
+          transaction. Most real-world transactions will likely write more
+          content than that. Since disk write IO time will dominate over memory
+          read time for fetching the file size, the degradation ratio will only
+          reduce with larger workloads.
+
+        No layout test, but there is a quota-test.html attached to bugzilla.
+        The test is a webpage that can be loaded into multiple tabs to
+        consuming storage space. While the test is running, we can run a
+        "du -k; du -k *" on the database directory to verify that the total
+        disk usage does not far exceed the allowed quota (some small error
+        is expected). Without this change, each database from each tab may
+        exceed the quota by that same maginitude of error.
+
+        * CMakeLists.txt:
+        * GNUmakefile.list.am:
+        * Modules/webdatabase/AbstractDatabaseServer.h:
+        * Modules/webdatabase/Database.cpp:
+        * Modules/webdatabase/Database.h:
+        * Modules/webdatabase/DatabaseBackendBase.cpp:
+        (WebCore::DatabaseBackendBase::maximumSize):
+        * Modules/webdatabase/DatabaseManager.cpp:
+        * Modules/webdatabase/DatabaseManager.h:
+        * Modules/webdatabase/DatabaseServer.cpp:
+        * Modules/webdatabase/DatabaseServer.h:
+        * Modules/webdatabase/DatabaseTracker.cpp:
+        (WebCore::DatabaseTracker::hasAdequateQuotaForOrigin):
+        (WebCore::DatabaseTracker::canEstablishDatabase):
+        (WebCore::DatabaseTracker::retryCanEstablishDatabase):
+        (WebCore::DatabaseTracker::getMaxSizeForDatabase):
+        (WebCore::DatabaseTracker::fullPathForDatabaseNoLock):
+        (WebCore::DatabaseTracker::fullPathForDatabase):
+        (WebCore::DatabaseTracker::addOpenDatabase):
+        (WebCore::DatabaseTracker::removeOpenDatabase):
+        (WebCore::DatabaseTracker::usageForOrigin):
+        (WebCore::DatabaseTracker::deleteOrigin):
+        (WebCore::DatabaseTracker::deleteDatabase):
+        * Modules/webdatabase/DatabaseTracker.h:
+        * Modules/webdatabase/OriginQuotaManager.cpp: Removed.
+        * Modules/webdatabase/OriginQuotaManager.h: Removed.
+        * Modules/webdatabase/OriginUsageRecord.cpp: Removed.
+        * Modules/webdatabase/OriginUsageRecord.h: Removed.
+        * Modules/webdatabase/SQLTransactionBackend.cpp:
+        (WebCore::SQLTransactionBackend::runCurrentStatementAndGetNextState):
+        * Modules/webdatabase/SQLTransactionBackendSync.cpp:
+        (WebCore::SQLTransactionBackendSync::executeSQL):
+        * Modules/webdatabase/SQLTransactionClient.cpp:
+        * Modules/webdatabase/SQLTransactionClient.h:
+        * Modules/webdatabase/chromium/SQLTransactionClientChromium.cpp:
+        * Target.pri:
+        * WebCore.gyp/WebCore.gyp:
+        * WebCore.gypi:
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.vcxproj/WebCore.vcxproj:
+        * WebCore.vcxproj/WebCore.vcxproj.filters:
+        * WebCore.xcodeproj/project.pbxproj:
+
 2013-02-25  Bruno de Oliveira Abinader  <bruno.abinader@basyskom.com>
 
         [texmap] Rename TextureMapperGL::ClipStack::init to reset
index 825225b..610ecea 100644 (file)
@@ -2141,10 +2141,6 @@ webcore_modules_sources += \
        Source/WebCore/Modules/webdatabase/DatabaseThread.h \
        Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp \
        Source/WebCore/Modules/webdatabase/DatabaseTracker.h \
-       Source/WebCore/Modules/webdatabase/OriginQuotaManager.cpp \
-       Source/WebCore/Modules/webdatabase/OriginQuotaManager.h \
-       Source/WebCore/Modules/webdatabase/OriginUsageRecord.cpp \
-       Source/WebCore/Modules/webdatabase/OriginUsageRecord.h \
        Source/WebCore/Modules/webdatabase/SQLCallbackWrapper.h \
        Source/WebCore/Modules/webdatabase/SQLError.h \
        Source/WebCore/Modules/webdatabase/SQLException.cpp \
index febee0f..94783ef 100644 (file)
@@ -82,8 +82,6 @@ public:
 
     virtual void interruptAllDatabasesForContext(const DatabaseBackendContext*) = 0;
 
-    virtual unsigned long long getMaxSizeForDatabase(const DatabaseBackendBase*) = 0;
-
 protected:
     AbstractDatabaseServer() { }
     virtual ~AbstractDatabaseServer() { }
index c6dc963..7cabcfd 100644 (file)
@@ -169,11 +169,6 @@ void Database::closeImmediately()
     }
 }
 
-unsigned long long Database::maximumSize() const
-{
-    return DatabaseManager::manager().getMaxSizeForDatabase(this);
-}
-
 void Database::changeVersion(const String& oldVersion, const String& newVersion,
                              PassRefPtr<SQLTransactionCallback> callback, PassRefPtr<SQLTransactionErrorCallback> errorCallback,
                              PassRefPtr<VoidCallback> successCallback)
index d1fff08..0ce4233 100644 (file)
@@ -73,9 +73,6 @@ public:
 
     virtual void closeImmediately();
 
-    unsigned long long databaseSize() const;
-    unsigned long long maximumSize() const;
-
     void scheduleTransactionCallback(SQLTransaction*);
 
 private:
index 19b8662..e8013f2 100644 (file)
@@ -593,7 +593,7 @@ void DatabaseBackendBase::resetAuthorizer()
 
 unsigned long long DatabaseBackendBase::maximumSize() const
 {
-    return DatabaseManager::manager().getMaxSizeForDatabase(this);
+    return DatabaseTracker::tracker().getMaxSizeForDatabase(this);
 }
 
 void DatabaseBackendBase::incrementalVacuumIfNeeded()
index 4403a90..34eda2a 100644 (file)
@@ -428,11 +428,6 @@ void DatabaseManager::interruptAllDatabasesForContext(ScriptExecutionContext* co
         m_server->interruptAllDatabasesForContext(databaseContext->backend().get());
 }
 
-unsigned long long DatabaseManager::getMaxSizeForDatabase(const DatabaseBackendBase* database)
-{
-    return m_server->getMaxSizeForDatabase(database);
-}
-
 void DatabaseManager::logErrorMessage(ScriptExecutionContext* context, const String& message)
 {
     context->addConsoleMessage(OtherMessageSource, ErrorMessageLevel, message);
index 35f83b1..2de65ca 100644 (file)
@@ -110,8 +110,6 @@ public:
 
     void interruptAllDatabasesForContext(ScriptExecutionContext*);
 
-    unsigned long long getMaxSizeForDatabase(const DatabaseBackendBase*);
-
 private:
     DatabaseManager();
     ~DatabaseManager() { }
index 371321e..9f6375d 100644 (file)
@@ -181,11 +181,6 @@ PassRefPtr<DatabaseBackendBase> DatabaseServer::createDatabase(RefPtr<DatabaseBa
     return database.release();
 }
 
-unsigned long long DatabaseServer::getMaxSizeForDatabase(const DatabaseBackendBase* database)
-{
-    return DatabaseTracker::tracker().getMaxSizeForDatabase(database);
-}
-
 } // namespace WebCore
 
 #endif // ENABLE(SQL_DATABASE)
index a2b6cd8..c3c6bb6 100644 (file)
@@ -70,8 +70,6 @@ public:
 
     virtual void interruptAllDatabasesForContext(const DatabaseBackendContext*);
 
-    virtual unsigned long long getMaxSizeForDatabase(const DatabaseBackendBase*);
-
 protected:
     virtual PassRefPtr<DatabaseBackendBase> createDatabase(RefPtr<DatabaseBackendContext>&, DatabaseType,
         const String& name, const String& expectedVersion, const String& displayName, unsigned long estimatedSize,
index 1ec162b..30e5fe1 100644 (file)
@@ -38,8 +38,8 @@
 #include "DatabaseManager.h"
 #include "DatabaseManagerClient.h"
 #include "DatabaseThread.h"
+#include "FileSystem.h"
 #include "Logging.h"
-#include "OriginQuotaManager.h"
 #include "Page.h"
 #include "SecurityOrigin.h"
 #include "SecurityOriginHash.h"
 
 using namespace std;
 
-static WebCore::OriginQuotaManager& originQuotaManager()
-{
-    DEFINE_STATIC_LOCAL(WebCore::OriginQuotaManager, quotaManager, ());
-    return quotaManager;
-}
-
 namespace WebCore {
 
 static DatabaseTracker* staticTracker = 0;
@@ -144,12 +138,7 @@ void DatabaseTracker::openTrackerDatabase(TrackerCreationAction createAction)
 
 bool DatabaseTracker::hasAdequateQuotaForOrigin(SecurityOrigin* origin, unsigned long estimatedSize, DatabaseError& err)
 {
-    // Since we're imminently opening a database within this context's origin,
-    // make sure this origin is being tracked by the OriginQuotaManager
-    // by fetching its current usage now. Calling usageForOrigin() has the side
-    // effect of initiating tracking by the OriginQuotaManager if the origin is
-    // not already tracked.
-    unsigned long long usage = usageForOriginNoLock(origin);
+    unsigned long long usage = usageForOrigin(origin);
 
     // If the database will fit, allow its creation.
     unsigned long long requirement = usage + max(1UL, estimatedSize);
@@ -171,7 +160,6 @@ bool DatabaseTracker::canEstablishDatabase(DatabaseBackendContext* context, cons
     error = DatabaseError::None;
 
     MutexLocker lockDatabase(m_databaseGuard);
-    Locker<OriginQuotaManager> quotaManagerLocker(originQuotaManager());
     SecurityOrigin* origin = context->securityOrigin();
 
     if (isDeletingDatabaseOrOriginFor(origin, name)) {
@@ -229,7 +217,6 @@ bool DatabaseTracker::retryCanEstablishDatabase(DatabaseBackendContext* context,
     error = DatabaseError::None;
 
     MutexLocker lockDatabase(m_databaseGuard);
-    Locker<OriginQuotaManager> quotaManagerLocker(originQuotaManager());
     SecurityOrigin* origin = context->securityOrigin();
 
     // We have already eliminated other types of errors in canEstablishDatabase().
@@ -288,12 +275,12 @@ unsigned long long DatabaseTracker::getMaxSizeForDatabase(const DatabaseBackendB
     // The maximum size for a database is the full quota for its origin, minus the current usage within the origin,
     // plus the current usage of the given database
     MutexLocker lockDatabase(m_databaseGuard);
-    Locker<OriginQuotaManager> quotaManagerLocker(originQuotaManager());
     SecurityOrigin* origin = database->securityOrigin();
 
     unsigned long long quota = quotaForOriginNoLock(origin);
-    unsigned long long diskUsage = originQuotaManager().diskUsage(origin);
+    unsigned long long diskUsage = usageForOrigin(origin);
     unsigned long long databaseFileSize = SQLiteFileSystem::getDatabaseFileSize(database->fileName());
+    ASSERT(databaseFileSize <= diskUsage);
 
     // A previous error may have allowed the origin to exceed its quota, or may
     // have allowed this database to exceed our cached estimate of the origin
@@ -305,12 +292,6 @@ unsigned long long DatabaseTracker::getMaxSizeForDatabase(const DatabaseBackendB
     return maxSize;
 }
 
-void DatabaseTracker::databaseChanged(DatabaseBackendBase* database)
-{
-    Locker<OriginQuotaManager> quotaManagerLocker(originQuotaManager());
-    originQuotaManager().markDatabase(database);
-}
-
 void DatabaseTracker::interruptAllDatabasesForContext(const DatabaseBackendContext* context)
 {
     Vector<RefPtr<DatabaseBackendBase> > openDatabases;
@@ -348,7 +329,6 @@ String DatabaseTracker::originPath(SecurityOrigin* origin) const
 String DatabaseTracker::fullPathForDatabaseNoLock(SecurityOrigin* origin, const String& name, bool createIfNotExists)
 {
     ASSERT(!m_databaseGuard.tryLock());
-    ASSERT(!originQuotaManager().tryLock());
 
     String originIdentifier = origin->databaseIdentifier();
     String originPath = this->originPath(origin);
@@ -388,8 +368,6 @@ String DatabaseTracker::fullPathForDatabaseNoLock(SecurityOrigin* origin, const
     // If this origin's quota is being tracked (open handle to a database in this origin), add this new database
     // to the quota manager now
     String fullFilePath = SQLiteFileSystem::appendDatabaseFileNameToPath(originPath, fileName);
-    if (originQuotaManager().tracksOrigin(origin))
-        originQuotaManager().addDatabase(origin, name, fullFilePath);
 
     return fullFilePath;
 }
@@ -397,8 +375,6 @@ String DatabaseTracker::fullPathForDatabaseNoLock(SecurityOrigin* origin, const
 String DatabaseTracker::fullPathForDatabase(SecurityOrigin* origin, const String& name, bool createIfNotExists)
 {
     MutexLocker lockDatabase(m_databaseGuard);
-    Locker<OriginQuotaManager> quotaManagerLocker(originQuotaManager());
-
     return fullPathForDatabaseNoLock(origin, name, createIfNotExists).isolatedCopy();
 }
 
@@ -607,12 +583,6 @@ void DatabaseTracker::addOpenDatabase(DatabaseBackendBase* database)
         databaseSet->add(database);
 
         LOG(StorageAPI, "Added open Database %s (%p)\n", database->stringIdentifier().ascii().data(), database);
-
-        Locker<OriginQuotaManager> quotaManagerLocker(originQuotaManager());
-        if (!originQuotaManager().tracksOrigin(database->securityOrigin())) {
-            originQuotaManager().trackOrigin(database->securityOrigin());
-            originQuotaManager().addDatabase(database->securityOrigin(), database->stringIdentifier(), database->fileName());
-        }
     }
 }
 
@@ -657,9 +627,6 @@ void DatabaseTracker::removeOpenDatabase(DatabaseBackendBase* database)
 
         m_openDatabaseMap->remove(database->securityOrigin());
         delete nameMap;
-
-        Locker<OriginQuotaManager> quotaManagerLocker(originQuotaManager());
-        originQuotaManager().removeOrigin(database->securityOrigin());
     }
 }
 
@@ -681,37 +648,19 @@ void DatabaseTracker::getOpenDatabases(SecurityOrigin* origin, const String& nam
         databases->add(*it);
 }
 
-unsigned long long DatabaseTracker::usageForOriginNoLock(SecurityOrigin* origin)
-{
-    ASSERT(!originQuotaManager().tryLock());
-
-    // Use the OriginQuotaManager mechanism to calculate the usage
-    if (originQuotaManager().tracksOrigin(origin))
-        return originQuotaManager().diskUsage(origin);
-
-    // If the OriginQuotaManager doesn't track this origin already, prime it to do so
-    originQuotaManager().trackOrigin(origin);
-
-    Vector<String> names;
-    databaseNamesForOriginNoLock(origin, names);
-
-    for (unsigned i = 0; i < names.size(); ++i)
-        originQuotaManager().addDatabase(origin, names[i], fullPathForDatabaseNoLock(origin, names[i], false));
-
-    if (!originQuotaManager().tracksOrigin(origin))
-        return 0;
-
-    // OriginQuotaManager::diskUsage() may result in a disk scan to compute the
-    // sum of disk usage of all databases from this specified origin if its
-    // cached usage value is determined to be outdated.
-    return originQuotaManager().diskUsage(origin);
-}
-
 unsigned long long DatabaseTracker::usageForOrigin(SecurityOrigin* origin)
 {
-    MutexLocker lockDatabase(m_databaseGuard);
-    Locker<OriginQuotaManager> quotaManagerLocker(originQuotaManager());
-    return usageForOriginNoLock(origin);
+    String originPath = this->originPath(origin);
+    unsigned long long diskUsage = 0;
+    Vector<String> fileNames = listDirectory(originPath, String("*.db"));
+    Vector<String>::iterator fileName = fileNames.begin();
+    Vector<String>::iterator lastFileName = fileNames.end();
+    for (; fileName != lastFileName; ++fileName) {
+        long long size;
+        getFileSize(*fileName, size);
+        diskUsage += size;
+    }
+    return diskUsage;
 }
 
 unsigned long long DatabaseTracker::quotaForOriginNoLock(SecurityOrigin* origin)
@@ -883,11 +832,6 @@ bool DatabaseTracker::deleteOrigin(SecurityOrigin* origin)
         RefPtr<SecurityOrigin> originPossiblyLastReference = origin;
         m_quotaMap->remove(origin);
 
-        {
-            Locker<OriginQuotaManager> quotaManagerLocker(originQuotaManager());
-            originQuotaManager().removeOrigin(origin);
-        }
-
         // If we removed the last origin, do some additional deletion.
         if (m_quotaMap->isEmpty()) {
             if (m_database.isOpen())
@@ -1060,11 +1004,6 @@ bool DatabaseTracker::deleteDatabase(SecurityOrigin* origin, const String& name)
         return false;
     }
 
-    {
-        Locker<OriginQuotaManager> quotaManagerLocker(originQuotaManager());
-        originQuotaManager().removeDatabase(origin, name);
-    }
-
     if (m_client) {
         m_client->dispatchDidModifyOrigin(origin);
         m_client->dispatchDidModifyDatabase(origin, name);
index 32abbd1..1ca6e89 100644 (file)
@@ -80,7 +80,6 @@ public:
     void getOpenDatabases(SecurityOrigin*, const String& name, HashSet<RefPtr<DatabaseBackendBase> >* databases);
 
     unsigned long long getMaxSizeForDatabase(const DatabaseBackendBase*);
-    void databaseChanged(DatabaseBackendBase*);
 
     void interruptAllDatabasesForContext(const DatabaseBackendContext*);
 
@@ -121,7 +120,6 @@ private:
     bool hasEntryForOriginNoLock(SecurityOrigin* origin);
     String fullPathForDatabaseNoLock(SecurityOrigin*, const String& name, bool createIfDoesNotExist);
     bool databaseNamesForOriginNoLock(SecurityOrigin* origin, Vector<String>& resultVector);
-    unsigned long long usageForOriginNoLock(SecurityOrigin* origin);
     unsigned long long quotaForOriginNoLock(SecurityOrigin* origin);
 
     String trackerDatabasePath() const;
diff --git a/Source/WebCore/Modules/webdatabase/OriginQuotaManager.cpp b/Source/WebCore/Modules/webdatabase/OriginQuotaManager.cpp
deleted file mode 100644 (file)
index 2c23b5c..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "config.h"
-#include "OriginQuotaManager.h"
-
-#if ENABLE(SQL_DATABASE)
-
-#include "DatabaseBackendBase.h"
-#include "OriginUsageRecord.h"
-
-namespace WebCore {
-
-OriginQuotaManager::OriginQuotaManager()
-#ifndef NDEBUG
-    : m_usageRecordGuardLocked(false)
-#endif
-{
-}
-
-bool OriginQuotaManager::tryLock()
-{
-    bool locked = m_usageRecordGuard.tryLock();
-#ifndef NDEBUG
-    if (locked)
-        m_usageRecordGuardLocked = true;
-    else
-        ASSERT(m_usageRecordGuardLocked);
-#endif
-    return locked;
-}
-
-void OriginQuotaManager::lock()
-{
-    m_usageRecordGuard.lock();
-#ifndef NDEBUG
-    m_usageRecordGuardLocked = true;
-#endif
-}
-
-void OriginQuotaManager::unlock()
-{
-#ifndef NDEBUG
-    m_usageRecordGuardLocked = false;
-#endif
-    m_usageRecordGuard.unlock();
-}
-
-void OriginQuotaManager::trackOrigin(PassRefPtr<SecurityOrigin> origin)
-{
-    ASSERT(m_usageRecordGuardLocked);
-    ASSERT(!m_usageMap.contains(origin.get()));
-
-    m_usageMap.set(origin->isolatedCopy(), new OriginUsageRecord);
-}
-
-bool OriginQuotaManager::tracksOrigin(SecurityOrigin* origin) const
-{
-    ASSERT(m_usageRecordGuardLocked);
-    return m_usageMap.contains(origin);
-}
-
-void OriginQuotaManager::addDatabase(SecurityOrigin* origin, const String& databaseIdentifier, const String& fullPath)
-{
-    ASSERT(m_usageRecordGuardLocked);
-
-    OriginUsageRecord* usageRecord = m_usageMap.get(origin);
-    ASSERT(usageRecord);
-
-    usageRecord->addDatabase(databaseIdentifier.isolatedCopy(), fullPath.isolatedCopy());
-}
-
-void OriginQuotaManager::removeDatabase(SecurityOrigin* origin, const String& databaseIdentifier)
-{
-    ASSERT(m_usageRecordGuardLocked);
-
-    if (OriginUsageRecord* usageRecord = m_usageMap.get(origin))
-        usageRecord->removeDatabase(databaseIdentifier);
-}
-
-void OriginQuotaManager::removeOrigin(SecurityOrigin* origin)
-{
-    ASSERT(m_usageRecordGuardLocked);
-
-    if (OriginUsageRecord* usageRecord = m_usageMap.get(origin)) {
-        m_usageMap.remove(origin);
-        delete usageRecord;
-    }
-}
-
-void OriginQuotaManager::markDatabase(DatabaseBackendBase* database)
-{
-    ASSERT(database);
-    ASSERT(m_usageRecordGuardLocked);
-    OriginUsageRecord* usageRecord = m_usageMap.get(database->securityOrigin());
-    ASSERT(usageRecord);
-
-    usageRecord->markDatabase(database->stringIdentifier());
-}
-
-unsigned long long OriginQuotaManager::diskUsage(SecurityOrigin* origin) const
-{
-    ASSERT(m_usageRecordGuardLocked);
-
-    OriginUsageRecord* usageRecord = m_usageMap.get(origin);
-    ASSERT(usageRecord);
-
-    return usageRecord->diskUsage();
-}
-
-}
-
-#endif // ENABLE(SQL_DATABASE)
diff --git a/Source/WebCore/Modules/webdatabase/OriginQuotaManager.h b/Source/WebCore/Modules/webdatabase/OriginQuotaManager.h
deleted file mode 100644 (file)
index d743daf..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef OriginQuotaManager_h
-#define OriginQuotaManager_h
-
-#if ENABLE(SQL_DATABASE)
-
-#include "SecurityOriginHash.h"
-#include <wtf/HashMap.h>
-#include <wtf/Threading.h>
-#include <wtf/text/StringHash.h>
-
-namespace WebCore {
-
-class DatabaseBackendBase;
-class OriginUsageRecord;
-class SecurityOrigin;
-
-class OriginQuotaManager {
-    WTF_MAKE_NONCOPYABLE(OriginQuotaManager); WTF_MAKE_FAST_ALLOCATED;
-public:
-    OriginQuotaManager();
-
-    bool tryLock();
-    void lock();
-    void unlock();
-
-    void trackOrigin(PassRefPtr<SecurityOrigin>);
-    bool tracksOrigin(SecurityOrigin*) const;
-    void addDatabase(SecurityOrigin*, const String& databaseIdentifier, const String& fullPath);
-    void removeDatabase(SecurityOrigin*, const String& databaseIdentifier);
-    void removeOrigin(SecurityOrigin*);
-
-    void markDatabase(DatabaseBackendBase*); // Mark dirtiness of a specific database.
-    unsigned long long diskUsage(SecurityOrigin*) const;
-
-private:
-    mutable Mutex m_usageRecordGuard;
-#ifndef NDEBUG
-    bool m_usageRecordGuardLocked;
-#endif
-
-    typedef HashMap<RefPtr<SecurityOrigin>, OriginUsageRecord*> OriginUsageMap;
-    OriginUsageMap m_usageMap;
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(SQL_DATABASE)
-
-#endif // OriginQuotaManager_h
diff --git a/Source/WebCore/Modules/webdatabase/OriginUsageRecord.cpp b/Source/WebCore/Modules/webdatabase/OriginUsageRecord.cpp
deleted file mode 100644 (file)
index 2bf8af4..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "config.h"
-#include "OriginUsageRecord.h"
-
-#if ENABLE(SQL_DATABASE)
-
-#include "SQLiteFileSystem.h"
-
-namespace WebCore {
-
-OriginUsageRecord::OriginUsageRecord()
-    : m_cachedDiskUsageIsValid(false)
-{
-}
-
-void OriginUsageRecord::addDatabase(const String& identifier, const String& fullPath)
-{
-    ASSERT(!m_databaseMap.contains(identifier));
-    ASSERT_ARG(identifier, identifier.impl()->hasOneRef() || identifier.isEmpty());
-    ASSERT_ARG(fullPath, fullPath.impl()->hasOneRef() || fullPath.isEmpty());
-
-    m_databaseMap.set(identifier, DatabaseEntry(fullPath));
-    m_unknownSet.add(identifier);
-
-    m_cachedDiskUsageIsValid = false;
-}
-
-void OriginUsageRecord::removeDatabase(const String& identifier)
-{
-    ASSERT(m_databaseMap.contains(identifier));
-
-    m_databaseMap.remove(identifier);
-    m_unknownSet.remove(identifier);
-    m_cachedDiskUsageIsValid = false;
-}
-
-void OriginUsageRecord::markDatabase(const String& identifier)
-{
-    ASSERT(m_databaseMap.contains(identifier));
-    ASSERT_ARG(identifier, identifier.impl()->hasOneRef() || identifier.isEmpty());
-
-    m_unknownSet.add(identifier);
-    m_cachedDiskUsageIsValid = false;
-}
-
-unsigned long long OriginUsageRecord::diskUsage()
-{
-    // Use the last cached usage value if we have it.
-    if (m_cachedDiskUsageIsValid)
-        return m_cachedDiskUsage;
-
-    // stat() for the sizes known to be dirty.
-    HashSet<String>::iterator iUnknown = m_unknownSet.begin();
-    HashSet<String>::iterator endUnknown = m_unknownSet.end();
-    for (; iUnknown != endUnknown; ++iUnknown) {
-        const String& path = m_databaseMap.get(*iUnknown).filename;
-        ASSERT(!path.isEmpty());
-
-        // When we can't determine the file size, we'll just have to assume the file is missing/inaccessible.
-        long long size = SQLiteFileSystem::getDatabaseFileSize(path);
-        m_databaseMap.set(*iUnknown, DatabaseEntry(path, size));
-    }
-    m_unknownSet.clear();
-
-    // Recalculate the cached usage value.
-    m_cachedDiskUsage = 0;
-    HashMap<String, DatabaseEntry>::iterator iDatabase = m_databaseMap.begin();
-    HashMap<String, DatabaseEntry>::iterator endDatabase = m_databaseMap.end();
-    for (; iDatabase != endDatabase; ++iDatabase)
-        m_cachedDiskUsage += iDatabase->value.size;
-
-    m_cachedDiskUsageIsValid = true;
-    return m_cachedDiskUsage;
-}
-
-}
-
-#endif
diff --git a/Source/WebCore/Modules/webdatabase/OriginUsageRecord.h b/Source/WebCore/Modules/webdatabase/OriginUsageRecord.h
deleted file mode 100644 (file)
index 2f83fc1..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef OriginUsageRecord_h
-#define OriginUsageRecord_h
-
-#if ENABLE(SQL_DATABASE)
-
-#include <wtf/HashMap.h>
-#include <wtf/HashSet.h> 
-#include <wtf/text/StringHash.h>
-#include <wtf/text/WTFString.h>
-
-namespace WebCore {
-
-// Objects of this class can be used from multiple threads with external synchronization.
-// String arguments are also supposed to be deeply copied by the caller when necessary.
-class OriginUsageRecord {
-    WTF_MAKE_NONCOPYABLE(OriginUsageRecord); WTF_MAKE_FAST_ALLOCATED;
-public:
-    OriginUsageRecord();
-
-    void addDatabase(const String& identifier, const String& fullPath);
-    void removeDatabase(const String& identifier);
-    void markDatabase(const String& identifier); // Size may have changed, and will need to be recalculated.
-    unsigned long long diskUsage();
-
-private:
-    struct DatabaseEntry {
-        DatabaseEntry() { }
-        DatabaseEntry(const String& filename) : filename(filename) { }
-        DatabaseEntry(const String& filename, unsigned long long size) : filename(filename), size(size) { }
-        String filename;
-        unsigned long long size; // This member remains uninitialized until disk usage is calculated.
-    };
-    HashMap<String, DatabaseEntry> m_databaseMap;
-    HashSet<String> m_unknownSet;
-
-    unsigned long long m_cachedDiskUsage;
-    bool m_cachedDiskUsageIsValid;
-};
-
-} // namespace WebCore
-
-#endif
-
-#endif
index c400a1d..9037ed2 100644 (file)
@@ -677,8 +677,6 @@ SQLTransactionState SQLTransactionBackend::runCurrentStatementAndGetNextState()
         if (m_database->lastActionChangedDatabase()) {
             // Flag this transaction as having changed the database for later delegate notification
             m_modifiedDatabase = true;
-            // Also dirty the size of this database file for calculating quota usage
-            m_database->transactionClient()->didExecuteStatement(Database::from(database()));
         }
 
         if (m_currentStatementBackend->hasStatementCallback()) {
index cc6df84..b801cf4 100644 (file)
@@ -121,10 +121,8 @@ PassRefPtr<SQLResultSet> SQLTransactionBackendSync::executeSQL(const String& sql
         }
     }
 
-    if (m_database->lastActionChangedDatabase()) {
+    if (m_database->lastActionChangedDatabase())
         m_modifiedDatabase = true;
-        m_transactionClient->didExecuteStatement(database());
-    }
 
     return resultSet.release();
 }
index 2fbdd95..938153e 100644 (file)
@@ -48,11 +48,6 @@ void SQLTransactionClient::didCommitWriteTransaction(DatabaseBackendBase* databa
         database->securityOrigin(), database->stringIdentifier());
 }
 
-void SQLTransactionClient::didExecuteStatement(DatabaseBackendBase* database)
-{
-    DatabaseTracker::tracker().databaseChanged(database);
-}
-
 bool SQLTransactionClient::didExceedQuota(DatabaseBackendBase* database)
 {
     ASSERT(database->databaseContext()->scriptExecutionContext()->isContextThread());
index 4e3d50d..3ee950f 100644 (file)
@@ -47,7 +47,6 @@ class SQLTransactionClient {
 public:
     SQLTransactionClient() { }
     void didCommitWriteTransaction(DatabaseBackendBase*);
-    void didExecuteStatement(DatabaseBackendBase*);
     bool didExceedQuota(DatabaseBackendBase*);
 };
 
index b12331d..d216b16 100644 (file)
@@ -72,12 +72,6 @@ void SQLTransactionClient::didCommitWriteTransaction(DatabaseBackendBase* databa
     WebCore::DatabaseObserver::databaseModified(database);
 }
 
-void SQLTransactionClient::didExecuteStatement(DatabaseBackendBase* database)
-{
-    // This method is called after executing every statement that changes the DB.
-    // Chromium doesn't need to do anything at that point.
-}
-
 bool SQLTransactionClient::didExceedQuota(DatabaseBackendBase* database)
 {
     // Chromium does not allow users to manually change the quota for an origin (for now, at least).
index 32049b6..31523b9 100644 (file)
@@ -1478,8 +1478,6 @@ HEADERS += \
     Modules/webdatabase/DatabaseTask.h \
     Modules/webdatabase/DatabaseThread.h \
     Modules/webdatabase/DatabaseTracker.h \
-    Modules/webdatabase/OriginQuotaManager.h \
-    Modules/webdatabase/OriginUsageRecord.h \
     Modules/webdatabase/SQLCallbackWrapper.h \
     Modules/webdatabase/SQLResultSet.h \
     Modules/webdatabase/SQLResultSetRowList.h \
@@ -3070,8 +3068,6 @@ enable?(SQL_DATABASE) {
         Modules/webdatabase/DatabaseTask.cpp \
         Modules/webdatabase/DatabaseThread.cpp \
         Modules/webdatabase/DatabaseTracker.cpp \
-        Modules/webdatabase/OriginQuotaManager.cpp \
-        Modules/webdatabase/OriginUsageRecord.cpp \
         Modules/webdatabase/SQLException.cpp \
         Modules/webdatabase/SQLResultSet.cpp \
         Modules/webdatabase/SQLResultSetRowList.cpp \
index 91dc9cd..7cd5915 100644 (file)
         ['exclude', 'Modules/indexeddb/IDBFactoryBackendInterface\\.cpp$'],
         ['exclude', 'Modules/webdatabase/DatabaseManagerClient\\.h$'],
         ['exclude', 'Modules/webdatabase/DatabaseTracker\\.cpp$'],
-        ['exclude', 'Modules/webdatabase/OriginQuotaManager\\.(cpp|h)$'],
-        ['exclude', 'Modules/webdatabase/OriginUsageRecord\\.(cpp|h)$'],
         ['exclude', 'Modules/webdatabase/SQLTransactionClient\\.cpp$'],
         ['exclude', 'inspector/InspectorFrontendClientLocal\\.cpp$'],
         ['exclude', 'inspector/JavaScript[^/]*\\.cpp$'],
index 6416f83..ea04c87 100644 (file)
             'Modules/webdatabase/DatabaseTracker.cpp',
             'Modules/webdatabase/DOMWindowWebDatabase.cpp',
             'Modules/webdatabase/DOMWindowWebDatabase.h',
-            'Modules/webdatabase/OriginQuotaManager.cpp',
-            'Modules/webdatabase/OriginQuotaManager.h',
-            'Modules/webdatabase/OriginUsageRecord.cpp',
-            'Modules/webdatabase/OriginUsageRecord.h',
             'Modules/webdatabase/SQLCallbackWrapper.h',
             'Modules/webdatabase/SQLException.cpp',
             'Modules/webdatabase/SQLException.h',
index bd95d38..d4899b1 100755 (executable)
                                        >
                                </File>
                                <File
-                                       RelativePath="..\Modules\webdatabase\OriginQuotaManager.cpp"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\Modules\webdatabase\OriginQuotaManager.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\Modules\webdatabase\OriginUsageRecord.cpp"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\Modules\webdatabase\OriginUsageRecord.h"
-                                       >
-                               </File>
-                               <File
                                        RelativePath="..\Modules\webdatabase\SQLCallbackWrapper.h"
                                        >
                                </File>
index e6b877a..6f6cc29 100644 (file)
     <ClCompile Include="..\Modules\webdatabase\DatabaseThread.cpp" />
     <ClCompile Include="..\Modules\webdatabase\DatabaseTracker.cpp" />
     <ClCompile Include="..\Modules\webdatabase\DOMWindowWebDatabase.cpp" />
-    <ClCompile Include="..\Modules\webdatabase\OriginQuotaManager.cpp" />
-    <ClCompile Include="..\Modules\webdatabase\OriginUsageRecord.cpp" />
     <ClCompile Include="..\Modules\webdatabase\SQLException.cpp" />
     <ClCompile Include="..\Modules\webdatabase\SQLResultSet.cpp" />
     <ClCompile Include="..\Modules\webdatabase\SQLResultSetRowList.cpp" />
     <ClInclude Include="..\Modules\webdatabase\DatabaseThread.h" />
     <ClInclude Include="..\Modules\webdatabase\DatabaseTracker.h" />
     <ClInclude Include="..\Modules\webdatabase\DOMWindowWebDatabase.h" />
-    <ClInclude Include="..\Modules\webdatabase\OriginQuotaManager.h" />
-    <ClInclude Include="..\Modules\webdatabase\OriginUsageRecord.h" />
     <ClInclude Include="..\Modules\webdatabase\SQLCallbackWrapper.h" />
     <ClInclude Include="..\Modules\webdatabase\SQLError.h" />
     <ClInclude Include="..\Modules\webdatabase\SQLException.h" />
index c6438a2..29e5e16 100644 (file)
     <ClCompile Include="..\Modules\webdatabase\DOMWindowWebDatabase.cpp">
       <Filter>Modules\webdatabase</Filter>
     </ClCompile>
-    <ClCompile Include="..\Modules\webdatabase\OriginQuotaManager.cpp">
-      <Filter>Modules\webdatabase</Filter>
-    </ClCompile>
-    <ClCompile Include="..\Modules\webdatabase\OriginUsageRecord.cpp">
-      <Filter>Modules\webdatabase</Filter>
-    </ClCompile>
     <ClCompile Include="..\Modules\webdatabase\SQLException.cpp">
       <Filter>Modules\webdatabase</Filter>
     </ClCompile>
     <ClInclude Include="..\Modules\webdatabase\DOMWindowWebDatabase.h">
       <Filter>Modules\webdatabase</Filter>
     </ClInclude>
-    <ClInclude Include="..\Modules\webdatabase\OriginQuotaManager.h">
-      <Filter>Modules\webdatabase</Filter>
-    </ClInclude>
-    <ClInclude Include="..\Modules\webdatabase\OriginUsageRecord.h">
-      <Filter>Modules\webdatabase</Filter>
-    </ClInclude>
     <ClInclude Include="..\Modules\webdatabase\SQLCallbackWrapper.h">
       <Filter>Modules\webdatabase</Filter>
     </ClInclude>
index 2da155d..94c90b7 100644 (file)
                97BC6A311505F081001B74AC /* DatabaseTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69EF1505F081001B74AC /* DatabaseTracker.cpp */; };
                97BC6A321505F081001B74AC /* DatabaseTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69F01505F081001B74AC /* DatabaseTracker.h */; settings = {ATTRIBUTES = (Private, ); }; };
                97BC6A331505F081001B74AC /* DatabaseManagerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69F11505F081001B74AC /* DatabaseManagerClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               97BC6A371505F081001B74AC /* OriginQuotaManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69F51505F081001B74AC /* OriginQuotaManager.cpp */; };
-               97BC6A381505F081001B74AC /* OriginQuotaManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69F61505F081001B74AC /* OriginQuotaManager.h */; };
-               97BC6A391505F081001B74AC /* OriginUsageRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69F71505F081001B74AC /* OriginUsageRecord.cpp */; };
-               97BC6A3A1505F081001B74AC /* OriginUsageRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69F81505F081001B74AC /* OriginUsageRecord.h */; };
                97BC6A3B1505F081001B74AC /* SQLCallbackWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69F91505F081001B74AC /* SQLCallbackWrapper.h */; };
                97BC6A3C1505F081001B74AC /* SQLError.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69FA1505F081001B74AC /* SQLError.h */; };
                97BC6A3E1505F081001B74AC /* SQLException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69FC1505F081001B74AC /* SQLException.cpp */; };
                97BC69EF1505F081001B74AC /* DatabaseTracker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseTracker.cpp; path = Modules/webdatabase/DatabaseTracker.cpp; sourceTree = "<group>"; };
                97BC69F01505F081001B74AC /* DatabaseTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseTracker.h; path = Modules/webdatabase/DatabaseTracker.h; sourceTree = "<group>"; };
                97BC69F11505F081001B74AC /* DatabaseManagerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseManagerClient.h; path = Modules/webdatabase/DatabaseManagerClient.h; sourceTree = "<group>"; };
-               97BC69F51505F081001B74AC /* OriginQuotaManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OriginQuotaManager.cpp; path = Modules/webdatabase/OriginQuotaManager.cpp; sourceTree = "<group>"; };
-               97BC69F61505F081001B74AC /* OriginQuotaManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OriginQuotaManager.h; path = Modules/webdatabase/OriginQuotaManager.h; sourceTree = "<group>"; };
-               97BC69F71505F081001B74AC /* OriginUsageRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OriginUsageRecord.cpp; path = Modules/webdatabase/OriginUsageRecord.cpp; sourceTree = "<group>"; };
-               97BC69F81505F081001B74AC /* OriginUsageRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OriginUsageRecord.h; path = Modules/webdatabase/OriginUsageRecord.h; sourceTree = "<group>"; };
                97BC69F91505F081001B74AC /* SQLCallbackWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLCallbackWrapper.h; path = Modules/webdatabase/SQLCallbackWrapper.h; sourceTree = "<group>"; };
                97BC69FA1505F081001B74AC /* SQLError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLError.h; path = Modules/webdatabase/SQLError.h; sourceTree = "<group>"; };
                97BC69FB1505F081001B74AC /* SQLError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SQLError.idl; path = Modules/webdatabase/SQLError.idl; sourceTree = "<group>"; };
                                A8CCBB46151F831600AB7CE9 /* DOMWindowWebDatabase.cpp */,
                                A8CCBB47151F831600AB7CE9 /* DOMWindowWebDatabase.h */,
                                A8CCBB4E151F835A00AB7CE9 /* DOMWindowWebDatabase.idl */,
-                               97BC69F51505F081001B74AC /* OriginQuotaManager.cpp */,
-                               97BC69F61505F081001B74AC /* OriginQuotaManager.h */,
-                               97BC69F71505F081001B74AC /* OriginUsageRecord.cpp */,
-                               97BC69F81505F081001B74AC /* OriginUsageRecord.h */,
                                97BC69F91505F081001B74AC /* SQLCallbackWrapper.h */,
                                97BC69FA1505F081001B74AC /* SQLError.h */,
                                97BC69FB1505F081001B74AC /* SQLError.idl */,
                                FDA3E95C134A49EF008D4B5A /* OfflineAudioDestinationNode.h in Headers */,
                                F4EAF4AF10C742B1009100D3 /* OpenTypeSanitizer.h in Headers */,
                                0014628B103CD1DE000B20DB /* OriginAccessEntry.h in Headers */,
-                               97BC6A381505F081001B74AC /* OriginQuotaManager.h in Headers */,
-                               97BC6A3A1505F081001B74AC /* OriginUsageRecord.h in Headers */,
                                FD581FAF1520F91F003A7A75 /* OscillatorNode.h in Headers */,
                                BC5EB5DD0E81B8DD00B25965 /* OutlineValue.h in Headers */,
                                1A0D57370A5C77FE007EDD4C /* OverflowEvent.h in Headers */,
                                FDA3E95B134A49EF008D4B5A /* OfflineAudioDestinationNode.cpp in Sources */,
                                F4EAF4AE10C742B1009100D3 /* OpenTypeSanitizer.cpp in Sources */,
                                0014628A103CD1DE000B20DB /* OriginAccessEntry.cpp in Sources */,
-                               97BC6A371505F081001B74AC /* OriginQuotaManager.cpp in Sources */,
-                               97BC6A391505F081001B74AC /* OriginUsageRecord.cpp in Sources */,
                                FD581FAE1520F91F003A7A75 /* OscillatorNode.cpp in Sources */,
                                1A0D57360A5C77FE007EDD4C /* OverflowEvent.cpp in Sources */,
                                65FEA86909833ADE00BED4AB /* Page.cpp in Sources */,