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 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 } | 693 } |
694 | 694 |
695 // FIXME: According to XMLHttpRequest Level 2 we should throw InvalidAccessE
rror exception here. | 695 // FIXME: According to XMLHttpRequest Level 2 we should throw InvalidAccessE
rror exception here. |
696 // However for time being only print warning message to warn web developers. | 696 // However for time being only print warning message to warn web developers. |
697 if (!m_async) | 697 if (!m_async) |
698 UseCounter::countDeprecation(executionContext(), UseCounter::SyncXHRWith
Credentials); | 698 UseCounter::countDeprecation(executionContext(), UseCounter::SyncXHRWith
Credentials); |
699 | 699 |
700 m_includeCredentials = value; | 700 m_includeCredentials = value; |
701 } | 701 } |
702 | 702 |
703 void XMLHttpRequest::open(const AtomicString& method, const String& url, Excepti
onState& exceptionState) | 703 void XMLHttpRequest::open(const AtomicString& method, const String& urlString, E
xceptionState& exceptionState) |
704 { | 704 { |
705 open(method, url, true, exceptionState); | 705 open(method, executionContext()->completeURL(urlString), true, exceptionStat
e); |
706 } | 706 } |
707 | 707 |
708 void XMLHttpRequest::open(const AtomicString& method, const String& urlString, b
ool async, ExceptionState& exceptionState) | 708 void XMLHttpRequest::open(const AtomicString& method, const String& urlString, b
ool async, const String& username, const String& password, ExceptionState& excep
tionState) |
709 { | 709 { |
710 open(method, executionContext()->completeURL(urlString), async, exceptionSta
te); | 710 KURL url(executionContext()->completeURL(urlString)); |
| 711 if (!username.isNull()) |
| 712 url.setUser(username); |
| 713 if (!password.isNull()) |
| 714 url.setPass(password); |
| 715 |
| 716 open(method, url, async, exceptionState); |
711 } | 717 } |
712 | 718 |
713 void XMLHttpRequest::open(const AtomicString& method, const KURL& url, bool asyn
c, ExceptionState& exceptionState) | 719 void XMLHttpRequest::open(const AtomicString& method, const KURL& url, bool asyn
c, ExceptionState& exceptionState) |
714 { | 720 { |
715 WTF_LOG(Network, "XMLHttpRequest %p open('%s', '%s', %d)", this, method.utf8
().data(), url.elidedString().utf8().data(), async); | 721 WTF_LOG(Network, "XMLHttpRequest %p open('%s', '%s', %d)", this, method.utf8
().data(), url.elidedString().utf8().data(), async); |
716 | 722 |
717 if (!internalAbort()) | 723 if (!internalAbort()) |
718 return; | 724 return; |
719 | 725 |
720 State previousState = m_state; | 726 State previousState = m_state; |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 ASSERT(!m_loader); | 780 ASSERT(!m_loader); |
775 | 781 |
776 // Check previous state to avoid dispatching readyState event | 782 // Check previous state to avoid dispatching readyState event |
777 // when calling open several times in a row. | 783 // when calling open several times in a row. |
778 if (previousState != OPENED) | 784 if (previousState != OPENED) |
779 changeState(OPENED); | 785 changeState(OPENED); |
780 else | 786 else |
781 m_state = OPENED; | 787 m_state = OPENED; |
782 } | 788 } |
783 | 789 |
784 void XMLHttpRequest::open(const AtomicString& method, const String& urlString, b
ool async, const String& user, ExceptionState& exceptionState) | |
785 { | |
786 KURL urlWithCredentials(executionContext()->completeURL(urlString)); | |
787 if (!user.isNull()) | |
788 urlWithCredentials.setUser(user); | |
789 | |
790 open(method, urlWithCredentials, async, exceptionState); | |
791 } | |
792 | |
793 void XMLHttpRequest::open(const AtomicString& method, const String& urlString, b
ool async, const String& user, const String& password, ExceptionState& exception
State) | |
794 { | |
795 KURL urlWithCredentials(executionContext()->completeURL(urlString)); | |
796 if (!user.isNull()) | |
797 urlWithCredentials.setUser(user); | |
798 if (!password.isNull()) | |
799 urlWithCredentials.setPass(password); | |
800 | |
801 open(method, urlWithCredentials, async, exceptionState); | |
802 } | |
803 | |
804 bool XMLHttpRequest::initSend(ExceptionState& exceptionState) | 790 bool XMLHttpRequest::initSend(ExceptionState& exceptionState) |
805 { | 791 { |
806 if (!executionContext()) | 792 if (!executionContext()) |
807 return false; | 793 return false; |
808 | 794 |
809 if (m_state != OPENED || m_loader) { | 795 if (m_state != OPENED || m_loader) { |
810 exceptionState.throwDOMException(InvalidStateError, "The object's state
must be OPENED."); | 796 exceptionState.throwDOMException(InvalidStateError, "The object's state
must be OPENED."); |
811 return false; | 797 return false; |
812 } | 798 } |
813 | 799 |
814 m_error = false; | 800 m_error = false; |
815 return true; | 801 return true; |
816 } | 802 } |
817 | 803 |
818 void XMLHttpRequest::send(const ArrayBufferOrArrayBufferViewOrBlobOrDocumentOrSt
ringOrFormData& data, ExceptionState& exceptionState) | 804 void XMLHttpRequest::send(const ArrayBufferOrArrayBufferViewOrBlobOrDocumentOrSt
ringOrFormData& body, ExceptionState& exceptionState) |
819 { | 805 { |
820 if (data.isNull()) { | 806 InspectorInstrumentation::willSendXMLHttpRequest(executionContext(), url()); |
821 send(exceptionState); | 807 |
| 808 if (body.isNull()) { |
| 809 send(String(), exceptionState); |
822 return; | 810 return; |
823 } | 811 } |
824 | 812 |
825 InspectorInstrumentation::willSendXMLHttpRequest(executionContext(), url()); | 813 if (body.isArrayBuffer()) { |
826 if (data.isArrayBuffer()) { | 814 send(body.getAsArrayBuffer().get(), exceptionState); |
827 send(data.getAsArrayBuffer().get(), exceptionState); | |
828 return; | 815 return; |
829 } | 816 } |
830 | 817 |
831 if (data.isArrayBufferView()) { | 818 if (body.isArrayBufferView()) { |
832 send(data.getAsArrayBufferView().get(), exceptionState); | 819 send(body.getAsArrayBufferView().get(), exceptionState); |
833 return; | 820 return; |
834 } | 821 } |
835 | 822 |
836 if (data.isBlob()) { | 823 if (body.isBlob()) { |
837 send(data.getAsBlob(), exceptionState); | 824 send(body.getAsBlob(), exceptionState); |
838 return; | 825 return; |
839 } | 826 } |
840 | 827 |
841 if (data.isDocument()) { | 828 if (body.isDocument()) { |
842 send(data.getAsDocument().get(), exceptionState); | 829 send(body.getAsDocument().get(), exceptionState); |
843 return; | 830 return; |
844 } | 831 } |
845 | 832 |
846 if (data.isFormData()) { | 833 if (body.isFormData()) { |
847 send(data.getAsFormData(), exceptionState); | 834 send(body.getAsFormData(), exceptionState); |
848 return; | 835 return; |
849 } | 836 } |
850 | 837 |
851 ASSERT(data.isString()); | 838 ASSERT(body.isString()); |
852 send(data.getAsString(), exceptionState); | 839 send(body.getAsString(), exceptionState); |
853 } | |
854 | |
855 void XMLHttpRequest::send(ExceptionState& exceptionState) | |
856 { | |
857 InspectorInstrumentation::willSendXMLHttpRequest(executionContext(), url()); | |
858 send(String(), exceptionState); | |
859 } | 840 } |
860 | 841 |
861 bool XMLHttpRequest::areMethodAndURLValidForSend() | 842 bool XMLHttpRequest::areMethodAndURLValidForSend() |
862 { | 843 { |
863 return m_method != "GET" && m_method != "HEAD" && m_url.protocolIsInHTTPFami
ly(); | 844 return m_method != "GET" && m_method != "HEAD" && m_url.protocolIsInHTTPFami
ly(); |
864 } | 845 } |
865 | 846 |
866 void XMLHttpRequest::send(Document* document, ExceptionState& exceptionState) | 847 void XMLHttpRequest::send(Document* document, ExceptionState& exceptionState) |
867 { | 848 { |
868 WTF_LOG(Network, "XMLHttpRequest %p send() Document %p", this, document); | 849 WTF_LOG(Network, "XMLHttpRequest %p send() Document %p", this, document); |
(...skipping 1014 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1883 visitor->trace(m_responseDocumentParser); | 1864 visitor->trace(m_responseDocumentParser); |
1884 visitor->trace(m_progressEventThrottle); | 1865 visitor->trace(m_progressEventThrottle); |
1885 visitor->trace(m_upload); | 1866 visitor->trace(m_upload); |
1886 visitor->trace(m_blobLoader); | 1867 visitor->trace(m_blobLoader); |
1887 XMLHttpRequestEventTarget::trace(visitor); | 1868 XMLHttpRequestEventTarget::trace(visitor); |
1888 DocumentParserClient::trace(visitor); | 1869 DocumentParserClient::trace(visitor); |
1889 ActiveDOMObject::trace(visitor); | 1870 ActiveDOMObject::trace(visitor); |
1890 } | 1871 } |
1891 | 1872 |
1892 } // namespace blink | 1873 } // namespace blink |
OLD | NEW |