OLD | NEW |
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 "chrome/browser/predictors/resource_prefetch_predictor_tables.h" | 5 #include "chrome/browser/predictors/resource_prefetch_predictor_tables.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> |
10 #include <utility> | 11 #include <utility> |
11 | 12 |
12 #include "base/logging.h" | 13 #include "base/logging.h" |
13 #include "base/metrics/histogram.h" | 14 #include "base/metrics/histogram.h" |
14 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
15 #include "content/public/browser/browser_thread.h" | 16 #include "content/public/browser/browser_thread.h" |
16 #include "sql/statement.h" | 17 #include "sql/statement.h" |
17 | 18 |
18 using content::BrowserThread; | 19 using content::BrowserThread; |
19 using sql::Statement; | 20 using sql::Statement; |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 bool ResourcePrefetchPredictorTables::UpdateDataHelper( | 310 bool ResourcePrefetchPredictorTables::UpdateDataHelper( |
310 const PrefetchData& data) { | 311 const PrefetchData& data) { |
311 DCHECK(!data.primary_key.empty()); | 312 DCHECK(!data.primary_key.empty()); |
312 | 313 |
313 if (!StringsAreSmallerThanDBLimit(data)) { | 314 if (!StringsAreSmallerThanDBLimit(data)) { |
314 UMA_HISTOGRAM_BOOLEAN("ResourcePrefetchPredictor.DbStringTooLong", true); | 315 UMA_HISTOGRAM_BOOLEAN("ResourcePrefetchPredictor.DbStringTooLong", true); |
315 return false; | 316 return false; |
316 } | 317 } |
317 | 318 |
318 // Delete the older data from both the tables. | 319 // Delete the older data from both the tables. |
319 scoped_ptr<Statement> deleter(data.is_host() ? | 320 std::unique_ptr<Statement> deleter(data.is_host() |
320 GetHostResourceDeleteStatement() : GetUrlResourceDeleteStatement()); | 321 ? GetHostResourceDeleteStatement() |
| 322 : GetUrlResourceDeleteStatement()); |
321 deleter->BindString(0, data.primary_key); | 323 deleter->BindString(0, data.primary_key); |
322 if (!deleter->Run()) | 324 if (!deleter->Run()) |
323 return false; | 325 return false; |
324 | 326 |
325 deleter.reset(data.is_host() ? GetHostMetadataDeleteStatement() : | 327 deleter.reset(data.is_host() ? GetHostMetadataDeleteStatement() : |
326 GetUrlMetadataDeleteStatement()); | 328 GetUrlMetadataDeleteStatement()); |
327 deleter->BindString(0, data.primary_key); | 329 deleter->BindString(0, data.primary_key); |
328 if (!deleter->Run()) | 330 if (!deleter->Run()) |
329 return false; | 331 return false; |
330 | 332 |
331 // Add the new data to the tables. | 333 // Add the new data to the tables. |
332 const ResourceRows& resources = data.resources; | 334 const ResourceRows& resources = data.resources; |
333 for (ResourceRows::const_iterator it = resources.begin(); | 335 for (ResourceRows::const_iterator it = resources.begin(); |
334 it != resources.end(); ++it) { | 336 it != resources.end(); ++it) { |
335 scoped_ptr<Statement> resource_inserter(data.is_host() ? | 337 std::unique_ptr<Statement> resource_inserter( |
336 GetHostResourceUpdateStatement() : GetUrlResourceUpdateStatement()); | 338 data.is_host() ? GetHostResourceUpdateStatement() |
| 339 : GetUrlResourceUpdateStatement()); |
337 BindResourceRowToStatement(*it, data.primary_key, resource_inserter.get()); | 340 BindResourceRowToStatement(*it, data.primary_key, resource_inserter.get()); |
338 if (!resource_inserter->Run()) | 341 if (!resource_inserter->Run()) |
339 return false; | 342 return false; |
340 } | 343 } |
341 | 344 |
342 scoped_ptr<Statement> metadata_inserter(data.is_host() ? | 345 std::unique_ptr<Statement> metadata_inserter( |
343 GetHostMetadataUpdateStatement() : GetUrlMetadataUpdateStatement()); | 346 data.is_host() ? GetHostMetadataUpdateStatement() |
| 347 : GetUrlMetadataUpdateStatement()); |
344 metadata_inserter->BindString(0, data.primary_key); | 348 metadata_inserter->BindString(0, data.primary_key); |
345 metadata_inserter->BindInt64(1, data.last_visit.ToInternalValue()); | 349 metadata_inserter->BindInt64(1, data.last_visit.ToInternalValue()); |
346 if (!metadata_inserter->Run()) | 350 if (!metadata_inserter->Run()) |
347 return false; | 351 return false; |
348 | 352 |
349 return true; | 353 return true; |
350 } | 354 } |
351 | 355 |
352 void ResourcePrefetchPredictorTables::DeleteDataHelper( | 356 void ResourcePrefetchPredictorTables::DeleteDataHelper( |
353 PrefetchKeyType key_type, | 357 PrefetchKeyType key_type, |
354 const std::vector<std::string>& keys) { | 358 const std::vector<std::string>& keys) { |
355 bool is_host = key_type == PREFETCH_KEY_TYPE_HOST; | 359 bool is_host = key_type == PREFETCH_KEY_TYPE_HOST; |
356 | 360 |
357 for (std::vector<std::string>::const_iterator it = keys.begin(); | 361 for (std::vector<std::string>::const_iterator it = keys.begin(); |
358 it != keys.end(); ++it) { | 362 it != keys.end(); ++it) { |
359 scoped_ptr<Statement> deleter(is_host ? GetHostResourceDeleteStatement() : | 363 std::unique_ptr<Statement> deleter(is_host |
360 GetUrlResourceDeleteStatement()); | 364 ? GetHostResourceDeleteStatement() |
| 365 : GetUrlResourceDeleteStatement()); |
361 deleter->BindString(0, *it); | 366 deleter->BindString(0, *it); |
362 deleter->Run(); | 367 deleter->Run(); |
363 | 368 |
364 deleter.reset(is_host ? GetHostMetadataDeleteStatement() : | 369 deleter.reset(is_host ? GetHostMetadataDeleteStatement() : |
365 GetUrlMetadataDeleteStatement()); | 370 GetUrlMetadataDeleteStatement()); |
366 deleter->BindString(0, *it); | 371 deleter->BindString(0, *it); |
367 deleter->Run(); | 372 deleter->Run(); |
368 } | 373 } |
369 } | 374 } |
370 | 375 |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
506 | 511 |
507 Statement* ResourcePrefetchPredictorTables::GetHostMetadataUpdateStatement() { | 512 Statement* ResourcePrefetchPredictorTables::GetHostMetadataUpdateStatement() { |
508 return new Statement(DB()->GetCachedStatement( | 513 return new Statement(DB()->GetCachedStatement( |
509 SQL_FROM_HERE, | 514 SQL_FROM_HERE, |
510 base::StringPrintf( | 515 base::StringPrintf( |
511 "INSERT INTO %s (main_page_url, last_visit_time) VALUES (?,?)", | 516 "INSERT INTO %s (main_page_url, last_visit_time) VALUES (?,?)", |
512 kHostMetadataTableName).c_str())); | 517 kHostMetadataTableName).c_str())); |
513 } | 518 } |
514 | 519 |
515 } // namespace predictors | 520 } // namespace predictors |
OLD | NEW |