summaryrefslogtreecommitdiffstats
path: root/dom/events/BeforeAfterKeyboardEvent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dom/events/BeforeAfterKeyboardEvent.cpp')
-rw-r--r--dom/events/BeforeAfterKeyboardEvent.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/dom/events/BeforeAfterKeyboardEvent.cpp b/dom/events/BeforeAfterKeyboardEvent.cpp
new file mode 100644
index 000000000..c94227755
--- /dev/null
+++ b/dom/events/BeforeAfterKeyboardEvent.cpp
@@ -0,0 +1,92 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* 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/. */
+
+#include "mozilla/dom/BeforeAfterKeyboardEvent.h"
+#include "mozilla/TextEvents.h"
+#include "prtime.h"
+
+namespace mozilla {
+namespace dom {
+
+BeforeAfterKeyboardEvent::BeforeAfterKeyboardEvent(
+ EventTarget* aOwner,
+ nsPresContext* aPresContext,
+ InternalBeforeAfterKeyboardEvent* aEvent)
+ : KeyboardEvent(aOwner, aPresContext,
+ aEvent ? aEvent :
+ new InternalBeforeAfterKeyboardEvent(false,
+ eVoidEvent,
+ nullptr))
+{
+ MOZ_ASSERT(mEvent->mClass == eBeforeAfterKeyboardEventClass,
+ "event type mismatch eBeforeAfterKeyboardEventClass");
+
+ if (!aEvent) {
+ mEventIsInternal = true;
+ mEvent->mTime = PR_Now();
+ }
+}
+
+// static
+already_AddRefed<BeforeAfterKeyboardEvent>
+BeforeAfterKeyboardEvent::Constructor(
+ EventTarget* aOwner,
+ const nsAString& aType,
+ const BeforeAfterKeyboardEventInit& aParam)
+{
+ RefPtr<BeforeAfterKeyboardEvent> event =
+ new BeforeAfterKeyboardEvent(aOwner, nullptr, nullptr);
+ ErrorResult rv;
+ event->InitWithKeyboardEventInit(aOwner, aType, aParam, rv);
+ if (NS_WARN_IF(rv.Failed())) {
+ rv.SuppressException();
+ }
+
+ event->mEvent->AsBeforeAfterKeyboardEvent()->mEmbeddedCancelled =
+ aParam.mEmbeddedCancelled;
+
+ return event.forget();
+}
+
+// static
+already_AddRefed<BeforeAfterKeyboardEvent>
+BeforeAfterKeyboardEvent::Constructor(
+ const GlobalObject& aGlobal,
+ const nsAString& aType,
+ const BeforeAfterKeyboardEventInit& aParam,
+ ErrorResult& aRv)
+{
+ nsCOMPtr<EventTarget> owner = do_QueryInterface(aGlobal.GetAsSupports());
+ return Constructor(owner, aType, aParam);
+}
+
+Nullable<bool>
+BeforeAfterKeyboardEvent::GetEmbeddedCancelled()
+{
+ nsAutoString type;
+ GetType(type);
+ if (type.EqualsLiteral("mozbrowserafterkeydown") ||
+ type.EqualsLiteral("mozbrowserafterkeyup")) {
+ return mEvent->AsBeforeAfterKeyboardEvent()->mEmbeddedCancelled;
+ }
+ return Nullable<bool>();
+}
+
+} // namespace dom
+} // namespace mozilla
+
+using namespace mozilla;
+using namespace mozilla::dom;
+
+already_AddRefed<BeforeAfterKeyboardEvent>
+NS_NewDOMBeforeAfterKeyboardEvent(EventTarget* aOwner,
+ nsPresContext* aPresContext,
+ InternalBeforeAfterKeyboardEvent* aEvent)
+{
+ RefPtr<BeforeAfterKeyboardEvent> it =
+ new BeforeAfterKeyboardEvent(aOwner, aPresContext, aEvent);
+ return it.forget();
+}