Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim:set ts=2 sw=2 sts=2 et cindent: */
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/. */
7 #include "mozilla/dom/XULCommandEvent.h"
8 #include "prtime.h"
10 namespace mozilla {
11 namespace dom {
13 XULCommandEvent::XULCommandEvent(EventTarget* aOwner,
14 nsPresContext* aPresContext,
15 WidgetInputEvent* aEvent)
16 : UIEvent(aOwner, aPresContext,
17 aEvent ? aEvent : new WidgetInputEvent(false, 0, nullptr))
18 {
19 if (aEvent) {
20 mEventIsInternal = false;
21 }
22 else {
23 mEventIsInternal = true;
24 mEvent->time = PR_Now();
25 }
26 }
28 NS_IMPL_ADDREF_INHERITED(XULCommandEvent, UIEvent)
29 NS_IMPL_RELEASE_INHERITED(XULCommandEvent, UIEvent)
31 NS_IMPL_CYCLE_COLLECTION_INHERITED(XULCommandEvent, UIEvent,
32 mSourceEvent)
34 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(XULCommandEvent)
35 NS_INTERFACE_MAP_ENTRY(nsIDOMXULCommandEvent)
36 NS_INTERFACE_MAP_END_INHERITING(UIEvent)
38 bool
39 XULCommandEvent::AltKey()
40 {
41 return mEvent->AsInputEvent()->IsAlt();
42 }
44 NS_IMETHODIMP
45 XULCommandEvent::GetAltKey(bool* aIsDown)
46 {
47 NS_ENSURE_ARG_POINTER(aIsDown);
48 *aIsDown = AltKey();
49 return NS_OK;
50 }
52 bool
53 XULCommandEvent::CtrlKey()
54 {
55 return mEvent->AsInputEvent()->IsControl();
56 }
58 NS_IMETHODIMP
59 XULCommandEvent::GetCtrlKey(bool* aIsDown)
60 {
61 NS_ENSURE_ARG_POINTER(aIsDown);
62 *aIsDown = CtrlKey();
63 return NS_OK;
64 }
66 bool
67 XULCommandEvent::ShiftKey()
68 {
69 return mEvent->AsInputEvent()->IsShift();
70 }
72 NS_IMETHODIMP
73 XULCommandEvent::GetShiftKey(bool* aIsDown)
74 {
75 NS_ENSURE_ARG_POINTER(aIsDown);
76 *aIsDown = ShiftKey();
77 return NS_OK;
78 }
80 bool
81 XULCommandEvent::MetaKey()
82 {
83 return mEvent->AsInputEvent()->IsMeta();
84 }
86 NS_IMETHODIMP
87 XULCommandEvent::GetMetaKey(bool* aIsDown)
88 {
89 NS_ENSURE_ARG_POINTER(aIsDown);
90 *aIsDown = MetaKey();
91 return NS_OK;
92 }
94 NS_IMETHODIMP
95 XULCommandEvent::GetSourceEvent(nsIDOMEvent** aSourceEvent)
96 {
97 NS_ENSURE_ARG_POINTER(aSourceEvent);
98 nsCOMPtr<nsIDOMEvent> event = GetSourceEvent();
99 event.forget(aSourceEvent);
100 return NS_OK;
101 }
103 NS_IMETHODIMP
104 XULCommandEvent::InitCommandEvent(const nsAString& aType,
105 bool aCanBubble,
106 bool aCancelable,
107 nsIDOMWindow* aView,
108 int32_t aDetail,
109 bool aCtrlKey,
110 bool aAltKey,
111 bool aShiftKey,
112 bool aMetaKey,
113 nsIDOMEvent* aSourceEvent)
114 {
115 nsresult rv = UIEvent::InitUIEvent(aType, aCanBubble, aCancelable,
116 aView, aDetail);
117 NS_ENSURE_SUCCESS(rv, rv);
119 mEvent->AsInputEvent()->InitBasicModifiers(aCtrlKey, aAltKey,
120 aShiftKey, aMetaKey);
121 mSourceEvent = aSourceEvent;
123 return NS_OK;
124 }
126 } // namespace dom
127 } // namespace mozilla
129 using namespace mozilla;
130 using namespace mozilla::dom;
132 nsresult
133 NS_NewDOMXULCommandEvent(nsIDOMEvent** aInstancePtrResult,
134 EventTarget* aOwner,
135 nsPresContext* aPresContext,
136 WidgetInputEvent* aEvent)
137 {
138 XULCommandEvent* it = new XULCommandEvent(aOwner, aPresContext, aEvent);
139 NS_ADDREF(it);
140 *aInstancePtrResult = static_cast<Event*>(it);
141 return NS_OK;
142 }