Changeset 140741 in webkit


Ignore:
Timestamp:
Jan 24, 2013 3:43:42 PM (11 years ago)
Author:
jsbell@chromium.org
Message:

IndexedDB: Remove IDBUpgradeNeededEvent, merge with IDBVersionChangeEvent
https://bugs.webkit.org/show_bug.cgi?id=107754

Reviewed by Tony Chang.

Source/WebCore:

The IndexedDB spec calls deleteDatabase() to fire a "blocked" event with the
IDBVersionChangeEvent interface which we were doing, but with an older interface - just
a "version" property. We were already firing an event on "versionchange" with the new
"oldVersion" and "newVersion" properties, but with an IDBUpgradeNeededEvent interface that
doesn't exist in the spec. This patch merges the event types to match the spec, including
that the newVersion property is null when deleting.

Test: storage/indexeddb/events.html

storage/indexeddb/deletedatabase-*.html

  • CMakeLists.txt: Remove references to deleted files.
  • GNUmakefile.list.am: Ditto.
  • Modules/indexeddb/IDBDatabase.cpp:

(WebCore::IDBDatabase::onVersionChange): Generate IDBVersionChangeEvent.

  • Modules/indexeddb/IDBOpenDBRequest.cpp:

(WebCore::IDBOpenDBRequest::onBlocked): Ditto.
(WebCore::IDBOpenDBRequest::onUpgradeNeeded): Ditto.

  • Modules/indexeddb/IDBUpgradeNeededEvent.cpp: Removed.
  • Modules/indexeddb/IDBUpgradeNeededEvent.h: Removed.
  • Modules/indexeddb/IDBUpgradeNeededEvent.idl: Removed.
  • Modules/indexeddb/IDBVersionChangeEvent.cpp:

(WebCore::IDBVersionChangeEvent::create): Take IDBAny's as old/new versions
may be integers, strings (for legacy databases), or null (when deleting).
(WebCore::IDBVersionChangeEvent::IDBVersionChangeEvent):

  • Modules/indexeddb/IDBVersionChangeEvent.h:

(IDBVersionChangeEvent): Remove version property.
(WebCore::IDBVersionChangeEvent::oldVersion): Added new property.
(WebCore::IDBVersionChangeEvent::newVersion): Added new property.

  • Modules/indexeddb/IDBVersionChangeEvent.idl: Updated properties.
  • WebCore.gypi: Remove references to deleted files.
  • dom/EventNames.in: Ditto.

LayoutTests:

Updated expectations, and new test file. In most cases, just switch test from
looking at event.target.version and event.version to event.oldVersion and event.newVersion,
in some cases verifying the old properties as well as a sanity check.

  • storage/indexeddb/delete-in-upgradeneeded-close-in-open-success-expected.txt:
  • storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt:
  • storage/indexeddb/deletedatabase-blocked-expected.txt:
  • storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-expected.txt:
  • storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers-expected.txt:
  • storage/indexeddb/deletedatabase-delayed-by-versionchange-expected.txt:
  • storage/indexeddb/deletedatabase-not-blocked-expected.txt:
  • storage/indexeddb/events-expected.txt: Added.
  • storage/indexeddb/events.html: Added.
  • storage/indexeddb/intversion-gated-on-delete-expected.txt:
  • storage/indexeddb/intversion-long-queue-expected.txt:
  • storage/indexeddb/removed-expected.txt:
  • storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js:
  • storage/indexeddb/resources/deletedatabase-blocked.js:
  • storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js:
  • storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js:
  • storage/indexeddb/resources/deletedatabase-not-blocked.js:
  • storage/indexeddb/resources/events.js: Added.
  • storage/indexeddb/resources/intversion-gated-on-delete.js:
  • storage/indexeddb/resources/intversion-long-queue.js:
  • storage/indexeddb/resources/removed.js: Verify that old Event type and property are gone.
