diff options
author | georgey@chromium.org <georgey@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-24 00:31:26 +0000 |
---|---|---|
committer | georgey@chromium.org <georgey@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-24 00:31:26 +0000 |
commit | d809b98a0953024385311e059ddce8310a4ce29d (patch) | |
tree | fbeaf7509c74b6605604efe110e64a58545fbfb5 | |
parent | b25908714114f046521593f974d6fc6310d2b174 (diff) | |
download | chromium_src-d809b98a0953024385311e059ddce8310a4ce29d.zip chromium_src-d809b98a0953024385311e059ddce8310a4ce29d.tar.gz chromium_src-d809b98a0953024385311e059ddce8310a4ce29d.tar.bz2 |
Remove non trivial static from global scope in ShortcutsProvider to improve startup performance.
BUG=none
TEST=already unit-tested.
Review URL: http://codereview.chromium.org/7995012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102627 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/autocomplete/shortcuts_provider.cc | 16 | ||||
-rw-r--r-- | chrome/browser/autocomplete/shortcuts_provider.h | 9 | ||||
-rw-r--r-- | chrome/browser/autocomplete/shortcuts_provider_unittest.cc | 15 |
3 files changed, 22 insertions, 18 deletions
diff --git a/chrome/browser/autocomplete/shortcuts_provider.cc b/chrome/browser/autocomplete/shortcuts_provider.cc index 4ef6ae9..10fd768 100644 --- a/chrome/browser/autocomplete/shortcuts_provider.cc +++ b/chrome/browser/autocomplete/shortcuts_provider.cc @@ -51,12 +51,6 @@ class RemoveMatchPredicate { } // namespace -// For ease of unit testing, make the clamp value divisible by 4 (since some -// tests check for half or quarter of the max score). -// static -const int ShortcutsProvider::kMaxScore = - (AutocompleteResult::kLowestDefaultScore - 1) & ~3; - ShortcutsProvider::ShortcutsProvider(ACProviderListener* listener, Profile* profile) : AutocompleteProvider(listener, profile, "ShortcutsProvider"), @@ -121,6 +115,13 @@ void ShortcutsProvider::OnShortcutsLoaded() { initialized_ = true; } +int ShortcutsProvider::GetMaxScore() { + // For ease of unit testing, make the clamp value divisible by 4 (since some + // tests check for half or quarter of the max score). + const int kMaxScore = (AutocompleteResult::kLowestDefaultScore - 1) & ~3; + return kMaxScore; +} + void ShortcutsProvider::DeleteMatchesWithURLs(const std::set<GURL>& urls) { remove_if(matches_.begin(), matches_.end(), RemoveMatchPredicate(urls)); listener_->OnProviderUpdate(true); @@ -273,7 +274,7 @@ int ShortcutsProvider::CalculateScore(const string16& terms, DCHECK_LE(terms.length(), shortcut.text.length()); // The initial score is based on how much of the shortcut the user has typed. - double base_score = kMaxScore * static_cast<double>(terms.length()) / + double base_score = GetMaxScore() * static_cast<double>(terms.length()) / shortcut.text.length(); // Then we decay this by half each week. @@ -305,3 +306,4 @@ void ShortcutsProvider::set_shortcuts_backend( if (shortcuts_backend_->initialized()) initialized_ = true; } + diff --git a/chrome/browser/autocomplete/shortcuts_provider.h b/chrome/browser/autocomplete/shortcuts_provider.h index d41a70b..170cfea8 100644 --- a/chrome/browser/autocomplete/shortcuts_provider.h +++ b/chrome/browser/autocomplete/shortcuts_provider.h @@ -45,13 +45,14 @@ class ShortcutsProvider FRIEND_TEST_ALL_PREFIXES(ShortcutsProviderTest, CalculateScore); FRIEND_TEST_ALL_PREFIXES(ShortcutsProviderTest, DeleteMatch); - // Clamp relevance scores to ensure none of our matches will become the - // default. This prevents us from having to worry about inline autocompletion. - static const int kMaxScore; - // ShortcutsBackendObserver: virtual void OnShortcutsLoaded() OVERRIDE; + // Clamp relevance scores to ensure none of our matches will become the + // default. This prevents us from having to worry about inline autocompletion. + // Made a function instead of a constant to avoid static initialization. + static int GetMaxScore(); + void DeleteMatchesWithURLs(const std::set<GURL>& urls); void DeleteShortcutsWithURLs(const std::set<GURL>& urls); diff --git a/chrome/browser/autocomplete/shortcuts_provider_unittest.cc b/chrome/browser/autocomplete/shortcuts_provider_unittest.cc index 7b98206..178671c 100644 --- a/chrome/browser/autocomplete/shortcuts_provider_unittest.cc +++ b/chrome/browser/autocomplete/shortcuts_provider_unittest.cc @@ -529,32 +529,33 @@ TEST_F(ShortcutsProviderTest, CalculateScore) { // Maximal score. shortcut.last_access_time = Time::Now(); + const int kMaxScore = ShortcutsProvider::GetMaxScore(); EXPECT_EQ(ShortcutsProvider::CalculateScore(ASCIIToUTF16("test"), shortcut), - ShortcutsProvider::kMaxScore); + kMaxScore); // Score decreases as percent of the match is decreased. EXPECT_EQ(ShortcutsProvider::CalculateScore(ASCIIToUTF16("tes"), shortcut), - (ShortcutsProvider::kMaxScore / 4) * 3); + (kMaxScore / 4) * 3); EXPECT_EQ(ShortcutsProvider::CalculateScore(ASCIIToUTF16("te"), shortcut), - ShortcutsProvider::kMaxScore / 2); + kMaxScore / 2); EXPECT_EQ(ShortcutsProvider::CalculateScore(ASCIIToUTF16("t"), shortcut), - ShortcutsProvider::kMaxScore / 4); + kMaxScore / 4); // Should decay twice in a week. shortcut.last_access_time = Time::Now() - TimeDelta::FromDays(7); EXPECT_EQ(ShortcutsProvider::CalculateScore(ASCIIToUTF16("test"), shortcut), - ShortcutsProvider::kMaxScore / 2); + kMaxScore / 2); // Should decay four times in two weeks. shortcut.last_access_time = Time::Now() - TimeDelta::FromDays(14); EXPECT_EQ(ShortcutsProvider::CalculateScore(ASCIIToUTF16("test"), shortcut), - ShortcutsProvider::kMaxScore / 4); + kMaxScore / 4); // But not if it was activly clicked on. 6 hits slow decaying power twice. shortcut.number_of_hits = 6; shortcut.last_access_time = Time::Now() - TimeDelta::FromDays(14); EXPECT_EQ(ShortcutsProvider::CalculateScore(ASCIIToUTF16("test"), shortcut), - ShortcutsProvider::kMaxScore / 2); + kMaxScore / 2); } TEST_F(ShortcutsProviderTest, DeleteMatch) { |