OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/autocomplete/autocomplete.h" | 5 #include "chrome/browser/autocomplete/autocomplete.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/i18n/number_formatting.h" | 11 #include "base/i18n/number_formatting.h" |
12 #include "base/metrics/histogram.h" | 12 #include "base/metrics/histogram.h" |
13 #include "base/string_number_conversions.h" | 13 #include "base/string_number_conversions.h" |
14 #include "base/string_util.h" | 14 #include "base/string_util.h" |
15 #include "base/utf_string_conversions.h" | 15 #include "base/utf_string_conversions.h" |
16 #include "chrome/browser/autocomplete/autocomplete_controller_delegate.h" | 16 #include "chrome/browser/autocomplete/autocomplete_controller_delegate.h" |
17 #include "chrome/browser/autocomplete/autocomplete_match.h" | 17 #include "chrome/browser/autocomplete/autocomplete_match.h" |
18 #include "chrome/browser/autocomplete/builtin_provider.h" | 18 #include "chrome/browser/autocomplete/builtin_provider.h" |
19 #include "chrome/browser/autocomplete/extension_app_provider.h" | 19 #include "chrome/browser/autocomplete/extension_app_provider.h" |
20 #include "chrome/browser/autocomplete/history_contents_provider.h" | 20 #include "chrome/browser/autocomplete/history_contents_provider.h" |
21 #include "chrome/browser/autocomplete/history_quick_provider.h" | 21 #include "chrome/browser/autocomplete/history_quick_provider.h" |
22 #include "chrome/browser/autocomplete/history_url_provider.h" | 22 #include "chrome/browser/autocomplete/history_url_provider.h" |
23 #include "chrome/browser/autocomplete/keyword_provider.h" | 23 #include "chrome/browser/autocomplete/keyword_provider.h" |
24 #include "chrome/browser/autocomplete/search_provider.h" | 24 #include "chrome/browser/autocomplete/search_provider.h" |
25 #include "chrome/browser/autocomplete/shortcuts_provider.h" | 25 #include "chrome/browser/autocomplete/shortcuts_provider.h" |
26 #include "chrome/browser/bookmarks/bookmark_model.h" | 26 #include "chrome/browser/bookmarks/bookmark_model.h" |
27 #include "chrome/browser/external_protocol/external_protocol_handler.h" | 27 #include "chrome/browser/external_protocol/external_protocol_handler.h" |
28 #include "chrome/browser/instant/instant_field_trial.h" | |
29 #include "chrome/browser/net/url_fixer_upper.h" | 28 #include "chrome/browser/net/url_fixer_upper.h" |
30 #include "chrome/browser/prefs/pref_service.h" | 29 #include "chrome/browser/prefs/pref_service.h" |
31 #include "chrome/browser/profiles/profile.h" | 30 #include "chrome/browser/profiles/profile.h" |
32 #include "chrome/browser/profiles/profile_io_data.h" | 31 #include "chrome/browser/profiles/profile_io_data.h" |
33 #include "chrome/browser/ui/webui/history_ui.h" | 32 #include "chrome/browser/ui/webui/history_ui.h" |
34 #include "chrome/common/chrome_notification_types.h" | 33 #include "chrome/common/chrome_notification_types.h" |
35 #include "chrome/common/chrome_switches.h" | 34 #include "chrome/common/chrome_switches.h" |
36 #include "chrome/common/pref_names.h" | 35 #include "chrome/common/pref_names.h" |
37 #include "chrome/common/url_constants.h" | 36 #include "chrome/common/url_constants.h" |
38 #include "content/common/notification_service.h" | 37 #include "content/common/notification_service.h" |
(...skipping 748 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
787 // any copied entries. We do this from the time the user stopped typing as some | 786 // any copied entries. We do this from the time the user stopped typing as some |
788 // providers (such as SearchProvider) wait for the user to stop typing before | 787 // providers (such as SearchProvider) wait for the user to stop typing before |
789 // they initiate a query. | 788 // they initiate a query. |
790 static const int kExpireTimeMS = 500; | 789 static const int kExpireTimeMS = 500; |
791 | 790 |
792 AutocompleteController::AutocompleteController( | 791 AutocompleteController::AutocompleteController( |
793 Profile* profile, | 792 Profile* profile, |
794 AutocompleteControllerDelegate* delegate) | 793 AutocompleteControllerDelegate* delegate) |
795 : delegate_(delegate), | 794 : delegate_(delegate), |
796 done_(true), | 795 done_(true), |
797 in_start_(false), | 796 in_start_(false) { |
798 profile_(profile) { | |
799 search_provider_ = new SearchProvider(this, profile); | 797 search_provider_ = new SearchProvider(this, profile); |
800 providers_.push_back(search_provider_); | 798 providers_.push_back(search_provider_); |
801 // TODO(mrossetti): Remove the following and permanently modify the | 799 // TODO(mrossetti): Remove the following and permanently modify the |
802 // HistoryURLProvider to not search titles once HQP is turned on permanently. | 800 // HistoryURLProvider to not search titles once HQP is turned on permanently. |
803 bool hqp_enabled = !CommandLine::ForCurrentProcess()->HasSwitch( | 801 bool hqp_enabled = !CommandLine::ForCurrentProcess()->HasSwitch( |
804 switches::kDisableHistoryQuickProvider); | 802 switches::kDisableHistoryQuickProvider); |
805 if (hqp_enabled) | 803 if (hqp_enabled) |
806 providers_.push_back(new HistoryQuickProvider(this, profile)); | 804 providers_.push_back(new HistoryQuickProvider(this, profile)); |
807 if (CommandLine::ForCurrentProcess()->HasSwitch( | 805 if (CommandLine::ForCurrentProcess()->HasSwitch( |
808 switches::kEnableShortcutsProvider)) | 806 switches::kEnableShortcutsProvider)) |
(...skipping 25 matching lines...) Expand all Loading... |
834 | 832 |
835 providers_.clear(); // Not really necessary. | 833 providers_.clear(); // Not really necessary. |
836 } | 834 } |
837 | 835 |
838 void AutocompleteController::SetProfile(Profile* profile) { | 836 void AutocompleteController::SetProfile(Profile* profile) { |
839 Stop(true); | 837 Stop(true); |
840 for (ACProviders::iterator i(providers_.begin()); i != providers_.end(); ++i) | 838 for (ACProviders::iterator i(providers_.begin()); i != providers_.end(); ++i) |
841 (*i)->SetProfile(profile); | 839 (*i)->SetProfile(profile); |
842 input_.Clear(); // Ensure we don't try to do a "minimal_changes" query on a | 840 input_.Clear(); // Ensure we don't try to do a "minimal_changes" query on a |
843 // different profile. | 841 // different profile. |
844 profile_ = profile; | |
845 } | 842 } |
846 | 843 |
847 void AutocompleteController::Start( | 844 void AutocompleteController::Start( |
848 const string16& text, | 845 const string16& text, |
849 const string16& desired_tld, | 846 const string16& desired_tld, |
850 bool prevent_inline_autocomplete, | 847 bool prevent_inline_autocomplete, |
851 bool prefer_keyword, | 848 bool prefer_keyword, |
852 bool allow_exact_keyword_match, | 849 bool allow_exact_keyword_match, |
853 AutocompleteInput::MatchesRequested matches_requested) { | 850 AutocompleteInput::MatchesRequested matches_requested) { |
854 const string16 old_input_text(input_.text()); | 851 const string16 old_input_text(input_.text()); |
(...skipping 21 matching lines...) Expand all Loading... |
876 base::TimeTicks start_time = base::TimeTicks::Now(); | 873 base::TimeTicks start_time = base::TimeTicks::Now(); |
877 for (ACProviders::iterator i(providers_.begin()); i != providers_.end(); | 874 for (ACProviders::iterator i(providers_.begin()); i != providers_.end(); |
878 ++i) { | 875 ++i) { |
879 (*i)->Start(input_, minimal_changes); | 876 (*i)->Start(input_, minimal_changes); |
880 if (matches_requested != AutocompleteInput::ALL_MATCHES) | 877 if (matches_requested != AutocompleteInput::ALL_MATCHES) |
881 DCHECK((*i)->done()); | 878 DCHECK((*i)->done()); |
882 } | 879 } |
883 if (matches_requested == AutocompleteInput::ALL_MATCHES && | 880 if (matches_requested == AutocompleteInput::ALL_MATCHES && |
884 (text.length() < 6)) { | 881 (text.length() < 6)) { |
885 base::TimeTicks end_time = base::TimeTicks::Now(); | 882 base::TimeTicks end_time = base::TimeTicks::Now(); |
886 std::string name = "Omnibox.QueryTime." + | 883 std::string name = "Omnibox.QueryTime." + base::IntToString(text.length()); |
887 InstantFieldTrial::GetGroupName(profile_) + | |
888 base::IntToString(text.length()); | |
889 base::Histogram* counter = base::Histogram::FactoryGet( | 884 base::Histogram* counter = base::Histogram::FactoryGet( |
890 name, 1, 1000, 50, base::Histogram::kUmaTargetedHistogramFlag); | 885 name, 1, 1000, 50, base::Histogram::kUmaTargetedHistogramFlag); |
891 counter->Add(static_cast<int>((end_time - start_time).InMilliseconds())); | 886 counter->Add(static_cast<int>((end_time - start_time).InMilliseconds())); |
892 } | 887 } |
893 in_start_ = false; | 888 in_start_ = false; |
894 CheckIfDone(); | 889 CheckIfDone(); |
895 UpdateResult(true); | 890 UpdateResult(true); |
896 | 891 |
897 if (!done_) | 892 if (!done_) |
898 StartExpireTimer(); | 893 StartExpireTimer(); |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1033 } | 1028 } |
1034 } | 1029 } |
1035 done_ = true; | 1030 done_ = true; |
1036 } | 1031 } |
1037 | 1032 |
1038 void AutocompleteController::StartExpireTimer() { | 1033 void AutocompleteController::StartExpireTimer() { |
1039 if (result_.HasCopiedMatches()) | 1034 if (result_.HasCopiedMatches()) |
1040 expire_timer_.Start(base::TimeDelta::FromMilliseconds(kExpireTimeMS), | 1035 expire_timer_.Start(base::TimeDelta::FromMilliseconds(kExpireTimeMS), |
1041 this, &AutocompleteController::ExpireCopiedEntries); | 1036 this, &AutocompleteController::ExpireCopiedEntries); |
1042 } | 1037 } |
OLD | NEW |