Location:
trunk
Files:
3 added
3 deleted
31 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r140728 r140741  
     12013-01-24  Joshua Bell  <jsbell@chromium.org>
     2
     3        IndexedDB: Remove IDBUpgradeNeededEvent, merge with IDBVersionChangeEvent
     4        https://bugs.webkit.org/show_bug.cgi?id=107754
     5
     6        Reviewed by Tony Chang.
     7
     8        Updated expectations, and new test file. In most cases, just switch test from
     9        looking at event.target.version and event.version to event.oldVersion and event.newVersion,
     10        in some cases verifying the old properties as well as a sanity check.
     11
     12        * storage/indexeddb/delete-in-upgradeneeded-close-in-open-success-expected.txt:
     13        * storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt:
     14        * storage/indexeddb/deletedatabase-blocked-expected.txt:
     15        * storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-expected.txt:
     16        * storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers-expected.txt:
     17        * storage/indexeddb/deletedatabase-delayed-by-versionchange-expected.txt:
     18        * storage/indexeddb/deletedatabase-not-blocked-expected.txt:
     19        * storage/indexeddb/events-expected.txt: Added.
     20        * storage/indexeddb/events.html: Added.
     21        * storage/indexeddb/intversion-gated-on-delete-expected.txt:
     22        * storage/indexeddb/intversion-long-queue-expected.txt:
     23        * storage/indexeddb/removed-expected.txt:
     24        * storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js:
     25        * storage/indexeddb/resources/deletedatabase-blocked.js:
     26        * storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js:
     27        * storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js:
     28        * storage/indexeddb/resources/deletedatabase-not-blocked.js:
     29        * storage/indexeddb/resources/events.js: Added.
     30        * storage/indexeddb/resources/intversion-gated-on-delete.js:
     31        * storage/indexeddb/resources/intversion-long-queue.js:
     32        * storage/indexeddb/resources/removed.js: Verify that old Event type and property are gone.
     33
    1342013-01-24  Emil A Eklund  <eae@chromium.org>
    235
  • trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success-expected.txt

    r138268 r140741  
    2222
    2323versionChangeCallback():
    24 FIXME: These shouldn't be undefined. http://crbug.com/153122
    25 FAIL event.oldVersion should be 1 (of type number). Was undefined (of type undefined).
    26 FAIL event.newVersion should be null (of type object). Was undefined (of type undefined).
     24PASS event.oldVersion is 1
     25PASS event.newVersion is null
    2726sawVersionChange = true
    2827
  • trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt

    r138268 r140741  
    2222
    2323versionChangeCallback():
    24 FIXME: These shouldn't be undefined. http://crbug.com/153122
    25 FAIL event.oldVersion should be 1 (of type number). Was undefined (of type undefined).
    26 FAIL event.newVersion should be null (of type object). Was undefined (of type undefined).
     24PASS event.oldVersion is 1
     25PASS event.newVersion is null
    2726sawVersionChange = true
    2827Closing the connection before the IDBOpenDBRequest's success fires will cause the open to fail.
  • trunk/LayoutTests/storage/indexeddb/deletedatabase-blocked-expected.txt

    r131466 r140741  
    1515
    1616onVersionChange():
    17 old = 1
    18 new = ""
     17PASS event.target.version is 1
     18PASS event.oldVersion is 1
     19PASS event.newVersion is null
    1920
    2021deleteDatabaseOnBlocked():
  • trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-expected.txt

    r139793 r140741  
    1616
    1717onVersionChange():
    18 old = 1
    19 new = ""
     18PASS event.target.version is 1
     19PASS event.oldVersion is 1
     20PASS event.newVersion is null
    2021
    2122deleteDatabaseOnBlocked():
  • trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers-expected.txt

    r139793 r140741  
    1717[Worker]
    1818[Worker] onVersionChange():
    19 [Worker] old = 1
    20 [Worker] new = ""
     19PASS [Worker] event.target.version is 1
     20PASS [Worker] event.oldVersion is 1
     21PASS [Worker] event.newVersion is null
    2122[Worker]
    2223[Worker] deleteDatabaseOnBlocked():
  • trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-versionchange-expected.txt

    r138268 r140741  
    2525
    2626h1OnVersionChange():
    27 old = 1
    28 new = 2
     27PASS event.target.version is 1
     28PASS event.oldVersion is 1
     29PASS event.newVersion is 2
    2930
    3031h2OnVersionChange():
    31 old = 1
    32 new = 2
     32PASS event.target.version is 1
     33PASS event.oldVersion is 1
     34PASS event.newVersion is 2
    3335
    3436h3Blocked():
     
    3840h2.close()
    3941
    40 h1OnVersionChange():
    41 FIXME: These shouldn't be undefined. http://crbug.com/153122
    42 old = undefined
    43 new = undefined
     42h1SecondOnVersionChange():
     43PASS event.target.version is 1
     44PASS event.oldVersion is 1
     45PASS event.newVersion is null
    4446
    4547deleteDatabaseOnBlocked():
  • trunk/LayoutTests/storage/indexeddb/deletedatabase-not-blocked-expected.txt

    r129809 r140741  
    1515
    1616onVersionChange():
    17 old = 1
    18 new = ""
     17PASS event.target.version is 1
     18PASS event.oldVersion is 1
     19PASS event.newVersion is null
    1920h.close()
    2021
  • trunk/LayoutTests/storage/indexeddb/intversion-gated-on-delete-expected.txt

    r138268 r140741  
    3131connection1VersionChangeCallback():
    3232PASS event.type is "versionchange"
    33 event.version =
     33PASS event.oldVersion is 1
     34PASS event.newVersion is null
    3435
    3536connection2VersionChangeCallback():
  • trunk/LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt

    r140602 r140741  
    2626PASS event.oldVersion is 1
    2727PASS event.newVersion is 2
    28 PASS event.version is undefined.
    2928
    3029connection2Blocked():
     
    3837
    3938deleteDatabaseBlockedCallback():
    40 FIXME: http://crbug.com/153122
    4139PASS event.oldVersion is 1
    42 FAIL event.newVersion should be null (of type object). Was 0 (of type number).
    43 PASS event.version is undefined.
     40PASS event.newVersion is null
    4441
    4542deleteDatabaseSuccessCallback():
    4643PASS event.target.result is undefined.
    47 FIXME: http://crbug.com/153122
    48 FAIL event.oldVersion should be 1 (of type number). Was undefined (of type undefined).
    49 FAIL event.newVersion should be null (of type object). Was undefined (of type undefined).
     44PASS event.type is "success"
    5045
    5146connection2UpgradeNeeded():
     
    6964PASS event.oldVersion is 2
    7065PASS event.newVersion is 3
    71 PASS event.version is undefined.
    7266connection2.close()
    7367
  • trunk/LayoutTests/storage/indexeddb/removed-expected.txt

    r135904 r140741  
    1111PASS 'errorCode' in indexedDB.open(dbname) is false
    1212PASS 'setVersion' in IDBDatabase.prototype is false
     13PASS document.createEvent('IDBUpgradeNeededEvent') threw exception Error: NotSupportedError: DOM Exception 9.
     14PASS 'version' in document.createEvent('IDBVersionChangeEvent') is false
    1315PASS successfullyParsed is true
    1416
  • trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js

    r138268 r140741  
    5656{
    5757    preamble(evt);
    58     debug("FIXME: These shouldn't be undefined. http://crbug.com/153122");
    5958    shouldBe("event.oldVersion", "1");
    6059    shouldBeNull("event.newVersion");
  • trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js

    r138268 r140741  
    4545function versionChangeCallback(evt) {
    4646    preamble(evt);
    47     debug("FIXME: These shouldn't be undefined. http://crbug.com/153122");
    4847    shouldBe("event.oldVersion", "1");
    4948    shouldBeNull("event.newVersion");
  • trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-blocked.js

    r131466 r140741  
    2121        h.onversionchange = function onVersionChange(evt) {
    2222            preamble(evt);
    23             debug("old = " + JSON.stringify(event.target.version));
    24             debug("new = " + JSON.stringify(event.version));
     23            shouldBe("event.target.version", "1");
     24            shouldBe("event.oldVersion", "1");
     25            shouldBeNull("event.newVersion");
    2526       };
    2627
  • trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js

    r139793 r140741  
    1515    h.onversionchange = function onVersionChange(evt) {
    1616        preamble(evt);
    17         debug("old = " + JSON.stringify(event.target.version));
    18         debug("new = " + JSON.stringify(event.version));
     17        shouldBe("event.target.version", "1");
     18        shouldBe("event.oldVersion", "1");
     19        shouldBeNull("event.newVersion");
    1920    };
    2021
  • trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js

    r135226 r140741  
    1919    h1.onversionchange = function h1OnVersionChange(evt) {
    2020        preamble(evt);
    21         if (event.oldVersion === undefined)
    22             debug("FIXME: These shouldn't be undefined. http://crbug.com/153122");
    23         debug("old = " + event.oldVersion);
    24         debug("new = " + event.newVersion);
     21        shouldBe("event.target.version", "1");
     22        shouldBe("event.oldVersion", "1");
     23        shouldBe("event.newVersion", "2");
     24
     25        h1.onversionchange = function h1SecondOnVersionChange(evt) {
     26            preamble(evt);
     27            shouldBe("event.target.version", "1");
     28            shouldBe("event.oldVersion", "1");
     29            shouldBeNull("event.newVersion");
     30        };
    2531    };
    2632
     
    3541        h2.onversionchange = function h2OnVersionChange(evt) {
    3642            preamble(evt);
    37             debug("old = " + event.oldVersion);
    38             debug("new = " + event.newVersion);
     43            shouldBe("event.target.version", "1");
     44            shouldBe("event.oldVersion", "1");
     45            shouldBe("event.newVersion", "2");
    3946        };
    4047
  • trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-not-blocked.js

    r129809 r140741  
    2121        h.onversionchange = function onVersionChange(evt) {
    2222            preamble(evt);
    23             debug("old = " + JSON.stringify(event.target.version));
    24             debug("new = " + JSON.stringify(event.version));
     23            shouldBe("event.target.version", "1");
     24            shouldBe("event.oldVersion", "1");
     25            shouldBeNull("event.newVersion");
    2526            evalAndLog("h.close()");
    2627        };
  • trunk/LayoutTests/storage/indexeddb/resources/intversion-gated-on-delete.js

    r138268 r140741  
    2727    event = evt;
    2828    debug("");
    29     debug("firstSuccessCallback():")
     29    debug("firstSuccessCallback():");
    3030    evalAndLog("connection1 = event.target.result");
    3131    evalAndLog("connection1.onversionchange = connection1VersionChangeCallback");
     
    5757    preamble(evt);
    5858    shouldBeEqualToString("event.type", "versionchange");
    59     debug("event.version = " + event.version);
     59    shouldBe("event.oldVersion", "1");
     60    shouldBeNull("event.newVersion");
    6061}
    6162
  • trunk/LayoutTests/storage/indexeddb/resources/intversion-long-queue.js

    r134844 r140741  
    3232    shouldBe("event.oldVersion", "1");
    3333    shouldBe("event.newVersion", "2");
    34     shouldBeUndefined("event.version");
    3534}
    3635
     
    5352{
    5453    preamble(evt);
    55     debug("FIXME: http://crbug.com/153122");
    5654    shouldBe("event.oldVersion", "1");
    5755    shouldBeNull("event.newVersion");
    58     shouldBeUndefined("event.version");
    5956}
    6057
     
    6360    preamble(evt);
    6461    shouldBeUndefined("event.target.result");
    65     debug("FIXME: http://crbug.com/153122");
    66     shouldBe("event.oldVersion", "1");
    67     shouldBeNull("event.newVersion");
     62    shouldBeEqualToString("event.type", "success");
    6863}
    6964
     
    9994    shouldBe("event.oldVersion", "2");
    10095    shouldBe("event.newVersion", "3");
    101     shouldBeUndefined("event.version");
    10296    evalAndLog("connection2.close()");
    10397}
  • trunk/LayoutTests/storage/indexeddb/resources/removed.js

    r135904 r140741  
    1616    shouldBeFalse("'setVersion' in IDBDatabase.prototype");
    1717
     18    if ('document' in self) {
     19        shouldThrow("document.createEvent('IDBUpgradeNeededEvent')");
     20        shouldBeFalse("'version' in document.createEvent('IDBVersionChangeEvent')");
     21    }
     22
    1823    finishJSTest();
    1924}
  • trunk/Source/WebCore/CMakeLists.txt

    r140604 r140741  
    198198    Modules/indexeddb/IDBRequest.idl
    199199    Modules/indexeddb/IDBTransaction.idl
    200     Modules/indexeddb/IDBUpgradeNeededEvent.idl
    201200    Modules/indexeddb/IDBVersionChangeEvent.idl
    202201    Modules/indexeddb/WorkerContextIndexedDatabase.idl
     
    842841    Modules/indexeddb/IDBTransactionBackendImpl.cpp
    843842    Modules/indexeddb/IDBTransactionCoordinator.cpp
    844     Modules/indexeddb/IDBUpgradeNeededEvent.cpp
    845843    Modules/indexeddb/IDBVersionChangeEvent.cpp
    846844    Modules/indexeddb/PageGroupIndexedDatabase.cpp
  • trunk/Source/WebCore/ChangeLog

    r140738 r140741  
     12013-01-24  Joshua Bell  <jsbell@chromium.org>
     2
     3        IndexedDB: Remove IDBUpgradeNeededEvent, merge with IDBVersionChangeEvent
     4        https://bugs.webkit.org/show_bug.cgi?id=107754
     5
     6        Reviewed by Tony Chang.
     7
     8        The IndexedDB spec calls deleteDatabase() to fire a "blocked" event with the
     9        IDBVersionChangeEvent interface which we were doing, but with an older interface - just
     10        a "version" property. We were already firing an event on "versionchange" with the new
     11        "oldVersion" and "newVersion" properties, but with an IDBUpgradeNeededEvent interface that
     12        doesn't exist in the spec. This patch merges the event types to match the spec, including
     13        that the newVersion property is null when deleting.
     14
     15        Test: storage/indexeddb/events.html
     16              storage/indexeddb/deletedatabase-*.html
     17
     18        * CMakeLists.txt: Remove references to deleted files.
     19        * GNUmakefile.list.am: Ditto.
     20        * Modules/indexeddb/IDBDatabase.cpp:
     21        (WebCore::IDBDatabase::onVersionChange): Generate IDBVersionChangeEvent.
     22        * Modules/indexeddb/IDBOpenDBRequest.cpp:
     23        (WebCore::IDBOpenDBRequest::onBlocked): Ditto.
     24        (WebCore::IDBOpenDBRequest::onUpgradeNeeded): Ditto.
     25        * Modules/indexeddb/IDBUpgradeNeededEvent.cpp: Removed.
     26        * Modules/indexeddb/IDBUpgradeNeededEvent.h: Removed.
     27        * Modules/indexeddb/IDBUpgradeNeededEvent.idl: Removed.
     28        * Modules/indexeddb/IDBVersionChangeEvent.cpp:
     29        (WebCore::IDBVersionChangeEvent::create): Take IDBAny's as old/new versions
     30        may be integers, strings (for legacy databases), or null (when deleting).
     31        (WebCore::IDBVersionChangeEvent::IDBVersionChangeEvent):
     32        * Modules/indexeddb/IDBVersionChangeEvent.h:
     33        (IDBVersionChangeEvent): Remove version property.
     34        (WebCore::IDBVersionChangeEvent::oldVersion): Added new property.
     35        (WebCore::IDBVersionChangeEvent::newVersion): Added new property.
     36        * Modules/indexeddb/IDBVersionChangeEvent.idl: Updated properties.
     37        * WebCore.gypi: Remove references to deleted files.
     38        * dom/EventNames.in: Ditto.
     39
    1402013-01-24  Pratik Solanki  <psolanki@apple.com>
    241
  • trunk/Source/WebCore/GNUmakefile.list.am

    r140604 r140741  
    478478        DerivedSources/WebCore/JSIDBVersionChangeEvent.cpp \
    479479        DerivedSources/WebCore/JSIDBVersionChangeEvent.h \
    480         DerivedSources/WebCore/JSIDBUpgradeNeededEvent.cpp \
    481         DerivedSources/WebCore/JSIDBUpgradeNeededEvent.h \
    482480        DerivedSources/WebCore/JSImageData.cpp \
    483481        DerivedSources/WebCore/JSImageData.h \
     
    12331231        $(WebCore)/Modules/indexeddb/IDBRequest.idl \
    12341232        $(WebCore)/Modules/indexeddb/IDBTransaction.idl \
    1235         $(WebCore)/Modules/indexeddb/IDBUpgradeNeededEvent.idl \
    12361233        $(WebCore)/Modules/indexeddb/IDBVersionChangeEvent.idl \
    1237         $(WebCore)/Modules/indexeddb/IDBUpgradeNeededEvent.idl \
    12381234        $(WebCore)/Modules/indexeddb/WorkerContextIndexedDatabase.idl \
    12391235        $(WebCore)/Modules/mediasource/MediaSource.idl \
     
    19111907        Source/WebCore/Modules/indexeddb/IDBTransaction.cpp \
    19121908        Source/WebCore/Modules/indexeddb/IDBTransaction.h \
    1913         Source/WebCore/Modules/indexeddb/IDBUpgradeNeededEvent.cpp \
    1914         Source/WebCore/Modules/indexeddb/IDBUpgradeNeededEvent.h \
    19151909        Source/WebCore/Modules/indexeddb/IDBVersionChangeEvent.cpp \
    19161910        Source/WebCore/Modules/indexeddb/IDBVersionChangeEvent.h \
  • trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp

    r140602 r140741  
    4242#include "IDBTracing.h"
    4343#include "IDBTransaction.h"
    44 #include "IDBUpgradeNeededEvent.h"
    4544#include "IDBVersionChangeEvent.h"
    4645#include "ScriptCallStack.h"
     
    305304        return;
    306305
    307     enqueueEvent(IDBUpgradeNeededEvent::create(oldVersion, newVersion, eventNames().versionchangeEvent));
    308 }
    309 
    310 void IDBDatabase::onVersionChange(const String& version)
     306    enqueueEvent(IDBVersionChangeEvent::create(IDBAny::create(oldVersion), IDBAny::create(newVersion), eventNames().versionchangeEvent));
     307}
     308
     309void IDBDatabase::onVersionChange(const String& newVersion)
    311310{
    312311    if (m_contextStopped || !scriptExecutionContext())
     
    316315        return;
    317316
    318     enqueueEvent(IDBVersionChangeEvent::create(version, eventNames().versionchangeEvent));
     317    RefPtr<IDBAny> newVersionAny = newVersion.isEmpty() ? IDBAny::createNull() : IDBAny::createString(newVersion);
     318    enqueueEvent(IDBVersionChangeEvent::create(version(), newVersionAny.release(), eventNames().versionchangeEvent));
    319319}
    320320
  • trunk/Source/WebCore/Modules/indexeddb/IDBFactory.cpp

    r140602 r140741  
    148148        return 0;
    149149
    150     RefPtr<IDBOpenDBRequest> request = IDBOpenDBRequest::create(context, 0, 0, 0);
     150    RefPtr<IDBOpenDBRequest> request = IDBOpenDBRequest::create(context, 0, 0, IDBDatabaseMetadata::DefaultIntVersion);
    151151    m_backend->deleteDatabase(name, request, context->securityOrigin(), context, getIndexedDBDatabasePath(context));
    152152    return request;
  • trunk/Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp

    r140602 r140741  
    3333#include "IDBPendingTransactionMonitor.h"
    3434#include "IDBTracing.h"
    35 #include "IDBUpgradeNeededEvent.h"
     35#include "IDBVersionChangeEvent.h"
    3636#include "ScriptExecutionContext.h"
    3737
     
    6767    if (!shouldEnqueueEvent())
    6868        return;
    69     enqueueEvent(IDBUpgradeNeededEvent::create(oldVersion, m_version, eventNames().blockedEvent));
     69    RefPtr<IDBAny> newVersionAny = (m_version == IDBDatabaseMetadata::DefaultIntVersion) ? IDBAny::createNull() : IDBAny::create(m_version);
     70    enqueueEvent(IDBVersionChangeEvent::create(IDBAny::create(oldVersion), newVersionAny.release(), eventNames().blockedEvent));
    7071}
    7172
     
    105106    if (m_version == IDBDatabaseMetadata::NoIntVersion)
    106107        m_version = 1;
    107     enqueueEvent(IDBUpgradeNeededEvent::create(oldVersion, m_version, eventNames().upgradeneededEvent));
     108    enqueueEvent(IDBVersionChangeEvent::create(IDBAny::create(oldVersion), IDBAny::create(m_version), eventNames().upgradeneededEvent));
    108109}
    109110
  • trunk/Source/WebCore/Modules/indexeddb/IDBVersionChangeEvent.cpp

    r109493 r140741  
    3434namespace WebCore {
    3535
    36 PassRefPtr<IDBVersionChangeEvent> IDBVersionChangeEvent::create(const String& version, const AtomicString& eventType)
     36PassRefPtr<IDBVersionChangeEvent> IDBVersionChangeEvent::create(PassRefPtr<IDBAny> oldVersion, PassRefPtr<IDBAny> newVersion, const AtomicString& eventType)
    3737{
    38     return adoptRef(new IDBVersionChangeEvent(version, eventType));
     38    return adoptRef(new IDBVersionChangeEvent(oldVersion, newVersion, eventType));
    3939}
    4040
    41 IDBVersionChangeEvent::IDBVersionChangeEvent(const String& version, const AtomicString& eventType)
     41IDBVersionChangeEvent::IDBVersionChangeEvent(PassRefPtr<IDBAny> oldVersion, PassRefPtr<IDBAny> newVersion, const AtomicString& eventType)
    4242    : Event(eventType, false /*canBubble*/, false /*cancelable*/)
    43     , m_version(version)
     43    , m_oldVersion(oldVersion)
     44    , m_newVersion(newVersion)
    4445{
    4546}
     
    4748IDBVersionChangeEvent::~IDBVersionChangeEvent()
    4849{
    49 }
    50 
    51 String IDBVersionChangeEvent::version()
    52 {
    53     return m_version;
    5450}
    5551
  • trunk/Source/WebCore/Modules/indexeddb/IDBVersionChangeEvent.h

    r127757 r140741  
    3030
    3131#include "Event.h"
     32#include "IDBAny.h"
    3233#include <wtf/PassRefPtr.h>
    3334#include <wtf/RefPtr.h>
     
    3637namespace WebCore {
    3738
    38 class IDBAny;
    39 
    4039class IDBVersionChangeEvent : public Event {
    4140public:
    42     static PassRefPtr<IDBVersionChangeEvent> create(const String& version = String(), const AtomicString& eventType = AtomicString());
     41    static PassRefPtr<IDBVersionChangeEvent> create(PassRefPtr<IDBAny> oldVersion = IDBAny::createNull(), PassRefPtr<IDBAny> newVersion = IDBAny::createNull(), const AtomicString& eventType = AtomicString());
    4342    virtual ~IDBVersionChangeEvent();
    4443
    45     virtual String version();
     44    virtual PassRefPtr<IDBAny> oldVersion() { return m_oldVersion; }
     45    virtual PassRefPtr<IDBAny> newVersion() { return m_newVersion; }
    4646
    4747    virtual const AtomicString& interfaceName() const;
    4848
    4949private:
    50     IDBVersionChangeEvent(const String& version, const AtomicString& eventType);
     50    IDBVersionChangeEvent(PassRefPtr<IDBAny> oldVersion, PassRefPtr<IDBAny> newVersion, const AtomicString& eventType);
    5151
    52     String m_version;
     52    RefPtr<IDBAny> m_oldVersion;
     53    RefPtr<IDBAny> m_newVersion;
    5354};
    5455
  • trunk/Source/WebCore/Modules/indexeddb/IDBVersionChangeEvent.idl

    r134674 r140741  
    2828    JSNoStaticTables
    2929] interface IDBVersionChangeEvent : Event {
    30     readonly attribute DOMString version;
     30    readonly attribute IDBAny oldVersion;
     31    readonly attribute IDBAny newVersion;
    3132};
  • trunk/Source/WebCore/WebCore.gypi

    r140604 r140741  
    5252            'Modules/indexeddb/IDBRequest.idl',
    5353            'Modules/indexeddb/IDBTransaction.idl',
    54             'Modules/indexeddb/IDBUpgradeNeededEvent.idl',
    5554            'Modules/indexeddb/IDBVersionChangeEvent.idl',
    5655            'Modules/indexeddb/WorkerContextIndexedDatabase.idl',
     
    774773            'Modules/indexeddb/IDBTransactionCoordinator.cpp',
    775774            'Modules/indexeddb/IDBTransactionCoordinator.h',
    776             'Modules/indexeddb/IDBUpgradeNeededEvent.cpp',
    777             'Modules/indexeddb/IDBUpgradeNeededEvent.h',
    778775            'Modules/indexeddb/IDBVersionChangeEvent.cpp',
    779776            'Modules/indexeddb/IDBVersionChangeEvent.h',
  • trunk/Source/WebCore/dom/EventNames.in

    r140448 r140741  
    4444SVGZoomEvent conditional=SVG
    4545SVGZoomEvents interfaceName=SVGZoomEvent, conditional=SVG
    46 IDBUpgradeNeededEvent conditional=INDEXED_DATABASE
    4746IDBVersionChangeEvent conditional=INDEXED_DATABASE
    4847TouchEvent conditional=TOUCH_EVENTS, runtimeConditional=touchEnabled
Note: See TracChangeset for help on using the changeset viewer.