c485674382
TBR Review URL: http://codereview.chromium.org//8769021 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@1998 260f80e4-7a28-3924-810f-c04153c831b5
132 lines
3.7 KiB
Dart
132 lines
3.7 KiB
Dart
// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
class XMLHttpRequestEventsImplementation extends EventsImplementation
|
|
implements XMLHttpRequestEvents {
|
|
XMLHttpRequestEventsImplementation._wrap(_ptr) : super._wrap(_ptr);
|
|
|
|
EventListenerList get abort() => _get('abort');
|
|
EventListenerList get error() => _get('error');
|
|
EventListenerList get load() => _get('load');
|
|
EventListenerList get loadStart() => _get('loadstart');
|
|
EventListenerList get progress() => _get('progress');
|
|
EventListenerList get readyStateChange() => _get('readystatechange');
|
|
}
|
|
|
|
class XMLHttpRequestWrappingImplementation extends EventTargetWrappingImplementation implements XMLHttpRequest {
|
|
XMLHttpRequestWrappingImplementation._wrap(
|
|
dom.XMLHttpRequest ptr) : super._wrap(ptr);
|
|
|
|
factory XMLHttpRequestWrappingImplementation() {
|
|
return new XMLHttpRequestWrappingImplementation._wrap(
|
|
new dom.XMLHttpRequest());
|
|
}
|
|
|
|
factory XMLHttpRequestWrappingImplementation.getTEMPNAME(String url,
|
|
onSuccess(XMLHttpRequest request)) {
|
|
final request = new XMLHttpRequest();
|
|
request.open('GET', url, true);
|
|
|
|
// TODO(terry): Validate after client login added if necessary to forward
|
|
// cookies to server.
|
|
request.withCredentials = true;
|
|
|
|
// Status 0 is for local XHR request.
|
|
request.on.readyStateChange.add((e) {
|
|
if (request.readyState == XMLHttpRequest.DONE &&
|
|
(request.status == 200 || request.status == 0)) {
|
|
onSuccess(request);
|
|
}
|
|
});
|
|
|
|
request.send();
|
|
|
|
return request;
|
|
}
|
|
|
|
int get readyState() => _ptr.readyState;
|
|
|
|
String get responseText() => _ptr.responseText;
|
|
|
|
String get responseType() => _ptr.responseType;
|
|
|
|
void set responseType(String value) { _ptr.responseType = value; }
|
|
|
|
Document get responseXML() => LevelDom.wrapDocument(_ptr.responseXML);
|
|
|
|
int get status() => _ptr.status;
|
|
|
|
String get statusText() => _ptr.statusText;
|
|
|
|
XMLHttpRequestUpload get upload() => LevelDom.wrapXMLHttpRequestUpload(_ptr.upload);
|
|
|
|
bool get withCredentials() => _ptr.withCredentials;
|
|
|
|
void set withCredentials(bool value) { _ptr.withCredentials = value; }
|
|
|
|
void abort() {
|
|
_ptr.abort();
|
|
return;
|
|
}
|
|
|
|
String getAllResponseHeaders() {
|
|
return _ptr.getAllResponseHeaders();
|
|
}
|
|
|
|
String getResponseHeader(String header) {
|
|
return _ptr.getResponseHeader(header);
|
|
}
|
|
|
|
void open(String method, String url, bool async, [String user = null, String password = null]) {
|
|
if (user === null) {
|
|
if (password === null) {
|
|
_ptr.open(method, url, async);
|
|
return;
|
|
}
|
|
} else {
|
|
if (password === null) {
|
|
_ptr.open(method, url, async, user);
|
|
return;
|
|
} else {
|
|
_ptr.open(method, url, async, user, password);
|
|
return;
|
|
}
|
|
}
|
|
throw "Incorrect number or type of arguments";
|
|
}
|
|
|
|
void overrideMimeType(String mime) {
|
|
_ptr.overrideMimeType(mime);
|
|
}
|
|
|
|
void send([var data = null]) {
|
|
if (data === null) {
|
|
_ptr.send();
|
|
return;
|
|
} else {
|
|
if (data is Document) {
|
|
_ptr.send(LevelDom.unwrapMaybePrimitive(data));
|
|
return;
|
|
} else {
|
|
if (data is String) {
|
|
_ptr.send(LevelDom.unwrapMaybePrimitive(data));
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
throw "Incorrect number or type of arguments";
|
|
}
|
|
|
|
void setRequestHeader(String header, String value) {
|
|
_ptr.setRequestHeader(header, value);
|
|
}
|
|
|
|
XMLHttpRequestEvents get on() {
|
|
if (_on === null) {
|
|
_on = new XMLHttpRequestEventsImplementation._wrap(_ptr);
|
|
}
|
|
return _on;
|
|
}
|
|
}
|