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/EventListenerManager.h"
7 #include "mozilla/dom/EventTarget.h"
8 #include "nsThreadUtils.h"
14 EventTarget::RemoveEventListener(const nsAString
& aType
,
15 EventListener
* aListener
,
19 EventListenerManager
* elm
= GetExistingListenerManager();
21 elm
->RemoveEventListener(aType
, aListener
, aUseCapture
);
26 EventTarget::GetEventHandler(nsIAtom
* aType
, const nsAString
& aTypeString
)
28 EventListenerManager
* elm
= GetExistingListenerManager();
29 return elm
? elm
->GetEventHandler(aType
, aTypeString
) : nullptr;
33 EventTarget::SetEventHandler(const nsAString
& aType
,
34 EventHandlerNonNull
* aHandler
,
37 if (!StringBeginsWith(aType
, NS_LITERAL_STRING("on"))) {
38 aRv
.Throw(NS_ERROR_INVALID_ARG
);
41 if (NS_IsMainThread()) {
42 nsCOMPtr
<nsIAtom
> type
= do_GetAtom(aType
);
43 SetEventHandler(type
, EmptyString(), aHandler
);
46 SetEventHandler(nullptr,
47 Substring(aType
, 2), // Remove "on"
52 EventTarget::SetEventHandler(nsIAtom
* aType
, const nsAString
& aTypeString
,
53 EventHandlerNonNull
* aHandler
)
55 GetOrCreateListenerManager()->SetEventHandler(aType
, aTypeString
, aHandler
);
59 } // namespace mozilla