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