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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 body = String(bodyData.data(), bodyData.size()).replaceWithLiteral('+', "%20
"); | 76 body = String(bodyData.data(), bodyData.size()).replaceWithLiteral('+', "%20
"); |
77 | 77 |
78 StringBuilder query; | 78 StringBuilder query; |
79 query.append(url.query()); | 79 query.append(url.query()); |
80 if (!query.isEmpty()) | 80 if (!query.isEmpty()) |
81 query.append('&'); | 81 query.append('&'); |
82 query.append(body); | 82 query.append(body); |
83 url.setQuery(query.toString()); | 83 url.setQuery(query.toString()); |
84 } | 84 } |
85 | 85 |
86 void FormSubmission::Attributes::parseAction(const String& action) | 86 void FormSubmission::Attributes::parseAction(const Document& document, const Str
ing& action) |
87 { | 87 { |
88 // FIXME: Can we parse into a KURL? | 88 m_action = action.isEmpty() ? KURL() : document.completeURL(stripLeadingAndT
railingHTMLSpaces(action)); |
89 m_action = stripLeadingAndTrailingHTMLSpaces(action); | |
90 } | 89 } |
91 | 90 |
92 AtomicString FormSubmission::Attributes::parseEncodingType(const String& type) | 91 AtomicString FormSubmission::Attributes::parseEncodingType(const String& type) |
93 { | 92 { |
94 if (equalIgnoringCase(type, "multipart/form-data")) | 93 if (equalIgnoringCase(type, "multipart/form-data")) |
95 return AtomicString("multipart/form-data", AtomicString::ConstructFromLi
teral); | 94 return AtomicString("multipart/form-data", AtomicString::ConstructFromLi
teral); |
96 if (equalIgnoringCase(type, "text/plain")) | 95 if (equalIgnoringCase(type, "text/plain")) |
97 return AtomicString("text/plain", AtomicString::ConstructFromLiteral); | 96 return AtomicString("text/plain", AtomicString::ConstructFromLiteral); |
98 return AtomicString("application/x-www-form-urlencoded", AtomicString::Const
ructFromLiteral); | 97 return AtomicString("application/x-www-form-urlencoded", AtomicString::Const
ructFromLiteral); |
99 } | 98 } |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 break; | 172 break; |
174 } | 173 } |
175 } | 174 } |
176 } | 175 } |
177 | 176 |
178 FormSubmission::Attributes copiedAttributes; | 177 FormSubmission::Attributes copiedAttributes; |
179 copiedAttributes.copyFrom(attributes); | 178 copiedAttributes.copyFrom(attributes); |
180 if (submitButton) { | 179 if (submitButton) { |
181 AtomicString attributeValue; | 180 AtomicString attributeValue; |
182 if (!(attributeValue = submitButton->fastGetAttribute(formactionAttr)).i
sNull()) | 181 if (!(attributeValue = submitButton->fastGetAttribute(formactionAttr)).i
sNull()) |
183 copiedAttributes.parseAction(attributeValue); | 182 copiedAttributes.parseAction(form->document(), attributeValue); |
184 if (!(attributeValue = submitButton->fastGetAttribute(formenctypeAttr)).
isNull()) | 183 if (!(attributeValue = submitButton->fastGetAttribute(formenctypeAttr)).
isNull()) |
185 copiedAttributes.updateEncodingType(attributeValue); | 184 copiedAttributes.updateEncodingType(attributeValue); |
186 if (!(attributeValue = submitButton->fastGetAttribute(formmethodAttr)).i
sNull()) | 185 if (!(attributeValue = submitButton->fastGetAttribute(formmethodAttr)).i
sNull()) |
187 copiedAttributes.updateMethodType(attributeValue); | 186 copiedAttributes.updateMethodType(attributeValue); |
188 if (!(attributeValue = submitButton->fastGetAttribute(formtargetAttr)).i
sNull()) | 187 if (!(attributeValue = submitButton->fastGetAttribute(formtargetAttr)).i
sNull()) |
189 copiedAttributes.setTarget(attributeValue); | 188 copiedAttributes.setTarget(attributeValue); |
190 } | 189 } |
191 | 190 |
192 if (copiedAttributes.method() == DialogMethod) { | 191 if (copiedAttributes.method() == DialogMethod) { |
193 if (submitButton) | 192 if (submitButton) |
194 return adoptRef(new FormSubmission(submitButton->resultForDialogSubm
it())); | 193 return adoptRef(new FormSubmission(submitButton->resultForDialogSubm
it())); |
195 return adoptRef(new FormSubmission("")); | 194 return adoptRef(new FormSubmission("")); |
196 } | 195 } |
197 | 196 |
198 Document& document = form->document(); | 197 Document& document = form->document(); |
199 KURL actionURL = document.completeURL(copiedAttributes.action().isEmpty() ?
document.url().string() : copiedAttributes.action()); | 198 KURL actionURL = copiedAttributes.action().isEmpty() ? document.url() : copi
edAttributes.action(); |
200 bool isMailtoForm = actionURL.protocolIs("mailto"); | 199 bool isMailtoForm = actionURL.protocolIs("mailto"); |
201 bool isMultiPartForm = false; | 200 bool isMultiPartForm = false; |
202 AtomicString encodingType = copiedAttributes.encodingType(); | 201 AtomicString encodingType = copiedAttributes.encodingType(); |
203 | 202 |
204 if (copiedAttributes.method() == PostMethod) { | 203 if (copiedAttributes.method() == PostMethod) { |
205 isMultiPartForm = copiedAttributes.isMultiPartForm(); | 204 isMultiPartForm = copiedAttributes.isMultiPartForm(); |
206 if (isMultiPartForm && isMailtoForm) { | 205 if (isMultiPartForm && isMailtoForm) { |
207 encodingType = AtomicString("application/x-www-form-urlencoded", Ato
micString::ConstructFromLiteral); | 206 encodingType = AtomicString("application/x-www-form-urlencoded", Ato
micString::ConstructFromLiteral); |
208 isMultiPartForm = false; | 207 isMultiPartForm = false; |
209 } | 208 } |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 frameRequest.resourceRequest().setHTTPContentType(m_contentType); | 272 frameRequest.resourceRequest().setHTTPContentType(m_contentType); |
274 else | 273 else |
275 frameRequest.resourceRequest().setHTTPContentType(m_contentType + ";
boundary=" + m_boundary); | 274 frameRequest.resourceRequest().setHTTPContentType(m_contentType + ";
boundary=" + m_boundary); |
276 } | 275 } |
277 | 276 |
278 frameRequest.resourceRequest().setURL(requestURL()); | 277 frameRequest.resourceRequest().setURL(requestURL()); |
279 FrameLoader::addHTTPOriginIfNeeded(frameRequest.resourceRequest(), AtomicStr
ing(m_origin)); | 278 FrameLoader::addHTTPOriginIfNeeded(frameRequest.resourceRequest(), AtomicStr
ing(m_origin)); |
280 } | 279 } |
281 | 280 |
282 } | 281 } |
OLD | NEW |