Merge branch 'develop' into 8.1.0-Dev

This commit is contained in:
Josh Tynjala
2023-08-14 15:53:18 -07:00
45 changed files with 1517 additions and 1464 deletions

View File

@@ -117,12 +117,13 @@ class FlashHTTPRequest
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, function(event)
{
promise.error(event.errorID);
var bytes = Bytes.ofData(cast(urlLoader.data, ByteArray));
promise.error(new _HTTPRequestErrorResponse(event.errorID, bytes));
});
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(event)
{
promise.error(403);
promise.error(new _HTTPRequestErrorResponse(403, null));
});
urlLoader.addEventListener(Event.COMPLETE, function(event)
@@ -156,12 +157,13 @@ class FlashHTTPRequest
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, function(event)
{
promise.error(event.errorID);
var responseData = cast(urlLoader.data, String);
promise.error(new _HTTPRequestErrorResponse(event.errorID, responseData));
});
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(event)
{
promise.error(403);
promise.error(new _HTTPRequestErrorResponse(403, null));
});
urlLoader.addEventListener(Event.COMPLETE, function(event)
@@ -172,4 +174,4 @@ class FlashHTTPRequest
urlLoader.load(urlRequest);
return promise.future;
}
}
}

View File

@@ -407,29 +407,28 @@ class HTML5HTTPRequest
{
if (request.readyState != 4) return;
var bytes = null;
if (request.responseType == NONE)
{
if (request.responseText != null)
{
bytes = Bytes.ofString(request.responseText);
}
}
else if (request.response != null)
{
bytes = Bytes.ofData(request.response);
}
if (request.status != null && ((request.status >= 200 && request.status < 400) || (validStatus0 && request.status == 0)))
{
var bytes = null;
if (request.responseType == NONE)
{
if (request.responseText != null)
{
bytes = Bytes.ofString(request.responseText);
}
}
else if (request.response != null)
{
bytes = Bytes.ofData(request.response);
}
processResponse();
promise.complete(bytes);
}
else
{
processResponse();
promise.error(request.status);
promise.error(new _HTTPRequestErrorResponse(request.status, bytes));
}
request = null;
@@ -482,7 +481,7 @@ class HTML5HTTPRequest
activeRequests--;
processQueue();
promise.error(event.detail);
promise.error(new _HTTPRequestErrorResponse(event.detail, null));
}, false);
image.src = uri;
@@ -505,7 +504,7 @@ class HTML5HTTPRequest
request.onerror = function(event:ErrorEvent)
{
promise.error(event.message);
promise.error(new _HTTPRequestErrorResponse(event.message, null));
}
request.onprogress = function(event:ProgressEvent)
@@ -542,7 +541,7 @@ class HTML5HTTPRequest
else
{
processResponse();
promise.error(request.status);
promise.error(new _HTTPRequestErrorResponse(request.status, request.responseText));
}
request = null;

View File

@@ -465,7 +465,7 @@ class NativeHTTPRequest
private static function localThreadPool_onError(state:{instance:NativeHTTPRequest, promise:Promise<Bytes>, error:String}):Void
{
var promise:Promise<Bytes> = state.promise;
promise.error(state.error);
promise.error(new _HTTPRequestErrorResponse(state.error, null));
var instance = state.instance;
@@ -576,16 +576,21 @@ class NativeHTTPRequest
}
else if (instance.bytes != null)
{
instance.promise.error(instance.bytes.getString(0, instance.bytes.length));
var error = instance.bytes.getString(0, instance.bytes.length);
var responseData = instance.buildBuffer();
instance.promise.error(new _HTTPRequestErrorResponse(error, responseData));
}
else
{
instance.promise.error('Status ${state.status}');
var error = 'Status ${state.status}';
var responseData = instance.buildBuffer();
instance.promise.error(new _HTTPRequestErrorResponse(error, responseData));
}
}
else
{
instance.promise.error(CURL.strerror(state.result));
var error = CURL.strerror(state.result);
instance.promise.error(new _HTTPRequestErrorResponse(error, null));
}
if (instance.timeout != null)

File diff suppressed because it is too large Load Diff

View File

@@ -106,7 +106,11 @@ public function load(uri:String = null):Future<T>
var future = __backend.loadData(this.uri);
future.onProgress(promise.progress);
future.onError(promise.error);
future.onError(function(errorResponse:_HTTPRequestErrorResponse<T>)
{
responseData = errorResponse.responseData;
promise.error(errorResponse.error);
});
future.onComplete(function(bytes)
{
@@ -140,7 +144,11 @@ public function load(uri:String = null):Future<T>
var future = __backend.loadText(this.uri);
future.onProgress(promise.progress);
future.onError(promise.error);
future.onError(function(errorResponse:_HTTPRequestErrorResponse<T>)
{
responseData = errorResponse.responseData;
promise.error(errorResponse.error);
});
future.onComplete(function(text)
{
@@ -152,6 +160,15 @@ public function load(uri:String = null):Future<T>
}
}
@:noCompletion class _HTTPRequestErrorResponse<T> {
public var error:Dynamic;
public var responseData:T;
public function new(error:Dynamic, responseData:T) {
this.error = error;
this.responseData = responseData;
}
}
@:noCompletion interface _IHTTPRequest
{
public var contentType:String;

View File

@@ -17,7 +17,10 @@ class AIRHelper
{
case MAC:
// extension = ".app";
if (airTarget == "bundle")
{
extension = ".app";
}
case IOS:
if (project.targetFlags.exists("simulator"))

View File

@@ -611,7 +611,22 @@ class AssetLibrary
}
}
public function unload():Void {}
public function unload():Void
{
#if haxe4
cachedBytes.clear();
cachedFonts.clear();
cachedImages.clear();
cachedAudioBuffers.clear();
cachedText.clear();
#else
cachedBytes = new Map<String, Bytes>();
cachedFonts = new Map<String, Font>();
cachedImages = new Map<String, Image>();
cachedText = new Map<String, String>();
classTypes = new Map<String, Class<Dynamic>>();
#end
}
@:noCompletion private function __assetLoaded(id:String):Void
{