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

Side by Side Diff: chrome/browser/predictors/resource_prefetch_predictor.cc

Issue 2804283002: predictors: Refactor UpdateData() function. (Closed)
Patch Set: Oops fix. Created 3 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
« no previous file with comments | « no previous file | chrome/browser/predictors/resource_prefetch_predictor_tables.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/predictors/resource_prefetch_predictor.h" 5 #include "chrome/browser/predictors/resource_prefetch_predictor.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 1187 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 } 1198 }
1199 1199
1200 void ResourcePrefetchPredictor::OnVisitCountLookup( 1200 void ResourcePrefetchPredictor::OnVisitCountLookup(
1201 size_t url_visit_count, 1201 size_t url_visit_count,
1202 const PageRequestSummary& summary) { 1202 const PageRequestSummary& summary) {
1203 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1203 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1204 1204
1205 UMA_HISTOGRAM_COUNTS("ResourcePrefetchPredictor.HistoryVisitCountForUrl", 1205 UMA_HISTOGRAM_COUNTS("ResourcePrefetchPredictor.HistoryVisitCountForUrl",
1206 url_visit_count); 1206 url_visit_count);
1207 1207
1208 // TODO(alexilin): make only one request to DB thread.
1209
1210 if (config_.is_url_learning_enabled) { 1208 if (config_.is_url_learning_enabled) {
1211 // URL level data - merge only if we already saved the data, or it 1209 // URL level data - merge only if we already saved the data, or it
1212 // meets the cutoff requirement. 1210 // meets the cutoff requirement.
1213 const std::string url_spec = summary.main_frame_url.spec(); 1211 const std::string url_spec = summary.main_frame_url.spec();
1214 bool already_tracking = 1212 bool already_tracking =
1215 url_table_cache_->find(url_spec) != url_table_cache_->end(); 1213 url_table_cache_->find(url_spec) != url_table_cache_->end();
1216 bool should_track_url = 1214 bool should_track_url =
1217 already_tracking || (url_visit_count >= config_.min_url_visit_count); 1215 already_tracking || (url_visit_count >= config_.min_url_visit_count);
1218 1216
1219 if (should_track_url) { 1217 if (should_track_url) {
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
1380 // If the row has no resources, remove it from the cache and delete the 1378 // If the row has no resources, remove it from the cache and delete the
1381 // entry in the database. Else update the database. 1379 // entry in the database. Else update the database.
1382 if (data.resources_size() == 0) { 1380 if (data.resources_size() == 0) {
1383 data_map->erase(key); 1381 data_map->erase(key);
1384 BrowserThread::PostTask( 1382 BrowserThread::PostTask(
1385 BrowserThread::DB, FROM_HERE, 1383 BrowserThread::DB, FROM_HERE,
1386 base::Bind( 1384 base::Bind(
1387 &ResourcePrefetchPredictorTables::DeleteSingleResourceDataPoint, 1385 &ResourcePrefetchPredictorTables::DeleteSingleResourceDataPoint,
1388 tables_, key, key_type)); 1386 tables_, key, key_type));
1389 } else { 1387 } else {
1390 PrefetchData empty_data;
1391 RedirectData empty_redirect_data;
1392 bool is_host = key_type == PREFETCH_KEY_TYPE_HOST;
1393 const PrefetchData& host_data = is_host ? data : empty_data;
1394 const PrefetchData& url_data = is_host ? empty_data : data;
1395 BrowserThread::PostTask( 1388 BrowserThread::PostTask(
1396 BrowserThread::DB, FROM_HERE, 1389 BrowserThread::DB, FROM_HERE,
1397 base::Bind(&ResourcePrefetchPredictorTables::UpdateData, tables_, 1390 base::Bind(&ResourcePrefetchPredictorTables::UpdateResourceData,
1398 url_data, host_data, empty_redirect_data, 1391 tables_, data, key_type));
1399 empty_redirect_data));
1400 } 1392 }
1401 1393
1402 // Predictor learns about both redirected and non-redirected destinations to 1394 // Predictor learns about both redirected and non-redirected destinations to
1403 // estimate whether the endpoint is permanent. 1395 // estimate whether the endpoint is permanent.
1404 LearnRedirect(key_before_redirects, key_type, key, max_data_map_size, 1396 LearnRedirect(key_before_redirects, key_type, key, max_data_map_size,
1405 redirect_map); 1397 redirect_map);
1406 } 1398 }
1407 1399
1408 void ResourcePrefetchPredictor::LearnRedirect(const std::string& key, 1400 void ResourcePrefetchPredictor::LearnRedirect(const std::string& key,
1409 PrefetchKeyType key_type, 1401 PrefetchKeyType key_type,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1457 &data, config_.max_redirect_consecutive_misses); 1449 &data, config_.max_redirect_consecutive_misses);
1458 1450
1459 if (data.redirect_endpoints_size() == 0) { 1451 if (data.redirect_endpoints_size() == 0) {
1460 redirect_map->erase(cache_entry); 1452 redirect_map->erase(cache_entry);
1461 BrowserThread::PostTask( 1453 BrowserThread::PostTask(
1462 BrowserThread::DB, FROM_HERE, 1454 BrowserThread::DB, FROM_HERE,
1463 base::Bind( 1455 base::Bind(
1464 &ResourcePrefetchPredictorTables::DeleteSingleRedirectDataPoint, 1456 &ResourcePrefetchPredictorTables::DeleteSingleRedirectDataPoint,
1465 tables_, key, key_type)); 1457 tables_, key, key_type));
1466 } else { 1458 } else {
1467 RedirectData empty_redirect_data;
1468 PrefetchData empty_data;
1469 bool is_host = key_type == PREFETCH_KEY_TYPE_HOST;
1470 const RedirectData& host_redirect_data =
1471 is_host ? data : empty_redirect_data;
1472 const RedirectData& url_redirect_data =
1473 is_host ? empty_redirect_data : data;
1474 BrowserThread::PostTask( 1459 BrowserThread::PostTask(
1475 BrowserThread::DB, FROM_HERE, 1460 BrowserThread::DB, FROM_HERE,
1476 base::Bind(&ResourcePrefetchPredictorTables::UpdateData, tables_, 1461 base::Bind(&ResourcePrefetchPredictorTables::UpdateRedirectData,
1477 empty_data, empty_data, url_redirect_data, 1462 tables_, data, key_type));
1478 host_redirect_data));
1479 } 1463 }
1480 } 1464 }
1481 1465
1482 void ResourcePrefetchPredictor::LearnOrigins( 1466 void ResourcePrefetchPredictor::LearnOrigins(
1483 const std::string& host, 1467 const std::string& host,
1484 const std::map<GURL, OriginRequestSummary>& summaries, 1468 const std::map<GURL, OriginRequestSummary>& summaries,
1485 size_t max_data_map_size, 1469 size_t max_data_map_size,
1486 OriginDataMap* data_map) { 1470 OriginDataMap* data_map) {
1487 if (host.size() > ResourcePrefetchPredictorTables::kMaxStringLength) 1471 if (host.size() > ResourcePrefetchPredictorTables::kMaxStringLength)
1488 return; 1472 return;
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1698 TestObserver::~TestObserver() { 1682 TestObserver::~TestObserver() {
1699 predictor_->SetObserverForTesting(nullptr); 1683 predictor_->SetObserverForTesting(nullptr);
1700 } 1684 }
1701 1685
1702 TestObserver::TestObserver(ResourcePrefetchPredictor* predictor) 1686 TestObserver::TestObserver(ResourcePrefetchPredictor* predictor)
1703 : predictor_(predictor) { 1687 : predictor_(predictor) {
1704 predictor_->SetObserverForTesting(this); 1688 predictor_->SetObserverForTesting(this);
1705 } 1689 }
1706 1690
1707 } // namespace predictors 1691 } // namespace predictors
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/predictors/resource_prefetch_predictor_tables.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698