Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Side by Side Diff: third_party/WebKit/Source/modules/credentialmanager/PasswordCredential.cpp

Issue 2852423002: Expose passwords to JavaScript in Credential Manager API (Closed)
Patch Set: Console Message Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/credentialmanager/PasswordCredential.h" 5 #include "modules/credentialmanager/PasswordCredential.h"
6 6
7 #include "bindings/core/v8/Dictionary.h" 7 #include "bindings/core/v8/Dictionary.h"
8 #include "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "core/HTMLNames.h" 9 #include "core/HTMLNames.h"
10 #include "core/dom/ExecutionContext.h" 10 #include "core/dom/ExecutionContext.h"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 125
126 PasswordCredential::PasswordCredential(const String& id, 126 PasswordCredential::PasswordCredential(const String& id,
127 const String& password, 127 const String& password,
128 const String& name, 128 const String& name,
129 const KURL& icon) 129 const KURL& icon)
130 : CredentialUserData( 130 : CredentialUserData(
131 PlatformPasswordCredential::Create(id, password, name, icon)), 131 PlatformPasswordCredential::Create(id, password, name, icon)),
132 id_name_("username"), 132 id_name_("username"),
133 password_name_("password") {} 133 password_name_("password") {}
134 134
135 const String& PasswordCredential::password() const {
136 return static_cast<PlatformPasswordCredential*>(platform_credential_.Get())
137 ->Password();
138 }
139
135 PassRefPtr<EncodedFormData> PasswordCredential::EncodeFormData( 140 PassRefPtr<EncodedFormData> PasswordCredential::EncodeFormData(
136 String& content_type) const { 141 String& content_type) const {
137 if (additional_data_.isURLSearchParams()) { 142 if (additional_data_.isURLSearchParams()) {
138 // If |additionalData| is a 'URLSearchParams' object, build a urlencoded 143 // If |additionalData| is a 'URLSearchParams' object, build a urlencoded
139 // response. 144 // response.
140 URLSearchParams* params = URLSearchParams::Create(String()); 145 URLSearchParams* params = URLSearchParams::Create(String());
141 URLSearchParams* additional_data = additional_data_.getAsURLSearchParams(); 146 URLSearchParams* additional_data = additional_data_.getAsURLSearchParams();
142 for (const auto& param : additional_data->Params()) { 147 for (const auto& param : additional_data->Params()) {
143 const String& name = param.first; 148 const String& name = param.first;
144 if (name != idName() && name != passwordName()) 149 if (name != idName() && name != passwordName())
145 params->append(name, param.second); 150 params->append(name, param.second);
146 } 151 }
147 params->append(idName(), id()); 152 params->append(idName(), id());
148 params->append(passwordName(), Password()); 153 params->append(passwordName(), password());
149 154
150 content_type = 155 content_type =
151 AtomicString("application/x-www-form-urlencoded;charset=UTF-8"); 156 AtomicString("application/x-www-form-urlencoded;charset=UTF-8");
152 157
153 return params->ToEncodedFormData(); 158 return params->ToEncodedFormData();
154 } 159 }
155 160
156 // Otherwise, we'll build a multipart response. 161 // Otherwise, we'll build a multipart response.
157 FormData* form_data = FormData::Create(nullptr); 162 FormData* form_data = FormData::Create(nullptr);
158 if (additional_data_.isFormData()) { 163 if (additional_data_.isFormData()) {
159 FormData* additional_data = additional_data_.getAsFormData(); 164 FormData* additional_data = additional_data_.getAsFormData();
160 for (const FormData::Entry* entry : additional_data->Entries()) { 165 for (const FormData::Entry* entry : additional_data->Entries()) {
161 const String& name = form_data->Decode(entry->name()); 166 const String& name = form_data->Decode(entry->name());
162 if (name == idName() || name == passwordName()) 167 if (name == idName() || name == passwordName())
163 continue; 168 continue;
164 169
165 if (entry->GetBlob()) 170 if (entry->GetBlob())
166 form_data->append(name, entry->GetBlob(), entry->Filename()); 171 form_data->append(name, entry->GetBlob(), entry->Filename());
167 else 172 else
168 form_data->append(name, form_data->Decode(entry->Value())); 173 form_data->append(name, form_data->Decode(entry->Value()));
169 } 174 }
170 } 175 }
171 form_data->append(idName(), id()); 176 form_data->append(idName(), id());
172 form_data->append(passwordName(), Password()); 177 form_data->append(passwordName(), password());
173 178
174 RefPtr<EncodedFormData> encoded_data = form_data->EncodeMultiPartFormData(); 179 RefPtr<EncodedFormData> encoded_data = form_data->EncodeMultiPartFormData();
175 content_type = AtomicString("multipart/form-data; boundary=") + 180 content_type = AtomicString("multipart/form-data; boundary=") +
176 encoded_data->Boundary().data(); 181 encoded_data->Boundary().data();
177 return encoded_data.Release(); 182 return encoded_data.Release();
178 } 183 }
179 184
180 const String& PasswordCredential::Password() const {
181 return static_cast<PlatformPasswordCredential*>(platform_credential_.Get())
182 ->Password();
183 }
184
185 DEFINE_TRACE(PasswordCredential) { 185 DEFINE_TRACE(PasswordCredential) {
186 CredentialUserData::Trace(visitor); 186 CredentialUserData::Trace(visitor);
187 visitor->Trace(additional_data_); 187 visitor->Trace(additional_data_);
188 } 188 }
189 189
190 } // namespace blink 190 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698