From f8c384ffddc79b9590c5c6cddbc27ee2057e87fe Mon Sep 17 00:00:00 2001 From: Dave Miller Date: Thu, 14 Jan 2016 04:30:04 -0800 Subject: [PATCH] Consolidate event dispatch to one method that gets the context and event dispatcher Reviewed By: andreicoman11 Differential Revision: D2827596 fb-gh-sync-id: 3971237aa5eb08934a341e1486c7130381252c99 --- .../views/webview/ReactWebViewManager.java | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/webview/ReactWebViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/webview/ReactWebViewManager.java index bb259d65b..7e756c782 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/webview/ReactWebViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/webview/ReactWebViewManager.java @@ -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 { 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 { // 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,26 +129,28 @@ public class ReactWebViewManager extends SimpleViewManager { 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(), + createWebViewEvent(webView, url))); + } + + private void emitFinishEvent(WebView webView, String url) { + dispatchEvent( + webView, + new TopLoadingFinishEvent( webView.getId(), SystemClock.uptimeMillis(), createWebViewEvent(webView, url))); } - private void emitFinishEvent(WebView webView, String url) { + private static void dispatchEvent(WebView webView, Event event) { ReactContext reactContext = (ReactContext) webView.getContext(); - EventDispatcher eventDispatcher = reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher(); - eventDispatcher.dispatchEvent( - new TopLoadingFinishEvent( - webView.getId(), - SystemClock.uptimeMillis(), - createWebViewEvent(webView, url))); + eventDispatcher.dispatchEvent(event); } private WritableMap createWebViewEvent(WebView webView, String url) {