Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/prerender/prerender_local_predictor.h" | 5 #include "chrome/browser/prerender/prerender_local_predictor.h" |
| 6 | 6 |
| 7 #include <ctype.h> | 7 #include <ctype.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <map> | 10 #include <map> |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 137 base::Time GetCurrentTime() { | 137 base::Time GetCurrentTime() { |
| 138 return base::Time::Now(); | 138 return base::Time::Now(); |
| 139 } | 139 } |
| 140 | 140 |
| 141 bool StrCaseStr(std::string haystack, std::string needle) { | 141 bool StrCaseStr(std::string haystack, std::string needle) { |
| 142 std::transform(haystack.begin(), haystack.end(), haystack.begin(), ::tolower); | 142 std::transform(haystack.begin(), haystack.end(), haystack.begin(), ::tolower); |
| 143 std::transform(needle.begin(), needle.end(), needle.begin(), ::tolower); | 143 std::transform(needle.begin(), needle.end(), needle.begin(), ::tolower); |
| 144 return haystack.find(needle) != std::string::npos; | 144 return haystack.find(needle) != std::string::npos; |
| 145 } | 145 } |
| 146 | 146 |
| 147 bool IsExtendedRootURL(const GURL& url) { | |
| 148 const std::string& path = url.path(); | |
| 149 return path == "/index.html" || path == "/home.html" || | |
|
Shishir
2012/12/01 01:33:23
Maybe add this to a static set and lookup.
| |
| 150 path == "/main.html" || | |
| 151 path == "/index.htm" || path == "/home.htm" || path == "/main.htm" || | |
| 152 path == "/index.php" || path == "/home.php" || path == "/main.php" || | |
| 153 path == "/index.asp" || path == "/home.asp" || path == "/main.asp" || | |
| 154 path == "/index.py" || path == "/home.py" || path == "/main.py" || | |
| 155 path == "/index.pl" || path == "/home.pl" || path == "/main.pl"; | |
| 156 } | |
| 157 | |
| 147 bool IsRootPageURL(const GURL& url) { | 158 bool IsRootPageURL(const GURL& url) { |
| 148 return (url.path() == "/" || url.path() == "") && (!url.has_query()) && | 159 return (url.path() == "/" || url.path() == "" || IsExtendedRootURL(url)) && |
| 149 (!url.has_ref()); | 160 (!url.has_query()) && (!url.has_ref()); |
| 150 } | 161 } |
| 151 | 162 |
| 152 int64 URLHashToInt64(const unsigned char* data) { | 163 int64 URLHashToInt64(const unsigned char* data) { |
| 153 COMPILE_ASSERT(kURLHashSize < sizeof(int64), url_hash_must_fit_in_int64); | 164 COMPILE_ASSERT(kURLHashSize < sizeof(int64), url_hash_must_fit_in_int64); |
| 154 int64 value = 0; | 165 int64 value = 0; |
| 155 memcpy(&value, data, kURLHashSize); | 166 memcpy(&value, data, kURLHashSize); |
| 156 return value; | 167 return value; |
| 157 } | 168 } |
| 158 | 169 |
| 159 int64 GetInt64URLHashForURL(const GURL& url) { | 170 int64 GetInt64URLHashForURL(const GURL& url) { |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 377 } | 388 } |
| 378 } | 389 } |
| 379 | 390 |
| 380 if (url_whitelist_.count(GetInt64URLHashForURL(url)) > 0) { | 391 if (url_whitelist_.count(GetInt64URLHashForURL(url)) > 0) { |
| 381 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_ON_WHITELIST); | 392 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_ON_WHITELIST); |
| 382 if (IsRootPageURL(url)) | 393 if (IsRootPageURL(url)) |
| 383 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_ON_WHITELIST_ROOT_PAGE); | 394 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_ON_WHITELIST_ROOT_PAGE); |
| 384 } | 395 } |
| 385 if (IsRootPageURL(url)) | 396 if (IsRootPageURL(url)) |
| 386 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_ROOT_PAGE); | 397 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_ROOT_PAGE); |
| 398 if (IsExtendedRootURL(url)) | |
| 399 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_EXTENDED_ROOT_PAGE); | |
| 400 if (IsRootPageURL(url) && url.SchemeIs("http")) | |
| 401 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_ROOT_PAGE_HTTP); | |
| 387 if (url.SchemeIs("http")) | 402 if (url.SchemeIs("http")) |
| 388 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_IS_HTTP); | 403 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_IS_HTTP); |
| 389 if (url.has_query()) | 404 if (url.has_query()) |
| 390 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_HAS_QUERY_STRING); | 405 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_HAS_QUERY_STRING); |
| 391 if (StrCaseStr(url.spec().c_str(), "logout") || | 406 if (StrCaseStr(url.spec().c_str(), "logout") || |
| 392 StrCaseStr(url.spec().c_str(), "signout")) | 407 StrCaseStr(url.spec().c_str(), "signout")) |
| 393 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_CONTAINS_LOGOUT); | 408 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_CONTAINS_LOGOUT); |
| 394 if (StrCaseStr(url.spec().c_str(), "login") || | 409 if (StrCaseStr(url.spec().c_str(), "login") || |
| 395 StrCaseStr(url.spec().c_str(), "signin")) | 410 StrCaseStr(url.spec().c_str(), "signin")) |
| 396 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_CONTAINS_LOGIN); | 411 RecordEvent(EVENT_PRERENDER_URL_LOOKUP_RESULT_CONTAINS_LOGIN); |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 492 bool PrerenderLocalPredictor::ShouldReplaceCurrentPrerender( | 507 bool PrerenderLocalPredictor::ShouldReplaceCurrentPrerender( |
| 493 double priority) const { | 508 double priority) const { |
| 494 base::TimeDelta max_age = | 509 base::TimeDelta max_age = |
| 495 base::TimeDelta::FromMilliseconds(kMaxLocalPredictionTimeMs); | 510 base::TimeDelta::FromMilliseconds(kMaxLocalPredictionTimeMs); |
| 496 return (!current_prerender_.get()) || | 511 return (!current_prerender_.get()) || |
| 497 current_prerender_->priority < priority || | 512 current_prerender_->priority < priority || |
| 498 current_prerender_->start_time < GetCurrentTime() - max_age; | 513 current_prerender_->start_time < GetCurrentTime() - max_age; |
| 499 } | 514 } |
| 500 | 515 |
| 501 } // namespace prerender | 516 } // namespace prerender |
| OLD | NEW |