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

Side by Side Diff: chrome/browser/password_manager/native_backend_libsecret.cc

Issue 1548133002: Switch to standard integer types in chrome/browser/, part 3 of 4. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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 (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 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 "chrome/browser/password_manager/native_backend_libsecret.h" 5 #include "chrome/browser/password_manager/native_backend_libsecret.h"
6 6
7 #include <dlfcn.h> 7 #include <dlfcn.h>
8 #include <stddef.h>
9 #include <stdint.h>
8 #include <list> 10 #include <list>
9 11
10 #include "base/basictypes.h"
11 #include "base/logging.h" 12 #include "base/logging.h"
12 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
13 #include "base/metrics/histogram.h" 14 #include "base/metrics/histogram.h"
14 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
15 #include "base/strings/stringprintf.h" 16 #include "base/strings/stringprintf.h"
16 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
17 #include "components/password_manager/core/browser/password_manager_metrics_util .h" 18 #include "components/password_manager/core/browser/password_manager_metrics_util .h"
18 #include "components/password_manager/core/browser/password_manager_util.h" 19 #include "components/password_manager/core/browser/password_manager_util.h"
19 20
20 using autofill::PasswordForm; 21 using autofill::PasswordForm;
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 UTF8ToUTF16(GetStringFromAttributes(attrs, "username_element")); 154 UTF8ToUTF16(GetStringFromAttributes(attrs, "username_element"));
154 form->username_value = 155 form->username_value =
155 UTF8ToUTF16(GetStringFromAttributes(attrs, "username_value")); 156 UTF8ToUTF16(GetStringFromAttributes(attrs, "username_value"));
156 form->password_element = 157 form->password_element =
157 UTF8ToUTF16(GetStringFromAttributes(attrs, "password_element")); 158 UTF8ToUTF16(GetStringFromAttributes(attrs, "password_element"));
158 form->submit_element = 159 form->submit_element =
159 UTF8ToUTF16(GetStringFromAttributes(attrs, "submit_element")); 160 UTF8ToUTF16(GetStringFromAttributes(attrs, "submit_element"));
160 form->signon_realm = GetStringFromAttributes(attrs, "signon_realm"); 161 form->signon_realm = GetStringFromAttributes(attrs, "signon_realm");
161 form->ssl_valid = GetUintFromAttributes(attrs, "ssl_valid"); 162 form->ssl_valid = GetUintFromAttributes(attrs, "ssl_valid");
162 form->preferred = GetUintFromAttributes(attrs, "preferred"); 163 form->preferred = GetUintFromAttributes(attrs, "preferred");
163 int64 date_created = 0; 164 int64_t date_created = 0;
164 bool date_ok = base::StringToInt64( 165 bool date_ok = base::StringToInt64(
165 GetStringFromAttributes(attrs, "date_created"), &date_created); 166 GetStringFromAttributes(attrs, "date_created"), &date_created);
166 DCHECK(date_ok); 167 DCHECK(date_ok);
167 // In the past |date_created| was stored as time_t. Currently is stored as 168 // In the past |date_created| was stored as time_t. Currently is stored as
168 // base::Time's internal value. We need to distinguish, which format the 169 // base::Time's internal value. We need to distinguish, which format the
169 // number in |date_created| was stored in. We use the fact that 170 // number in |date_created| was stored in. We use the fact that
170 // kMaxPossibleTimeTValue interpreted as the internal value corresponds to an 171 // kMaxPossibleTimeTValue interpreted as the internal value corresponds to an
171 // unlikely date back in 17th century, and anything above 172 // unlikely date back in 17th century, and anything above
172 // kMaxPossibleTimeTValue clearly must be in the internal value format. 173 // kMaxPossibleTimeTValue clearly must be in the internal value format.
173 form->date_created = date_created < kMaxPossibleTimeTValue 174 form->date_created = date_created < kMaxPossibleTimeTValue
174 ? base::Time::FromTimeT(date_created) 175 ? base::Time::FromTimeT(date_created)
175 : base::Time::FromInternalValue(date_created); 176 : base::Time::FromInternalValue(date_created);
176 form->blacklisted_by_user = 177 form->blacklisted_by_user =
177 GetUintFromAttributes(attrs, "blacklisted_by_user"); 178 GetUintFromAttributes(attrs, "blacklisted_by_user");
178 form->type = 179 form->type =
179 static_cast<PasswordForm::Type>(GetUintFromAttributes(attrs, "type")); 180 static_cast<PasswordForm::Type>(GetUintFromAttributes(attrs, "type"));
180 form->times_used = GetUintFromAttributes(attrs, "times_used"); 181 form->times_used = GetUintFromAttributes(attrs, "times_used");
181 form->scheme = 182 form->scheme =
182 static_cast<PasswordForm::Scheme>(GetUintFromAttributes(attrs, "scheme")); 183 static_cast<PasswordForm::Scheme>(GetUintFromAttributes(attrs, "scheme"));
183 int64 date_synced = 0; 184 int64_t date_synced = 0;
184 base::StringToInt64(GetStringFromAttributes(attrs, "date_synced"), 185 base::StringToInt64(GetStringFromAttributes(attrs, "date_synced"),
185 &date_synced); 186 &date_synced);
186 form->date_synced = base::Time::FromInternalValue(date_synced); 187 form->date_synced = base::Time::FromInternalValue(date_synced);
187 form->display_name = 188 form->display_name =
188 UTF8ToUTF16(GetStringFromAttributes(attrs, "display_name")); 189 UTF8ToUTF16(GetStringFromAttributes(attrs, "display_name"));
189 form->icon_url = GURL(GetStringFromAttributes(attrs, "avatar_url")); 190 form->icon_url = GURL(GetStringFromAttributes(attrs, "avatar_url"));
190 form->federation_url = GURL(GetStringFromAttributes(attrs, "federation_url")); 191 form->federation_url = GURL(GetStringFromAttributes(attrs, "federation_url"));
191 form->skip_zero_click = GetUintFromAttributes(attrs, "skip_zero_click"); 192 form->skip_zero_click = GetUintFromAttributes(attrs, "skip_zero_click");
192 form->generation_upload_status = 193 form->generation_upload_status =
193 static_cast<PasswordForm::GenerationUploadStatus>( 194 static_cast<PasswordForm::GenerationUploadStatus>(
194 GetUintFromAttributes(attrs, "generation_upload_status")); 195 GetUintFromAttributes(attrs, "generation_upload_status"));
195 base::StringPiece encoded_form_data = 196 base::StringPiece encoded_form_data =
196 GetStringFromAttributes(attrs, "form_data"); 197 GetStringFromAttributes(attrs, "form_data");
197 if (!encoded_form_data.empty()) { 198 if (!encoded_form_data.empty()) {
198 bool success = DeserializeFormDataFromBase64String(encoded_form_data, 199 bool success = DeserializeFormDataFromBase64String(encoded_form_data,
199 &form->form_data); 200 &form->form_data);
200 password_manager::metrics_util::FormDeserializationStatus status = 201 password_manager::metrics_util::FormDeserializationStatus status =
201 success ? password_manager::metrics_util::GNOME_SUCCESS 202 success ? password_manager::metrics_util::GNOME_SUCCESS
202 : password_manager::metrics_util::GNOME_FAILURE; 203 : password_manager::metrics_util::GNOME_FAILURE;
203 LogFormDataDeserializationStatus(status); 204 LogFormDataDeserializationStatus(status);
204 } 205 }
205 return form.Pass(); 206 return form.Pass();
206 } 207 }
207 208
208 class LibsecretAttributesBuilder { 209 class LibsecretAttributesBuilder {
209 public: 210 public:
210 LibsecretAttributesBuilder(); 211 LibsecretAttributesBuilder();
211 ~LibsecretAttributesBuilder(); 212 ~LibsecretAttributesBuilder();
212 void Append(const std::string& name, const std::string& value); 213 void Append(const std::string& name, const std::string& value);
213 void Append(const std::string& name, int64 value); 214 void Append(const std::string& name, int64_t value);
214 // GHashTable, its keys and values returned from Get() are destroyed in 215 // GHashTable, its keys and values returned from Get() are destroyed in
215 // |LibsecretAttributesBuilder| desctructor. 216 // |LibsecretAttributesBuilder| desctructor.
216 GHashTable* Get() { return attrs_; } 217 GHashTable* Get() { return attrs_; }
217 218
218 private: 219 private:
219 // |name_values_| is a storage for strings referenced in |attrs_|. 220 // |name_values_| is a storage for strings referenced in |attrs_|.
220 std::list<std::string> name_values_; 221 std::list<std::string> name_values_;
221 GHashTable* attrs_; 222 GHashTable* attrs_;
222 }; 223 };
223 224
(...skipping 11 matching lines...) Expand all
235 const std::string& value) { 236 const std::string& value) {
236 name_values_.push_back(name); 237 name_values_.push_back(name);
237 gpointer name_str = 238 gpointer name_str =
238 static_cast<gpointer>(const_cast<char*>(name_values_.back().c_str())); 239 static_cast<gpointer>(const_cast<char*>(name_values_.back().c_str()));
239 name_values_.push_back(value); 240 name_values_.push_back(value);
240 gpointer value_str = 241 gpointer value_str =
241 static_cast<gpointer>(const_cast<char*>(name_values_.back().c_str())); 242 static_cast<gpointer>(const_cast<char*>(name_values_.back().c_str()));
242 g_hash_table_insert(attrs_, name_str, value_str); 243 g_hash_table_insert(attrs_, name_str, value_str);
243 } 244 }
244 245
245 void LibsecretAttributesBuilder::Append(const std::string& name, int64 value) { 246 void LibsecretAttributesBuilder::Append(const std::string& name,
247 int64_t value) {
246 Append(name, base::Int64ToString(value)); 248 Append(name, base::Int64ToString(value));
247 } 249 }
248 250
249 // Generates a profile-specific app string based on profile_id_. 251 // Generates a profile-specific app string based on profile_id_.
250 std::string GetProfileSpecificAppString(LocalProfileId id) { 252 std::string GetProfileSpecificAppString(LocalProfileId id) {
251 // Originally, the application string was always just "chrome" and used only 253 // Originally, the application string was always just "chrome" and used only
252 // so that we had *something* to search for since GNOME Keyring won't search 254 // so that we had *something* to search for since GNOME Keyring won't search
253 // for nothing. Now we use it to distinguish passwords for different profiles. 255 // for nothing. Now we use it to distinguish passwords for different profiles.
254 return base::StringPrintf("%s-%d", kLibsecretAppString, id); 256 return base::StringPrintf("%s-%d", kLibsecretAppString, id);
255 } 257 }
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 if (found) 428 if (found)
427 g_list_free(found); 429 g_list_free(found);
428 return false; 430 return false;
429 } 431 }
430 432
431 *forms = ConvertFormList(found, &lookup_form); 433 *forms = ConvertFormList(found, &lookup_form);
432 return true; 434 return true;
433 } 435 }
434 436
435 bool NativeBackendLibsecret::RawAddLogin(const PasswordForm& form) { 437 bool NativeBackendLibsecret::RawAddLogin(const PasswordForm& form) {
436 int64 date_created = form.date_created.ToInternalValue(); 438 int64_t date_created = form.date_created.ToInternalValue();
437 // If we are asked to save a password with 0 date, use the current time. 439 // If we are asked to save a password with 0 date, use the current time.
438 // We don't want to actually save passwords as though on January 1, 1601. 440 // We don't want to actually save passwords as though on January 1, 1601.
439 if (!date_created) 441 if (!date_created)
440 date_created = base::Time::Now().ToInternalValue(); 442 date_created = base::Time::Now().ToInternalValue();
441 int64 date_synced = form.date_synced.ToInternalValue(); 443 int64_t date_synced = form.date_synced.ToInternalValue();
442 std::string form_data; 444 std::string form_data;
443 SerializeFormDataToBase64String(form.form_data, &form_data); 445 SerializeFormDataToBase64String(form.form_data, &form_data);
444 GError* error = nullptr; 446 GError* error = nullptr;
445 secret_password_store_sync( 447 secret_password_store_sync(
446 &kLibsecretSchema, 448 &kLibsecretSchema,
447 nullptr, // Default collection. 449 nullptr, // Default collection.
448 form.origin.spec().c_str(), // Display name. 450 form.origin.spec().c_str(), // Display name.
449 UTF16ToUTF8(form.password_value).c_str(), 451 UTF16ToUTF8(form.password_value).c_str(),
450 nullptr, // no cancellable ojbect 452 nullptr, // no cancellable ojbect
451 &error, 453 &error,
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 UMA_HISTOGRAM_ENUMERATION( 638 UMA_HISTOGRAM_ENUMERATION(
637 "PasswordManager.PslDomainMatchTriggering", 639 "PasswordManager.PslDomainMatchTriggering",
638 password_manager::ShouldPSLDomainMatchingApply(registered_domain) 640 password_manager::ShouldPSLDomainMatchingApply(registered_domain)
639 ? psl_domain_match_metric 641 ? psl_domain_match_metric
640 : password_manager::PSL_DOMAIN_MATCH_NOT_USED, 642 : password_manager::PSL_DOMAIN_MATCH_NOT_USED,
641 password_manager::PSL_DOMAIN_MATCH_COUNT); 643 password_manager::PSL_DOMAIN_MATCH_COUNT);
642 } 644 }
643 g_list_free(found); 645 g_list_free(found);
644 return forms.Pass(); 646 return forms.Pass();
645 } 647 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698