summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgeorgey@chromium.org <georgey@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-24 00:31:26 +0000
committergeorgey@chromium.org <georgey@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-24 00:31:26 +0000
commitd809b98a0953024385311e059ddce8310a4ce29d (patch)
treefbeaf7509c74b6605604efe110e64a58545fbfb5
parentb25908714114f046521593f974d6fc6310d2b174 (diff)
downloadchromium_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.cc16
-rw-r--r--chrome/browser/autocomplete/shortcuts_provider.h9
-rw-r--r--chrome/browser/autocomplete/shortcuts_provider_unittest.cc15
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) {