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:
Olli Pettay 2013-05-24 20:22:20 +03:00
Родитель fd75086ad5
Коммит 62eb6225a2
4 изменённых файлов: 19 добавлений и 169 удалений

Просмотреть файл

@ -586,7 +586,13 @@ nsEventListenerManager::SetEventHandlerInternal(nsIScriptContext *aContext,
MOZ_ASSERT(scriptListener, MOZ_ASSERT(scriptListener,
"How can we have an event handler with no nsIJSEventListener?"); "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); scriptListener->SetHandler(aHandler, aContext, aScopeObject);
if (mTarget && !same) {
mTarget->EventListenerRemoved(aName);
mTarget->EventListenerAdded(aName);
}
} }
if (NS_SUCCEEDED(rv) && ls) { if (NS_SUCCEEDED(rv) && ls) {

Просмотреть файл

@ -136,6 +136,12 @@ public:
mBits = 0; mBits = 0;
} }
bool operator==(const nsEventHandler& aOther) const
{
return
Ptr() && aOther.Ptr() &&
Ptr()->CallbackPreserveColor() == aOther.Ptr()->CallbackPreserveColor();
}
private: private:
void operator=(const nsEventHandler&) MOZ_DELETE; void operator=(const nsEventHandler&) MOZ_DELETE;

Просмотреть файл

@ -388,175 +388,19 @@ Telephony::StopTone()
} }
NS_IMPL_EVENT_HANDLER(Telephony, incoming) NS_IMPL_EVENT_HANDLER(Telephony, incoming)
NS_IMPL_EVENT_HANDLER(Telephony, callschanged)
NS_IMETHODIMP // EventTarget
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;
}
void void
Telephony::AddEventListener(const nsAString& aType, Telephony::EventListenerAdded(nsIAtom* aType)
nsIDOMEventListener* aListener, bool aUseCapture,
const Nullable<bool>& aWantsUntrusted,
ErrorResult& aRv)
{ {
nsDOMEventTargetHelper::AddEventListener(aType, aListener, aUseCapture, if (aType == nsGkAtoms::oncallschanged) {
aWantsUntrusted, aRv);
if (aRv.Failed()) {
return;
}
if (aType.EqualsLiteral("callschanged")) {
// Fire oncallschanged on the next tick if the calls array is ready. // Fire oncallschanged on the next tick if the calls array is ready.
EnqueueEnumerationAck(); 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 // nsITelephonyListener
NS_IMETHODIMP NS_IMETHODIMP

Просмотреть файл

@ -50,19 +50,11 @@ public:
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIDOMTELEPHONY NS_DECL_NSIDOMTELEPHONY
NS_DECL_NSITELEPHONYLISTENER NS_DECL_NSITELEPHONYLISTENER
NS_REALLY_FORWARD_NSIDOMEVENTTARGET(nsDOMEventTargetHelper)
NS_DECL_NSIDOMEVENTTARGET
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED( NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(
Telephony, Telephony,
nsDOMEventTargetHelper) 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> static already_AddRefed<Telephony>
Create(nsPIDOMWindow* aOwner, nsITelephonyProvider* aProvider); Create(nsPIDOMWindow* aOwner, nsITelephonyProvider* aProvider);
@ -96,6 +88,8 @@ public:
return mProvider; return mProvider;
} }
virtual void EventListenerAdded(nsIAtom* aType) MOZ_OVERRIDE;
private: private:
Telephony(); Telephony();
~Telephony(); ~Telephony();