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

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

Issue 5774004: Make HistoryContentsProvider results deletable (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Move DeleteMatch to common base class, update includes, etc. 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
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_url_provider.h" 5 #include "chrome/browser/autocomplete/history_url_provider.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 RunAutocompletePasses(input, true); 140 RunAutocompletePasses(input, true);
141 } 141 }
142 142
143 void HistoryURLProvider::Stop() { 143 void HistoryURLProvider::Stop() {
144 done_ = true; 144 done_ = true;
145 145
146 if (params_) 146 if (params_)
147 params_->cancel = true; 147 params_->cancel = true;
148 } 148 }
149 149
150 void HistoryURLProvider::DeleteMatch(const AutocompleteMatch& match) {
151 DCHECK(done_);
152
153 // Delete the match from the history DB.
154 HistoryService* const history_service =
155 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS);
156 GURL selected_url(match.destination_url);
157 if (!history_service || !selected_url.is_valid()) {
158 NOTREACHED() << "Can't delete requested URL";
159 return;
160 }
161 history_service->DeleteURL(selected_url);
162
163 // Delete the match from the current set of matches.
164 bool found = false;
165 for (ACMatches::iterator i(matches_.begin()); i != matches_.end(); ++i) {
166 if (i->destination_url == match.destination_url) {
167 found = true;
168 if (i->is_history_what_you_typed_match) {
169 // We can't get rid of the What You Typed match, but we can make it
170 // look like it has no backing data.
171 i->deletable = false;
172 i->description.clear();
173 i->description_class.clear();
174 } else {
175 matches_.erase(i);
176 }
177 break;
178 }
179 }
180 DCHECK(found) << "Asked to delete a URL that isn't in our set of matches";
181 listener_->OnProviderUpdate(true);
182 }
183
184 // Called on the history thread. 150 // Called on the history thread.
185 void HistoryURLProvider::ExecuteWithDB(history::HistoryBackend* backend, 151 void HistoryURLProvider::ExecuteWithDB(history::HistoryBackend* backend,
186 history::URLDatabase* db, 152 history::URLDatabase* db,
187 HistoryURLProviderParams* params) { 153 HistoryURLProviderParams* params) {
188 // We may get called with a NULL database if it couldn't be properly 154 // We may get called with a NULL database if it couldn't be properly
189 // initialized. 155 // initialized.
190 if (!db) { 156 if (!db) {
191 params->failed = true; 157 params->failed = true;
192 } else if (!params->cancel) { 158 } else if (!params->cancel) {
193 TimeTicks beginning_time = TimeTicks::Now(); 159 TimeTicks beginning_time = TimeTicks::Now();
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 &match.contents_class); 802 &match.contents_class);
837 } 803 }
838 match.description = UTF16ToWide(info.title()); 804 match.description = UTF16ToWide(info.title());
839 AutocompleteMatch::ClassifyMatchInString(params->input.text(), 805 AutocompleteMatch::ClassifyMatchInString(params->input.text(),
840 UTF16ToWide(info.title()), 806 UTF16ToWide(info.title()),
841 ACMatchClassification::NONE, 807 ACMatchClassification::NONE,
842 &match.description_class); 808 &match.description_class);
843 809
844 return match; 810 return match;
845 } 811 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698