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/ui/webui/omnibox/omnibox_ui_handler.h" | 5 #include "chrome/browser/ui/webui/omnibox/omnibox_ui_handler.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 } | 107 } |
108 }; | 108 }; |
109 | 109 |
110 } // namespace mojo | 110 } // namespace mojo |
111 | 111 |
112 OmniboxUIHandler::OmniboxUIHandler(Profile* profile) | 112 OmniboxUIHandler::OmniboxUIHandler(Profile* profile) |
113 : profile_(profile) { | 113 : profile_(profile) { |
114 ResetController(); | 114 ResetController(); |
115 } | 115 } |
116 | 116 |
117 OmniboxUIHandler::~OmniboxUIHandler() {} | 117 OmniboxUIHandler::~OmniboxUIHandler() { |
| 118 } |
118 | 119 |
119 void OmniboxUIHandler::OnResultChanged(bool default_match_changed) { | 120 void OmniboxUIHandler::OnResultChanged(bool default_match_changed) { |
120 OmniboxResultMojoPtr result(OmniboxResultMojo::New()); | 121 OmniboxResultMojoPtr result(OmniboxResultMojo::New()); |
121 result->done = controller_->done(); | 122 result->done = controller_->done(); |
122 result->time_since_omnibox_started_ms = | 123 result->time_since_omnibox_started_ms = |
123 (base::Time::Now() - time_omnibox_started_).InMilliseconds(); | 124 (base::Time::Now() - time_omnibox_started_).InMilliseconds(); |
124 const base::string16 host = input_.text().substr( | 125 const base::string16 host = input_.text().substr( |
125 input_.parts().host.begin, | 126 input_.parts().host.begin, |
126 input_.parts().host.len); | 127 input_.parts().host.len); |
127 result->host = mojo::String::From(host); | 128 result->host = mojo::String::From(host); |
(...skipping 24 matching lines...) Expand all Loading... |
152 for (size_t i = 0; i < result->results_by_provider.size(); ++i) { | 153 for (size_t i = 0; i < result->results_by_provider.size(); ++i) { |
153 const AutocompleteResultsForProviderMojo& result_by_provider = | 154 const AutocompleteResultsForProviderMojo& result_by_provider = |
154 *result->results_by_provider[i]; | 155 *result->results_by_provider[i]; |
155 for (size_t j = 0; j < result_by_provider.results.size(); ++j) { | 156 for (size_t j = 0; j < result_by_provider.results.size(); ++j) { |
156 result_by_provider.results[j]->starred = bookmark_model->IsBookmarked( | 157 result_by_provider.results[j]->starred = bookmark_model->IsBookmarked( |
157 GURL(result_by_provider.results[j]->destination_url)); | 158 GURL(result_by_provider.results[j]->destination_url)); |
158 } | 159 } |
159 } | 160 } |
160 } | 161 } |
161 | 162 |
162 client()->HandleNewAutocompleteResult(result.Pass()); | 163 page_->HandleNewAutocompleteResult(result.Pass()); |
163 } | 164 } |
164 | 165 |
165 bool OmniboxUIHandler::LookupIsTypedHost(const base::string16& host, | 166 bool OmniboxUIHandler::LookupIsTypedHost(const base::string16& host, |
166 bool* is_typed_host) const { | 167 bool* is_typed_host) const { |
167 HistoryService* const history_service = HistoryServiceFactory::GetForProfile( | 168 HistoryService* const history_service = HistoryServiceFactory::GetForProfile( |
168 profile_, ServiceAccessType::EXPLICIT_ACCESS); | 169 profile_, ServiceAccessType::EXPLICIT_ACCESS); |
169 if (!history_service) | 170 if (!history_service) |
170 return false; | 171 return false; |
171 history::URLDatabase* url_db = history_service->InMemoryDatabase(); | 172 history::URLDatabase* url_db = history_service->InMemoryDatabase(); |
172 if (!url_db) | 173 if (!url_db) |
173 return false; | 174 return false; |
174 *is_typed_host = url_db->IsTypedHost(base::UTF16ToUTF8(host)); | 175 *is_typed_host = url_db->IsTypedHost(base::UTF16ToUTF8(host)); |
175 return true; | 176 return true; |
176 } | 177 } |
177 | 178 |
178 void OmniboxUIHandler::StartOmniboxQuery(const mojo::String& input_string, | 179 void OmniboxUIHandler::StartOmniboxQuery(const mojo::String& input_string, |
179 int32_t cursor_position, | 180 int32_t cursor_position, |
180 bool prevent_inline_autocomplete, | 181 bool prevent_inline_autocomplete, |
181 bool prefer_keyword, | 182 bool prefer_keyword, |
182 int32_t page_classification) { | 183 int32_t page_classification, |
| 184 OmniboxPagePtr page) { |
183 // Reset the controller. If we don't do this, then the | 185 // Reset the controller. If we don't do this, then the |
184 // AutocompleteController might inappropriately set its |minimal_changes| | 186 // AutocompleteController might inappropriately set its |minimal_changes| |
185 // variable (or something else) and some providers will short-circuit | 187 // variable (or something else) and some providers will short-circuit |
186 // important logic and return stale results. In short, we want the | 188 // important logic and return stale results. In short, we want the |
187 // actual results to not depend on the state of the previous request. | 189 // actual results to not depend on the state of the previous request. |
188 ResetController(); | 190 ResetController(); |
| 191 page_ = page.Pass(); |
189 time_omnibox_started_ = base::Time::Now(); | 192 time_omnibox_started_ = base::Time::Now(); |
190 input_ = AutocompleteInput( | 193 input_ = AutocompleteInput( |
191 input_string.To<base::string16>(), cursor_position, std::string(), GURL(), | 194 input_string.To<base::string16>(), cursor_position, std::string(), GURL(), |
192 static_cast<metrics::OmniboxEventProto::PageClassification>( | 195 static_cast<metrics::OmniboxEventProto::PageClassification>( |
193 page_classification), | 196 page_classification), |
194 prevent_inline_autocomplete, prefer_keyword, true, true, | 197 prevent_inline_autocomplete, prefer_keyword, true, true, |
195 ChromeAutocompleteSchemeClassifier(profile_)); | 198 ChromeAutocompleteSchemeClassifier(profile_)); |
196 controller_->Start(input_); | 199 controller_->Start(input_); |
197 } | 200 } |
198 | 201 |
199 void OmniboxUIHandler::ResetController() { | 202 void OmniboxUIHandler::ResetController() { |
200 controller_.reset(new AutocompleteController(profile_, | 203 controller_.reset(new AutocompleteController(profile_, |
201 TemplateURLServiceFactory::GetForProfile(profile_), | 204 TemplateURLServiceFactory::GetForProfile(profile_), |
202 this, | 205 this, |
203 AutocompleteClassifier::kDefaultOmniboxProviders)); | 206 AutocompleteClassifier::kDefaultOmniboxProviders)); |
204 } | 207 } |
OLD | NEW |