@capacitor/android 5.4.1 → 5.4.2-nightly-20231005T150526.0
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/capacitor/build.gradle
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
ext {
|
|
2
|
-
androidxActivityVersion = project.hasProperty('androidxActivityVersion') ? rootProject.ext.androidxActivityVersion : '1.7.
|
|
2
|
+
androidxActivityVersion = project.hasProperty('androidxActivityVersion') ? rootProject.ext.androidxActivityVersion : '1.7.2'
|
|
3
3
|
androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.6.1'
|
|
4
4
|
androidxCoordinatorLayoutVersion = project.hasProperty('androidxCoordinatorLayoutVersion') ? rootProject.ext.androidxCoordinatorLayoutVersion : '1.2.0'
|
|
5
|
-
androidxCoreVersion = project.hasProperty('androidxCoreVersion') ? rootProject.ext.androidxCoreVersion : '1.10.
|
|
6
|
-
androidxFragmentVersion = project.hasProperty('androidxFragmentVersion') ? rootProject.ext.androidxFragmentVersion : '1.
|
|
7
|
-
androidxWebkitVersion = project.hasProperty('androidxWebkitVersion') ? rootProject.ext.androidxWebkitVersion : '1.
|
|
5
|
+
androidxCoreVersion = project.hasProperty('androidxCoreVersion') ? rootProject.ext.androidxCoreVersion : '1.10.1'
|
|
6
|
+
androidxFragmentVersion = project.hasProperty('androidxFragmentVersion') ? rootProject.ext.androidxFragmentVersion : '1.6.1'
|
|
7
|
+
androidxWebkitVersion = project.hasProperty('androidxWebkitVersion') ? rootProject.ext.androidxWebkitVersion : '1.7.0'
|
|
8
8
|
junitVersion = project.hasProperty('junitVersion') ? rootProject.ext.junitVersion : '4.13.2'
|
|
9
9
|
androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.1.5'
|
|
10
10
|
androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.5.1'
|
|
@@ -13,7 +13,7 @@ ext {
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
buildscript {
|
|
16
|
-
ext.kotlin_version = project.hasProperty("kotlin_version") ? rootProject.ext.kotlin_version : '1.
|
|
16
|
+
ext.kotlin_version = project.hasProperty("kotlin_version") ? rootProject.ext.kotlin_version : '1.9.10'
|
|
17
17
|
repositories {
|
|
18
18
|
google()
|
|
19
19
|
mavenCentral()
|
|
@@ -22,7 +22,7 @@ buildscript {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
dependencies {
|
|
25
|
-
classpath 'com.android.tools.build:gradle:8.
|
|
25
|
+
classpath 'com.android.tools.build:gradle:8.1.1'
|
|
26
26
|
|
|
27
27
|
if (System.getenv("CAP_PUBLISH") == "true") {
|
|
28
28
|
classpath 'io.github.gradle-nexus:publish-plugin:1.3.0'
|
|
@@ -42,10 +42,10 @@ if (System.getenv("CAP_PUBLISH") == "true") {
|
|
|
42
42
|
|
|
43
43
|
android {
|
|
44
44
|
namespace "com.getcapacitor.android"
|
|
45
|
-
compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion :
|
|
45
|
+
compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 34
|
|
46
46
|
defaultConfig {
|
|
47
47
|
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22
|
|
48
|
-
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion :
|
|
48
|
+
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 34
|
|
49
49
|
versionCode 1
|
|
50
50
|
versionName "1.0"
|
|
51
51
|
consumerProguardFiles 'proguard-rules.pro'
|
|
@@ -64,52 +64,8 @@ var nativeBridge = (function (exports) {
|
|
|
64
64
|
}
|
|
65
65
|
return newFormData;
|
|
66
66
|
};
|
|
67
|
-
const convertBody = async (body
|
|
68
|
-
if (body instanceof
|
|
69
|
-
const reader = body.getReader();
|
|
70
|
-
const chunks = [];
|
|
71
|
-
while (true) {
|
|
72
|
-
const { done, value } = await reader.read();
|
|
73
|
-
if (done)
|
|
74
|
-
break;
|
|
75
|
-
chunks.push(value);
|
|
76
|
-
}
|
|
77
|
-
const concatenated = new Uint8Array(chunks.reduce((acc, chunk) => acc + chunk.length, 0));
|
|
78
|
-
let position = 0;
|
|
79
|
-
for (const chunk of chunks) {
|
|
80
|
-
concatenated.set(chunk, position);
|
|
81
|
-
position += chunk.length;
|
|
82
|
-
}
|
|
83
|
-
let data = new TextDecoder().decode(concatenated);
|
|
84
|
-
let type;
|
|
85
|
-
if (contentType === 'application/json') {
|
|
86
|
-
try {
|
|
87
|
-
data = JSON.parse(data);
|
|
88
|
-
}
|
|
89
|
-
catch (ignored) {
|
|
90
|
-
// ignore
|
|
91
|
-
}
|
|
92
|
-
type = 'json';
|
|
93
|
-
}
|
|
94
|
-
else if (contentType === 'multipart/form-data') {
|
|
95
|
-
type = 'formData';
|
|
96
|
-
}
|
|
97
|
-
else if (contentType === null || contentType === void 0 ? void 0 : contentType.startsWith('image')) {
|
|
98
|
-
type = 'image';
|
|
99
|
-
}
|
|
100
|
-
else if (contentType === 'application/octet-stream') {
|
|
101
|
-
type = 'binary';
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
type = 'text';
|
|
105
|
-
}
|
|
106
|
-
return {
|
|
107
|
-
data,
|
|
108
|
-
type,
|
|
109
|
-
headers: { 'Content-Type': contentType || 'application/octet-stream' },
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
else if (body instanceof FormData) {
|
|
67
|
+
const convertBody = async (body) => {
|
|
68
|
+
if (body instanceof FormData) {
|
|
113
69
|
const formData = await convertFormData(body);
|
|
114
70
|
const boundary = `${Date.now()}`;
|
|
115
71
|
return {
|
|
@@ -469,17 +425,15 @@ var nativeBridge = (function (exports) {
|
|
|
469
425
|
// fetch patch
|
|
470
426
|
window.fetch = async (resource, options) => {
|
|
471
427
|
const request = new Request(resource, options);
|
|
472
|
-
if (
|
|
473
|
-
request.url.startsWith('https:'))) {
|
|
428
|
+
if (request.url.startsWith(`${cap.getServerUrl()}/`)) {
|
|
474
429
|
return win.CapacitorWebFetch(resource, options);
|
|
475
430
|
}
|
|
476
431
|
const tag = `CapacitorHttp fetch ${Date.now()} ${resource}`;
|
|
477
432
|
console.time(tag);
|
|
478
433
|
try {
|
|
479
|
-
// intercept request & pass to the bridge
|
|
480
434
|
const { body, method } = request;
|
|
435
|
+
const { data: requestData, type, headers, } = await convertBody(body || undefined);
|
|
481
436
|
const optionHeaders = Object.fromEntries(request.headers.entries());
|
|
482
|
-
const { data: requestData, type, headers, } = await convertBody((options === null || options === void 0 ? void 0 : options.body) || body || undefined, optionHeaders['Content-Type'] || optionHeaders['content-type']);
|
|
483
437
|
const nativeResponse = await cap.nativePromise('CapacitorHttp', 'request', {
|
|
484
438
|
url: request.url,
|
|
485
439
|
method: method,
|
|
@@ -630,22 +584,12 @@ var nativeBridge = (function (exports) {
|
|
|
630
584
|
}
|
|
631
585
|
this._headers = nativeResponse.headers;
|
|
632
586
|
this.status = nativeResponse.status;
|
|
633
|
-
const responseString = typeof nativeResponse.data !== 'string'
|
|
634
|
-
? JSON.stringify(nativeResponse.data)
|
|
635
|
-
: nativeResponse.data;
|
|
636
587
|
if (this.responseType === '' ||
|
|
637
588
|
this.responseType === 'text') {
|
|
638
|
-
this.response =
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
type: 'application/json',
|
|
643
|
-
});
|
|
644
|
-
}
|
|
645
|
-
else if (this.responseType === 'arraybuffer') {
|
|
646
|
-
const encoder = new TextEncoder();
|
|
647
|
-
const uint8Array = encoder.encode(responseString);
|
|
648
|
-
this.response = uint8Array.buffer;
|
|
589
|
+
this.response =
|
|
590
|
+
typeof nativeResponse.data !== 'string'
|
|
591
|
+
? JSON.stringify(nativeResponse.data)
|
|
592
|
+
: nativeResponse.data;
|
|
649
593
|
}
|
|
650
594
|
else {
|
|
651
595
|
this.response = nativeResponse.data;
|
|
@@ -712,7 +656,7 @@ var nativeBridge = (function (exports) {
|
|
|
712
656
|
}
|
|
713
657
|
let returnString = '';
|
|
714
658
|
for (const key in this._headers) {
|
|
715
|
-
if (key
|
|
659
|
+
if (key != 'Set-Cookie') {
|
|
716
660
|
returnString += key + ': ' + this._headers[key] + '\r\n';
|
|
717
661
|
}
|
|
718
662
|
}
|
|
@@ -723,12 +667,7 @@ var nativeBridge = (function (exports) {
|
|
|
723
667
|
if (isRelativeURL(this._url)) {
|
|
724
668
|
return win.CapacitorWebXMLHttpRequest.getResponseHeader.call(this, name);
|
|
725
669
|
}
|
|
726
|
-
|
|
727
|
-
if (key.toLowerCase() === name.toLowerCase()) {
|
|
728
|
-
return this._headers[key];
|
|
729
|
-
}
|
|
730
|
-
}
|
|
731
|
-
return null;
|
|
670
|
+
return this._headers[name];
|
|
732
671
|
};
|
|
733
672
|
Object.setPrototypeOf(xhr, prototype);
|
|
734
673
|
return xhr;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
package com.getcapacitor;
|
|
2
2
|
|
|
3
|
-
import static com.getcapacitor.Bridge.
|
|
3
|
+
import static com.getcapacitor.Bridge.CAPACITOR_HTTPS_SCHEME;
|
|
4
4
|
import static com.getcapacitor.Bridge.DEFAULT_ANDROID_WEBVIEW_VERSION;
|
|
5
5
|
import static com.getcapacitor.Bridge.DEFAULT_HUAWEI_WEBVIEW_VERSION;
|
|
6
6
|
import static com.getcapacitor.Bridge.MINIMUM_ANDROID_WEBVIEW_VERSION;
|
|
@@ -36,7 +36,7 @@ public class CapConfig {
|
|
|
36
36
|
private boolean html5mode = true;
|
|
37
37
|
private String serverUrl;
|
|
38
38
|
private String hostname = "localhost";
|
|
39
|
-
private String androidScheme =
|
|
39
|
+
private String androidScheme = CAPACITOR_HTTPS_SCHEME;
|
|
40
40
|
private String[] allowNavigation;
|
|
41
41
|
|
|
42
42
|
// Android Config
|
|
@@ -297,7 +297,7 @@ public class CapConfig {
|
|
|
297
297
|
private boolean validateScheme(String scheme) {
|
|
298
298
|
List<String> invalidSchemes = Arrays.asList("file", "ftp", "ftps", "ws", "wss", "about", "blob", "data");
|
|
299
299
|
if (invalidSchemes.contains(scheme)) {
|
|
300
|
-
Logger.warn(scheme + " is not an allowed scheme. Defaulting to
|
|
300
|
+
Logger.warn(scheme + " is not an allowed scheme. Defaulting to https.");
|
|
301
301
|
return false;
|
|
302
302
|
}
|
|
303
303
|
|
|
@@ -531,7 +531,7 @@ public class CapConfig {
|
|
|
531
531
|
private String serverUrl;
|
|
532
532
|
private String errorPath;
|
|
533
533
|
private String hostname = "localhost";
|
|
534
|
-
private String androidScheme =
|
|
534
|
+
private String androidScheme = CAPACITOR_HTTPS_SCHEME;
|
|
535
535
|
private String[] allowNavigation;
|
|
536
536
|
|
|
537
537
|
// Android Config Values
|
|
@@ -39,11 +39,6 @@ public class CapacitorCookies extends Plugin {
|
|
|
39
39
|
return pluginConfig.getBoolean("enabled", false);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
private boolean isAllowingInsecureCookies() {
|
|
43
|
-
PluginConfig pluginConfig = getBridge().getConfig().getPluginConfiguration("CapacitorCookies");
|
|
44
|
-
return pluginConfig.getBoolean("androidCustomSchemeAllowInsecureAccess", false);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
42
|
@JavascriptInterface
|
|
48
43
|
public void setCookie(String domain, String action) {
|
|
49
44
|
cookieManager.setCookie(domain, action);
|
|
@@ -51,44 +46,34 @@ public class CapacitorCookies extends Plugin {
|
|
|
51
46
|
|
|
52
47
|
@PluginMethod
|
|
53
48
|
public void getCookies(PluginCall call) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
if (keyValue.length == 2) {
|
|
76
|
-
String key = keyValue[0].trim();
|
|
77
|
-
String val = keyValue[1].trim();
|
|
78
|
-
try {
|
|
79
|
-
key = URLDecoder.decode(keyValue[0].trim(), StandardCharsets.UTF_8.name());
|
|
80
|
-
val = URLDecoder.decode(keyValue[1].trim(), StandardCharsets.UTF_8.name());
|
|
81
|
-
} catch (UnsupportedEncodingException ignored) {}
|
|
82
|
-
|
|
83
|
-
cookieMap.put(key, val);
|
|
84
|
-
}
|
|
49
|
+
this.bridge.eval(
|
|
50
|
+
"document.cookie",
|
|
51
|
+
value -> {
|
|
52
|
+
String cookies = value.substring(1, value.length() - 1);
|
|
53
|
+
String[] cookieArray = cookies.split(";");
|
|
54
|
+
|
|
55
|
+
JSObject cookieMap = new JSObject();
|
|
56
|
+
|
|
57
|
+
for (String cookie : cookieArray) {
|
|
58
|
+
if (cookie.length() > 0) {
|
|
59
|
+
String[] keyValue = cookie.split("=", 2);
|
|
60
|
+
|
|
61
|
+
if (keyValue.length == 2) {
|
|
62
|
+
String key = keyValue[0].trim();
|
|
63
|
+
String val = keyValue[1].trim();
|
|
64
|
+
try {
|
|
65
|
+
key = URLDecoder.decode(keyValue[0].trim(), StandardCharsets.UTF_8.name());
|
|
66
|
+
val = URLDecoder.decode(keyValue[1].trim(), StandardCharsets.UTF_8.name());
|
|
67
|
+
} catch (UnsupportedEncodingException ignored) {}
|
|
68
|
+
|
|
69
|
+
cookieMap.put(key, val);
|
|
85
70
|
}
|
|
86
71
|
}
|
|
87
|
-
|
|
88
|
-
call.resolve(cookieMap);
|
|
89
72
|
}
|
|
90
|
-
|
|
91
|
-
|
|
73
|
+
|
|
74
|
+
call.resolve(cookieMap);
|
|
75
|
+
}
|
|
76
|
+
);
|
|
92
77
|
}
|
|
93
78
|
|
|
94
79
|
@PluginMethod
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capacitor/android",
|
|
3
|
-
"version": "5.4.
|
|
3
|
+
"version": "5.4.2-nightly-20231005T150526.0",
|
|
4
4
|
"description": "Capacitor: Cross-platform apps with JavaScript and the web",
|
|
5
5
|
"homepage": "https://capacitorjs.com",
|
|
6
6
|
"author": "Ionic Team <hi@ionic.io> (https://ionic.io)",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"verify": "./gradlew clean lint build test -b capacitor/build.gradle"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"@capacitor/core": "^5.4.0"
|
|
26
|
+
"@capacitor/core": "^5.4.0-nightly-20231005T150526.0"
|
|
27
27
|
},
|
|
28
28
|
"publishConfig": {
|
|
29
29
|
"access": "public"
|