зеркало из 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,
|
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();
|
||||||
|
|
Загрузка…
Ссылка в новой задаче