@capacitor/ios 5.7.5 → 5.7.6

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.
@@ -107,7 +107,7 @@ internal class WebViewAssetHandler: NSObject, WKURLSchemeHandler {
107
107
  }
108
108
 
109
109
  func webView(_ webView: WKWebView, stop urlSchemeTask: WKURLSchemeTask) {
110
- CAPLog.print("scheme stop")
110
+ urlSchemeTask.stopped = true
111
111
  }
112
112
 
113
113
  func mimeTypeForExtension(pathExtension: String) -> String {
@@ -155,43 +155,46 @@ internal class WebViewAssetHandler: NSObject, WKURLSchemeHandler {
155
155
 
156
156
  let urlSession = URLSession.shared
157
157
  let task = urlSession.dataTask(with: urlRequest) { (data, response, error) in
158
- if let error = error {
159
- urlSchemeTask.didFailWithError(error)
160
- return
161
- }
158
+ DispatchQueue.main.async {
159
+ guard !urlSchemeTask.stopped else { return }
160
+ if let error = error {
161
+ urlSchemeTask.didFailWithError(error)
162
+ return
163
+ }
162
164
 
163
- if let response = response as? HTTPURLResponse {
164
- let existingHeaders = response.allHeaderFields
165
- var newHeaders: [AnyHashable: Any] = [:]
165
+ if let response = response as? HTTPURLResponse {
166
+ let existingHeaders = response.allHeaderFields
167
+ var newHeaders: [AnyHashable: Any] = [:]
166
168
 
167
- // if using live reload, then set CORS headers
168
- if self.isUsingLiveReload(url) {
169
- newHeaders = [
170
- "Access-Control-Allow-Origin": self.serverUrl?.absoluteString ?? "",
171
- "Access-Control-Allow-Methods": "GET, HEAD, OPTIONS, TRACE"
172
- ]
173
- }
169
+ // if using live reload, then set CORS headers
170
+ if self.isUsingLiveReload(url) {
171
+ newHeaders = [
172
+ "Access-Control-Allow-Origin": self.serverUrl?.absoluteString ?? "",
173
+ "Access-Control-Allow-Methods": "GET, HEAD, OPTIONS, TRACE"
174
+ ]
175
+ }
174
176
 
175
- if let mergedHeaders = existingHeaders.merging(newHeaders, uniquingKeysWith: { (_, newHeaders) in newHeaders }) as? [String: String] {
177
+ if let mergedHeaders = existingHeaders.merging(newHeaders, uniquingKeysWith: { (_, newHeaders) in newHeaders }) as? [String: String] {
176
178
 
177
- if let responseUrl = response.url {
178
- if let modifiedResponse = HTTPURLResponse(
179
- url: responseUrl,
180
- statusCode: response.statusCode,
181
- httpVersion: nil,
182
- headerFields: mergedHeaders
183
- ) {
184
- urlSchemeTask.didReceive(modifiedResponse)
179
+ if let responseUrl = response.url {
180
+ if let modifiedResponse = HTTPURLResponse(
181
+ url: responseUrl,
182
+ statusCode: response.statusCode,
183
+ httpVersion: nil,
184
+ headerFields: mergedHeaders
185
+ ) {
186
+ urlSchemeTask.didReceive(modifiedResponse)
187
+ }
185
188
  }
186
- }
187
189
 
188
- if let data = data {
189
- urlSchemeTask.didReceive(data)
190
+ if let data = data {
191
+ urlSchemeTask.didReceive(data)
192
+ }
190
193
  }
191
194
  }
195
+ urlSchemeTask.didFinish()
196
+ return
192
197
  }
193
- urlSchemeTask.didFinish()
194
- return
195
198
  }
196
199
 
197
200
  task.resume()
@@ -546,3 +549,16 @@ internal class WebViewAssetHandler: NSObject, WKURLSchemeHandler {
546
549
  "zip": "application/x-zip-compressed"
547
550
  ]
548
551
  }
552
+
553
+ private var stoppedKey = malloc(1)
554
+
555
+ private extension WKURLSchemeTask {
556
+ var stopped: Bool {
557
+ get {
558
+ return objc_getAssociatedObject(self, &stoppedKey) as? Bool ?? false
559
+ }
560
+ set {
561
+ objc_setAssociatedObject(self, &stoppedKey, newValue, .OBJC_ASSOCIATION_ASSIGN)
562
+ }
563
+ }
564
+ }
@@ -569,20 +569,7 @@ var nativeBridge = (function (exports) {
569
569
  value: xhr.method,
570
570
  writable: true,
571
571
  },
572
- readyState: {
573
- get: function () {
574
- var _a;
575
- return (_a = this._readyState) !== null && _a !== void 0 ? _a : 0;
576
- },
577
- set: function (val) {
578
- this._readyState = val;
579
- setTimeout(() => {
580
- this.dispatchEvent(new Event('readystatechange'));
581
- });
582
- },
583
- },
584
572
  });
585
- xhr.readyState = 0;
586
573
  const prototype = win.CapacitorWebXMLHttpRequest.prototype;
587
574
  const isProgressEventAvailable = () => typeof ProgressEvent !== 'undefined' &&
588
575
  ProgressEvent.prototype instanceof Event;
@@ -612,6 +599,20 @@ var nativeBridge = (function (exports) {
612
599
  this._url = createProxyUrl(this._url, win);
613
600
  return win.CapacitorWebXMLHttpRequest.open.call(this, method, this._url);
614
601
  }
602
+ Object.defineProperties(this, {
603
+ readyState: {
604
+ get: function () {
605
+ var _a;
606
+ return (_a = this._readyState) !== null && _a !== void 0 ? _a : 0;
607
+ },
608
+ set: function (val) {
609
+ this._readyState = val;
610
+ setTimeout(() => {
611
+ this.dispatchEvent(new Event('readystatechange'));
612
+ });
613
+ },
614
+ },
615
+ });
615
616
  setTimeout(() => {
616
617
  this.dispatchEvent(new Event('loadstart'));
617
618
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capacitor/ios",
3
- "version": "5.7.5",
3
+ "version": "5.7.6",
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)",