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

Side by Side Diff: chrome/browser/autocomplete/history_contents_provider.cc

Issue 5774004: Make HistoryContentsProvider results deletable (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Revising a couple checks & DCHECKS Created 10 years 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/autocomplete/history_contents_provider.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/history_contents_provider.h" 5 #include "chrome/browser/autocomplete/history_contents_provider.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 void HistoryContentsProvider::Stop() { 144 void HistoryContentsProvider::Stop() {
145 done_ = true; 145 done_ = true;
146 request_consumer_.CancelAllRequests(); 146 request_consumer_.CancelAllRequests();
147 147
148 // Clear the results. We swap in an empty one as the easy way to clear it. 148 // Clear the results. We swap in an empty one as the easy way to clear it.
149 history::QueryResults empty_results; 149 history::QueryResults empty_results;
150 results_.Swap(&empty_results); 150 results_.Swap(&empty_results);
151 have_results_ = false; 151 have_results_ = false;
152 } 152 }
153 153
154 void HistoryContentsProvider::DeleteMatch(const AutocompleteMatch& match) {
155 DCHECK(done_);
156 DCHECK(match.deletable);
157 DCHECK(profile_);
158
159 // Delete the match from the history DB.
160 HistoryService* const history_service =
161 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS);
162
163 GURL selected_url(match.destination_url);
164 if (!history_service || !selected_url.is_valid()) {
brettw 2010/12/15 22:24:11 This code is copied and pasted from the HistoryURL
msw 2010/12/16 01:38:26 How about using base class HistoryProvider?
165 NOTREACHED() << "Can't delete requested URL";
166 return;
167 }
168 history_service->DeleteURL(selected_url);
169
170 // Delete the match from the current set of matches.
171 bool found = false;
172 for (ACMatches::iterator i(matches_.begin()); i != matches_.end(); ++i) {
173 if (i->destination_url == match.destination_url && i->type == match.type) {
174 found = true;
175 matches_.erase(i);
176 break;
177 }
178 }
179 DCHECK(found) << "Asked to delete a URL that isn't in our set of matches";
180
181 listener_->OnProviderUpdate(true);
182 }
183
154 HistoryContentsProvider::~HistoryContentsProvider() { 184 HistoryContentsProvider::~HistoryContentsProvider() {
155 } 185 }
156 186
157 void HistoryContentsProvider::QueryComplete(HistoryService::Handle handle, 187 void HistoryContentsProvider::QueryComplete(HistoryService::Handle handle,
158 history::QueryResults* results) { 188 history::QueryResults* results) {
159 results_.AppendResultsBySwapping(results, true); 189 results_.AppendResultsBySwapping(results, true);
160 have_results_ = true; 190 have_results_ = true;
161 ConvertResults(); 191 ConvertResults();
162 192
163 done_ = true; 193 done_ = true;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 245
216 static bool MatchInTitle(const history::URLResult& result) { 246 static bool MatchInTitle(const history::URLResult& result) {
217 return !result.title_match_positions().empty(); 247 return !result.title_match_positions().empty();
218 } 248 }
219 249
220 AutocompleteMatch HistoryContentsProvider::ResultToMatch( 250 AutocompleteMatch HistoryContentsProvider::ResultToMatch(
221 const history::URLResult& result, 251 const history::URLResult& result,
222 int score) { 252 int score) {
223 // TODO(sky): if matched title highlight matching words in title. 253 // TODO(sky): if matched title highlight matching words in title.
224 // Also show star in popup. 254 // Also show star in popup.
225 AutocompleteMatch match(this, score, false, MatchInTitle(result) ? 255 AutocompleteMatch match(this, score, true, MatchInTitle(result) ?
226 AutocompleteMatch::HISTORY_TITLE : AutocompleteMatch::HISTORY_BODY); 256 AutocompleteMatch::HISTORY_TITLE : AutocompleteMatch::HISTORY_BODY);
227 match.contents = StringForURLDisplay(result.url(), true, trim_http_); 257 match.contents = StringForURLDisplay(result.url(), true, trim_http_);
228 match.fill_into_edit = 258 match.fill_into_edit =
229 AutocompleteInput::FormattedStringWithEquivalentMeaning(result.url(), 259 AutocompleteInput::FormattedStringWithEquivalentMeaning(result.url(),
230 match.contents); 260 match.contents);
231 match.destination_url = result.url(); 261 match.destination_url = result.url();
232 match.contents_class.push_back( 262 match.contents_class.push_back(
233 ACMatchClassification(0, ACMatchClassification::URL)); 263 ACMatchClassification(0, ACMatchClassification::URL));
234 match.description = UTF16ToWide(result.title()); 264 match.description = UTF16ToWide(result.title());
235 match.starred = 265 match.starred =
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 UMA_HISTOGRAM_TIMES("Omnibox.QueryBookmarksTime", 321 UMA_HISTOGRAM_TIMES("Omnibox.QueryBookmarksTime",
292 TimeTicks::Now() - start_time); 322 TimeTicks::Now() - start_time);
293 } 323 }
294 324
295 void HistoryContentsProvider::AddBookmarkTitleMatchToResults( 325 void HistoryContentsProvider::AddBookmarkTitleMatchToResults(
296 const bookmark_utils::TitleMatch& match) { 326 const bookmark_utils::TitleMatch& match) {
297 history::URLResult url_result(match.node->GetURL(), match.match_positions); 327 history::URLResult url_result(match.node->GetURL(), match.match_positions);
298 url_result.set_title(match.node->GetTitle()); 328 url_result.set_title(match.node->GetTitle());
299 results_.AppendURLBySwapping(&url_result); 329 results_.AppendURLBySwapping(&url_result);
300 } 330 }
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/history_contents_provider.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698