Skip to content

Commit fbaf44e

Browse files
committed
Fixing react-native support and bump versions (1.8.8, 116)
1 parent 5a705a8 commit fbaf44e

File tree

9 files changed

+9008
-4386
lines changed

9 files changed

+9008
-4386
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ android {
1212
}
1313

1414
defaultConfig {
15-
versionCode 115
16-
versionName "1.8.7"
15+
versionCode 116
16+
versionName "1.8.8"
1717
multiDexEnabled true
1818

1919
buildConfigField 'String', 'LIGHTNING_VERSION_NAME', '"4.2.3.1"'

app/src/main/java/com/cliqz/browser/webview/CliqzMessages.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import android.support.annotation.NonNull;
44
import android.view.animation.Animation;
55

6-
import androidx.annotation.NonNull;
7-
86
import com.cliqz.utils.StringUtils;
97
import com.facebook.react.bridge.Promise;
108
import com.facebook.react.bridge.ReadableMap;

app/src/main/java/com/cliqz/jsengine/JSBridge.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.facebook.react.bridge.ReadableArray;
1414
import com.facebook.react.bridge.ReadableMap;
1515
import com.facebook.react.bridge.WritableMap;
16+
import com.facebook.react.module.annotations.ReactModule;
1617
import com.facebook.react.modules.core.DeviceEventManagerModule;
1718

1819
import java.util.HashMap;
@@ -30,8 +31,8 @@
3031

3132
/**
3233
* @author Sam Macbeth
33-
* @author Moaz Rashad
3434
*/
35+
@ReactModule(name = "JSBridge")
3536
public class JSBridge extends ReactContextBaseJavaModule {
3637

3738
private final ReactApplicationContext context;
@@ -52,7 +53,7 @@ public class JSBridge extends ReactContextBaseJavaModule {
5253
private final Map<String, List<WaitingAction>> awaitingRegistration =
5354
new HashMap<>();
5455

55-
private static final long ACTION_TIMEOUT = 200;
56+
private static final long ACTION_TIMEOUT = 1000;
5657

5758
private final Handler handler;
5859
private final Bus bus;

app/src/main/java/com/cliqz/jsengine/WebRequest.java

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.facebook.react.bridge.ReadableArray;
2121
import com.facebook.react.bridge.ReadableMap;
2222
import com.facebook.react.bridge.WritableMap;
23+
import com.facebook.react.module.annotations.ReactModule;
2324

2425
import java.io.ByteArrayInputStream;
2526
import java.io.IOException;
@@ -40,6 +41,7 @@
4041
/**
4142
* @author Sam Macbeth
4243
*/
44+
@ReactModule(name = "WebRequest")
4345
public class WebRequest extends ReactContextBaseJavaModule {
4446

4547
private final static String TAG = WebRequest.class.getSimpleName();
@@ -88,7 +90,40 @@ public void isWindowActive(int tabId, Promise promise) {
8890

8991
private boolean isTabActive(final int tabId) {
9092
Pair<Uri, WeakReference<WebView>> tuple = tabs.get(tabId);
91-
return tuple != null && tuple.second.get() != null;
93+
final boolean active = tuple != null && tuple.second.get() != null;
94+
95+
if (!active) {
96+
// send core:tab_close event to notify extension that tab is gone
97+
final WritableMap tab = Arguments.createMap();
98+
tab.putInt("tabId", tabId);
99+
engine.publishEvent("core:tab_close", tab);
100+
}
101+
return active;
102+
}
103+
104+
private JSBridge ensureBridge() {
105+
try {
106+
return engine.getBridge();
107+
} catch (EngineNotYetAvailable e) {
108+
Log.w("webrequest", "jsengine not yet loaded, waiting", e);
109+
try {
110+
Thread.sleep(250);
111+
} finally {
112+
return ensureBridge();
113+
}
114+
}
115+
}
116+
117+
private ReadableMap triggerWebRequest(final WritableMap requestInfo) throws EmptyResponseException {
118+
try {
119+
return ensureBridge().callAction("webRequest", requestInfo);
120+
} catch (ActionNotAvailable e) {
121+
try {
122+
Thread.sleep(200);
123+
} finally {
124+
return triggerWebRequest(requestInfo);
125+
}
126+
}
92127
}
93128

94129
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@@ -158,6 +193,7 @@ public WebResourceResponse shouldInterceptRequest(final WebView view, final WebR
158193
requestInfo.putString("originUrl", originUrl);
159194
requestInfo.putString("sourceUrl", originUrl);
160195
requestInfo.putString("frameUrl", originUrl);
196+
requestInfo.putString("tabUrl", originUrl);
161197
requestInfo.putInt("type", contentPolicyType);
162198

163199
final WritableMap requestHeaders = Arguments.createMap();
@@ -167,7 +203,7 @@ public WebResourceResponse shouldInterceptRequest(final WebView view, final WebR
167203
requestInfo.putMap("requestHeaders", requestHeaders);
168204

169205
try {
170-
final ReadableMap response = engine.getBridge().callAction("webRequest", requestInfo);
206+
final ReadableMap response = triggerWebRequest(requestInfo);
171207
final ReadableMap blockResponse = response.getMap("result");
172208
final String source = blockResponse.hasKey("source") ? blockResponse.getString("source") : "";
173209
// counter for tab
@@ -195,12 +231,8 @@ public WebResourceResponse shouldInterceptRequest(final WebView view, final WebR
195231
Log.d(TAG, "Modify request from: " + requestUrl.toString());
196232
return modifyRequest(source, request, newUrl, modifiedHeaders);
197233
}
198-
} catch (ActionNotAvailable e) {
199-
Log.w("webrequest", "jsengine not ready yet", e);
200234
} catch (EmptyResponseException e) {
201235
Log.w("webrequest", "jsengine timed out", e);
202-
} catch (EngineNotYetAvailable e) {
203-
Log.w("webrequest", "jsengine not yet loaded", e);
204236
} catch (NoSuchKeyException e) {
205237
Log.e("webrequest", "error in jsengine response", e);
206238
}

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ ext {
2121
minSdkVersion = 21
2222
buildToolsVersion = "28.0.3"
2323
supportLibVersion = "28.0.0"
24-
reactNativeVersion = "0.56.1"
24+
reactNativeVersion = "0.59.8"
2525
}
2626

2727
subprojects { subproject ->

0 commit comments

Comments
 (0)