@capgo/capacitor-inappbrowser 8.6.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CapgoCapacitorInappbrowser.podspec +17 -0
- package/LICENSE +373 -0
- package/Package.swift +28 -0
- package/README.md +1610 -0
- package/android/build.gradle +64 -0
- package/android/src/main/AndroidManifest.xml +22 -0
- package/android/src/main/assets/proxy-bridge.js +586 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/ActiveWebViewSupport.java +10 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/CustomSchemeInterceptSupport.java +51 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/InAppBrowserPlugin.java +1820 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/MobileAppBridgeScript.java +122 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/NativeProxyRule.java +128 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/Options.java +725 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/ProxyBridge.java +93 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/ProxyRequestSupport.java +869 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/ProxyResponseRouting.java +35 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/SafeAreaInsetsSupport.java +28 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/WebViewCallbacks.java +42 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/WebViewDialog.java +6022 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/WebViewPermissionSupport.java +58 -0
- package/android/src/main/res/.gitkeep +0 -0
- package/android/src/main/res/drawable/arrow_back_disabled.xml +9 -0
- package/android/src/main/res/drawable/arrow_back_enabled.xml +9 -0
- package/android/src/main/res/drawable/arrow_forward_disabled.xml +9 -0
- package/android/src/main/res/drawable/arrow_forward_enabled.xml +9 -0
- package/android/src/main/res/drawable/ic_clear_24px.xml +9 -0
- package/android/src/main/res/drawable/ic_refresh.xml +9 -0
- package/android/src/main/res/drawable/ic_share.xml +10 -0
- package/android/src/main/res/layout/activity_browser.xml +32 -0
- package/android/src/main/res/layout/bridge_layout_main.xml +15 -0
- package/android/src/main/res/layout/content_browser.xml +17 -0
- package/android/src/main/res/layout/tool_bar.xml +87 -0
- package/android/src/main/res/values/browser_theme.xml +3 -0
- package/android/src/main/res/values/colors.xml +5 -0
- package/android/src/main/res/values/dimens.xml +3 -0
- package/android/src/main/res/values/strings.xml +13 -0
- package/android/src/main/res/values/styles.xml +4 -0
- package/android/src/main/res/values/themes.xml +27 -0
- package/android/src/main/res/xml/file_paths.xml +14 -0
- package/dist/docs.json +3200 -0
- package/dist/esm/definitions.d.ts +1507 -0
- package/dist/esm/definitions.js +40 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +102 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/web.d.ts +47 -0
- package/dist/esm/web.js +120 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/plugin.cjs.js +270 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.js +273 -0
- package/dist/plugin.js.map +1 -0
- package/ios/Sources/InAppBrowserPlugin/Enums.swift +65 -0
- package/ios/Sources/InAppBrowserPlugin/InAppBrowserPlugin.swift +1932 -0
- package/ios/Sources/InAppBrowserPlugin/ProxySchemeHandler.swift +1185 -0
- package/ios/Sources/InAppBrowserPlugin/WKWebView+SchemeHandling.swift +43 -0
- package/ios/Sources/InAppBrowserPlugin/WKWebViewController.swift +3032 -0
- package/package.json +139 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
package ee.forgr.capacitor_inappbrowser;
|
|
2
|
+
|
|
3
|
+
import android.webkit.JavascriptInterface;
|
|
4
|
+
import java.util.concurrent.ConcurrentHashMap;
|
|
5
|
+
import java.util.concurrent.ConcurrentLinkedQueue;
|
|
6
|
+
import java.util.concurrent.TimeUnit;
|
|
7
|
+
import java.util.function.LongSupplier;
|
|
8
|
+
|
|
9
|
+
public class ProxyBridge {
|
|
10
|
+
|
|
11
|
+
static final int MAX_EXPECTED_STORED_REQUESTS = 256;
|
|
12
|
+
static final long STORED_REQUEST_TTL_MS = TimeUnit.MINUTES.toMillis(2);
|
|
13
|
+
|
|
14
|
+
public static class StoredRequest {
|
|
15
|
+
|
|
16
|
+
public final String method;
|
|
17
|
+
public final String headersJson;
|
|
18
|
+
public final String base64Body;
|
|
19
|
+
public final String credentialsMode;
|
|
20
|
+
final long storedAtMs;
|
|
21
|
+
|
|
22
|
+
public StoredRequest(String method, String headersJson, String base64Body, String credentialsMode, long storedAtMs) {
|
|
23
|
+
this.method = method != null ? method : "";
|
|
24
|
+
this.headersJson = headersJson != null ? headersJson : "{}";
|
|
25
|
+
this.base64Body = base64Body != null ? base64Body : "";
|
|
26
|
+
this.credentialsMode = credentialsMode != null ? credentialsMode : "same-origin";
|
|
27
|
+
this.storedAtMs = storedAtMs;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
private final ConcurrentHashMap<String, StoredRequest> storedRequests = new ConcurrentHashMap<>();
|
|
32
|
+
private final ConcurrentLinkedQueue<String> storedRequestOrder = new ConcurrentLinkedQueue<>();
|
|
33
|
+
private final String accessToken;
|
|
34
|
+
private final LongSupplier clock;
|
|
35
|
+
|
|
36
|
+
public ProxyBridge(String accessToken) {
|
|
37
|
+
this(accessToken, System::currentTimeMillis);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
ProxyBridge(String accessToken, LongSupplier clock) {
|
|
41
|
+
this.accessToken = accessToken;
|
|
42
|
+
this.clock = clock;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@JavascriptInterface
|
|
46
|
+
public void storeRequest(String token, String requestId, String method, String headersJson, String base64Body, String credentialsMode) {
|
|
47
|
+
if (token == null || !token.equals(accessToken) || requestId == null || requestId.isEmpty()) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
long now = clock.getAsLong();
|
|
52
|
+
cleanupExpiredRequests(now);
|
|
53
|
+
storedRequests.put(requestId, new StoredRequest(method, headersJson, base64Body, credentialsMode, now));
|
|
54
|
+
storedRequestOrder.add(requestId);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public StoredRequest getAndRemove(String requestId) {
|
|
58
|
+
if (requestId == null) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
StoredRequest storedRequest = storedRequests.remove(requestId);
|
|
62
|
+
if (storedRequest != null) {
|
|
63
|
+
storedRequestOrder.remove(requestId);
|
|
64
|
+
}
|
|
65
|
+
return storedRequest;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private void cleanupExpiredRequests(long now) {
|
|
69
|
+
while (true) {
|
|
70
|
+
String oldestRequestId = storedRequestOrder.peek();
|
|
71
|
+
if (oldestRequestId == null) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
StoredRequest oldestRequest = storedRequests.get(oldestRequestId);
|
|
76
|
+
if (oldestRequest == null) {
|
|
77
|
+
storedRequestOrder.poll();
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if ((now - oldestRequest.storedAtMs) < STORED_REQUEST_TTL_MS) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (storedRequests.remove(oldestRequestId, oldestRequest)) {
|
|
86
|
+
storedRequestOrder.poll();
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
storedRequestOrder.poll();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|