Bug 1287706 part 4 - Unify B2G device-type events to be handled in the same way as others device-type events. r?smaug
MozReview-Commit-ID: JHudlK595CV
--- a/dom/events/EventListenerManager.cpp
+++ b/dom/events/EventListenerManager.cpp
@@ -343,27 +343,21 @@ EventListenerManager::AddEventListenerIn
} else if (aTypeAtom == nsGkAtoms::ondevicemotion) {
EnableDevice(eDeviceMotion);
#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK)
} else if (aTypeAtom == nsGkAtoms::onorientationchange) {
EnableDevice(eOrientationChange);
#endif
#ifdef MOZ_B2G
} else if (aTypeAtom == nsGkAtoms::onmoztimechange) {
- if (nsCOMPtr<nsPIDOMWindowInner> window = GetTargetAsInnerWindow()) {
- window->EnableTimeChangeNotifications();
- }
+ EnableDevice(eTimeChange);
} else if (aTypeAtom == nsGkAtoms::onmoznetworkupload) {
- if (nsCOMPtr<nsPIDOMWindowInner> window = GetTargetAsInnerWindow()) {
- window->EnableNetworkEvent(eNetworkUpload);
- }
+ EnableDevice(eNetworkUpload);
} else if (aTypeAtom == nsGkAtoms::onmoznetworkdownload) {
- if (nsCOMPtr<nsPIDOMWindowInner> window = GetTargetAsInnerWindow()) {
- window->EnableNetworkEvent(eNetworkDownload);
- }
+ EnableDevice(eNetworkDownload);
#endif // MOZ_B2G
} else if (aTypeAtom == nsGkAtoms::ontouchstart ||
aTypeAtom == nsGkAtoms::ontouchend ||
aTypeAtom == nsGkAtoms::ontouchmove ||
aTypeAtom == nsGkAtoms::ontouchcancel) {
mMayHaveTouchEventListener = true;
nsPIDOMWindowInner* window = GetInnerWindowForTarget();
// we don't want touchevent listeners added by scrollbars to flip this flag
@@ -481,16 +475,21 @@ EventListenerManager::IsDeviceType(Event
case eAbsoluteDeviceOrientation:
case eDeviceMotion:
case eDeviceLight:
case eDeviceProximity:
case eUserProximity:
#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK)
case eOrientationChange:
#endif
+#ifdef MOZ_B2G
+ case eTimeChange:
+ case eNetworkUpload:
+ case eNetworkDownload:
+#endif
return true;
default:
break;
}
return false;
}
void
@@ -531,16 +530,25 @@ EventListenerManager::EnableDevice(Event
window->EnableDeviceSensor(SENSOR_LINEAR_ACCELERATION);
window->EnableDeviceSensor(SENSOR_GYROSCOPE);
break;
#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK)
case eOrientationChange:
window->EnableOrientationChangeListener();
break;
#endif
+#ifdef MOZ_B2G
+ case eTimeChange:
+ window->EnableTimeChangeNotifications();
+ break;
+ case eNetworkUpload:
+ case eNetworkDownload:
+ window->EnableNetworkEvent(aEventMessage);
+ break;
+#endif
default:
NS_WARNING("Enabling an unknown device sensor.");
break;
}
}
void
EventListenerManager::DisableDevice(EventMessage aEventMessage)
@@ -577,16 +585,25 @@ EventListenerManager::DisableDevice(Even
case eDeviceLight:
window->DisableDeviceSensor(SENSOR_LIGHT);
break;
#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK)
case eOrientationChange:
window->DisableOrientationChangeListener();
break;
#endif
+#ifdef MOZ_B2G
+ case eTimeChange:
+ window->DisableTimeChangeNotifications();
+ break;
+ case eNetworkUpload:
+ case eNetworkDownload:
+ window->DisableNetworkEvent(aEventMessage);
+ break;
+#endif // MOZ_B2G
default:
NS_WARNING("Disabling an unknown device sensor.");
break;
}
}
void
EventListenerManager::RemoveEventListenerInternal(
@@ -601,21 +618,16 @@ EventListenerManager::RemoveEventListene
return;
}
Listener* listener;
uint32_t count = mListeners.Length();
uint32_t typeCount = 0;
bool deviceType = IsDeviceType(aEventMessage);
-#ifdef MOZ_B2G
- bool timeChangeEvent = (aEventMessage == eTimeChange);
- bool networkEvent = (aEventMessage == eNetworkUpload ||
- aEventMessage == eNetworkDownload);
-#endif // MOZ_B2G
for (uint32_t i = 0; i < count; ++i) {
listener = &mListeners.ElementAt(i);
if (EVENT_TYPE_EQUALS(listener, aEventMessage, aUserType, aTypeString,
aAllEvents)) {
++typeCount;
if (listener->mListener == aListenerHolder &&
listener->mFlags.EqualsForRemoval(aFlags)) {
@@ -627,40 +639,26 @@ EventListenerManager::RemoveEventListene
if (mTarget && aUserType) {
mTarget->EventListenerRemoved(aUserType);
}
if (mIsMainThreadELM && mTarget) {
EventListenerService::NotifyAboutMainThreadListenerChange(mTarget,
aUserType);
}
- if (!deviceType
-#ifdef MOZ_B2G
- && !timeChangeEvent && !networkEvent
-#endif // MOZ_B2G
- ) {
+ if (!deviceType) {
return;
}
--typeCount;
}
}
}
if (!aAllEvents && deviceType && typeCount == 0) {
DisableDevice(aEventMessage);
-#ifdef MOZ_B2G
- } else if (timeChangeEvent && typeCount == 0) {
- if (nsCOMPtr<nsPIDOMWindowInner> window = GetTargetAsInnerWindow()) {
- window->DisableTimeChangeNotifications();
- }
- } else if (!aAllEvents && networkEvent && typeCount == 0) {
- if (nsCOMPtr<nsPIDOMWindowInner> window = GetTargetAsInnerWindow()) {
- window->DisableNetworkEvent(aEventMessage);
- }
-#endif // MOZ_B2G
}
}
bool
EventListenerManager::ListenerCanHandle(const Listener* aListener,
const WidgetEvent* aEvent,
EventMessage aEventMessage) const