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

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

Issue 10265022: Moving extensions inside chrome/browser/extensions/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Re-synced with the current trunk Created 8 years, 7 months 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/keyword_provider.h" 5 #include "chrome/browser/autocomplete/keyword_provider.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/string16.h" 10 #include "base/string16.h"
11 #include "base/utf_string_conversions.h" 11 #include "base/utf_string_conversions.h"
12 #include "chrome/browser/autocomplete/autocomplete_match.h" 12 #include "chrome/browser/autocomplete/autocomplete_match.h"
13 #include "chrome/browser/extensions/extension_omnibox_api.h" 13 #include "chrome/browser/extensions/api/omnibox/omnibox_api.h"
14 #include "chrome/browser/extensions/extension_service.h" 14 #include "chrome/browser/extensions/extension_service.h"
15 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
16 #include "chrome/browser/search_engines/template_url.h" 16 #include "chrome/browser/search_engines/template_url.h"
17 #include "chrome/browser/search_engines/template_url_service.h" 17 #include "chrome/browser/search_engines/template_url_service.h"
18 #include "chrome/browser/search_engines/template_url_service_factory.h" 18 #include "chrome/browser/search_engines/template_url_service_factory.h"
19 #include "chrome/common/chrome_notification_types.h" 19 #include "chrome/common/chrome_notification_types.h"
20 #include "content/public/browser/notification_details.h" 20 #include "content/public/browser/notification_details.h"
21 #include "content/public/browser/notification_source.h" 21 #include "content/public/browser/notification_source.h"
22 #include "grit/generated_resources.h" 22 #include "grit/generated_resources.h"
23 #include "net/base/escape.h" 23 #include "net/base/escape.h"
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 287
288 if (profile_ && template_url->IsExtensionKeyword()) { 288 if (profile_ && template_url->IsExtensionKeyword()) {
289 if (input.matches_requested() == AutocompleteInput::ALL_MATCHES) { 289 if (input.matches_requested() == AutocompleteInput::ALL_MATCHES) {
290 if (template_url->GetExtensionId() != current_keyword_extension_id_) 290 if (template_url->GetExtensionId() != current_keyword_extension_id_)
291 MaybeEndExtensionKeywordMode(); 291 MaybeEndExtensionKeywordMode();
292 if (current_keyword_extension_id_.empty()) 292 if (current_keyword_extension_id_.empty())
293 EnterExtensionKeywordMode(template_url->GetExtensionId()); 293 EnterExtensionKeywordMode(template_url->GetExtensionId());
294 keyword_mode_toggle.StayInKeywordMode(); 294 keyword_mode_toggle.StayInKeywordMode();
295 } 295 }
296 296
297 ApplyDefaultSuggestionForExtensionKeyword(profile_, template_url, 297 extensions::ApplyDefaultSuggestionForExtensionKeyword(
298 remaining_input, 298 profile_, template_url,
299 &matches_[0]); 299 remaining_input,
300 &matches_[0]);
300 301
301 if (minimal_changes && 302 if (minimal_changes &&
302 (input.matches_requested() != AutocompleteInput::BEST_MATCH)) { 303 (input.matches_requested() != AutocompleteInput::BEST_MATCH)) {
303 // If the input hasn't significantly changed, we can just use the 304 // If the input hasn't significantly changed, we can just use the
304 // suggestions from last time. We need to readjust the relevance to 305 // suggestions from last time. We need to readjust the relevance to
305 // ensure it is less than the main match's relevance. 306 // ensure it is less than the main match's relevance.
306 for (size_t i = 0; i < extension_suggest_matches_.size(); ++i) { 307 for (size_t i = 0; i < extension_suggest_matches_.size(); ++i) {
307 matches_.push_back(extension_suggest_matches_[i]); 308 matches_.push_back(extension_suggest_matches_[i]);
308 matches_.back().relevance = matches_[0].relevance - (i + 1); 309 matches_.back().relevance = matches_[0].relevance - (i + 1);
309 } 310 }
310 } else if (input.matches_requested() == AutocompleteInput::ALL_MATCHES) { 311 } else if (input.matches_requested() == AutocompleteInput::ALL_MATCHES) {
311 extension_suggest_last_input_ = input; 312 extension_suggest_last_input_ = input;
312 extension_suggest_matches_.clear(); 313 extension_suggest_matches_.clear();
313 314
314 bool have_listeners = ExtensionOmniboxEventRouter::OnInputChanged( 315 bool have_listeners =
315 profile_, template_url->GetExtensionId(), 316 extensions::ExtensionOmniboxEventRouter::OnInputChanged(
316 UTF16ToUTF8(remaining_input), current_input_id_); 317 profile_, template_url->GetExtensionId(),
318 UTF16ToUTF8(remaining_input), current_input_id_);
317 319
318 // We only have to wait for suggest results if there are actually 320 // We only have to wait for suggest results if there are actually
319 // extensions listening for input changes. 321 // extensions listening for input changes.
320 if (have_listeners) 322 if (have_listeners)
321 done_ = false; 323 done_ = false;
322 } 324 }
323 } 325 }
324 } else { 326 } else {
325 if (keyword_matches.size() > kMaxMatches) { 327 if (keyword_matches.size() > kMaxMatches) {
326 keyword_matches.erase(keyword_matches.begin() + kMaxMatches, 328 keyword_matches.erase(keyword_matches.begin() + kMaxMatches,
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 case chrome::NOTIFICATION_EXTENSION_OMNIBOX_DEFAULT_SUGGESTION_CHANGED: { 499 case chrome::NOTIFICATION_EXTENSION_OMNIBOX_DEFAULT_SUGGESTION_CHANGED: {
498 // It's possible to change the default suggestion while not in an editing 500 // It's possible to change the default suggestion while not in an editing
499 // session. 501 // session.
500 string16 keyword, remaining_input; 502 string16 keyword, remaining_input;
501 if (matches_.empty() || current_keyword_extension_id_.empty() || 503 if (matches_.empty() || current_keyword_extension_id_.empty() ||
502 !ExtractKeywordFromInput(input, &keyword, &remaining_input)) 504 !ExtractKeywordFromInput(input, &keyword, &remaining_input))
503 return; 505 return;
504 506
505 const TemplateURL* template_url( 507 const TemplateURL* template_url(
506 model->GetTemplateURLForKeyword(keyword)); 508 model->GetTemplateURLForKeyword(keyword));
507 ApplyDefaultSuggestionForExtensionKeyword(profile_, template_url, 509 extensions::ApplyDefaultSuggestionForExtensionKeyword(
508 remaining_input, 510 profile_, template_url,
509 &matches_[0]); 511 remaining_input,
512 &matches_[0]);
510 listener_->OnProviderUpdate(true); 513 listener_->OnProviderUpdate(true);
511 return; 514 return;
512 } 515 }
513 516
514 case chrome::NOTIFICATION_EXTENSION_OMNIBOX_SUGGESTIONS_READY: { 517 case chrome::NOTIFICATION_EXTENSION_OMNIBOX_SUGGESTIONS_READY: {
515 const ExtensionOmniboxSuggestions& suggestions = 518 const extensions::ExtensionOmniboxSuggestions& suggestions =
516 *content::Details<ExtensionOmniboxSuggestions>(details).ptr(); 519 *content::Details<
520 extensions::ExtensionOmniboxSuggestions>(details).ptr();
517 if (suggestions.request_id != current_input_id_) 521 if (suggestions.request_id != current_input_id_)
518 return; // This is an old result. Just ignore. 522 return; // This is an old result. Just ignore.
519 523
520 string16 keyword, remaining_input; 524 string16 keyword, remaining_input;
521 if (!ExtractKeywordFromInput(input, &keyword, &remaining_input)) { 525 if (!ExtractKeywordFromInput(input, &keyword, &remaining_input)) {
522 NOTREACHED(); 526 NOTREACHED();
523 return; 527 return;
524 } 528 }
525 529
526 // TODO(mpcomplete): consider clamping the number of suggestions to 530 // TODO(mpcomplete): consider clamping the number of suggestions to
527 // AutocompleteProvider::kMaxMatches. 531 // AutocompleteProvider::kMaxMatches.
528 for (size_t i = 0; i < suggestions.suggestions.size(); ++i) { 532 for (size_t i = 0; i < suggestions.suggestions.size(); ++i) {
529 const ExtensionOmniboxSuggestion& suggestion = 533 const extensions::ExtensionOmniboxSuggestion& suggestion =
530 suggestions.suggestions[i]; 534 suggestions.suggestions[i];
531 // We want to order these suggestions in descending order, so start with 535 // We want to order these suggestions in descending order, so start with
532 // the relevance of the first result (added synchronously in Start()), 536 // the relevance of the first result (added synchronously in Start()),
533 // and subtract 1 for each subsequent suggestion from the extension. 537 // and subtract 1 for each subsequent suggestion from the extension.
534 // We know that |complete| is true, because we wouldn't get results from 538 // We know that |complete| is true, because we wouldn't get results from
535 // the extension unless the full keyword had been typed. 539 // the extension unless the full keyword had been typed.
536 int first_relevance = CalculateRelevance(input.type(), true, true, 540 int first_relevance = CalculateRelevance(input.type(), true, true,
537 input.prefer_keyword(), input.allow_exact_keyword_match()); 541 input.prefer_keyword(), input.allow_exact_keyword_match());
538 extension_suggest_matches_.push_back(CreateAutocompleteMatch( 542 extension_suggest_matches_.push_back(CreateAutocompleteMatch(
539 model, keyword, input, keyword.length(), 543 model, keyword, input, keyword.length(),
(...skipping 27 matching lines...) Expand all
567 DCHECK(service); 571 DCHECK(service);
568 service->Load(); 572 service->Load();
569 return service; 573 return service;
570 } 574 }
571 575
572 void KeywordProvider::EnterExtensionKeywordMode( 576 void KeywordProvider::EnterExtensionKeywordMode(
573 const std::string& extension_id) { 577 const std::string& extension_id) {
574 DCHECK(current_keyword_extension_id_.empty()); 578 DCHECK(current_keyword_extension_id_.empty());
575 current_keyword_extension_id_ = extension_id; 579 current_keyword_extension_id_ = extension_id;
576 580
577 ExtensionOmniboxEventRouter::OnInputStarted( 581 extensions::ExtensionOmniboxEventRouter::OnInputStarted(
578 profile_, current_keyword_extension_id_); 582 profile_, current_keyword_extension_id_);
579 } 583 }
580 584
581 void KeywordProvider::MaybeEndExtensionKeywordMode() { 585 void KeywordProvider::MaybeEndExtensionKeywordMode() {
582 if (!current_keyword_extension_id_.empty()) { 586 if (!current_keyword_extension_id_.empty()) {
583 ExtensionOmniboxEventRouter::OnInputCancelled( 587 extensions::ExtensionOmniboxEventRouter::OnInputCancelled(
584 profile_, current_keyword_extension_id_); 588 profile_, current_keyword_extension_id_);
585 589
586 current_keyword_extension_id_.clear(); 590 current_keyword_extension_id_.clear();
587 } 591 }
588 } 592 }
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_edit.cc ('k') | chrome/browser/extensions/api/omnibox/omnibox_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698