@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.
@@ -1,10 +1,10 @@
1
1
  ext {
2
- androidxActivityVersion = project.hasProperty('androidxActivityVersion') ? rootProject.ext.androidxActivityVersion : '1.7.0'
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.0'
6
- androidxFragmentVersion = project.hasProperty('androidxFragmentVersion') ? rootProject.ext.androidxFragmentVersion : '1.5.6'
7
- androidxWebkitVersion = project.hasProperty('androidxWebkitVersion') ? rootProject.ext.androidxWebkitVersion : '1.6.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.8.20'
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.0.0'
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 : 33
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 : 33
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, contentType) => {
68
- if (body instanceof ReadableStream) {
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 (!(request.url.startsWith('http:') ||
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 = responseString;
639
- }
640
- else if (this.responseType === 'blob') {
641
- this.response = new Blob([responseString], {
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.toLowerCase() !== 'set-cookie') {
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
- for (const key in this._headers) {
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.CAPACITOR_HTTP_SCHEME;
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 = CAPACITOR_HTTP_SCHEME;
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 http.");
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 = CAPACITOR_HTTP_SCHEME;
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
- if (isAllowingInsecureCookies()) {
55
- String url = call.getString("url");
56
- JSObject cookiesMap = new JSObject();
57
- HttpCookie[] cookies = cookieManager.getCookies(url);
58
- for (HttpCookie cookie : cookies) {
59
- cookiesMap.put(cookie.getName(), cookie.getValue());
60
- }
61
- call.resolve(cookiesMap);
62
- } else {
63
- this.bridge.eval(
64
- "document.cookie",
65
- value -> {
66
- String cookies = value.substring(1, value.length() - 1);
67
- String[] cookieArray = cookies.split(";");
68
-
69
- JSObject cookieMap = new JSObject();
70
-
71
- for (String cookie : cookieArray) {
72
- if (cookie.length() > 0) {
73
- String[] keyValue = cookie.split("=", 2);
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.1",
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"