Files
sdk/client/html/src/XMLHttpRequestWrappingImplementation.dart
T
2011-12-01 22:51:54 +00:00

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;
}
}