ExtendableCookieChangeEvent.cpp (3164B)
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 "mozilla/dom/ExtendableCookieChangeEvent.h" 8 9 #include "mozilla/dom/ExtendableCookieChangeEventBinding.h" 10 11 namespace mozilla::dom { 12 13 NS_IMPL_ADDREF_INHERITED(ExtendableCookieChangeEvent, ExtendableEvent) 14 NS_IMPL_RELEASE_INHERITED(ExtendableCookieChangeEvent, ExtendableEvent) 15 16 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ExtendableCookieChangeEvent) 17 NS_INTERFACE_MAP_END_INHERITING(ExtendableEvent) 18 19 NS_IMPL_CYCLE_COLLECTION_INHERITED(ExtendableCookieChangeEvent, ExtendableEvent) 20 21 ExtendableCookieChangeEvent::ExtendableCookieChangeEvent(EventTarget* aOwner) 22 : ExtendableEvent(aOwner) {} 23 24 ExtendableCookieChangeEvent::~ExtendableCookieChangeEvent() = default; 25 26 JSObject* ExtendableCookieChangeEvent::WrapObjectInternal( 27 JSContext* aCx, JS::Handle<JSObject*> aGivenProto) { 28 return mozilla::dom::ExtendableCookieChangeEvent_Binding::Wrap(aCx, this, 29 aGivenProto); 30 } 31 32 void ExtendableCookieChangeEvent::GetChanged( 33 nsTArray<CookieListItem>& aList) const { 34 aList = mChanged.Clone(); 35 } 36 37 void ExtendableCookieChangeEvent::GetDeleted( 38 nsTArray<CookieListItem>& aList) const { 39 aList = mDeleted.Clone(); 40 } 41 42 /* static */ already_AddRefed<ExtendableCookieChangeEvent> 43 ExtendableCookieChangeEvent::Constructor( 44 const GlobalObject& aGlobal, const nsAString& aType, 45 const ExtendableCookieChangeEventInit& aEventInit) { 46 nsCOMPtr<EventTarget> t = do_QueryInterface(aGlobal.GetAsSupports()); 47 RefPtr<ExtendableCookieChangeEvent> event = 48 new ExtendableCookieChangeEvent(t); 49 bool trusted = event->Init(t); 50 51 event->InitEvent(aType, aEventInit.mBubbles, aEventInit.mCancelable); 52 event->SetTrusted(trusted); 53 event->SetComposed(aEventInit.mComposed); 54 55 if (aEventInit.mChanged.WasPassed()) { 56 event->mChanged = aEventInit.mChanged.Value(); 57 } 58 59 if (aEventInit.mDeleted.WasPassed()) { 60 event->mDeleted = aEventInit.mDeleted.Value(); 61 } 62 63 return event.forget(); 64 } 65 66 // static 67 already_AddRefed<ExtendableCookieChangeEvent> 68 ExtendableCookieChangeEvent::CreateForChangedCookie( 69 EventTarget* aEventTarget, const CookieListItem& aItem) { 70 RefPtr<ExtendableCookieChangeEvent> event = 71 new ExtendableCookieChangeEvent(aEventTarget); 72 73 event->InitEvent(u"cookiechange"_ns, false, false); 74 event->SetTrusted(true); 75 76 event->mChanged.AppendElement(aItem); 77 return event.forget(); 78 } 79 80 // static 81 already_AddRefed<ExtendableCookieChangeEvent> 82 ExtendableCookieChangeEvent::CreateForDeletedCookie( 83 EventTarget* aEventTarget, const CookieListItem& aItem) { 84 RefPtr<ExtendableCookieChangeEvent> event = 85 new ExtendableCookieChangeEvent(aEventTarget); 86 87 event->InitEvent(u"cookiechange"_ns, false, false); 88 event->SetTrusted(true); 89 90 event->mDeleted.AppendElement(aItem); 91 return event.forget(); 92 } 93 94 } // namespace mozilla::dom