Changeset 52536 in webkit


Ignore:
Timestamp:
Dec 23, 2009 5:38:53 PM (14 years ago)
Author:
dumi@chromium.org
Message:

A new database should be registered with the Document,
DatabaseTracker and DatabaseThread only after it was successfully
opened and its version was successfully verified.

Reviewed by Eric Seidel.

Fixes a regression introduced by
http://trac.webkit.org/changeset/52530.

LayoutTests/storage/open-database-while-transaction-in-progress.html
should pass again (or rather, it should pass again when run after
open-database-set-empty-version.html).

https://bugs.webkit.org/show_bug.cgi?id=32913

  • storage/Database.cpp:

(WebCore::Database::openDatabase):
(WebCore::Database::Database):
(WebCore::Database::performOpenAndVerify):

Location:
trunk/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r52535 r52536  
     12009-12-23  Dumitru Daniliuc  <dumi@chromium.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        A new database should be registered with the Document,
     6        DatabaseTracker and DatabaseThread only after it was successfully
     7        opened and its version was successfully verified.
     8
     9        Fixes a regression introduced by
     10        http://trac.webkit.org/changeset/52530.
     11
     12        LayoutTests/storage/open-database-while-transaction-in-progress.html
     13        should pass again (or rather, it should pass again when run after
     14        open-database-set-empty-version.html).
     15
     16        https://bugs.webkit.org/show_bug.cgi?id=32913
     17
     18        * storage/Database.cpp:
     19        (WebCore::Database::openDatabase):
     20        (WebCore::Database::Database):
     21        (WebCore::Database::performOpenAndVerify):
     22
    1232009-12-23  David Levin  <levin@chromium.org>
    224
  • trunk/WebCore/storage/Database.cpp

    r52530 r52536  
    133133    if (!database->openAndVerifyVersion(e)) {
    134134       LOG(StorageAPI, "Failed to open and verify version (expected %s) of database %s", expectedVersion.ascii().data(), database->databaseDebugName().ascii().data());
    135        document->removeOpenDatabase(database.get());
    136        DatabaseTracker::tracker().removeOpenDatabase(database.get());
    137135       return 0;
    138136    }
     137
     138    DatabaseTracker::tracker().addOpenDatabase(database.get());
     139    document->addOpenDatabase(database.get());
    139140
    140141    DatabaseTracker::tracker().setDatabaseDetails(document->securityOrigin(), name, displayName, estimatedSize);
     
    189190
    190191    m_filename = DatabaseTracker::tracker().fullPathForDatabase(m_mainThreadSecurityOrigin.get(), m_name);
    191 
    192     DatabaseTracker::tracker().addOpenDatabase(this);
    193     m_document->addOpenDatabase(this);
    194192}
    195193
     
    462460        return false;
    463461    }
    464 
    465     m_opened = true;
    466     if (m_document->databaseThread())
    467         m_document->databaseThread()->recordDatabaseOpen(this);
    468462
    469463    ASSERT(m_databaseAuthorizer);
     
    526520    }
    527521
     522    m_opened = true;
     523    if (m_document->databaseThread())
     524        m_document->databaseThread()->recordDatabaseOpen(this);
     525
    528526    return true;
    529527}
Note: See TracChangeset for help on using the changeset viewer.