| Index: Source/WebCore/bindings/dart/custom/DartXMLHttpRequestCustom.cpp
|
| diff --git a/Source/WebCore/bindings/dart/custom/DartXMLHttpRequestCustom.cpp b/Source/WebCore/bindings/dart/custom/DartXMLHttpRequestCustom.cpp
|
| index 00147646b1f2c59f8f624910ac2575d46b41d50b..0d1e8a4f90ecd804ad800f4f38377c413ae1c479 100644
|
| --- a/Source/WebCore/bindings/dart/custom/DartXMLHttpRequestCustom.cpp
|
| +++ b/Source/WebCore/bindings/dart/custom/DartXMLHttpRequestCustom.cpp
|
| @@ -219,8 +219,70 @@ fail:
|
|
|
| void responseGetter(Dart_NativeArguments args)
|
| {
|
| - // FIXME: implement.
|
| - DART_UNIMPLEMENTED();
|
| + DartApiScope dartApiScope;
|
| + Dart_Handle exception;
|
| + {
|
| + XMLHttpRequest* receiver = DartDOMWrapper::receiver<XMLHttpRequest>(args);
|
| +
|
| + switch (receiver->responseTypeCode()) {
|
| + case XMLHttpRequest::ResponseTypeDefault:
|
| + case XMLHttpRequest::ResponseTypeText:
|
| + {
|
| + ExceptionCode ec = 0;
|
| + String result = receiver->responseText(ec);
|
| + if (UNLIKELY(ec)) {
|
| + exception = DartDOMWrapper::exceptionCodeToDartException(ec);
|
| + goto fail;
|
| + }
|
| + Dart_SetReturnValue(args, DartUtilities::stringToDart(result));
|
| + return;
|
| + }
|
| +
|
| + case XMLHttpRequest::ResponseTypeDocument:
|
| + {
|
| + ExceptionCode ec = 0;
|
| + Document* document = receiver->responseXML(ec);
|
| + if (UNLIKELY(ec)) {
|
| + exception = DartDOMWrapper::exceptionCodeToDartException(ec);
|
| + goto fail;
|
| + }
|
| + DartDOMWrapper::returnValue<DartDocument>(args, document);
|
| + return;
|
| + }
|
| +
|
| + case XMLHttpRequest::ResponseTypeBlob:
|
| +#if ENABLE(XHR_RESPONSE_BLOB)
|
| + {
|
| + ExceptionCode ec = 0;
|
| + Blob* blob = receiver->responseBlob(ec);
|
| + if (UNLIKELY(ec)) {
|
| + exception = DartDOMWrapper::exceptionCodeToDartException(ec);
|
| + goto fail;
|
| + }
|
| + DartDOMWrapper::returnValue<DartBlob>(args, blob);
|
| + }
|
| +#endif
|
| + return;
|
| +
|
| + case XMLHttpRequest::ResponseTypeArrayBuffer:
|
| + {
|
| + ExceptionCode ec = 0;
|
| + ArrayBuffer* arrayBuffer = receiver->responseArrayBuffer(ec);
|
| + if (UNLIKELY(ec)) {
|
| + exception = DartDOMWrapper::exceptionCodeToDartException(ec);
|
| + goto fail;
|
| + }
|
| + DartDOMWrapper::returnValue<DartArrayBuffer>(args, arrayBuffer);
|
| + return;
|
| + }
|
| + }
|
| +
|
| + return;
|
| + }
|
| +
|
| +fail:
|
| + Dart_ThrowException(exception);
|
| + ASSERT_NOT_REACHED();
|
| }
|
|
|
| } // DartXMLHttpRequestInternal
|
|
|