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

Side by Side Diff: components/autofill/content/browser/risk/fingerprint.cc

Issue 1859453002: components/autofill: scoped_ptr -> unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments addressed Created 4 years, 8 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 // Generating a fingerprint consists of two major steps: 5 // Generating a fingerprint consists of two major steps:
6 // (1) Gather all the necessary data. 6 // (1) Gather all the necessary data.
7 // (2) Write it into a protocol buffer. 7 // (2) Write it into a protocol buffer.
8 // 8 //
9 // Step (2) is as simple as it sounds -- it's really just a matter of copying 9 // Step (2) is as simple as it sounds -- it's really just a matter of copying
10 // data. Step (1) requires waiting on several asynchronous callbacks, which are 10 // data. Step (1) requires waiting on several asynchronous callbacks, which are
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 const gfx::Rect& window_bounds, 177 const gfx::Rect& window_bounds,
178 const gfx::Rect& content_bounds, 178 const gfx::Rect& content_bounds,
179 const WebScreenInfo& screen_info, 179 const WebScreenInfo& screen_info,
180 const std::string& version, 180 const std::string& version,
181 const std::string& charset, 181 const std::string& charset,
182 const std::string& accept_languages, 182 const std::string& accept_languages,
183 const base::Time& install_time, 183 const base::Time& install_time,
184 const std::string& app_locale, 184 const std::string& app_locale,
185 const std::string& user_agent, 185 const std::string& user_agent,
186 const base::TimeDelta& timeout, 186 const base::TimeDelta& timeout,
187 const base::Callback<void(scoped_ptr<Fingerprint>)>& callback); 187 const base::Callback<void(std::unique_ptr<Fingerprint>)>& callback);
188 188
189 private: 189 private:
190 ~FingerprintDataLoader() override {} 190 ~FingerprintDataLoader() override {}
191 191
192 // content::GpuDataManagerObserver: 192 // content::GpuDataManagerObserver:
193 void OnGpuInfoUpdate() override; 193 void OnGpuInfoUpdate() override;
194 194
195 // Callbacks for asynchronously loaded data. 195 // Callbacks for asynchronously loaded data.
196 void OnGotFonts(scoped_ptr<base::ListValue> fonts); 196 void OnGotFonts(std::unique_ptr<base::ListValue> fonts);
197 void OnGotPlugins(const std::vector<content::WebPluginInfo>& plugins); 197 void OnGotPlugins(const std::vector<content::WebPluginInfo>& plugins);
198 void OnGotGeoposition(const content::Geoposition& geoposition); 198 void OnGotGeoposition(const content::Geoposition& geoposition);
199 199
200 // If all of the asynchronous data has been loaded, calls |callback_| with 200 // If all of the asynchronous data has been loaded, calls |callback_| with
201 // the fingerprint data. 201 // the fingerprint data.
202 void MaybeFillFingerprint(); 202 void MaybeFillFingerprint();
203 203
204 // Calls |callback_| with the fingerprint data. 204 // Calls |callback_| with the fingerprint data.
205 void FillFingerprint(); 205 void FillFingerprint();
206 206
(...skipping 12 matching lines...) Expand all
219 const gfx::Rect content_bounds_; 219 const gfx::Rect content_bounds_;
220 const WebScreenInfo screen_info_; 220 const WebScreenInfo screen_info_;
221 const std::string version_; 221 const std::string version_;
222 const std::string charset_; 222 const std::string charset_;
223 const std::string accept_languages_; 223 const std::string accept_languages_;
224 const std::string app_locale_; 224 const std::string app_locale_;
225 const std::string user_agent_; 225 const std::string user_agent_;
226 const base::Time install_time_; 226 const base::Time install_time_;
227 227
228 // Data that will be loaded asynchronously. 228 // Data that will be loaded asynchronously.
229 scoped_ptr<base::ListValue> fonts_; 229 std::unique_ptr<base::ListValue> fonts_;
230 std::vector<content::WebPluginInfo> plugins_; 230 std::vector<content::WebPluginInfo> plugins_;
231 bool waiting_on_plugins_; 231 bool waiting_on_plugins_;
232 content::Geoposition geoposition_; 232 content::Geoposition geoposition_;
233 233
234 // Timer to enforce a maximum timeout before the |callback_| is called, even 234 // Timer to enforce a maximum timeout before the |callback_| is called, even
235 // if not all asynchronous data has been loaded. 235 // if not all asynchronous data has been loaded.
236 base::OneShotTimer timeout_timer_; 236 base::OneShotTimer timeout_timer_;
237 237
238 // The callback that will be called once all the data is available. 238 // The callback that will be called once all the data is available.
239 base::Callback<void(scoped_ptr<Fingerprint>)> callback_; 239 base::Callback<void(std::unique_ptr<Fingerprint>)> callback_;
240 240
241 // The callback used as an "observer" of the GeolocationProvider. 241 // The callback used as an "observer" of the GeolocationProvider.
242 scoped_ptr<content::GeolocationProvider::Subscription> 242 std::unique_ptr<content::GeolocationProvider::Subscription>
243 geolocation_subscription_; 243 geolocation_subscription_;
244 244
245 // For invalidating asynchronous callbacks that might arrive after |this| 245 // For invalidating asynchronous callbacks that might arrive after |this|
246 // instance is destroyed. 246 // instance is destroyed.
247 base::WeakPtrFactory<FingerprintDataLoader> weak_ptr_factory_; 247 base::WeakPtrFactory<FingerprintDataLoader> weak_ptr_factory_;
248 248
249 DISALLOW_COPY_AND_ASSIGN(FingerprintDataLoader); 249 DISALLOW_COPY_AND_ASSIGN(FingerprintDataLoader);
250 }; 250 };
251 251
252 FingerprintDataLoader::FingerprintDataLoader( 252 FingerprintDataLoader::FingerprintDataLoader(
253 uint64_t obfuscated_gaia_id, 253 uint64_t obfuscated_gaia_id,
254 const gfx::Rect& window_bounds, 254 const gfx::Rect& window_bounds,
255 const gfx::Rect& content_bounds, 255 const gfx::Rect& content_bounds,
256 const WebScreenInfo& screen_info, 256 const WebScreenInfo& screen_info,
257 const std::string& version, 257 const std::string& version,
258 const std::string& charset, 258 const std::string& charset,
259 const std::string& accept_languages, 259 const std::string& accept_languages,
260 const base::Time& install_time, 260 const base::Time& install_time,
261 const std::string& app_locale, 261 const std::string& app_locale,
262 const std::string& user_agent, 262 const std::string& user_agent,
263 const base::TimeDelta& timeout, 263 const base::TimeDelta& timeout,
264 const base::Callback<void(scoped_ptr<Fingerprint>)>& callback) 264 const base::Callback<void(std::unique_ptr<Fingerprint>)>& callback)
265 : gpu_data_manager_(content::GpuDataManager::GetInstance()), 265 : gpu_data_manager_(content::GpuDataManager::GetInstance()),
266 gpu_observer_(this), 266 gpu_observer_(this),
267 obfuscated_gaia_id_(obfuscated_gaia_id), 267 obfuscated_gaia_id_(obfuscated_gaia_id),
268 window_bounds_(window_bounds), 268 window_bounds_(window_bounds),
269 content_bounds_(content_bounds), 269 content_bounds_(content_bounds),
270 screen_info_(screen_info), 270 screen_info_(screen_info),
271 version_(version), 271 version_(version),
272 charset_(charset), 272 charset_(charset),
273 accept_languages_(accept_languages), 273 accept_languages_(accept_languages),
274 app_locale_(app_locale), 274 app_locale_(app_locale),
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 } 313 }
314 314
315 void FingerprintDataLoader::OnGpuInfoUpdate() { 315 void FingerprintDataLoader::OnGpuInfoUpdate() {
316 if (!gpu_data_manager_->IsEssentialGpuInfoAvailable()) 316 if (!gpu_data_manager_->IsEssentialGpuInfoAvailable())
317 return; 317 return;
318 318
319 gpu_observer_.Remove(gpu_data_manager_); 319 gpu_observer_.Remove(gpu_data_manager_);
320 MaybeFillFingerprint(); 320 MaybeFillFingerprint();
321 } 321 }
322 322
323 void FingerprintDataLoader::OnGotFonts(scoped_ptr<base::ListValue> fonts) { 323 void FingerprintDataLoader::OnGotFonts(std::unique_ptr<base::ListValue> fonts) {
324 DCHECK(!fonts_); 324 DCHECK(!fonts_);
325 fonts_.reset(fonts.release()); 325 fonts_.reset(fonts.release());
326 MaybeFillFingerprint(); 326 MaybeFillFingerprint();
327 } 327 }
328 328
329 void FingerprintDataLoader::OnGotPlugins( 329 void FingerprintDataLoader::OnGotPlugins(
330 const std::vector<content::WebPluginInfo>& plugins) { 330 const std::vector<content::WebPluginInfo>& plugins) {
331 DCHECK(waiting_on_plugins_); 331 DCHECK(waiting_on_plugins_);
332 waiting_on_plugins_ = false; 332 waiting_on_plugins_ = false;
333 plugins_ = plugins; 333 plugins_ = plugins;
(...skipping 21 matching lines...) Expand all
355 fonts_ && 355 fonts_ &&
356 !waiting_on_plugins_ && 356 !waiting_on_plugins_ &&
357 (geoposition_.Validate() || 357 (geoposition_.Validate() ||
358 geoposition_.error_code != content::Geoposition::ERROR_CODE_NONE))) { 358 geoposition_.error_code != content::Geoposition::ERROR_CODE_NONE))) {
359 FillFingerprint(); 359 FillFingerprint();
360 delete this; 360 delete this;
361 } 361 }
362 } 362 }
363 363
364 void FingerprintDataLoader::FillFingerprint() { 364 void FingerprintDataLoader::FillFingerprint() {
365 scoped_ptr<Fingerprint> fingerprint(new Fingerprint); 365 std::unique_ptr<Fingerprint> fingerprint(new Fingerprint);
366 Fingerprint::MachineCharacteristics* machine = 366 Fingerprint::MachineCharacteristics* machine =
367 fingerprint->mutable_machine_characteristics(); 367 fingerprint->mutable_machine_characteristics();
368 368
369 machine->set_operating_system_build(GetOperatingSystemVersion()); 369 machine->set_operating_system_build(GetOperatingSystemVersion());
370 // We use the delta between the install time and the Unix epoch, in hours. 370 // We use the delta between the install time and the Unix epoch, in hours.
371 machine->set_browser_install_time_hours( 371 machine->set_browser_install_time_hours(
372 (install_time_ - base::Time::UnixEpoch()).InHours()); 372 (install_time_ - base::Time::UnixEpoch()).InHours());
373 machine->set_utc_offset_ms(GetTimezoneOffset().InMilliseconds()); 373 machine->set_utc_offset_ms(GetTimezoneOffset().InMilliseconds());
374 machine->set_browser_language(app_locale_); 374 machine->set_browser_language(app_locale_);
375 machine->set_charset(charset_); 375 machine->set_charset(charset_);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 const gfx::Rect& window_bounds, 434 const gfx::Rect& window_bounds,
435 const gfx::Rect& content_bounds, 435 const gfx::Rect& content_bounds,
436 const blink::WebScreenInfo& screen_info, 436 const blink::WebScreenInfo& screen_info,
437 const std::string& version, 437 const std::string& version,
438 const std::string& charset, 438 const std::string& charset,
439 const std::string& accept_languages, 439 const std::string& accept_languages,
440 const base::Time& install_time, 440 const base::Time& install_time,
441 const std::string& app_locale, 441 const std::string& app_locale,
442 const std::string& user_agent, 442 const std::string& user_agent,
443 const base::TimeDelta& timeout, 443 const base::TimeDelta& timeout,
444 const base::Callback<void(scoped_ptr<Fingerprint>)>& callback) { 444 const base::Callback<void(std::unique_ptr<Fingerprint>)>& callback) {
445 // Begin loading all of the data that we need to load asynchronously. 445 // Begin loading all of the data that we need to load asynchronously.
446 // This class is responsible for freeing its own memory. 446 // This class is responsible for freeing its own memory.
447 new FingerprintDataLoader(obfuscated_gaia_id, window_bounds, content_bounds, 447 new FingerprintDataLoader(obfuscated_gaia_id, window_bounds, content_bounds,
448 screen_info, version, charset, accept_languages, 448 screen_info, version, charset, accept_languages,
449 install_time, app_locale, user_agent, timeout, 449 install_time, app_locale, user_agent, timeout,
450 callback); 450 callback);
451 } 451 }
452 452
453 } // namespace internal 453 } // namespace internal
454 454
455 void GetFingerprint( 455 void GetFingerprint(
456 uint64_t obfuscated_gaia_id, 456 uint64_t obfuscated_gaia_id,
457 const gfx::Rect& window_bounds, 457 const gfx::Rect& window_bounds,
458 content::WebContents* web_contents, 458 content::WebContents* web_contents,
459 const std::string& version, 459 const std::string& version,
460 const std::string& charset, 460 const std::string& charset,
461 const std::string& accept_languages, 461 const std::string& accept_languages,
462 const base::Time& install_time, 462 const base::Time& install_time,
463 const std::string& app_locale, 463 const std::string& app_locale,
464 const std::string& user_agent, 464 const std::string& user_agent,
465 const base::Callback<void(scoped_ptr<Fingerprint>)>& callback) { 465 const base::Callback<void(std::unique_ptr<Fingerprint>)>& callback) {
466 gfx::Rect content_bounds = web_contents->GetContainerBounds(); 466 gfx::Rect content_bounds = web_contents->GetContainerBounds();
467 467
468 blink::WebScreenInfo screen_info; 468 blink::WebScreenInfo screen_info;
469 const content::RenderWidgetHostView* host_view = 469 const content::RenderWidgetHostView* host_view =
470 web_contents->GetRenderWidgetHostView(); 470 web_contents->GetRenderWidgetHostView();
471 if (host_view) 471 if (host_view)
472 host_view->GetRenderWidgetHost()->GetWebScreenInfo(&screen_info); 472 host_view->GetRenderWidgetHost()->GetWebScreenInfo(&screen_info);
473 473
474 internal::GetFingerprintInternal( 474 internal::GetFingerprintInternal(
475 obfuscated_gaia_id, window_bounds, content_bounds, screen_info, version, 475 obfuscated_gaia_id, window_bounds, content_bounds, screen_info, version,
476 charset, accept_languages, install_time, app_locale, user_agent, 476 charset, accept_languages, install_time, app_locale, user_agent,
477 base::TimeDelta::FromSeconds(kTimeoutSeconds), callback); 477 base::TimeDelta::FromSeconds(kTimeoutSeconds), callback);
478 } 478 }
479 479
480 } // namespace risk 480 } // namespace risk
481 } // namespace autofill 481 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698