| 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 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 if (!(attributeValue = submitButton->getAttribute(formactionAttr)).isNul
l()) | 155 if (!(attributeValue = submitButton->getAttribute(formactionAttr)).isNul
l()) |
| 156 copiedAttributes.parseAction(attributeValue); | 156 copiedAttributes.parseAction(attributeValue); |
| 157 if (!(attributeValue = submitButton->getAttribute(formenctypeAttr)).isNu
ll()) | 157 if (!(attributeValue = submitButton->getAttribute(formenctypeAttr)).isNu
ll()) |
| 158 copiedAttributes.updateEncodingType(attributeValue); | 158 copiedAttributes.updateEncodingType(attributeValue); |
| 159 if (!(attributeValue = submitButton->getAttribute(formmethodAttr)).isNul
l()) | 159 if (!(attributeValue = submitButton->getAttribute(formmethodAttr)).isNul
l()) |
| 160 copiedAttributes.updateMethodType(attributeValue); | 160 copiedAttributes.updateMethodType(attributeValue); |
| 161 if (!(attributeValue = submitButton->getAttribute(formtargetAttr)).isNul
l()) | 161 if (!(attributeValue = submitButton->getAttribute(formtargetAttr)).isNul
l()) |
| 162 copiedAttributes.setTarget(attributeValue); | 162 copiedAttributes.setTarget(attributeValue); |
| 163 } | 163 } |
| 164 | 164 |
| 165 Document* document = form->document(); | 165 Document& document = form->document(); |
| 166 KURL actionURL = document->completeURL(copiedAttributes.action().isEmpty() ?
document->url().string() : copiedAttributes.action()); | 166 KURL actionURL = document.completeURL(copiedAttributes.action().isEmpty() ?
document.url().string() : copiedAttributes.action()); |
| 167 bool isMailtoForm = actionURL.protocolIs("mailto"); | 167 bool isMailtoForm = actionURL.protocolIs("mailto"); |
| 168 bool isMultiPartForm = false; | 168 bool isMultiPartForm = false; |
| 169 String encodingType = copiedAttributes.encodingType(); | 169 String encodingType = copiedAttributes.encodingType(); |
| 170 | 170 |
| 171 if (copiedAttributes.method() == PostMethod) { | 171 if (copiedAttributes.method() == PostMethod) { |
| 172 isMultiPartForm = copiedAttributes.isMultiPartForm(); | 172 isMultiPartForm = copiedAttributes.isMultiPartForm(); |
| 173 if (isMultiPartForm && isMailtoForm) { | 173 if (isMultiPartForm && isMailtoForm) { |
| 174 encodingType = "application/x-www-form-urlencoded"; | 174 encodingType = "application/x-www-form-urlencoded"; |
| 175 isMultiPartForm = false; | 175 isMultiPartForm = false; |
| 176 } | 176 } |
| 177 } | 177 } |
| 178 | 178 |
| 179 WTF::TextEncoding dataEncoding = isMailtoForm ? UTF8Encoding() : FormDataBui
lder::encodingFromAcceptCharset(copiedAttributes.acceptCharset(), document); | 179 WTF::TextEncoding dataEncoding = isMailtoForm ? UTF8Encoding() : FormDataBui
lder::encodingFromAcceptCharset(copiedAttributes.acceptCharset(), &document); |
| 180 RefPtr<DOMFormData> domFormData = DOMFormData::create(dataEncoding.encodingF
orFormSubmission()); | 180 RefPtr<DOMFormData> domFormData = DOMFormData::create(dataEncoding.encodingF
orFormSubmission()); |
| 181 Vector<pair<String, String> > formValues; | 181 Vector<pair<String, String> > formValues; |
| 182 | 182 |
| 183 bool containsPasswordData = false; | 183 bool containsPasswordData = false; |
| 184 for (unsigned i = 0; i < form->associatedElements().size(); ++i) { | 184 for (unsigned i = 0; i < form->associatedElements().size(); ++i) { |
| 185 FormAssociatedElement* control = form->associatedElements()[i]; | 185 FormAssociatedElement* control = form->associatedElements()[i]; |
| 186 HTMLElement* element = toHTMLElement(control); | 186 HTMLElement* element = toHTMLElement(control); |
| 187 if (!element->isDisabledFormControl()) | 187 if (!element->isDisabledFormControl()) |
| 188 control->appendFormData(*domFormData, isMultiPartForm); | 188 control->appendFormData(*domFormData, isMultiPartForm); |
| 189 if (element->hasTagName(inputTag)) { | 189 if (element->hasTagName(inputTag)) { |
| 190 HTMLInputElement* input = toHTMLInputElement(element); | 190 HTMLInputElement* input = toHTMLInputElement(element); |
| 191 if (input->isTextField()) | 191 if (input->isTextField()) |
| 192 formValues.append(pair<String, String>(input->name().string(), i
nput->value())); | 192 formValues.append(pair<String, String>(input->name().string(), i
nput->value())); |
| 193 if (input->isPasswordField() && !input->value().isEmpty()) | 193 if (input->isPasswordField() && !input->value().isEmpty()) |
| 194 containsPasswordData = true; | 194 containsPasswordData = true; |
| 195 } | 195 } |
| 196 } | 196 } |
| 197 | 197 |
| 198 RefPtr<FormData> formData; | 198 RefPtr<FormData> formData; |
| 199 String boundary; | 199 String boundary; |
| 200 | 200 |
| 201 if (isMultiPartForm) { | 201 if (isMultiPartForm) { |
| 202 formData = FormData::createMultiPart(*(static_cast<FormDataList*>(domFor
mData.get())), domFormData->encoding(), document); | 202 formData = FormData::createMultiPart(*(static_cast<FormDataList*>(domFor
mData.get())), domFormData->encoding(), &document); |
| 203 boundary = formData->boundary().data(); | 203 boundary = formData->boundary().data(); |
| 204 } else { | 204 } else { |
| 205 formData = FormData::create(*(static_cast<FormDataList*>(domFormData.get
())), domFormData->encoding(), attributes.method() == GetMethod ? FormData::Form
URLEncoded : FormData::parseEncodingType(encodingType)); | 205 formData = FormData::create(*(static_cast<FormDataList*>(domFormData.get
())), domFormData->encoding(), attributes.method() == GetMethod ? FormData::Form
URLEncoded : FormData::parseEncodingType(encodingType)); |
| 206 if (copiedAttributes.method() == PostMethod && isMailtoForm) { | 206 if (copiedAttributes.method() == PostMethod && isMailtoForm) { |
| 207 // Convert the form data into a string that we put into the URL. | 207 // Convert the form data into a string that we put into the URL. |
| 208 appendMailtoPostFormDataToURL(actionURL, *formData, encodingType); | 208 appendMailtoPostFormDataToURL(actionURL, *formData, encodingType); |
| 209 formData = FormData::create(); | 209 formData = FormData::create(); |
| 210 } | 210 } |
| 211 } | 211 } |
| 212 | 212 |
| 213 formData->setIdentifier(generateFormDataIdentifier()); | 213 formData->setIdentifier(generateFormDataIdentifier()); |
| 214 formData->setContainsPasswordData(containsPasswordData); | 214 formData->setContainsPasswordData(containsPasswordData); |
| 215 String targetOrBaseTarget = copiedAttributes.target().isEmpty() ? document->
baseTarget() : copiedAttributes.target(); | 215 String targetOrBaseTarget = copiedAttributes.target().isEmpty() ? document.b
aseTarget() : copiedAttributes.target(); |
| 216 RefPtr<FormState> formState = FormState::create(form, formValues, document,
trigger); | 216 RefPtr<FormState> formState = FormState::create(form, formValues, &document,
trigger); |
| 217 return adoptRef(new FormSubmission(copiedAttributes.method(), actionURL, tar
getOrBaseTarget, encodingType, formState.release(), formData.release(), boundary
, event)); | 217 return adoptRef(new FormSubmission(copiedAttributes.method(), actionURL, tar
getOrBaseTarget, encodingType, formState.release(), formData.release(), boundary
, event)); |
| 218 } | 218 } |
| 219 | 219 |
| 220 KURL FormSubmission::requestURL() const | 220 KURL FormSubmission::requestURL() const |
| 221 { | 221 { |
| 222 if (m_method == FormSubmission::PostMethod) | 222 if (m_method == FormSubmission::PostMethod) |
| 223 return m_action; | 223 return m_action; |
| 224 | 224 |
| 225 KURL requestURL(m_action); | 225 KURL requestURL(m_action); |
| 226 requestURL.setQuery(m_formData->flattenToString()); | 226 requestURL.setQuery(m_formData->flattenToString()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 244 frameRequest.resourceRequest().setHTTPContentType(m_contentType); | 244 frameRequest.resourceRequest().setHTTPContentType(m_contentType); |
| 245 else | 245 else |
| 246 frameRequest.resourceRequest().setHTTPContentType(m_contentType + ";
boundary=" + m_boundary); | 246 frameRequest.resourceRequest().setHTTPContentType(m_contentType + ";
boundary=" + m_boundary); |
| 247 } | 247 } |
| 248 | 248 |
| 249 frameRequest.resourceRequest().setURL(requestURL()); | 249 frameRequest.resourceRequest().setURL(requestURL()); |
| 250 FrameLoader::addHTTPOriginIfNeeded(frameRequest.resourceRequest(), m_origin)
; | 250 FrameLoader::addHTTPOriginIfNeeded(frameRequest.resourceRequest(), m_origin)
; |
| 251 } | 251 } |
| 252 | 252 |
| 253 } | 253 } |
| OLD | NEW |