tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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