| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 query.append(body); | 79 query.append(body); |
| 80 url.setQuery(query); | 80 url.setQuery(query); |
| 81 } | 81 } |
| 82 | 82 |
| 83 void FormSubmission::Attributes::parseAction(const String& action) | 83 void FormSubmission::Attributes::parseAction(const String& action) |
| 84 { | 84 { |
| 85 // FIXME: Can we parse into a KURL? | 85 // FIXME: Can we parse into a KURL? |
| 86 m_action = stripLeadingAndTrailingHTMLSpaces(action); | 86 m_action = stripLeadingAndTrailingHTMLSpaces(action); |
| 87 } | 87 } |
| 88 | 88 |
| 89 String FormSubmission::Attributes::parseEncodingType(const String& type) | 89 AtomicString FormSubmission::Attributes::parseEncodingType(const String& type) |
| 90 { | 90 { |
| 91 if (equalIgnoringCase(type, "multipart/form-data")) | 91 if (equalIgnoringCase(type, "multipart/form-data")) |
| 92 return "multipart/form-data"; | 92 return AtomicString("multipart/form-data", AtomicString::ConstructFromLi
teral); |
| 93 if (equalIgnoringCase(type, "text/plain")) | 93 if (equalIgnoringCase(type, "text/plain")) |
| 94 return "text/plain"; | 94 return AtomicString("text/plain", AtomicString::ConstructFromLiteral); |
| 95 return "application/x-www-form-urlencoded"; | 95 return AtomicString("application/x-www-form-urlencoded", AtomicString::Const
ructFromLiteral); |
| 96 } | 96 } |
| 97 | 97 |
| 98 void FormSubmission::Attributes::updateEncodingType(const String& type) | 98 void FormSubmission::Attributes::updateEncodingType(const String& type) |
| 99 { | 99 { |
| 100 m_encodingType = parseEncodingType(type); | 100 m_encodingType = parseEncodingType(type); |
| 101 m_isMultiPartForm = (m_encodingType == "multipart/form-data"); | 101 m_isMultiPartForm = (m_encodingType == "multipart/form-data"); |
| 102 } | 102 } |
| 103 | 103 |
| 104 FormSubmission::Method FormSubmission::Attributes::parseMethodType(const String&
type) | 104 FormSubmission::Method FormSubmission::Attributes::parseMethodType(const String&
type) |
| 105 { | 105 { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 133 { | 133 { |
| 134 m_method = other.m_method; | 134 m_method = other.m_method; |
| 135 m_isMultiPartForm = other.m_isMultiPartForm; | 135 m_isMultiPartForm = other.m_isMultiPartForm; |
| 136 | 136 |
| 137 m_action = other.m_action; | 137 m_action = other.m_action; |
| 138 m_target = other.m_target; | 138 m_target = other.m_target; |
| 139 m_encodingType = other.m_encodingType; | 139 m_encodingType = other.m_encodingType; |
| 140 m_acceptCharset = other.m_acceptCharset; | 140 m_acceptCharset = other.m_acceptCharset; |
| 141 } | 141 } |
| 142 | 142 |
| 143 inline FormSubmission::FormSubmission(Method method, const KURL& action, const A
tomicString& target, const String& contentType, PassRefPtr<FormState> state, Pas
sRefPtr<FormData> data, const String& boundary, PassRefPtr<Event> event) | 143 inline FormSubmission::FormSubmission(Method method, const KURL& action, const A
tomicString& target, const AtomicString& contentType, PassRefPtr<FormState> stat
e, PassRefPtr<FormData> data, const String& boundary, PassRefPtr<Event> event) |
| 144 : m_method(method) | 144 : m_method(method) |
| 145 , m_action(action) | 145 , m_action(action) |
| 146 , m_target(target) | 146 , m_target(target) |
| 147 , m_contentType(contentType) | 147 , m_contentType(contentType) |
| 148 , m_formState(state) | 148 , m_formState(state) |
| 149 , m_formData(data) | 149 , m_formData(data) |
| 150 , m_boundary(boundary) | 150 , m_boundary(boundary) |
| 151 , m_event(event) | 151 , m_event(event) |
| 152 { | 152 { |
| 153 } | 153 } |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 copiedAttributes.setTarget(attributeValue); | 186 copiedAttributes.setTarget(attributeValue); |
| 187 } | 187 } |
| 188 | 188 |
| 189 if (copiedAttributes.method() == DialogMethod) | 189 if (copiedAttributes.method() == DialogMethod) |
| 190 return adoptRef(new FormSubmission(submitButton->resultForDialogSubmit()
)); | 190 return adoptRef(new FormSubmission(submitButton->resultForDialogSubmit()
)); |
| 191 | 191 |
| 192 Document& document = form->document(); | 192 Document& document = form->document(); |
| 193 KURL actionURL = document.completeURL(copiedAttributes.action().isEmpty() ?
document.url().string() : copiedAttributes.action()); | 193 KURL actionURL = document.completeURL(copiedAttributes.action().isEmpty() ?
document.url().string() : copiedAttributes.action()); |
| 194 bool isMailtoForm = actionURL.protocolIs("mailto"); | 194 bool isMailtoForm = actionURL.protocolIs("mailto"); |
| 195 bool isMultiPartForm = false; | 195 bool isMultiPartForm = false; |
| 196 String encodingType = copiedAttributes.encodingType(); | 196 AtomicString encodingType = copiedAttributes.encodingType(); |
| 197 | 197 |
| 198 if (copiedAttributes.method() == PostMethod) { | 198 if (copiedAttributes.method() == PostMethod) { |
| 199 isMultiPartForm = copiedAttributes.isMultiPartForm(); | 199 isMultiPartForm = copiedAttributes.isMultiPartForm(); |
| 200 if (isMultiPartForm && isMailtoForm) { | 200 if (isMultiPartForm && isMailtoForm) { |
| 201 encodingType = "application/x-www-form-urlencoded"; | 201 encodingType = AtomicString("application/x-www-form-urlencoded", Ato
micString::ConstructFromLiteral); |
| 202 isMultiPartForm = false; | 202 isMultiPartForm = false; |
| 203 } | 203 } |
| 204 } | 204 } |
| 205 WTF::TextEncoding dataEncoding = isMailtoForm ? UTF8Encoding() : FormDataBui
lder::encodingFromAcceptCharset(copiedAttributes.acceptCharset(), document.input
Encoding(), document.defaultCharset()); | 205 WTF::TextEncoding dataEncoding = isMailtoForm ? UTF8Encoding() : FormDataBui
lder::encodingFromAcceptCharset(copiedAttributes.acceptCharset(), document.input
Encoding(), document.defaultCharset()); |
| 206 RefPtr<DOMFormData> domFormData = DOMFormData::create(dataEncoding.encodingF
orFormSubmission()); | 206 RefPtr<DOMFormData> domFormData = DOMFormData::create(dataEncoding.encodingF
orFormSubmission()); |
| 207 Vector<pair<String, String> > formValues; | 207 Vector<pair<String, String> > formValues; |
| 208 | 208 |
| 209 bool containsPasswordData = false; | 209 bool containsPasswordData = false; |
| 210 for (unsigned i = 0; i < form->associatedElements().size(); ++i) { | 210 for (unsigned i = 0; i < form->associatedElements().size(); ++i) { |
| 211 FormAssociatedElement* control = form->associatedElements()[i]; | 211 FormAssociatedElement* control = form->associatedElements()[i]; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 requestURL.setQuery(m_formData->flattenToString()); | 252 requestURL.setQuery(m_formData->flattenToString()); |
| 253 return requestURL; | 253 return requestURL; |
| 254 } | 254 } |
| 255 | 255 |
| 256 void FormSubmission::populateFrameLoadRequest(FrameLoadRequest& frameRequest) | 256 void FormSubmission::populateFrameLoadRequest(FrameLoadRequest& frameRequest) |
| 257 { | 257 { |
| 258 if (!m_target.isEmpty()) | 258 if (!m_target.isEmpty()) |
| 259 frameRequest.setFrameName(m_target); | 259 frameRequest.setFrameName(m_target); |
| 260 | 260 |
| 261 if (!m_referrer.isEmpty()) | 261 if (!m_referrer.isEmpty()) |
| 262 frameRequest.resourceRequest().setHTTPReferrer(m_referrer); | 262 frameRequest.resourceRequest().setHTTPReferrer(AtomicString(m_referrer))
; |
| 263 | 263 |
| 264 if (m_method == FormSubmission::PostMethod) { | 264 if (m_method == FormSubmission::PostMethod) { |
| 265 frameRequest.resourceRequest().setHTTPMethod("POST"); | 265 frameRequest.resourceRequest().setHTTPMethod("POST"); |
| 266 frameRequest.resourceRequest().setHTTPBody(m_formData); | 266 frameRequest.resourceRequest().setHTTPBody(m_formData); |
| 267 | 267 |
| 268 // construct some user headers if necessary | 268 // construct some user headers if necessary |
| 269 if (m_boundary.isEmpty()) | 269 if (m_boundary.isEmpty()) |
| 270 frameRequest.resourceRequest().setHTTPContentType(m_contentType); | 270 frameRequest.resourceRequest().setHTTPContentType(m_contentType); |
| 271 else | 271 else |
| 272 frameRequest.resourceRequest().setHTTPContentType(m_contentType + ";
boundary=" + m_boundary); | 272 frameRequest.resourceRequest().setHTTPContentType(m_contentType + ";
boundary=" + m_boundary); |
| 273 } | 273 } |
| 274 | 274 |
| 275 frameRequest.resourceRequest().setURL(requestURL()); | 275 frameRequest.resourceRequest().setURL(requestURL()); |
| 276 FrameLoader::addHTTPOriginIfNeeded(frameRequest.resourceRequest(), m_origin)
; | 276 FrameLoader::addHTTPOriginIfNeeded(frameRequest.resourceRequest(), AtomicStr
ing(m_origin)); |
| 277 } | 277 } |
| 278 | 278 |
| 279 } | 279 } |
| OLD | NEW |