Bug 890382 - Implement a Web IDL event constructor for IDBVersionChangeEvent; r=smaug

This commit is contained in:
Ehsan Akhgari 2013-07-04 18:12:39 -04:00
Родитель 5d32824206
Коммит 1e6a689354
4 изменённых файлов: 43 добавлений и 7 удалений

Просмотреть файл

@ -57,7 +57,7 @@ mozilla::dom::indexedDB::CreateGenericEvent(mozilla::dom::EventTarget* aOwner,
}
// static
already_AddRefed<nsDOMEvent>
already_AddRefed<IDBVersionChangeEvent>
IDBVersionChangeEvent::CreateInternal(mozilla::dom::EventTarget* aOwner,
const nsAString& aType,
uint64_t aOldVersion,

Просмотреть файл

@ -57,6 +57,20 @@ public:
return mozilla::dom::IDBVersionChangeEventBinding::Wrap(aCx, aScope, this);
}
static already_AddRefed<IDBVersionChangeEvent>
Constructor(const GlobalObject& aGlobal,
const NonNull<nsAString>& aType,
const IDBVersionChangeEventInit& aOptions,
ErrorResult& aRv)
{
uint64_t newVersion = 0;
if (!aOptions.mNewVersion.IsNull()) {
newVersion = aOptions.mNewVersion.Value();
}
nsCOMPtr<EventTarget> target = do_QueryInterface(aGlobal.Get());
return CreateInternal(target, aType, aOptions.mOldVersion, newVersion);
}
uint64_t OldVersion()
{
return mOldVersion;
@ -126,7 +140,7 @@ protected:
}
virtual ~IDBVersionChangeEvent() { }
static already_AddRefed<nsDOMEvent>
static already_AddRefed<IDBVersionChangeEvent>
CreateInternal(mozilla::dom::EventTarget* aOwner,
const nsAString& aType,
uint64_t aOldVersion,

Просмотреть файл

@ -157,6 +157,21 @@ function testSteps()
is(versionChangeEventCount, 3, "Saw all expected events");
event = new IDBVersionChangeEvent("versionchange");
ok(event, "Should be able to create an event with just passing in the type");
event = new IDBVersionChangeEvent("versionchange", {oldVersion: 1});
ok(event, "Should be able to create an event with just the old version");
is(event.oldVersion, 1, "Correct old version");
is(event.newVersion, null, "Correct new version");
event = new IDBVersionChangeEvent("versionchange", {newVersion: 1});
ok(event, "Should be able to create an event with just the new version");
is(event.oldVersion, 0, "Correct old version");
is(event.newVersion, 1, "Correct new version");
event = new IDBVersionChangeEvent("versionchange", {oldVersion: 1, newVersion: 2});
ok(event, "Should be able to create an event with both versions");
is(event.oldVersion, 1, "Correct old version");
is(event.newVersion, 2, "Correct new version");
finishTest();
yield;
}

Просмотреть файл

@ -3,14 +3,21 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*
* IDBVersionChangeEvent is defined in:
* https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html
* The origin of this IDL file is
* https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBVersionChangeEvent
*
* Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C
* liability, trademark and document use rules apply.
*/
interface IDBVersionChangeEvent : Event {
readonly attribute unsigned long long oldVersion;
readonly attribute unsigned long long? newVersion;
dictionary IDBVersionChangeEventInit : EventInit {
unsigned long long oldVersion = 0;
unsigned long long? newVersion = null;
};
[Constructor(DOMString type, optional IDBVersionChangeEventInit eventInitDict)]
interface IDBVersionChangeEvent : Event {
readonly attribute unsigned long long oldVersion;
readonly attribute unsigned long long? newVersion;
};