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

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

Issue 343051: Make sure we can still navigate to URLs when the History DB can't be loaded.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 1 month 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_url_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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/histogram.h" 10 #include "base/histogram.h"
(...skipping 18 matching lines...) Expand all
29 using base::TimeTicks; 29 using base::TimeTicks;
30 30
31 HistoryURLProviderParams::HistoryURLProviderParams( 31 HistoryURLProviderParams::HistoryURLProviderParams(
32 const AutocompleteInput& input, 32 const AutocompleteInput& input,
33 bool trim_http, 33 bool trim_http,
34 const std::wstring& languages) 34 const std::wstring& languages)
35 : message_loop(MessageLoop::current()), 35 : message_loop(MessageLoop::current()),
36 input(input), 36 input(input),
37 trim_http(trim_http), 37 trim_http(trim_http),
38 cancel(false), 38 cancel(false),
39 failed(false),
39 languages(languages) { 40 languages(languages) {
40 } 41 }
41 42
42 void HistoryURLProvider::Start(const AutocompleteInput& input, 43 void HistoryURLProvider::Start(const AutocompleteInput& input,
43 bool minimal_changes) { 44 bool minimal_changes) {
44 // NOTE: We could try hard to do less work in the |minimal_changes| case 45 // NOTE: We could try hard to do less work in the |minimal_changes| case
45 // here; some clever caching would let us reuse the raw matches from the 46 // here; some clever caching would let us reuse the raw matches from the
46 // history DB without re-querying. However, we'd still have to go back to 47 // history DB without re-querying. However, we'd still have to go back to
47 // the history thread to mark these up properly, and if pass 2 is currently 48 // the history thread to mark these up properly, and if pass 2 is currently
48 // running, we'd need to wait for it to return to the main thread before 49 // running, we'd need to wait for it to return to the main thread before
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 } 97 }
97 DCHECK(found) << "Asked to delete a URL that isn't in our set of matches"; 98 DCHECK(found) << "Asked to delete a URL that isn't in our set of matches";
98 listener_->OnProviderUpdate(true); 99 listener_->OnProviderUpdate(true);
99 } 100 }
100 101
101 // Called on the history thread. 102 // Called on the history thread.
102 void HistoryURLProvider::ExecuteWithDB(history::HistoryBackend* backend, 103 void HistoryURLProvider::ExecuteWithDB(history::HistoryBackend* backend,
103 history::URLDatabase* db, 104 history::URLDatabase* db,
104 HistoryURLProviderParams* params) { 105 HistoryURLProviderParams* params) {
105 // We may get called with a NULL database if it couldn't be properly 106 // We may get called with a NULL database if it couldn't be properly
106 // initialized. In this case we just say the query is complete. 107 // initialized.
107 if (db && !params->cancel) { 108 if (!db) {
109 params->failed = true;
110 } else if (!params->cancel) {
108 TimeTicks beginning_time = TimeTicks::Now(); 111 TimeTicks beginning_time = TimeTicks::Now();
109 112
110 DoAutocomplete(backend, db, params); 113 DoAutocomplete(backend, db, params);
111 114
112 UMA_HISTOGRAM_TIMES("Autocomplete.HistoryAsyncQueryTime", 115 UMA_HISTOGRAM_TIMES("Autocomplete.HistoryAsyncQueryTime",
113 TimeTicks::Now() - beginning_time); 116 TimeTicks::Now() - beginning_time);
114 } 117 }
115 118
116 // Return the results (if any) to the main thread. 119 // Return the results (if any) to the main thread.
117 params->message_loop->PostTask(FROM_HERE, NewRunnableMethod( 120 params->message_loop->PostTask(FROM_HERE, NewRunnableMethod(
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 218
216 // If the user hasn't already started another query, clear our member pointer 219 // If the user hasn't already started another query, clear our member pointer
217 // so we can't write into deleted memory. 220 // so we can't write into deleted memory.
218 if (params_ == params_gets_deleted) 221 if (params_ == params_gets_deleted)
219 params_ = NULL; 222 params_ = NULL;
220 223
221 // Don't send responses for queries that have been canceled. 224 // Don't send responses for queries that have been canceled.
222 if (params->cancel) 225 if (params->cancel)
223 return; // Already set done_ when we canceled, no need to set it again. 226 return; // Already set done_ when we canceled, no need to set it again.
224 227
228 // Don't modify |matches_| if the query failed, since it might have a default
229 // match in it, whereas |params->matches| will be empty.
230 if (!params->failed) {
231 matches_.swap(params->matches);
232 UpdateStarredStateOfMatches();
233 }
234
225 done_ = true; 235 done_ = true;
226 matches_.swap(params->matches);
227 UpdateStarredStateOfMatches();
228 listener_->OnProviderUpdate(true); 236 listener_->OnProviderUpdate(true);
229 } 237 }
230 238
231 AutocompleteMatch HistoryURLProvider::SuggestExactInput( 239 AutocompleteMatch HistoryURLProvider::SuggestExactInput(
232 const AutocompleteInput& input, 240 const AutocompleteInput& input,
233 bool trim_http) { 241 bool trim_http) {
234 AutocompleteMatch match(this, 242 AutocompleteMatch match(this,
235 CalculateRelevance(input.type(), WHAT_YOU_TYPED, 0), false, 243 CalculateRelevance(input.type(), WHAT_YOU_TYPED, 0), false,
236 AutocompleteMatch::URL_WHAT_YOU_TYPED); 244 AutocompleteMatch::URL_WHAT_YOU_TYPED);
237 245
(...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 history_match.input_location - offset, params->input.text().length(), 837 history_match.input_location - offset, params->input.text().length(),
830 match.contents.length(), ACMatchClassification::URL, 838 match.contents.length(), ACMatchClassification::URL,
831 &match.contents_class); 839 &match.contents_class);
832 match.description = info.title(); 840 match.description = info.title();
833 AutocompleteMatch::ClassifyMatchInString(params->input.text(), info.title(), 841 AutocompleteMatch::ClassifyMatchInString(params->input.text(), info.title(),
834 ACMatchClassification::NONE, 842 ACMatchClassification::NONE,
835 &match.description_class); 843 &match.description_class);
836 844
837 return match; 845 return match;
838 } 846 }
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/history_url_provider.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698