Chromium Code Reviews| 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..8423cdf45094ed7a51285993aeba090693a78bca 100644 |
| --- a/Source/WebCore/bindings/dart/custom/DartXMLHttpRequestCustom.cpp |
| +++ b/Source/WebCore/bindings/dart/custom/DartXMLHttpRequestCustom.cpp |
| @@ -219,8 +219,72 @@ 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); |
| + return; |
| + } |
| +#else |
|
podivilov
2012/04/26 18:02:54
Please replace #else with #endif.
Anton Muhin
2012/04/26 18:35:05
Done.
|
| + return; |
| +#endif |
| + |
| + 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 |