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

Side by Side Diff: chrome/browser/ui/app_list/search/omnibox_provider.cc

Issue 644863002: Introduce OpenURL to AppListControllerDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 6 years, 2 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/ui/app_list/search/omnibox_provider.h" 5 #include "chrome/browser/ui/app_list/search/omnibox_provider.h"
6 6
7 #include "chrome/browser/autocomplete/autocomplete_classifier.h" 7 #include "chrome/browser/autocomplete/autocomplete_classifier.h"
8 #include "chrome/browser/autocomplete/autocomplete_controller.h" 8 #include "chrome/browser/autocomplete/autocomplete_controller.h"
9 #include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h" 9 #include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h"
10 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 10 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
11 #include "chrome/browser/search_engines/template_url_service_factory.h" 11 #include "chrome/browser/search_engines/template_url_service_factory.h"
12 #include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
12 #include "chrome/browser/ui/app_list/search/search_util.h" 13 #include "chrome/browser/ui/app_list/search/search_util.h"
13 #include "chrome/browser/ui/browser_navigator.h"
14 #include "components/bookmarks/browser/bookmark_model.h" 14 #include "components/bookmarks/browser/bookmark_model.h"
15 #include "components/metrics/proto/omnibox_event.pb.h" 15 #include "components/metrics/proto/omnibox_event.pb.h"
16 #include "components/omnibox/autocomplete_input.h" 16 #include "components/omnibox/autocomplete_input.h"
17 #include "components/omnibox/autocomplete_match.h" 17 #include "components/omnibox/autocomplete_match.h"
18 #include "grit/theme_resources.h" 18 #include "grit/theme_resources.h"
19 #include "ui/app_list/search_result.h" 19 #include "ui/app_list/search_result.h"
20 #include "ui/base/resource/resource_bundle.h" 20 #include "ui/base/resource/resource_bundle.h"
21 21
22 namespace app_list { 22 namespace app_list {
23 23
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 62
63 if (tag_styles != SearchResult::Tag::NONE) { 63 if (tag_styles != SearchResult::Tag::NONE) {
64 tags->push_back(SearchResult::Tag( 64 tags->push_back(SearchResult::Tag(
65 tag_styles, tag_start, text.length())); 65 tag_styles, tag_start, text.length()));
66 } 66 }
67 } 67 }
68 68
69 class OmniboxResult : public SearchResult { 69 class OmniboxResult : public SearchResult {
70 public: 70 public:
71 OmniboxResult(Profile* profile, 71 OmniboxResult(Profile* profile,
72 AppListControllerDelegate* list_controller,
72 AutocompleteController* autocomplete_controller, 73 AutocompleteController* autocomplete_controller,
73 const AutocompleteMatch& match) 74 const AutocompleteMatch& match)
74 : profile_(profile), 75 : profile_(profile),
76 list_controller_(list_controller),
75 autocomplete_controller_(autocomplete_controller), 77 autocomplete_controller_(autocomplete_controller),
76 match_(match) { 78 match_(match) {
77 if (match_.search_terms_args) { 79 if (match_.search_terms_args) {
78 match_.search_terms_args->from_app_list = true; 80 match_.search_terms_args->from_app_list = true;
79 autocomplete_controller_->UpdateMatchDestinationURL( 81 autocomplete_controller_->UpdateMatchDestinationURL(
80 *match_.search_terms_args, &match_); 82 *match_.search_terms_args, &match_);
81 } 83 }
82 set_id(match_.destination_url.spec()); 84 set_id(match_.destination_url.spec());
83 85
84 // Derive relevance from omnibox relevance and normalize it to [0, 1]. 86 // Derive relevance from omnibox relevance and normalize it to [0, 1].
85 // The magic number 1500 is the highest score of an omnibox result. 87 // The magic number 1500 is the highest score of an omnibox result.
86 // See comments in autocomplete_provider.h. 88 // See comments in autocomplete_provider.h.
87 set_relevance(match_.relevance / 1500.0); 89 set_relevance(match_.relevance / 1500.0);
88 90
89 UpdateIcon(); 91 UpdateIcon();
90 UpdateTitleAndDetails(); 92 UpdateTitleAndDetails();
91 } 93 }
92 virtual ~OmniboxResult() {} 94 virtual ~OmniboxResult() {}
93 95
94 // SearchResult overrides: 96 // SearchResult overrides:
95 virtual void Open(int event_flags) override { 97 virtual void Open(int event_flags) override {
96 RecordHistogram(OMNIBOX_SEARCH_RESULT); 98 RecordHistogram(OMNIBOX_SEARCH_RESULT);
97 chrome::NavigateParams params(profile_, 99 list_controller_->OpenURL(profile_,
98 match_.destination_url, 100 match_.destination_url,
99 match_.transition); 101 match_.transition,
100 params.disposition = ui::DispositionFromEventFlags(event_flags); 102 ui::DispositionFromEventFlags(event_flags));
101 chrome::Navigate(&params);
102 } 103 }
103 104
104 virtual scoped_ptr<SearchResult> Duplicate() override { 105 virtual scoped_ptr<SearchResult> Duplicate() override {
105 return scoped_ptr<SearchResult>( 106 return scoped_ptr<SearchResult>(new OmniboxResult(
106 new OmniboxResult(profile_, autocomplete_controller_, match_)); 107 profile_, list_controller_, autocomplete_controller_, match_));
107 } 108 }
108 109
109 private: 110 private:
110 void UpdateIcon() { 111 void UpdateIcon() {
111 BookmarkModel* bookmark_model = 112 BookmarkModel* bookmark_model =
112 BookmarkModelFactory::GetForProfile(profile_); 113 BookmarkModelFactory::GetForProfile(profile_);
113 bool is_bookmarked = 114 bool is_bookmarked =
114 bookmark_model && bookmark_model->IsBookmarked(match_.destination_url); 115 bookmark_model && bookmark_model->IsBookmarked(match_.destination_url);
115 int resource_id = is_bookmarked ? 116 int resource_id = is_bookmarked ?
116 IDR_OMNIBOX_STAR : AutocompleteMatch::TypeToIcon(match_.type); 117 IDR_OMNIBOX_STAR : AutocompleteMatch::TypeToIcon(match_.type);
(...skipping 11 matching lines...) Expand all
128 129
129 set_details(match_.description); 130 set_details(match_.description);
130 SearchResult::Tags details_tags; 131 SearchResult::Tags details_tags;
131 ACMatchClassificationsToTags(match_.description, 132 ACMatchClassificationsToTags(match_.description,
132 match_.description_class, 133 match_.description_class,
133 &details_tags); 134 &details_tags);
134 set_details_tags(details_tags); 135 set_details_tags(details_tags);
135 } 136 }
136 137
137 Profile* profile_; 138 Profile* profile_;
139 AppListControllerDelegate* list_controller_;
138 AutocompleteController* autocomplete_controller_; 140 AutocompleteController* autocomplete_controller_;
139 AutocompleteMatch match_; 141 AutocompleteMatch match_;
140 142
141 DISALLOW_COPY_AND_ASSIGN(OmniboxResult); 143 DISALLOW_COPY_AND_ASSIGN(OmniboxResult);
142 }; 144 };
143 145
144 } // namespace 146 } // namespace
145 147
146 OmniboxProvider::OmniboxProvider(Profile* profile) 148 OmniboxProvider::OmniboxProvider(Profile* profile,
149 AppListControllerDelegate* list_controller)
147 : profile_(profile), 150 : profile_(profile),
151 list_controller_(list_controller),
148 controller_(new AutocompleteController( 152 controller_(new AutocompleteController(
149 profile, 153 profile,
150 TemplateURLServiceFactory::GetForProfile(profile), 154 TemplateURLServiceFactory::GetForProfile(profile),
151 this, 155 this,
152 AutocompleteClassifier::kDefaultOmniboxProviders & 156 AutocompleteClassifier::kDefaultOmniboxProviders &
153 ~AutocompleteProvider::TYPE_ZERO_SUGGEST)) { 157 ~AutocompleteProvider::TYPE_ZERO_SUGGEST)) {
154 } 158 }
155 159
156 OmniboxProvider::~OmniboxProvider() {} 160 OmniboxProvider::~OmniboxProvider() {}
157 161
(...skipping 10 matching lines...) Expand all
168 172
169 void OmniboxProvider::PopulateFromACResult(const AutocompleteResult& result) { 173 void OmniboxProvider::PopulateFromACResult(const AutocompleteResult& result) {
170 ClearResults(); 174 ClearResults();
171 for (ACMatches::const_iterator it = result.begin(); 175 for (ACMatches::const_iterator it = result.begin();
172 it != result.end(); 176 it != result.end();
173 ++it) { 177 ++it) {
174 if (!it->destination_url.is_valid()) 178 if (!it->destination_url.is_valid())
175 continue; 179 continue;
176 180
177 Add(scoped_ptr<SearchResult>( 181 Add(scoped_ptr<SearchResult>(
178 new OmniboxResult(profile_, controller_.get(), *it))); 182 new OmniboxResult(profile_, list_controller_, controller_.get(), *it)));
179 } 183 }
180 } 184 }
181 185
182 void OmniboxProvider::OnResultChanged(bool default_match_changed) { 186 void OmniboxProvider::OnResultChanged(bool default_match_changed) {
183 const AutocompleteResult& result = controller_->result(); 187 const AutocompleteResult& result = controller_->result();
184 PopulateFromACResult(result); 188 PopulateFromACResult(result);
185 } 189 }
186 190
187 } // namespace app_list 191 } // namespace app_list
OLDNEW
« no previous file with comments | « chrome/browser/ui/app_list/search/omnibox_provider.h ('k') | chrome/browser/ui/app_list/search/people/people_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698