Consolidate event dispatch to one method that gets the context and event dispatcher

Reviewed By: andreicoman11

Differential Revision: D2827596

fb-gh-sync-id: 3971237aa5eb08934a341e1486c7130381252c99
This commit is contained in:
Dave Miller 2016-01-14 04:30:04 -08:00 коммит произвёл facebook-github-bot-7
Родитель 393adacfa6
Коммит f8c384ffdd
1 изменённых файлов: 18 добавлений и 19 удалений

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

@ -34,6 +34,7 @@ import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.events.Event;
import com.facebook.react.uimanager.events.EventDispatcher;
/**
@ -94,10 +95,8 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
super.onPageStarted(webView, url, favicon);
mLastLoadFailed = false;
ReactContext reactContext = (ReactContext) ((ReactWebView) webView).getContext();
EventDispatcher eventDispatcher =
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher();
eventDispatcher.dispatchEvent(
dispatchEvent(
webView,
new TopLoadingStartEvent(
webView.getId(),
SystemClock.uptimeMillis(),
@ -117,14 +116,12 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
// Android WebView does it in the opposite way, so we need to simulate that behavior
emitFinishEvent(webView, failingUrl);
ReactContext reactContext = (ReactContext) ((ReactWebView) webView).getContext();
WritableMap eventData = createWebViewEvent(webView, failingUrl);
eventData.putDouble("code", errorCode);
eventData.putString("description", description);
EventDispatcher eventDispatcher =
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher();
eventDispatcher.dispatchEvent(
dispatchEvent(
webView,
new TopLoadingErrorEvent(webView.getId(), SystemClock.uptimeMillis(), eventData));
}
@ -132,10 +129,8 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
public void doUpdateVisitedHistory(WebView webView, String url, boolean isReload) {
super.doUpdateVisitedHistory(webView, url, isReload);
ReactContext reactContext = (ReactContext) webView.getContext();
EventDispatcher eventDispatcher =
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher();
eventDispatcher.dispatchEvent(
dispatchEvent(
webView,
new TopLoadingStartEvent(
webView.getId(),
SystemClock.uptimeMillis(),
@ -143,17 +138,21 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
}
private void emitFinishEvent(WebView webView, String url) {
ReactContext reactContext = (ReactContext) webView.getContext();
EventDispatcher eventDispatcher =
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher();
eventDispatcher.dispatchEvent(
dispatchEvent(
webView,
new TopLoadingFinishEvent(
webView.getId(),
SystemClock.uptimeMillis(),
createWebViewEvent(webView, url)));
}
private static void dispatchEvent(WebView webView, Event event) {
ReactContext reactContext = (ReactContext) webView.getContext();
EventDispatcher eventDispatcher =
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher();
eventDispatcher.dispatchEvent(event);
}
private WritableMap createWebViewEvent(WebView webView, String url) {
WritableMap event = Arguments.createMap();
event.putDouble("target", webView.getId());