OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved. |
3 * Copyright (C) 2005-2007 Alexey Proskuryakov <ap@webkit.org> | 3 * Copyright (C) 2005-2007 Alexey Proskuryakov <ap@webkit.org> |
4 * Copyright (C) 2007, 2008 Julien Chaffraix <jchaffraix@webkit.org> | 4 * Copyright (C) 2007, 2008 Julien Chaffraix <jchaffraix@webkit.org> |
5 * Copyright (C) 2008, 2011 Google Inc. All rights reserved. | 5 * Copyright (C) 2008, 2011 Google Inc. All rights reserved. |
6 * Copyright (C) 2012 Intel Corporation | 6 * Copyright (C) 2012 Intel Corporation |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Lesser General Public | 9 * modify it under the terms of the GNU Lesser General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
618 void XMLHttpRequest::send(Document* document, ExceptionState& exceptionState) | 618 void XMLHttpRequest::send(Document* document, ExceptionState& exceptionState) |
619 { | 619 { |
620 WTF_LOG(Network, "XMLHttpRequest %p send() Document %p", this, document); | 620 WTF_LOG(Network, "XMLHttpRequest %p send() Document %p", this, document); |
621 | 621 |
622 ASSERT(document); | 622 ASSERT(document); |
623 | 623 |
624 if (!initSend(exceptionState)) | 624 if (!initSend(exceptionState)) |
625 return; | 625 return; |
626 | 626 |
627 if (areMethodAndURLValidForSend()) { | 627 if (areMethodAndURLValidForSend()) { |
628 String contentType = getRequestHeader("Content-Type"); | 628 if (getRequestHeader("Content-Type").isEmpty()) { |
629 if (contentType.isEmpty()) { | |
630 // FIXME: this should include the charset used for encoding. | 629 // FIXME: this should include the charset used for encoding. |
631 setRequestHeaderInternal("Content-Type", "application/xml"); | 630 setRequestHeaderInternal("Content-Type", "application/xml"); |
632 } | 631 } |
633 | 632 |
634 // FIXME: According to XMLHttpRequest Level 2, this should use the Docum
ent.innerHTML algorithm | 633 // FIXME: According to XMLHttpRequest Level 2, this should use the Docum
ent.innerHTML algorithm |
635 // from the HTML5 specification to serialize the document. | 634 // from the HTML5 specification to serialize the document. |
636 String body = createMarkup(document); | 635 String body = createMarkup(document); |
637 | 636 |
638 // FIXME: This should use value of document.inputEncoding to determine t
he encoding to use. | 637 // FIXME: This should use value of document.inputEncoding to determine t
he encoding to use. |
639 m_requestEntityBody = FormData::create(UTF8Encoding().encode(body, WTF::
EntitiesForUnencodables)); | 638 m_requestEntityBody = FormData::create(UTF8Encoding().encode(body, WTF::
EntitiesForUnencodables)); |
(...skipping 29 matching lines...) Expand all Loading... |
669 } | 668 } |
670 | 669 |
671 void XMLHttpRequest::send(Blob* body, ExceptionState& exceptionState) | 670 void XMLHttpRequest::send(Blob* body, ExceptionState& exceptionState) |
672 { | 671 { |
673 WTF_LOG(Network, "XMLHttpRequest %p send() Blob '%s'", this, body->uuid().ut
f8().data()); | 672 WTF_LOG(Network, "XMLHttpRequest %p send() Blob '%s'", this, body->uuid().ut
f8().data()); |
674 | 673 |
675 if (!initSend(exceptionState)) | 674 if (!initSend(exceptionState)) |
676 return; | 675 return; |
677 | 676 |
678 if (areMethodAndURLValidForSend()) { | 677 if (areMethodAndURLValidForSend()) { |
679 const String& contentType = getRequestHeader("Content-Type"); | 678 if (getRequestHeader("Content-Type").isEmpty()) { |
680 if (contentType.isEmpty()) { | |
681 const String& blobType = body->type(); | 679 const String& blobType = body->type(); |
682 if (!blobType.isEmpty() && isValidContentType(blobType)) | 680 if (!blobType.isEmpty() && isValidContentType(blobType)) |
683 setRequestHeaderInternal("Content-Type", AtomicString(blobType))
; | 681 setRequestHeaderInternal("Content-Type", AtomicString(blobType))
; |
684 else { | 682 else { |
685 // From FileAPI spec, whenever media type cannot be determined,
empty string must be returned. | 683 // From FileAPI spec, whenever media type cannot be determined,
empty string must be returned. |
686 setRequestHeaderInternal("Content-Type", ""); | 684 setRequestHeaderInternal("Content-Type", ""); |
687 } | 685 } |
688 } | 686 } |
689 | 687 |
690 // FIXME: add support for uploading bundles. | 688 // FIXME: add support for uploading bundles. |
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1078 setRequestHeaderInternal(name, value); | 1076 setRequestHeaderInternal(name, value); |
1079 } | 1077 } |
1080 | 1078 |
1081 void XMLHttpRequest::setRequestHeaderInternal(const AtomicString& name, const At
omicString& value) | 1079 void XMLHttpRequest::setRequestHeaderInternal(const AtomicString& name, const At
omicString& value) |
1082 { | 1080 { |
1083 HTTPHeaderMap::AddResult result = m_requestHeaders.add(name, value); | 1081 HTTPHeaderMap::AddResult result = m_requestHeaders.add(name, value); |
1084 if (!result.isNewEntry) | 1082 if (!result.isNewEntry) |
1085 result.iterator->value = result.iterator->value + ", " + value; | 1083 result.iterator->value = result.iterator->value + ", " + value; |
1086 } | 1084 } |
1087 | 1085 |
1088 AtomicString XMLHttpRequest::getRequestHeader(const AtomicString& name) const | 1086 const AtomicString& XMLHttpRequest::getRequestHeader(const AtomicString& name) c
onst |
1089 { | 1087 { |
1090 return m_requestHeaders.get(name); | 1088 return m_requestHeaders.get(name); |
1091 } | 1089 } |
1092 | 1090 |
1093 String XMLHttpRequest::getAllResponseHeaders(ExceptionState& exceptionState) con
st | 1091 String XMLHttpRequest::getAllResponseHeaders(ExceptionState& exceptionState) con
st |
1094 { | 1092 { |
1095 if (m_state < HEADERS_RECEIVED || m_error) | 1093 if (m_state < HEADERS_RECEIVED || m_error) |
1096 return ""; | 1094 return ""; |
1097 | 1095 |
1098 StringBuilder stringBuilder; | 1096 StringBuilder stringBuilder; |
(...skipping 18 matching lines...) Expand all Loading... |
1117 stringBuilder.append(':'); | 1115 stringBuilder.append(':'); |
1118 stringBuilder.append(' '); | 1116 stringBuilder.append(' '); |
1119 stringBuilder.append(it->value); | 1117 stringBuilder.append(it->value); |
1120 stringBuilder.append('\r'); | 1118 stringBuilder.append('\r'); |
1121 stringBuilder.append('\n'); | 1119 stringBuilder.append('\n'); |
1122 } | 1120 } |
1123 | 1121 |
1124 return stringBuilder.toString(); | 1122 return stringBuilder.toString(); |
1125 } | 1123 } |
1126 | 1124 |
1127 AtomicString XMLHttpRequest::getResponseHeader(const AtomicString& name, Excepti
onState& exceptionState) const | 1125 const AtomicString& XMLHttpRequest::getResponseHeader(const AtomicString& name,
ExceptionState& exceptionState) const |
1128 { | 1126 { |
1129 if (m_state < HEADERS_RECEIVED || m_error) | 1127 if (m_state < HEADERS_RECEIVED || m_error) |
1130 return nullAtom; | 1128 return nullAtom; |
1131 | 1129 |
1132 // See comment in getAllResponseHeaders above. | 1130 // See comment in getAllResponseHeaders above. |
1133 if (isSetCookieHeader(name) && !securityOrigin()->canLoadLocalResources()) { | 1131 if (isSetCookieHeader(name) && !securityOrigin()->canLoadLocalResources()) { |
1134 logConsoleError(executionContext(), "Refused to get unsafe header \"" +
name + "\""); | 1132 logConsoleError(executionContext(), "Refused to get unsafe header \"" +
name + "\""); |
1135 return nullAtom; | 1133 return nullAtom; |
1136 } | 1134 } |
1137 | 1135 |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1393 { | 1391 { |
1394 return EventTargetNames::XMLHttpRequest; | 1392 return EventTargetNames::XMLHttpRequest; |
1395 } | 1393 } |
1396 | 1394 |
1397 ExecutionContext* XMLHttpRequest::executionContext() const | 1395 ExecutionContext* XMLHttpRequest::executionContext() const |
1398 { | 1396 { |
1399 return ActiveDOMObject::executionContext(); | 1397 return ActiveDOMObject::executionContext(); |
1400 } | 1398 } |
1401 | 1399 |
1402 } // namespace WebCore | 1400 } // namespace WebCore |
OLD | NEW |