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

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: More Interface Listings 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 void PasswordCredential::setPassword(const String& password) {
136 static_cast<PlatformPasswordCredential*>(platform_credential_.Get())
137 ->SetPassword(password);
138 }
139
140 const String& PasswordCredential::password() const {
141 return static_cast<PlatformPasswordCredential*>(platform_credential_.Get())
142 ->Password();
143 }
144
135 PassRefPtr<EncodedFormData> PasswordCredential::EncodeFormData( 145 PassRefPtr<EncodedFormData> PasswordCredential::EncodeFormData(
136 String& content_type) const { 146 String& content_type) const {
137 if (additional_data_.isURLSearchParams()) { 147 if (additional_data_.isURLSearchParams()) {
138 // If |additionalData| is a 'URLSearchParams' object, build a urlencoded 148 // If |additionalData| is a 'URLSearchParams' object, build a urlencoded
139 // response. 149 // response.
140 URLSearchParams* params = URLSearchParams::Create(String()); 150 URLSearchParams* params = URLSearchParams::Create(String());
141 URLSearchParams* additional_data = additional_data_.getAsURLSearchParams(); 151 URLSearchParams* additional_data = additional_data_.getAsURLSearchParams();
142 for (const auto& param : additional_data->Params()) { 152 for (const auto& param : additional_data->Params()) {
143 const String& name = param.first; 153 const String& name = param.first;
144 if (name != idName() && name != passwordName()) 154 if (name != idName() && name != passwordName())
145 params->append(name, param.second); 155 params->append(name, param.second);
146 } 156 }
147 params->append(idName(), id()); 157 params->append(idName(), id());
148 params->append(passwordName(), Password()); 158 params->append(passwordName(), password());
149 159
150 content_type = 160 content_type =
151 AtomicString("application/x-www-form-urlencoded;charset=UTF-8"); 161 AtomicString("application/x-www-form-urlencoded;charset=UTF-8");
152 162
153 return params->ToEncodedFormData(); 163 return params->ToEncodedFormData();
154 } 164 }
155 165
156 // Otherwise, we'll build a multipart response. 166 // Otherwise, we'll build a multipart response.
157 FormData* form_data = FormData::Create(nullptr); 167 FormData* form_data = FormData::Create(nullptr);
158 if (additional_data_.isFormData()) { 168 if (additional_data_.isFormData()) {
159 FormData* additional_data = additional_data_.getAsFormData(); 169 FormData* additional_data = additional_data_.getAsFormData();
160 for (const FormData::Entry* entry : additional_data->Entries()) { 170 for (const FormData::Entry* entry : additional_data->Entries()) {
161 const String& name = form_data->Decode(entry->name()); 171 const String& name = form_data->Decode(entry->name());
162 if (name == idName() || name == passwordName()) 172 if (name == idName() || name == passwordName())
163 continue; 173 continue;
164 174
165 if (entry->GetBlob()) 175 if (entry->GetBlob())
166 form_data->append(name, entry->GetBlob(), entry->Filename()); 176 form_data->append(name, entry->GetBlob(), entry->Filename());
167 else 177 else
168 form_data->append(name, form_data->Decode(entry->Value())); 178 form_data->append(name, form_data->Decode(entry->Value()));
169 } 179 }
170 } 180 }
171 form_data->append(idName(), id()); 181 form_data->append(idName(), id());
172 form_data->append(passwordName(), Password()); 182 form_data->append(passwordName(), password());
173 183
174 RefPtr<EncodedFormData> encoded_data = form_data->EncodeMultiPartFormData(); 184 RefPtr<EncodedFormData> encoded_data = form_data->EncodeMultiPartFormData();
175 content_type = AtomicString("multipart/form-data; boundary=") + 185 content_type = AtomicString("multipart/form-data; boundary=") +
176 encoded_data->Boundary().data(); 186 encoded_data->Boundary().data();
177 return encoded_data.Release(); 187 return encoded_data.Release();
178 } 188 }
179 189
180 const String& PasswordCredential::Password() const {
181 return static_cast<PlatformPasswordCredential*>(platform_credential_.Get())
182 ->Password();
183 }
184
185 DEFINE_TRACE(PasswordCredential) { 190 DEFINE_TRACE(PasswordCredential) {
186 CredentialUserData::Trace(visitor); 191 CredentialUserData::Trace(visitor);
187 visitor->Trace(additional_data_); 192 visitor->Trace(additional_data_);
188 } 193 }
189 194
190 } // namespace blink 195 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698