tor-browser

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

InputEventOptions.h (2963B)


      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 #ifndef mozilla_InputEventOptions_h
      8 #define mozilla_InputEventOptions_h
      9 
     10 #include "mozilla/Attributes.h"
     11 #include "mozilla/TextEvents.h"
     12 #include "mozilla/dom/DataTransfer.h"
     13 #include "mozilla/dom/StaticRange.h"
     14 #include "nsString.h"
     15 #include "nsTArray.h"
     16 
     17 namespace mozilla {
     18 
     19 /**
     20 * InputEventOptions is used by nsContentUtils::DispatchInputEvent() to specify
     21 * some attributes of InputEvent.  It would be nice if this was in
     22 * nsContentUtils.h, however, it needs to include StaticRange.h for declaring
     23 * this.  That would cause unnecessary dependency and makes incremental build
     24 * slower when you touch StaticRange.h even though most nsContentUtils.h users
     25 * don't use it.  Therefore, this struct is declared in separated header file
     26 * here.
     27 */
     28 struct MOZ_STACK_CLASS InputEventOptions final {
     29  enum class NeverCancelable {
     30    No,
     31    Yes,
     32  };
     33  InputEventOptions() : mDataTransfer(nullptr), mNeverCancelable(false) {}
     34  explicit InputEventOptions(const InputEventOptions& aOther) = delete;
     35  InputEventOptions(InputEventOptions&& aOther) = default;
     36  explicit InputEventOptions(const nsAString& aData,
     37                             NeverCancelable aNeverCancelable)
     38      : mData(aData),
     39        mDataTransfer(nullptr),
     40        mNeverCancelable(aNeverCancelable == NeverCancelable::Yes) {}
     41  explicit InputEventOptions(dom::DataTransfer* aDataTransfer,
     42                             NeverCancelable aNeverCancelable)
     43      : mDataTransfer(aDataTransfer),
     44        mNeverCancelable(aNeverCancelable == NeverCancelable::Yes) {
     45    MOZ_ASSERT(mDataTransfer);
     46    MOZ_ASSERT(mDataTransfer->IsReadOnly());
     47  }
     48  InputEventOptions(const nsAString& aData,
     49                    OwningNonNullStaticRangeArray&& aTargetRanges,
     50                    NeverCancelable aNeverCancelable)
     51      : mData(aData),
     52        mDataTransfer(nullptr),
     53        mTargetRanges(std::move(aTargetRanges)),
     54        mNeverCancelable(aNeverCancelable == NeverCancelable::Yes) {}
     55  InputEventOptions(dom::DataTransfer* aDataTransfer,
     56                    OwningNonNullStaticRangeArray&& aTargetRanges,
     57                    NeverCancelable aNeverCancelable)
     58      : mDataTransfer(aDataTransfer),
     59        mTargetRanges(std::move(aTargetRanges)),
     60        mNeverCancelable(aNeverCancelable == NeverCancelable::Yes) {
     61    MOZ_ASSERT(mDataTransfer);
     62    MOZ_ASSERT(mDataTransfer->IsReadOnly());
     63  }
     64 
     65  nsString mData;
     66  dom::DataTransfer* mDataTransfer;
     67  OwningNonNullStaticRangeArray mTargetRanges;
     68  // If this is set to true, dispatching event won't be cancelable.
     69  bool mNeverCancelable;
     70 };
     71 
     72 }  // namespace mozilla
     73 
     74 #endif  // #ifndef mozilla_InputEventOptions_h