- Revision
- 110695
- Author
- [email protected]
- Date
- 2012-03-14 05:41:37 -0700 (Wed, 14 Mar 2012)
Log Message
WebHTTPBody: Keep track of whether the data includes passwords.
https://bugs.webkit.org/show_bug.cgi?id=81003
Patch by Marja Hölttä <[email protected]> on 2012-03-14
Reviewed by Darin Fisher.
This change enables Chrome to save HTTP bodies selectively, only
if they don't contain passwords.
Source/WebCore:
* loader/FormSubmission.cpp:
(WebCore::FormSubmission::create): Check if the data contains passwords.
* platform/network/FormData.cpp:
(WebCore::FormData::FormData): Added containsPasswordData, setContainsPasswordData.
* platform/network/FormData.h:
(WebCore::FormData::containsPasswordData): Added.
(WebCore::FormData::setHasPasswordData): Added.
(FormData):
Source/WebKit/chromium:
* public/platform/WebHTTPBody.h:
(WebHTTPBody): Added containsPasswordData, setContainsPasswordData.
* src/WebHTTPBody.cpp:
(WebKit::WebHTTPBody::containsPasswordData): Added.
(WebKit):
(WebKit::WebHTTPBody::setContainsPasswordData): Added.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (110694 => 110695)
--- trunk/Source/WebCore/ChangeLog 2012-03-14 12:23:08 UTC (rev 110694)
+++ trunk/Source/WebCore/ChangeLog 2012-03-14 12:41:37 UTC (rev 110695)
@@ -1,3 +1,22 @@
+2012-03-14 Marja Hölttä <[email protected]>
+
+ WebHTTPBody: Keep track of whether the data includes passwords.
+ https://bugs.webkit.org/show_bug.cgi?id=81003
+
+ Reviewed by Darin Fisher.
+
+ This change enables Chrome to save HTTP bodies selectively, only
+ if they don't contain passwords.
+
+ * loader/FormSubmission.cpp:
+ (WebCore::FormSubmission::create): Check if the data contains passwords.
+ * platform/network/FormData.cpp:
+ (WebCore::FormData::FormData): Added containsPasswordData, setContainsPasswordData.
+ * platform/network/FormData.h:
+ (WebCore::FormData::containsPasswordData): Added.
+ (WebCore::FormData::setHasPasswordData): Added.
+ (FormData):
+
2012-03-14 Vsevolod Vlasov <[email protected]>
Web Inspector: Add snippets tab to scripts navigator.
Modified: trunk/Source/WebCore/loader/FormSubmission.cpp (110694 => 110695)
--- trunk/Source/WebCore/loader/FormSubmission.cpp 2012-03-14 12:23:08 UTC (rev 110694)
+++ trunk/Source/WebCore/loader/FormSubmission.cpp 2012-03-14 12:41:37 UTC (rev 110695)
@@ -180,6 +180,7 @@
RefPtr<DOMFormData> domFormData = DOMFormData::create(dataEncoding.encodingForFormSubmission());
Vector<pair<String, String> > formValues;
+ bool containsPasswordData = false;
for (unsigned i = 0; i < form->associatedElements().size(); ++i) {
FormAssociatedElement* control = form->associatedElements()[i];
HTMLElement* element = toHTMLElement(control);
@@ -192,6 +193,8 @@
if (input->isSearchField())
input->addSearchResult();
}
+ if (input->isPasswordField() && !input->value().isEmpty())
+ containsPasswordData = true;
}
}
@@ -211,6 +214,7 @@
}
formData->setIdentifier(generateFormDataIdentifier());
+ formData->setContainsPasswordData(containsPasswordData);
String targetOrBaseTarget = copiedAttributes.target().isEmpty() ? document->baseTarget() : copiedAttributes.target();
RefPtr<FormState> formState = FormState::create(form, formValues, document->frame(), trigger);
return adoptRef(new FormSubmission(copiedAttributes.method(), actionURL, targetOrBaseTarget, encodingType, formState.release(), formData.release(), boundary, lockHistory, event));
Modified: trunk/Source/WebCore/platform/network/FormData.cpp (110694 => 110695)
--- trunk/Source/WebCore/platform/network/FormData.cpp 2012-03-14 12:23:08 UTC (rev 110694)
+++ trunk/Source/WebCore/platform/network/FormData.cpp 2012-03-14 12:41:37 UTC (rev 110695)
@@ -43,6 +43,7 @@
: m_identifier(0)
, m_hasGeneratedFiles(false)
, m_alwaysStream(false)
+ , m_containsPasswordData(false)
{
}
@@ -52,6 +53,7 @@
, m_identifier(data.m_identifier)
, m_hasGeneratedFiles(false)
, m_alwaysStream(false)
+ , m_containsPasswordData(data.m_containsPasswordData)
{
// We shouldn't be copying FormData that hasn't already removed its generated files
// but just in case, make sure the new FormData is ready to generate its own files.
Modified: trunk/Source/WebCore/platform/network/FormData.h (110694 => 110695)
--- trunk/Source/WebCore/platform/network/FormData.h 2012-03-14 12:23:08 UTC (rev 110694)
+++ trunk/Source/WebCore/platform/network/FormData.h 2012-03-14 12:41:37 UTC (rev 110695)
@@ -135,6 +135,9 @@
void setIdentifier(int64_t identifier) { m_identifier = identifier; }
int64_t identifier() const { return m_identifier; }
+ bool containsPasswordData() const { return m_containsPasswordData; }
+ void setContainsPasswordData(bool containsPasswordData) { m_containsPasswordData = containsPasswordData; }
+
static EncodingType parseEncodingType(const String& type)
{
if (equalIgnoringCase(type, "text/plain"))
@@ -156,6 +159,7 @@
bool m_hasGeneratedFiles;
bool m_alwaysStream;
Vector<char> m_boundary;
+ bool m_containsPasswordData;
};
inline bool operator==(const FormData& a, const FormData& b)
Modified: trunk/Source/WebKit/chromium/ChangeLog (110694 => 110695)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-03-14 12:23:08 UTC (rev 110694)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-03-14 12:41:37 UTC (rev 110695)
@@ -1,3 +1,20 @@
+2012-03-14 Marja Hölttä <[email protected]>
+
+ WebHTTPBody: Keep track of whether the data includes passwords.
+ https://bugs.webkit.org/show_bug.cgi?id=81003
+
+ Reviewed by Darin Fisher.
+
+ This change enables Chrome to save HTTP bodies selectively, only
+ if they don't contain passwords.
+
+ * public/platform/WebHTTPBody.h:
+ (WebHTTPBody): Added containsPasswordData, setContainsPasswordData.
+ * src/WebHTTPBody.cpp:
+ (WebKit::WebHTTPBody::containsPasswordData): Added.
+ (WebKit):
+ (WebKit::WebHTTPBody::setContainsPasswordData): Added.
+
2012-03-14 Sheriff Bot <[email protected]>
Unreviewed. Rolled DEPS.
Modified: trunk/Source/WebKit/chromium/public/platform/WebHTTPBody.h (110694 => 110695)
--- trunk/Source/WebKit/chromium/public/platform/WebHTTPBody.h 2012-03-14 12:23:08 UTC (rev 110694)
+++ trunk/Source/WebKit/chromium/public/platform/WebHTTPBody.h 2012-03-14 12:41:37 UTC (rev 110695)
@@ -92,6 +92,9 @@
WEBKIT_EXPORT long long identifier() const;
WEBKIT_EXPORT void setIdentifier(long long);
+ WEBKIT_EXPORT bool containsPasswordData() const;
+ WEBKIT_EXPORT void setContainsPasswordData(bool);
+
#if WEBKIT_IMPLEMENTATION
WebHTTPBody(const WTF::PassRefPtr<WebCore::FormData>&);
WebHTTPBody& operator=(const WTF::PassRefPtr<WebCore::FormData>&);
Modified: trunk/Source/WebKit/chromium/src/WebHTTPBody.cpp (110694 => 110695)
--- trunk/Source/WebKit/chromium/src/WebHTTPBody.cpp 2012-03-14 12:23:08 UTC (rev 110694)
+++ trunk/Source/WebKit/chromium/src/WebHTTPBody.cpp 2012-03-14 12:41:37 UTC (rev 110695)
@@ -150,6 +150,16 @@
return m_private->setIdentifier(identifier);
}
+bool WebHTTPBody::containsPasswordData() const
+{
+ return m_private->containsPasswordData();
+}
+
+void WebHTTPBody::setContainsPasswordData(bool containsPasswordData)
+{
+ m_private->setContainsPasswordData(containsPasswordData);
+}
+
WebHTTPBody::WebHTTPBody(const PassRefPtr<FormData>& data)
: m_private(static_cast<WebHTTPBodyPrivate*>(data.leakRef()))
{