OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/omnibox/browser/keyword_provider.h" | 5 #include "components/omnibox/browser/keyword_provider.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 DCHECK(model); | 132 DCHECK(model); |
133 const TemplateURL* template_url = model->GetTemplateURLForKeyword(keyword); | 133 const TemplateURL* template_url = model->GetTemplateURLForKeyword(keyword); |
134 if (template_url && | 134 if (template_url && |
135 template_url->SupportsReplacement(model->search_terms_data())) { | 135 template_url->SupportsReplacement(model->search_terms_data())) { |
136 // Adjust cursor position iff it was set before, otherwise leave it as is. | 136 // Adjust cursor position iff it was set before, otherwise leave it as is. |
137 size_t cursor_position = base::string16::npos; | 137 size_t cursor_position = base::string16::npos; |
138 // The adjustment assumes that the keyword was stripped from the beginning | 138 // The adjustment assumes that the keyword was stripped from the beginning |
139 // of the original input. | 139 // of the original input. |
140 if (input->cursor_position() != base::string16::npos && | 140 if (input->cursor_position() != base::string16::npos && |
141 !remaining_input.empty() && | 141 !remaining_input.empty() && |
142 base::EndsWith(input->text(), remaining_input, | 142 base::EndsWith(input->text(), remaining_input, true)) { |
143 base::CompareCase::SENSITIVE)) { | |
144 int offset = input->text().length() - input->cursor_position(); | 143 int offset = input->text().length() - input->cursor_position(); |
145 // The cursor should never be past the last character or before the | 144 // The cursor should never be past the last character or before the |
146 // first character. | 145 // first character. |
147 DCHECK_GE(offset, 0); | 146 DCHECK_GE(offset, 0); |
148 DCHECK_LE(offset, static_cast<int>(input->text().length())); | 147 DCHECK_LE(offset, static_cast<int>(input->text().length())); |
149 if (offset <= 0) { | 148 if (offset <= 0) { |
150 // Normalize the cursor to be exactly after the last character. | 149 // Normalize the cursor to be exactly after the last character. |
151 cursor_position = remaining_input.length(); | 150 cursor_position = remaining_input.length(); |
152 } else { | 151 } else { |
153 // If somehow the cursor was before the remaining text, set it to 0, | 152 // If somehow the cursor was before the remaining text, set it to 0, |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 ACMatchClassification::NONE, &match->contents_class); | 470 ACMatchClassification::NONE, &match->contents_class); |
472 } | 471 } |
473 } | 472 } |
474 | 473 |
475 TemplateURLService* KeywordProvider::GetTemplateURLService() const { | 474 TemplateURLService* KeywordProvider::GetTemplateURLService() const { |
476 // Make sure the model is loaded. This is cheap and quickly bails out if | 475 // Make sure the model is loaded. This is cheap and quickly bails out if |
477 // the model is already loaded. | 476 // the model is already loaded. |
478 model_->Load(); | 477 model_->Load(); |
479 return model_; | 478 return model_; |
480 } | 479 } |
OLD | NEW |