EventCounts.cpp (2566B)
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 "EventCounts.h" 8 9 #include "mozilla/ErrorResult.h" 10 #include "mozilla/dom/Event.h" 11 #include "mozilla/dom/EventCounts.h" 12 #include "mozilla/dom/PerformanceEventTimingBinding.h" 13 #include "nsIGlobalObject.h" 14 15 namespace mozilla::dom { 16 17 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(EventCounts, mParent) 18 19 static const EventMessage sQualifiedEventType[36] = { 20 EventMessage::eContextMenu, 21 EventMessage::eMouseDoubleClick, 22 EventMessage::eMouseDown, 23 EventMessage::eMouseEnter, 24 EventMessage::eMouseLeave, 25 EventMessage::eMouseOut, 26 EventMessage::eMouseOver, 27 EventMessage::eMouseUp, 28 EventMessage::ePointerAuxClick, 29 EventMessage::ePointerClick, 30 EventMessage::ePointerOver, 31 EventMessage::ePointerEnter, 32 EventMessage::ePointerDown, 33 EventMessage::ePointerUp, 34 EventMessage::ePointerCancel, 35 EventMessage::ePointerOut, 36 EventMessage::ePointerLeave, 37 EventMessage::ePointerGotCapture, 38 EventMessage::ePointerLostCapture, 39 EventMessage::eTouchStart, 40 EventMessage::eTouchEnd, 41 EventMessage::eTouchCancel, 42 EventMessage::eKeyDown, 43 EventMessage::eKeyPress, 44 EventMessage::eKeyUp, 45 EventMessage::eEditorBeforeInput, 46 EventMessage::eEditorInput, 47 EventMessage::eCompositionStart, 48 EventMessage::eCompositionUpdate, 49 EventMessage::eCompositionEnd, 50 EventMessage::eDragStart, 51 EventMessage::eDragEnd, 52 EventMessage::eDragEnter, 53 EventMessage::eDragLeave, 54 EventMessage::eDragOver, 55 EventMessage::eDrop}; 56 57 EventCounts::EventCounts(nsISupports* aParent) : mParent(aParent) { 58 ErrorResult rv; 59 60 for (const EventMessage& eventType : sQualifiedEventType) { 61 EventCounts_Binding::MaplikeHelpers::Set( 62 this, nsDependentString(Event::GetEventName(eventType)), 0, rv); 63 if (NS_WARN_IF(rv.Failed())) { 64 rv.SuppressException(); 65 #ifdef DEBUG 66 nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(GetParentObject()); 67 if (global) { 68 MOZ_ASSERT(global->IsDying()); 69 } 70 #endif 71 return; 72 } 73 } 74 } 75 76 JSObject* EventCounts::WrapObject(JSContext* aCx, 77 JS::Handle<JSObject*> aGivenProto) { 78 return EventCounts_Binding::Wrap(aCx, this, aGivenProto); 79 } 80 } // namespace mozilla::dom