зеркало из https://github.com/mozilla/gecko-dev.git
Bug 875545 - Make Telephony.h/cpp to use EventListenerAdded/Removed, r=bz
--HG-- rename : content/media/webaudio/test/test_audioParamSetCurveAtTimeZeroDuration.html => content/media/webaudio/test/test_audioParamSetCurveAtTime.html rename : mobile/android/base/Prompt.java => mobile/android/base/PromptService.java extra : rebase_source : fcd1f9bbecc8f9025ea0f27274d0f31d745bcf39
This commit is contained in:
Родитель
fd75086ad5
Коммит
62eb6225a2
|
@ -586,7 +586,13 @@ nsEventListenerManager::SetEventHandlerInternal(nsIScriptContext *aContext,
|
|||
MOZ_ASSERT(scriptListener,
|
||||
"How can we have an event handler with no nsIJSEventListener?");
|
||||
|
||||
bool same = scriptListener->GetHandler() == aHandler;
|
||||
// Possibly the same listener, but update still the context and scope.
|
||||
scriptListener->SetHandler(aHandler, aContext, aScopeObject);
|
||||
if (mTarget && !same) {
|
||||
mTarget->EventListenerRemoved(aName);
|
||||
mTarget->EventListenerAdded(aName);
|
||||
}
|
||||
}
|
||||
|
||||
if (NS_SUCCEEDED(rv) && ls) {
|
||||
|
|
|
@ -136,6 +136,12 @@ public:
|
|||
mBits = 0;
|
||||
}
|
||||
|
||||
bool operator==(const nsEventHandler& aOther) const
|
||||
{
|
||||
return
|
||||
Ptr() && aOther.Ptr() &&
|
||||
Ptr()->CallbackPreserveColor() == aOther.Ptr()->CallbackPreserveColor();
|
||||
}
|
||||
private:
|
||||
void operator=(const nsEventHandler&) MOZ_DELETE;
|
||||
|
||||
|
|
|
@ -388,175 +388,19 @@ Telephony::StopTone()
|
|||
}
|
||||
|
||||
NS_IMPL_EVENT_HANDLER(Telephony, incoming)
|
||||
NS_IMPL_EVENT_HANDLER(Telephony, callschanged)
|
||||
|
||||
NS_IMETHODIMP
|
||||
Telephony::GetOncallschanged(JSContext* aCx, JS::Value* aValue)
|
||||
{
|
||||
GetEventHandler(nsGkAtoms::oncallschanged, aCx, aValue);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
Telephony::SetOncallschanged(JSContext* aCx, const JS::Value& aValue)
|
||||
{
|
||||
JS::Value value;
|
||||
GetEventHandler(nsGkAtoms::oncallschanged, aCx, &value);
|
||||
if (aValue == value) {
|
||||
// The event handler is being set to itself.
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult rv = SetEventHandler(nsGkAtoms::oncallschanged, aCx, aValue);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
// Fire oncallschanged on the next tick if the calls array is ready.
|
||||
EnqueueEnumerationAck();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// nsIDOMEventTarget
|
||||
|
||||
NS_IMETHODIMP
|
||||
Telephony::AddEventListener(const nsAString& aType,
|
||||
nsIDOMEventListener* aListener, bool aUseCapture,
|
||||
bool aWantsUntrusted, uint8_t aArgc)
|
||||
{
|
||||
nsresult rv = nsDOMEventTargetHelper::AddEventListener(aType, aListener,
|
||||
aUseCapture,
|
||||
aWantsUntrusted,
|
||||
aArgc);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (aType.EqualsLiteral("callschanged")) {
|
||||
// Fire oncallschanged on the next tick if the calls array is ready.
|
||||
EnqueueEnumerationAck();
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
// EventTarget
|
||||
|
||||
void
|
||||
Telephony::AddEventListener(const nsAString& aType,
|
||||
nsIDOMEventListener* aListener, bool aUseCapture,
|
||||
const Nullable<bool>& aWantsUntrusted,
|
||||
ErrorResult& aRv)
|
||||
Telephony::EventListenerAdded(nsIAtom* aType)
|
||||
{
|
||||
nsDOMEventTargetHelper::AddEventListener(aType, aListener, aUseCapture,
|
||||
aWantsUntrusted, aRv);
|
||||
if (aRv.Failed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (aType.EqualsLiteral("callschanged")) {
|
||||
if (aType == nsGkAtoms::oncallschanged) {
|
||||
// Fire oncallschanged on the next tick if the calls array is ready.
|
||||
EnqueueEnumerationAck();
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
Telephony::AddSystemEventListener(const nsAString& aType,
|
||||
nsIDOMEventListener* aListener,
|
||||
bool aUseCapture, bool aWantsUntrusted,
|
||||
uint8_t aArgc)
|
||||
{
|
||||
nsresult rv = nsDOMEventTargetHelper::AddSystemEventListener(aType, aListener,
|
||||
aUseCapture,
|
||||
aWantsUntrusted,
|
||||
aArgc);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (aType.EqualsLiteral("callschanged")) {
|
||||
// Fire oncallschanged on the next tick if the calls array is ready.
|
||||
EnqueueEnumerationAck();
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
Telephony::RemoveEventListener(const nsAString& aType,
|
||||
nsIDOMEventListener* aListener,
|
||||
bool aUseCapture)
|
||||
{
|
||||
return nsDOMEventTargetHelper::RemoveEventListener(aType, aListener, false);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
Telephony::RemoveSystemEventListener(const nsAString& aType,
|
||||
nsIDOMEventListener* aListener,
|
||||
bool aUseCapture)
|
||||
{
|
||||
return nsDOMEventTargetHelper::RemoveSystemEventListener(aType, aListener,
|
||||
aUseCapture);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
Telephony::DispatchEvent(nsIDOMEvent* aEvt, bool* aRetval)
|
||||
{
|
||||
return nsDOMEventTargetHelper::DispatchEvent(aEvt, aRetval);
|
||||
}
|
||||
|
||||
EventTarget*
|
||||
Telephony::GetTargetForDOMEvent()
|
||||
{
|
||||
return nsDOMEventTargetHelper::GetTargetForDOMEvent();
|
||||
}
|
||||
|
||||
EventTarget*
|
||||
Telephony::GetTargetForEventTargetChain()
|
||||
{
|
||||
return nsDOMEventTargetHelper::GetTargetForEventTargetChain();
|
||||
}
|
||||
|
||||
nsresult
|
||||
Telephony::PreHandleEvent(nsEventChainPreVisitor& aVisitor)
|
||||
{
|
||||
return nsDOMEventTargetHelper::PreHandleEvent(aVisitor);
|
||||
}
|
||||
|
||||
nsresult
|
||||
Telephony::WillHandleEvent(nsEventChainPostVisitor& aVisitor)
|
||||
{
|
||||
return nsDOMEventTargetHelper::WillHandleEvent(aVisitor);
|
||||
}
|
||||
|
||||
nsresult
|
||||
Telephony::PostHandleEvent(nsEventChainPostVisitor& aVisitor)
|
||||
{
|
||||
return nsDOMEventTargetHelper::PostHandleEvent(aVisitor);
|
||||
}
|
||||
|
||||
nsresult
|
||||
Telephony::DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
|
||||
nsPresContext* aPresContext,
|
||||
nsEventStatus* aEventStatus)
|
||||
{
|
||||
return nsDOMEventTargetHelper::DispatchDOMEvent(aEvent, aDOMEvent,
|
||||
aPresContext,
|
||||
aEventStatus);
|
||||
}
|
||||
|
||||
nsEventListenerManager*
|
||||
Telephony::GetListenerManager(bool aMayCreate)
|
||||
{
|
||||
return nsDOMEventTargetHelper::GetListenerManager(aMayCreate);
|
||||
}
|
||||
|
||||
nsIScriptContext*
|
||||
Telephony::GetContextForEventHandlers(nsresult* aRv)
|
||||
{
|
||||
return nsDOMEventTargetHelper::GetContextForEventHandlers(aRv);
|
||||
}
|
||||
|
||||
JSContext*
|
||||
Telephony::GetJSContextForEventHandlers()
|
||||
{
|
||||
return nsDOMEventTargetHelper::GetJSContextForEventHandlers();
|
||||
}
|
||||
|
||||
// nsITelephonyListener
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
|
|
@ -50,19 +50,11 @@ public:
|
|||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_NSIDOMTELEPHONY
|
||||
NS_DECL_NSITELEPHONYLISTENER
|
||||
|
||||
NS_DECL_NSIDOMEVENTTARGET
|
||||
NS_REALLY_FORWARD_NSIDOMEVENTTARGET(nsDOMEventTargetHelper)
|
||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(
|
||||
Telephony,
|
||||
nsDOMEventTargetHelper)
|
||||
|
||||
using nsDOMEventTargetHelper::RemoveEventListener;
|
||||
virtual void AddEventListener(const nsAString& aType,
|
||||
nsIDOMEventListener* aListener,
|
||||
bool aUseCapture,
|
||||
const mozilla::dom::Nullable<bool>& aWantsUntrusted,
|
||||
mozilla::ErrorResult& aRv) MOZ_OVERRIDE;
|
||||
|
||||
static already_AddRefed<Telephony>
|
||||
Create(nsPIDOMWindow* aOwner, nsITelephonyProvider* aProvider);
|
||||
|
||||
|
@ -96,6 +88,8 @@ public:
|
|||
return mProvider;
|
||||
}
|
||||
|
||||
virtual void EventListenerAdded(nsIAtom* aType) MOZ_OVERRIDE;
|
||||
|
||||
private:
|
||||
Telephony();
|
||||
~Telephony();
|
||||
|
|
Загрузка…
Ссылка в новой задаче