@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.
Files changed (59) hide show
  1. package/CapgoCapacitorInappbrowser.podspec +17 -0
  2. package/LICENSE +373 -0
  3. package/Package.swift +28 -0
  4. package/README.md +1610 -0
  5. package/android/build.gradle +64 -0
  6. package/android/src/main/AndroidManifest.xml +22 -0
  7. package/android/src/main/assets/proxy-bridge.js +586 -0
  8. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/ActiveWebViewSupport.java +10 -0
  9. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/CustomSchemeInterceptSupport.java +51 -0
  10. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/InAppBrowserPlugin.java +1820 -0
  11. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/MobileAppBridgeScript.java +122 -0
  12. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/NativeProxyRule.java +128 -0
  13. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/Options.java +725 -0
  14. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/ProxyBridge.java +93 -0
  15. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/ProxyRequestSupport.java +869 -0
  16. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/ProxyResponseRouting.java +35 -0
  17. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/SafeAreaInsetsSupport.java +28 -0
  18. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/WebViewCallbacks.java +42 -0
  19. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/WebViewDialog.java +6022 -0
  20. package/android/src/main/java/ee/forgr/capacitor_inappbrowser/WebViewPermissionSupport.java +58 -0
  21. package/android/src/main/res/.gitkeep +0 -0
  22. package/android/src/main/res/drawable/arrow_back_disabled.xml +9 -0
  23. package/android/src/main/res/drawable/arrow_back_enabled.xml +9 -0
  24. package/android/src/main/res/drawable/arrow_forward_disabled.xml +9 -0
  25. package/android/src/main/res/drawable/arrow_forward_enabled.xml +9 -0
  26. package/android/src/main/res/drawable/ic_clear_24px.xml +9 -0
  27. package/android/src/main/res/drawable/ic_refresh.xml +9 -0
  28. package/android/src/main/res/drawable/ic_share.xml +10 -0
  29. package/android/src/main/res/layout/activity_browser.xml +32 -0
  30. package/android/src/main/res/layout/bridge_layout_main.xml +15 -0
  31. package/android/src/main/res/layout/content_browser.xml +17 -0
  32. package/android/src/main/res/layout/tool_bar.xml +87 -0
  33. package/android/src/main/res/values/browser_theme.xml +3 -0
  34. package/android/src/main/res/values/colors.xml +5 -0
  35. package/android/src/main/res/values/dimens.xml +3 -0
  36. package/android/src/main/res/values/strings.xml +13 -0
  37. package/android/src/main/res/values/styles.xml +4 -0
  38. package/android/src/main/res/values/themes.xml +27 -0
  39. package/android/src/main/res/xml/file_paths.xml +14 -0
  40. package/dist/docs.json +3200 -0
  41. package/dist/esm/definitions.d.ts +1507 -0
  42. package/dist/esm/definitions.js +40 -0
  43. package/dist/esm/definitions.js.map +1 -0
  44. package/dist/esm/index.d.ts +6 -0
  45. package/dist/esm/index.js +102 -0
  46. package/dist/esm/index.js.map +1 -0
  47. package/dist/esm/web.d.ts +47 -0
  48. package/dist/esm/web.js +120 -0
  49. package/dist/esm/web.js.map +1 -0
  50. package/dist/plugin.cjs.js +270 -0
  51. package/dist/plugin.cjs.js.map +1 -0
  52. package/dist/plugin.js +273 -0
  53. package/dist/plugin.js.map +1 -0
  54. package/ios/Sources/InAppBrowserPlugin/Enums.swift +65 -0
  55. package/ios/Sources/InAppBrowserPlugin/InAppBrowserPlugin.swift +1932 -0
  56. package/ios/Sources/InAppBrowserPlugin/ProxySchemeHandler.swift +1185 -0
  57. package/ios/Sources/InAppBrowserPlugin/WKWebView+SchemeHandling.swift +43 -0
  58. package/ios/Sources/InAppBrowserPlugin/WKWebViewController.swift +3032 -0
  59. package/package.json +139 -0
