IDBEvents.cpp (3305B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #include "IDBEvents.h" 8 9 #include "mozilla/ErrorResult.h" 10 #include "mozilla/dom/EventTarget.h" 11 #include "mozilla/dom/IDBVersionChangeEventBinding.h" 12 #include "nsString.h" 13 14 using namespace mozilla; 15 using namespace mozilla::dom; 16 using namespace mozilla::dom::indexedDB; 17 18 namespace mozilla::dom { 19 namespace indexedDB { 20 21 const char16_t* kAbortEventType = u"abort"; 22 const char16_t* kBlockedEventType = u"blocked"; 23 const char16_t* kCompleteEventType = u"complete"; 24 const char16_t* kErrorEventType = u"error"; 25 const char16_t* kSuccessEventType = u"success"; 26 const char16_t* kUpgradeNeededEventType = u"upgradeneeded"; 27 const char16_t* kVersionChangeEventType = u"versionchange"; 28 const char16_t* kCloseEventType = u"close"; 29 30 RefPtr<Event> CreateGenericEvent(EventTarget* aOwner, 31 const nsDependentString& aType, 32 Bubbles aBubbles, Cancelable aCancelable) { 33 RefPtr<Event> event = MakeAndAddRef<Event>(aOwner, nullptr, nullptr); 34 35 event->InitEvent(aType, aBubbles == eDoesBubble, aCancelable == eCancelable); 36 37 event->SetTrusted(true); 38 39 return event; 40 } 41 42 } // namespace indexedDB 43 44 // static 45 RefPtr<IDBVersionChangeEvent> IDBVersionChangeEvent::CreateInternal( 46 EventTarget* aOwner, const nsAString& aType, uint64_t aOldVersion, 47 const Nullable<uint64_t>& aNewVersion) { 48 RefPtr<IDBVersionChangeEvent> event = 49 new IDBVersionChangeEvent(aOwner, aOldVersion); 50 if (!aNewVersion.IsNull()) { 51 event->mNewVersion.SetValue(aNewVersion.Value()); 52 } 53 54 event->InitEvent(aType, false, false); 55 56 event->SetTrusted(true); 57 58 return event; 59 } 60 61 RefPtr<IDBVersionChangeEvent> IDBVersionChangeEvent::Create( 62 EventTarget* aOwner, const nsDependentString& aName, uint64_t aOldVersion, 63 uint64_t aNewVersion) { 64 Nullable<uint64_t> newVersion(aNewVersion); 65 return CreateInternal(aOwner, aName, aOldVersion, newVersion); 66 } 67 68 RefPtr<IDBVersionChangeEvent> IDBVersionChangeEvent::Create( 69 EventTarget* aOwner, const nsDependentString& aName, uint64_t aOldVersion) { 70 Nullable<uint64_t> newVersion(0); 71 newVersion.SetNull(); 72 return CreateInternal(aOwner, aName, aOldVersion, newVersion); 73 } 74 75 RefPtr<IDBVersionChangeEvent> IDBVersionChangeEvent::Constructor( 76 const GlobalObject& aGlobal, const nsAString& aType, 77 const IDBVersionChangeEventInit& aOptions) { 78 nsCOMPtr<EventTarget> target = do_QueryInterface(aGlobal.GetAsSupports()); 79 80 return CreateInternal(target, aType, aOptions.mOldVersion, 81 aOptions.mNewVersion); 82 } 83 84 NS_IMPL_ADDREF_INHERITED(IDBVersionChangeEvent, Event) 85 NS_IMPL_RELEASE_INHERITED(IDBVersionChangeEvent, Event) 86 87 NS_INTERFACE_MAP_BEGIN(IDBVersionChangeEvent) 88 NS_INTERFACE_MAP_ENTRY(IDBVersionChangeEvent) 89 NS_INTERFACE_MAP_END_INHERITING(Event) 90 91 JSObject* IDBVersionChangeEvent::WrapObjectInternal( 92 JSContext* aCx, JS::Handle<JSObject*> aGivenProto) { 93 return IDBVersionChangeEvent_Binding::Wrap(aCx, this, aGivenProto); 94 } 95 96 } // namespace mozilla::dom