| 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 |