@@ -0,0 +1,58 @@
1
+ package ee.forgr.capacitor_inappbrowser;
2
+
3
+ import android.Manifest;
4
+ import android.webkit.PermissionRequest;
5
+ import java.util.ArrayList;
6
+ import java.util.List;
7
+
8
+ final class WebViewPermissionSupport {
9
+
10
+ private WebViewPermissionSupport() {}
11
+
12
+ static boolean hasResource(String[] resources, String resource) {
13
+ if (resources == null || resource == null) {
14
+ return false;
15
+ }
16
+
17
+ for (String requestedResource : resources) {
18
+ if (resource.equals(requestedResource)) {
19
+ return true;
20
+ }
21
+ }
22
+
23
+ return false;
24
+ }
25
+
26
+ static String[] missingAndroidPermissions(
27
+ boolean needsCamera,
28
+ boolean needsMicrophone,
29
+ boolean hasCameraPermission,
30
+ boolean hasMicrophonePermission
31
+ ) {
32
+ List<String> permissions = new ArrayList<>();
33
+
34
+ if (needsCamera && !hasCameraPermission) {
35
+ permissions.add(Manifest.permission.CAMERA);
36
+ }
37
+
38
+ if (needsMicrophone && !hasMicrophonePermission) {
39
+ permissions.add(Manifest.permission.RECORD_AUDIO);
40
+ }
41
+
42
+ return permissions.toArray(new String[0]);
43
+ }
44
+
45
+ static String[] grantResources(boolean needsCamera, boolean needsMicrophone) {
46
+ List<String> resources = new ArrayList<>();
47
+
48
+ if (needsCamera) {
49
+ resources.add(PermissionRequest.RESOURCE_VIDEO_CAPTURE);
50
+ }
51
+
52
+ if (needsMicrophone) {
53
+ resources.add(PermissionRequest.RESOURCE_AUDIO_CAPTURE);
54
+ }
55
+
56
+ return resources.toArray(new String[0]);
57
+ }
58
+ }
File without changes
@@ -0,0 +1,9 @@
1
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
2
+ android:width="24dp"
3
+ android:height="24dp"
4
+ android:viewportWidth="24"
5
+ android:viewportHeight="24">
6
+ <path
7
+ android:fillColor="@color/disable"
8
+ android:pathData="M11.67,3.87L9.9,2.1 0,12l9.9,9.9 1.77,-1.77L3.54,12z"/>
9
+ </vector>
@@ -0,0 +1,9 @@
1
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
2
+ android:width="24dp"
3
+ android:height="24dp"
4
+ android:viewportWidth="24"
5
+ android:viewportHeight="24">
6
+ <path
7
+ android:fillColor="@color/enable"
8
+ android:pathData="M11.67,3.87L9.9,2.1 0,12l9.9,9.9 1.77,-1.77L3.54,12z"/>
9
+ </vector>
@@ -0,0 +1,9 @@
1
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
2
+ android:width="24dp"
3
+ android:height="24dp"
4
+ android:viewportWidth="24"
5
+ android:viewportHeight="24">
6
+ <path
7
+ android:fillColor="@color/disable"
8
+ android:pathData="M5.88,4.12L13.76,12l-7.88,7.88L8,22l10,-10L8,2z"/>
9
+ </vector>
@@ -0,0 +1,9 @@
1
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
2
+ android:width="24dp"
3
+ android:height="24dp"
4
+ android:viewportWidth="24"
5
+ android:viewportHeight="24">
6
+ <path
7
+ android:fillColor="@color/enable"
8
+ android:pathData="M5.88,4.12L13.76,12l-7.88,7.88L8,22l10,-10L8,2z"/>
9
+ </vector>
@@ -0,0 +1,9 @@
1
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
2
+ android:width="24dp"
3
+ android:height="24dp"
4
+ android:viewportWidth="24"
5
+ android:viewportHeight="24">
6
+ <path
7
+ android:fillColor="@color/enable"
8
+ android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
9
+ </vector>
@@ -0,0 +1,9 @@
1
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
2
+ android:width="24dp"
3
+ android:height="24dp"
4
+ android:viewportWidth="24.0"
5
+ android:viewportHeight="24.0">
6
+ <path
7
+ android:fillColor="@color/enable"
8
+ android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z"/>
9
+ </vector>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
3
+ android:width="24dp"
4
+ android:height="24dp"
5
+ android:viewportWidth="24"
6
+ android:viewportHeight="24">
7
+ <path
8
+ android:fillColor="#FFFFFF"
9
+ android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z"/>
10
+ </vector>
@@ -0,0 +1,32 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
+ xmlns:app="http://schemas.android.com/apk/res-auto"
4
+ xmlns:tools="http://schemas.android.com/tools"
5
+ android:id="@+id/coordinator_layout"
6
+ android:layout_width="match_parent"
7
+ android:layout_height="match_parent"
8
+ tools:context="com.cap.browser.plugin.WebViewActivity">
9
+
10
+ <!-- Status bar color view that will be positioned at the top -->
11
+ <View
12
+ android:id="@+id/status_bar_color_view"
13
+ android:layout_width="match_parent"
14
+ android:layout_height="0dp"
15
+ android:background="@android:color/transparent" />
16
+
17
+ <com.google.android.material.appbar.AppBarLayout
18
+ android:id="@+id/app_bar_layout"
19
+ android:layout_width="match_parent"
20
+ android:layout_height="wrap_content"
21
+ android:layout_marginTop="0dp"
22
+ android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
23
+
24
+ <include
25
+ android:id="@+id/tool_bar"
26
+ layout="@layout/tool_bar" />
27
+
28
+ </com.google.android.material.appbar.AppBarLayout>
29
+
30
+ <include layout="@layout/content_browser" />
31
+
32
+ </androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
+ xmlns:app="http://schemas.android.com/apk/res-auto"
4
+ xmlns:tools="http://schemas.android.com/tools"
5
+ android:layout_width="match_parent"
6
+ android:layout_height="match_parent"
7
+ tools:context="com.getcapacitor.BridgeActivity"
8
+ >
9
+
10
+ <WebView
11
+ android:id="@+id/webview"
12
+ android:layout_width="fill_parent"
13
+ android:layout_height="fill_parent" />
14
+
15
+ </androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
+ xmlns:app="http://schemas.android.com/apk/res-auto"
4
+ xmlns:tools="http://schemas.android.com/tools"
5
+ android:layout_width="match_parent"
6
+ android:layout_height="match_parent"
7
+ android:id="@+id/content_browser_layout"
8
+ app:layout_behavior="@string/appbar_scrolling_view_behavior"
9
+ tools:context="com.cap.browser.plugin.WebViewActivity"
10
+ tools:showIn="@layout/activity_browser">
11
+
12
+ <WebView
13
+ android:id="@+id/browser_view"
14
+ android:layout_width="match_parent"
15
+ android:layout_height="match_parent"/>
16
+
17
+ </RelativeLayout>
@@ -0,0 +1,87 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <android.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
3
+ xmlns:app="http://schemas.android.com/apk/res-auto"
4
+ xmlns:tools="http://schemas.android.com/tools"
5
+ android:layout_width="match_parent"
6
+ android:layout_height="wrap_content"
7
+ android:background="#eeeeef"
8
+ android:elevation="4dp"
9
+ app:titleTextColor="#262626">
10
+
11
+ <ImageButton
12
+ android:id="@+id/closeButton"
13
+ android:layout_width="wrap_content"
14
+ android:layout_height="wrap_content"
15
+ android:layout_gravity="start"
16
+ android:background="#eeeeef"
17
+ android:contentDescription="@string/close_button"
18
+ android:minWidth="38dp"
19
+ android:minHeight="38dp"
20
+ android:src="@drawable/ic_clear_24px"
21
+ android:translationX="-8dp" />
22
+
23
+ <ImageButton
24
+ android:id="@+id/buttonNearDone"
25
+ android:layout_width="48dp"
26
+ android:layout_height="48dp"
27
+ android:layout_gravity="end"
28
+ android:layout_marginEnd="8dp"
29
+ android:background="?attr/selectableItemBackgroundBorderless"
30
+ android:contentDescription="@string/button_near_done"
31
+ android:padding="12dp"
32
+ android:src="@drawable/ic_clear_24px"
33
+ android:visibility="gone" />
34
+ <ImageButton
35
+ android:id="@+id/reloadButton"
36
+ android:layout_width="wrap_content"
37
+ android:layout_height="wrap_content"
38
+ android:layout_gravity="end"
39
+ android:background="#eeeeef"
40
+ android:paddingRight="10dp"
41
+ android:contentDescription="@string/reload_button"
42
+ android:src="@drawable/ic_refresh"
43
+ android:visibility="gone" />
44
+
45
+ <TextView
46
+ android:id="@+id/titleText"
47
+ android:layout_width="wrap_content"
48
+ android:layout_height="wrap_content"
49
+ android:layout_gravity="center_horizontal"
50
+ android:text="@string/title"
51
+ android:maxLines="5"
52
+ android:ellipsize="end"
53
+ android:singleLine="false"
54
+ android:textColor="#262626" />
55
+
56
+ <ImageButton
57
+ android:id="@+id/shareButton"
58
+ android:layout_width="48dp"
59
+ android:layout_height="48dp"
60
+ android:layout_gravity="end"
61
+ android:layout_marginEnd="8dp"
62
+ android:background="?attr/selectableItemBackgroundBorderless"
63
+ android:contentDescription="@string/share_button"
64
+ android:padding="12dp"
65
+ android:src="@drawable/ic_share"
66
+ android:visibility="gone" />
67
+
68
+ <ImageButton
69
+ android:id="@+id/forwardButton"
70
+ android:layout_width="wrap_content"
71
+ android:layout_height="wrap_content"
72
+ android:layout_gravity="end"
73
+ android:background="#eeeeef"
74
+ android:contentDescription="@string/forward_button"
75
+ android:paddingRight="10dp"
76
+ android:src="@drawable/arrow_forward_disabled" />
77
+
78
+ <ImageButton
79
+ android:id="@+id/backButton"
80
+ android:layout_width="wrap_content"
81
+ android:layout_height="wrap_content"
82
+ android:layout_gravity="end"
83
+ android:background="#eeeeef"
84
+ android:contentDescription="@string/back_button"
85
+ android:paddingRight="10dp"
86
+ android:src="@drawable/arrow_back_disabled" />
87
+ </android.widget.Toolbar>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources>
3
+ </resources>
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources>
3
+ <color name="disable">#36262626</color>
4
+ <color name="enable">#262626</color>
5
+ </resources>
@@ -0,0 +1,3 @@
1
+ <resources>
2
+ <dimen name="fab_margin">16dp</dimen>
3
+ </resources>
@@ -0,0 +1,13 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources>
3
+ <string name="my_string">Just a simple string</string>
4
+ <string name="title_activity_browser">BrowserActivity</string>
5
+ <string name="title_activity_basic">BasicActivity</string>
6
+ <string name="close_button">Close Button</string>
7
+ <string name="button_near_done">Button near "done"</string>
8
+ <string name="reload_button">Reload Button</string>
9
+ <string name="back_button">Back Button</string>
10
+ <string name="title">Title</string>
11
+ <string name="forward_button">Forward Button</string>
12
+ <string name="share_button">Share</string>
13
+ </resources>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources>
3
+
4
+ </resources>
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources>
3
+ <!-- Base application theme with Material Components -->
4
+ <style name="InAppBrowserMaterialTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
5
+ <!-- Customize your theme here -->
6
+ <item name="colorPrimary">@android:color/holo_blue_dark</item>
7
+ <item name="colorPrimaryDark">@android:color/holo_blue_dark</item>
8
+ <item name="colorAccent">@android:color/holo_blue_dark</item>
9
+
10
+ <!-- Force Material Design date and time pickers -->
11
+ <item name="android:datePickerStyle">@style/MaterialDatePickerStyle</item>
12
+ <item name="android:timePickerStyle">@style/MaterialTimePickerStyle</item>
13
+ <item name="materialCalendarStyle">@style/Widget.MaterialComponents.MaterialCalendar</item>
14
+ <item name="materialCalendarFullscreenTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar.Fullscreen</item>
15
+ <item name="materialCalendarTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar</item>
16
+ </style>
17
+
18
+ <!-- Date Picker Style -->
19
+ <style name="MaterialDatePickerStyle" parent="@android:style/Widget.Material.DatePicker">
20
+ <item name="android:datePickerMode">calendar</item>
21
+ </style>
22
+
23
+ <!-- Time Picker Style -->
24
+ <style name="MaterialTimePickerStyle" parent="@android:style/Widget.Material.TimePicker">
25
+ <item name="android:timePickerMode">clock</item>
26
+ </style>
27
+ </resources>
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <paths xmlns:android="http://schemas.android.com/apk/res/android">
3
+ <!-- Internal cache for most operations -->
4
+ <cache-path name="camera_captures" path="." />
5
+
6
+ <!-- External cache for fallback -->
7
+ <external-cache-path name="external_cache" path="." />
8
+
9
+ <!-- External files for additional compatibility -->
10
+ <external-files-path name="external_files" path="." />
11
+
12
+ <!-- Allow sharing app-specific files if needed -->
13
+ <files-path name="app_files" path="." />
14
+ </paths>