1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #include "mozilla/ContentEvents.h"
7 #include "mozilla/dom/TimeEvent.h"
8 #include "nsIDocShell.h"
9 #include "nsIInterfaceRequestorUtils.h"
10 #include "nsPresContext.h"
15 TimeEvent::TimeEvent(EventTarget
* aOwner
,
16 nsPresContext
* aPresContext
,
17 InternalSMILTimeEvent
* aEvent
)
18 : Event(aOwner
, aPresContext
,
19 aEvent
? aEvent
: new InternalSMILTimeEvent(false, 0))
20 , mDetail(mEvent
->AsSMILTimeEvent()->detail
)
24 mEventIsInternal
= false;
26 mEventIsInternal
= true;
30 nsCOMPtr
<nsIDocShell
> docShell
= mPresContext
->GetDocShell();
32 mView
= docShell
->GetWindow();
37 NS_IMPL_CYCLE_COLLECTION_INHERITED(TimeEvent
, Event
,
40 NS_IMPL_ADDREF_INHERITED(TimeEvent
, Event
)
41 NS_IMPL_RELEASE_INHERITED(TimeEvent
, Event
)
43 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(TimeEvent
)
44 NS_INTERFACE_MAP_ENTRY(nsIDOMTimeEvent
)
45 NS_INTERFACE_MAP_END_INHERITING(Event
)
48 TimeEvent::GetView(nsIDOMWindow
** aView
)
56 TimeEvent::GetDetail(int32_t* aDetail
)
63 TimeEvent::InitTimeEvent(const nsAString
& aTypeArg
,
64 nsIDOMWindow
* aViewArg
,
67 nsresult rv
= Event::InitEvent(aTypeArg
, false /*doesn't bubble*/,
68 false /*can't cancel*/);
69 NS_ENSURE_SUCCESS(rv
, rv
);
78 } // namespace mozilla
80 using namespace mozilla
;
81 using namespace mozilla::dom
;
84 NS_NewDOMTimeEvent(nsIDOMEvent
** aInstancePtrResult
,
86 nsPresContext
* aPresContext
,
87 InternalSMILTimeEvent
* aEvent
)
89 TimeEvent
* it
= new TimeEvent(aOwner
, aPresContext
, aEvent
);
91 *aInstancePtrResult
= static_cast<Event
*>(it
);