123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * 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/. */
- #ifndef mozilla_dom_TouchEvent_h_
- #define mozilla_dom_TouchEvent_h_
- #include "mozilla/dom/Touch.h"
- #include "mozilla/dom/TouchEventBinding.h"
- #include "mozilla/dom/UIEvent.h"
- #include "mozilla/Attributes.h"
- #include "mozilla/EventForwards.h"
- #include "mozilla/TouchEvents.h"
- #include "nsJSEnvironment.h"
- #include "nsWrapperCache.h"
- class nsAString;
- namespace mozilla {
- namespace dom {
- class TouchList final : public nsISupports
- , public nsWrapperCache
- {
- public:
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TouchList)
- explicit TouchList(nsISupports* aParent)
- : mParent(aParent)
- {
- nsJSContext::LikelyShortLivingObjectCreated();
- }
- TouchList(nsISupports* aParent,
- const WidgetTouchEvent::TouchArray& aTouches)
- : mParent(aParent)
- , mPoints(aTouches)
- {
- nsJSContext::LikelyShortLivingObjectCreated();
- }
- void Append(Touch* aPoint)
- {
- mPoints.AppendElement(aPoint);
- }
- virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
- nsISupports* GetParentObject() const
- {
- return mParent;
- }
- static bool PrefEnabled(JSContext* aCx, JSObject* aGlobal);
- uint32_t Length() const
- {
- return mPoints.Length();
- }
- Touch* Item(uint32_t aIndex) const
- {
- return mPoints.SafeElementAt(aIndex);
- }
- Touch* IndexedGetter(uint32_t aIndex, bool& aFound) const
- {
- aFound = aIndex < mPoints.Length();
- if (!aFound) {
- return nullptr;
- }
- return mPoints[aIndex];
- }
- protected:
- ~TouchList() {}
- nsCOMPtr<nsISupports> mParent;
- WidgetTouchEvent::TouchArray mPoints;
- };
- class TouchEvent : public UIEvent
- {
- public:
- TouchEvent(EventTarget* aOwner,
- nsPresContext* aPresContext,
- WidgetTouchEvent* aEvent);
- NS_DECL_ISUPPORTS_INHERITED
- NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(TouchEvent, UIEvent)
- virtual JSObject* WrapObjectInternal(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override
- {
- return TouchEventBinding::Wrap(aCx, this, aGivenProto);
- }
- already_AddRefed<TouchList>
- CopyTouches(const Sequence<OwningNonNull<Touch>>& aTouches);
- TouchList* Touches();
- TouchList* TargetTouches();
- TouchList* ChangedTouches();
- bool AltKey();
- bool MetaKey();
- bool CtrlKey();
- bool ShiftKey();
- void InitTouchEvent(const nsAString& aType,
- bool aCanBubble,
- bool aCancelable,
- nsGlobalWindow* aView,
- int32_t aDetail,
- bool aCtrlKey,
- bool aAltKey,
- bool aShiftKey,
- bool aMetaKey,
- TouchList* aTouches,
- TouchList* aTargetTouches,
- TouchList* aChangedTouches);
- static bool PrefEnabled(JSContext* aCx, JSObject* aGlobal);
- static bool PrefEnabled(nsIDocShell* aDocShell);
- static already_AddRefed<Event> Constructor(const GlobalObject& aGlobal,
- const nsAString& aType,
- const TouchEventInit& aParam,
- ErrorResult& aRv);
- protected:
- ~TouchEvent() {}
- RefPtr<TouchList> mTouches;
- RefPtr<TouchList> mTargetTouches;
- RefPtr<TouchList> mChangedTouches;
- };
- } // namespace dom
- } // namespace mozilla
- already_AddRefed<mozilla::dom::TouchEvent>
- NS_NewDOMTouchEvent(mozilla::dom::EventTarget* aOwner,
- nsPresContext* aPresContext,
- mozilla::WidgetTouchEvent* aEvent);
- #endif // mozilla_dom_TouchEvent_h_
|