react-native/React/Modules
Nick Lockwood 516bf7bd94 Fixed NativeEventListener deregistration
Summary:
The `EmitterSubscription.remove()` method was previously calling `this.subscriber.removeSubscription(this)` directly, bypassing the mechanism in `NativeEventEmitter` that keeps track of the number of subscriptions.

This meant that native event modules (subclasses of `RCTEventEmitter`) would keep sending events even after all the listeners had been removed. This wasn't a huge overhead, since these modules are singletons and only send one message over the bridge per event, regardless of the number of listeners, but it's still undesirable.

This fixes the problem by routing the `EmitterSubscription.remove()` method through the `EventEmitter` so that `NativeEventEmitter` can apply the additional native calls.

I've also improved the architecture so that each `NativeEventEmitter` uses its own `EventEmitter`, but they currently all still share the same `EventSubscriptionVendor` so that legacy code which registers events via `RCTDeviceEventEmitter` still works.

Reviewed By: vjeux

Differential Revision: D3292361

fbshipit-source-id: d60e881d50351523d2112473703bea826641cdef
2016-05-16 04:13:56 -07:00
..
RCTAccessibilityManager.h Replaced RCTSparseArray with NSDictionary 2015-11-14 10:28:28 -08:00
RCTAccessibilityManager.m Refactored module access to allow for lazy loading 2015-11-25 04:49:45 -08:00
RCTAlertManager.h Remove an existing UIAlertViews when invalidating the RCTAlertManager 2015-09-18 08:45:27 -07:00
RCTAlertManager.m Actually use the 'defaultValue' property in AlertViewIOS. 2016-03-15 04:26:25 -07:00
RCTAppState.h [ReactNative] s/ReactKit/React/g 2015-03-26 02:42:24 -08:00
RCTAppState.m Move setBridge: off main thread 2016-05-03 09:09:21 -07:00
RCTAsyncLocalStorage.h Added lightweight generic annotations 2015-11-03 14:49:30 -08:00
RCTAsyncLocalStorage.m Increase RN devtools retry timeout 2016-04-01 07:02:25 -07:00
RCTClipboard.h add Clipboard component for ios and android 2015-12-09 10:04:21 -08:00
RCTClipboard.m Minor fixes to clipboard and Linking to remove TODOs 2016-02-10 12:25:51 -08:00
RCTDevLoadingView.h [RCTDevLoadingView] Add ability to disable during development. 2015-09-04 03:46:06 -08:00
RCTDevLoadingView.m Added explicit init to observer modules 2016-05-04 07:07:24 -07:00
RCTDevMenu.h Refactor hot loading implementation on iOS 2016-01-04 10:40:32 -08:00
RCTDevMenu.m Change the Debug Menu string from Debug/Stop JS Remotely to Debug/Stop Remote JS 2016-05-03 20:47:23 -07:00
RCTEventEmitter.h Added native event emitter 2016-05-11 06:27:29 -07:00
RCTEventEmitter.m Fixed NativeEventListener deregistration 2016-05-16 04:13:56 -07:00
RCTExceptionsManager.h Refactored module access to allow for lazy loading 2015-11-25 04:49:45 -08:00
RCTExceptionsManager.m Replaced RegExp method parser with recursive descent 2015-12-10 10:12:29 -08:00
RCTKeyboardObserver.h Added native event emitter 2016-05-11 06:27:29 -07:00
RCTKeyboardObserver.m Added native event emitter 2016-05-11 06:27:29 -07:00
RCTRedBox.h Added lightweight generic annotations 2015-11-03 14:49:30 -08:00
RCTRedBox.m Fixed unable to open red box stack frame in editor when running on iOS device 2016-04-28 11:39:18 -07:00
RCTSourceCode.h Use JSStringCreateWithUTF8CString and skip NSString decoding when loading the bundle 2015-10-16 08:11:25 -07:00
RCTSourceCode.m Improve error handling in require-unbundle 2016-04-22 06:18:26 -07:00
RCTStatusBarManager.h Added native event emitter 2016-05-11 06:27:29 -07:00
RCTStatusBarManager.m Added native event emitter 2016-05-11 06:27:29 -07:00
RCTTiming.h [ReactNative] Use a single DisplayLink held by the bridge 2015-04-15 07:07:48 -08:00
RCTTiming.m Don't warn when jsSchedulingOverhead is negative 2016-03-04 17:30:06 -08:00
RCTUIManager.h Fix RCTProfileHookModules instantiating all modules 2016-05-04 06:55:30 -07:00
RCTUIManager.m Add a bunch more systrace logging 2016-05-13 17:29:00 -07:00