Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Unified Diff: tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate

Issue 2162643002: Revert "Reapply zone tasks." (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/dom/templates/html/impl/impl_Window.darttemplate ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate
diff --git a/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate b/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate
index 35683fc5c0d3c8fea86b8ab99fb5556c999b0da4..9ad00f61c2c2053f97c229ee85a0ffa0b1dd0b83 100644
--- a/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate
+++ b/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate
@@ -4,109 +4,6 @@
part of $LIBRARYNAME;
-/**
- * A task specification for HTTP requests.
- *
- * This specification is not available when an HTTP request is sent through
- * direct use of [HttpRequest.send]. See [HttpRequestSendTaskSpecification].
- *
- * A task created from this specification is a `Future<HttpRequest>`.
- *
- * *Experimental*. This class may disappear without notice.
- */
-class HttpRequestTaskSpecification extends TaskSpecification {
- /// The URL of the request.
- final String url;
-
- /// The HTTP request method.
- ///
- /// By default (when `null`) this is a `"GET"` request. Alternatively, the
- /// method can be `"POST"`, `"PUT"`, `"DELETE"`, etc.
- final String method;
-
- /// Whether the request should send credentials. Credentials are only useful
- /// for cross-origin requests.
- ///
- /// See [HttpRequest.request] for more information.
- final bool withCredentials;
-
- /// The desired response format.
- ///
- /// Supported types are:
- /// - `""`: (same as `"text"`),
- /// - `"arraybuffer"`,
- /// - `"blob"`,
- /// - `"document"`,
- /// - `"json"`,
- /// - `"text"`
- ///
- /// When no value is provided (when equal to `null`) defaults to `""`.
- final String responseType;
-
- /// The desired MIME type.
- ///
- /// This overrides the default MIME type which is set up to transfer textual
- /// data.
- final String mimeType;
-
- /// The request headers that should be sent with the request.
- final Map<String, String> requestHeaders;
-
- /// The data that is sent with the request.
- ///
- /// When data is provided (the value is not `null`), it must be a
- /// [ByteBuffer], [Blob], [Document], [String], or [FormData].
- final dynamic sendData;
-
- /// The function that is invoked on progress updates. This function is
- /// registered as an event listener on the created [HttpRequest] object, and
- /// thus has its own task. Further invocations of the progress function do
- /// *not* use the HTTP request task as task object.
- ///
- /// Creating an HTTP request automatically registers the on-progress listener.
- final ZoneUnaryCallback<dynamic, ProgressEvent> onProgress;
-
- HttpRequestTaskSpecification(this.url,
- {String this.method, bool this.withCredentials, String this.responseType,
- String this.mimeType, Map<String, String> this.requestHeaders,
- this.sendData,
- void this.onProgress(ProgressEvent e)});
-
- String get name => "dart.html.http-request";
- bool get isOneShot => true;
-}
-
-/**
- * A task specification for HTTP requests that are initiated through a direct
- * invocation of [HttpRequest.send].
- *
- * This specification serves as signal to zones that an HTTP request has been
- * initiated. The created task is the [request] object itself, and
- * no callback is ever executed in this task.
- *
- * Note that event listeners on the HTTP request are also registered in the
- * zone (although with their own task creations), and that a zone can thus
- * detect when the HTTP request returns.
- *
- * HTTP requests that are initiated through `request` methods don't use
- * this class but use [HttpRequestTaskSpecification].
- *
- * *Experimental*. This class may disappear without notice.
- */
-class HttpRequestSendTaskSpecification extends TaskSpecification {
- final HttpRequest request;
- final dynamic sendData;
-
- HttpRequestSendTaskSpecification(this.request, this.sendData);
-
- String get name => "dart.html.http-request-send";
-
- /**
- * No callback is ever executed in an HTTP request send task.
- */
- bool get isOneShot => false;
-}
-
/**
* A client-side XHR request for getting data from a URL,
* formally known as XMLHttpRequest.
@@ -293,34 +190,7 @@ $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS
{String method, bool withCredentials, String responseType,
String mimeType, Map<String, String> requestHeaders, sendData,
void onProgress(ProgressEvent e)}) {
- var spec = new HttpRequestTaskSpecification(
- url, method: method,
- withCredentials: withCredentials,
- responseType: responseType,
- mimeType: mimeType,
- requestHeaders: requestHeaders,
- sendData: sendData,
- onProgress: onProgress);
-
- if (identical(Zone.current, Zone.ROOT)) {
- return _createHttpRequestTask(spec, null);
- }
- return Zone.current.createTask(_createHttpRequestTask, spec);
- }
-
- static Future<HttpRequest> _createHttpRequestTask(
- HttpRequestTaskSpecification spec, Zone zone) {
- String url = spec.url;
- String method = spec.method;
- bool withCredentials = spec.withCredentials;
- String responseType = spec.responseType;
- String mimeType = spec.mimeType;
- Map<String, String> requestHeaders = spec.requestHeaders;
- var sendData = spec.sendData;
- var onProgress = spec.onProgress;
-
var completer = new Completer<HttpRequest>();
- var task = completer.future;
var xhr = new HttpRequest();
if (method == null) {
@@ -360,42 +230,23 @@ $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS
// redirect case will be handled by the browser before it gets to us,
// so if we see it we should pass it through to the user.
var unknownRedirect = xhr.status > 307 && xhr.status < 400;
-
- var isSuccessful = accepted || fileUri || notModified || unknownRedirect;
-
- if (zone == null && isSuccessful) {
+
+ if (accepted || fileUri || notModified || unknownRedirect) {
completer.complete(xhr);
- } else if (zone == null) {
- completer.completeError(e);
- } else if (isSuccessful) {
- zone.runTask((task, value) {
- completer.complete(value);
- }, task, xhr);
} else {
- zone.runTask((task, error) {
- completer.completeError(error);
- }, task, e);
+ completer.completeError(e);
}
});
- if (zone == null) {
- xhr.onError.listen(completer.completeError);
- } else {
- xhr.onError.listen((error) {
- zone.runTask((task, error) {
- completer.completeError(error);
- }, task, error);
- });
- }
+ xhr.onError.listen(completer.completeError);
if (sendData != null) {
- // TODO(floitsch): should we go through 'send()' and have nested tasks?
- xhr._send(sendData);
+ xhr.send(sendData);
} else {
- xhr._send();
+ xhr.send();
}
- return task;
+ return completer.future;
}
/**
@@ -465,9 +316,6 @@ $endif
return xhr.responseText;
});
}
- // TODO(floitsch): the following code doesn't go through task zones.
- // Since 'XDomainRequest' is an IE9 feature we should probably just remove
- // it.
$if DART2JS
var completer = new Completer<String>();
if (method == null) {
@@ -548,7 +396,7 @@ $endif
*
* Note: Most simple HTTP requests can be accomplished using the [getString],
* [request], [requestCrossOrigin], or [postFormData] methods. Use of this
- * `open` method is intended only for more complex HTTP requests where
+ * `open` method is intended only for more complext HTTP requests where
* finer-grained control is needed.
*/
@DomName('XMLHttpRequest.open')
@@ -565,35 +413,5 @@ $else
void open(String method, String url, {bool async, String user, String password}) native;
$endif
- /**
- * Sends the request with any given `data`.
- *
- * Note: Most simple HTTP requests can be accomplished using the [getString],
- * [request], [requestCrossOrigin], or [postFormData] methods. Use of this
- * `send` method is intended only for more complex HTTP requests where
- * finer-grained control is needed.
- *
- * ## Other resources
- *
- * * [XMLHttpRequest.send](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#send%28%29)
- * from MDN.
- */
- @DomName('XMLHttpRequest.send')
- @DocsEditable()
- void send([body_OR_data]) {
- if (identical(Zone.current, Zone.ROOT)) {
- _send(body_OR_data);
- } else {
- Zone.current.createTask(_createHttpRequestSendTask,
- new HttpRequestSendTaskSpecification(this, body_OR_data));
- }
- }
-
- static HttpRequest _createHttpRequestSendTask(
- HttpRequestSendTaskSpecification spec, Zone zone) {
- spec.request._send(spec.sendData);
- return spec.request;
- }
-
$!MEMBERS
}
« no previous file with comments | « tools/dom/templates/html/impl/impl_Window.darttemplate ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698