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

Side by Side Diff: chrome/renderer/searchbox/searchbox_extension.cc

Issue 11421079: Persist the Instant API to committed search result pages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More fixes Created 8 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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/renderer/searchbox/searchbox_extension.h" 5 #include "chrome/renderer/searchbox/searchbox_extension.h"
6 6
7 #include "base/string_number_conversions.h" 7 #include "base/string_number_conversions.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "chrome/common/extensions/extension.h" 9 #include "chrome/common/extensions/extension.h"
10 #include "chrome/renderer/searchbox/searchbox.h" 10 #include "chrome/renderer/searchbox/searchbox.h"
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 312
313 return content::RenderView::FromWebView(webview); 313 return content::RenderView::FromWebView(webview);
314 } 314 }
315 315
316 // static 316 // static
317 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetQuery( 317 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetQuery(
318 const v8::Arguments& args) { 318 const v8::Arguments& args) {
319 content::RenderView* render_view = GetRenderView(); 319 content::RenderView* render_view = GetRenderView();
320 if (!render_view) return v8::Undefined(); 320 if (!render_view) return v8::Undefined();
321 321
322 DVLOG(1) << "GetQuery: '" << SearchBox::Get(render_view)->query() << "'"; 322 DVLOG(1) << render_view << " GetQuery: '"
323 << SearchBox::Get(render_view)->query() << "'";
323 return UTF16ToV8String(SearchBox::Get(render_view)->query()); 324 return UTF16ToV8String(SearchBox::Get(render_view)->query());
324 } 325 }
325 326
326 // static 327 // static
327 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetVerbatim( 328 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetVerbatim(
328 const v8::Arguments& args) { 329 const v8::Arguments& args) {
329 content::RenderView* render_view = GetRenderView(); 330 content::RenderView* render_view = GetRenderView();
330 if (!render_view) return v8::Undefined(); 331 if (!render_view) return v8::Undefined();
331 332
332 DVLOG(1) << "GetVerbatim: " << SearchBox::Get(render_view)->verbatim(); 333 DVLOG(1) << render_view << " GetVerbatim: "
334 << SearchBox::Get(render_view)->verbatim();
333 return v8::Boolean::New(SearchBox::Get(render_view)->verbatim()); 335 return v8::Boolean::New(SearchBox::Get(render_view)->verbatim());
334 } 336 }
335 337
336 // static 338 // static
337 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetSelectionStart( 339 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetSelectionStart(
338 const v8::Arguments& args) { 340 const v8::Arguments& args) {
339 content::RenderView* render_view = GetRenderView(); 341 content::RenderView* render_view = GetRenderView();
340 if (!render_view) return v8::Undefined(); 342 if (!render_view) return v8::Undefined();
341 343
342 return v8::Uint32::New(SearchBox::Get(render_view)->selection_start()); 344 return v8::Uint32::New(SearchBox::Get(render_view)->selection_start());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 const v8::Arguments& args) { 385 const v8::Arguments& args) {
384 content::RenderView* render_view = GetRenderView(); 386 content::RenderView* render_view = GetRenderView();
385 if (!render_view) return v8::Undefined(); 387 if (!render_view) return v8::Undefined();
386 388
387 return v8::Int32::New(SearchBox::Get(render_view)->GetRect().height()); 389 return v8::Int32::New(SearchBox::Get(render_view)->GetRect().height());
388 } 390 }
389 391
390 // static 392 // static
391 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetAutocompleteResults( 393 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetAutocompleteResults(
392 const v8::Arguments& args) { 394 const v8::Arguments& args) {
393 DVLOG(1) << "GetAutocompleteResults";
394 content::RenderView* render_view = GetRenderView(); 395 content::RenderView* render_view = GetRenderView();
395 if (!render_view) return v8::Undefined(); 396 if (!render_view) return v8::Undefined();
396 397
398 DVLOG(1) << render_view << " GetAutocompleteResults";
397 const std::vector<InstantAutocompleteResult>& results = 399 const std::vector<InstantAutocompleteResult>& results =
398 SearchBox::Get(render_view)->GetAutocompleteResults(); 400 SearchBox::Get(render_view)->GetAutocompleteResults();
399 const size_t results_base = SearchBox::Get(render_view)->results_base(); 401 size_t results_base = SearchBox::Get(render_view)->results_base();
400 402
401 v8::Handle<v8::Array> results_array = v8::Array::New(results.size()); 403 v8::Handle<v8::Array> results_array = v8::Array::New(results.size());
402 for (size_t i = 0; i < results.size(); ++i) { 404 for (size_t i = 0; i < results.size(); ++i) {
403 v8::Handle<v8::Object> result = v8::Object::New(); 405 v8::Handle<v8::Object> result = v8::Object::New();
404 result->Set(v8::String::New("provider"), 406 result->Set(v8::String::New("provider"),
405 UTF16ToV8String(results[i].provider)); 407 UTF16ToV8String(results[i].provider));
406 result->Set(v8::String::New("type"), UTF16ToV8String(results[i].type)); 408 result->Set(v8::String::New("type"), UTF16ToV8String(results[i].type));
407 result->Set(v8::String::New("contents"), 409 result->Set(v8::String::New("contents"),
408 UTF16ToV8String(results[i].description)); 410 UTF16ToV8String(results[i].description));
409 result->Set(v8::String::New("destination_url"), 411 result->Set(v8::String::New("destination_url"),
(...skipping 10 matching lines...) Expand all
420 return results_array; 422 return results_array;
421 } 423 }
422 424
423 // static 425 // static
424 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetContext( 426 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetContext(
425 const v8::Arguments& args) { 427 const v8::Arguments& args) {
426 content::RenderView* render_view = GetRenderView(); 428 content::RenderView* render_view = GetRenderView();
427 if (!render_view) return v8::Undefined(); 429 if (!render_view) return v8::Undefined();
428 430
429 const chrome::search::Mode& mode = SearchBox::Get(render_view)->mode(); 431 const chrome::search::Mode& mode = SearchBox::Get(render_view)->mode();
430 DVLOG(1) << "GetContext: " << mode.origin << ":" << mode.mode; 432 DVLOG(1) << render_view << " GetContext: " << mode.origin << ":" << mode.mode;
431 v8::Handle<v8::Object> context = v8::Object::New(); 433 v8::Handle<v8::Object> context = v8::Object::New();
432 context->Set(v8::String::New("isNewTabPage"), 434 context->Set(v8::String::New("isNewTabPage"),
433 v8::Boolean::New(mode.is_ntp())); 435 v8::Boolean::New(mode.is_ntp()));
434 return context; 436 return context;
435 } 437 }
436 438
437 // static 439 // static
438 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetDisplayInstantResults( 440 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetDisplayInstantResults(
439 const v8::Arguments& args) { 441 const v8::Arguments& args) {
440 content::RenderView* render_view = GetRenderView(); 442 content::RenderView* render_view = GetRenderView();
441 if (!render_view) return v8::Undefined(); 443 if (!render_view) return v8::Undefined();
442 444
443 bool display_instant_results = 445 bool display_instant_results =
444 SearchBox::Get(render_view)->display_instant_results(); 446 SearchBox::Get(render_view)->display_instant_results();
445 DVLOG(1) << "GetDisplayInstantResults: " << display_instant_results; 447 DVLOG(1) << "GetDisplayInstantResults: " << display_instant_results;
446 return v8::Boolean::New(display_instant_results); 448 return v8::Boolean::New(display_instant_results);
447 } 449 }
448 450
449 // static 451 // static
450 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetThemeBackgroundInfo( 452 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetThemeBackgroundInfo(
451 const v8::Arguments& args) { 453 const v8::Arguments& args) {
452 DVLOG(1) << "GetThemeBackgroundInfo";
453 content::RenderView* render_view = GetRenderView(); 454 content::RenderView* render_view = GetRenderView();
454 if (!render_view) return v8::Undefined(); 455 if (!render_view) return v8::Undefined();
455 456
457 DVLOG(1) << render_view << " GetThemeBackgroundInfo";
456 const ThemeBackgroundInfo& theme_info = 458 const ThemeBackgroundInfo& theme_info =
457 SearchBox::Get(render_view)->GetThemeBackgroundInfo(); 459 SearchBox::Get(render_view)->GetThemeBackgroundInfo();
458 v8::Handle<v8::Object> info = v8::Object::New(); 460 v8::Handle<v8::Object> info = v8::Object::New();
459 461
460 // The theme background color is in RGBA format "rgba(R,G,B,A)" where R, G and 462 // The theme background color is in RGBA format "rgba(R,G,B,A)" where R, G and
461 // B are between 0 and 255 inclusive, and A is a double between 0 and 1 463 // B are between 0 and 255 inclusive, and A is a double between 0 and 1
462 // inclusive. 464 // inclusive.
463 // This is the CSS "background-color" format. 465 // This is the CSS "background-color" format.
464 // Value is always valid. 466 // Value is always valid.
465 info->Set(v8::String::New("colorRgba"), UTF8ToV8String( 467 info->Set(v8::String::New("colorRgba"), UTF8ToV8String(
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 542
541 return info; 543 return info;
542 } 544 }
543 545
544 // static 546 // static
545 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetThemeAreaHeight( 547 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetThemeAreaHeight(
546 const v8::Arguments& args) { 548 const v8::Arguments& args) {
547 content::RenderView* render_view = GetRenderView(); 549 content::RenderView* render_view = GetRenderView();
548 if (!render_view) return v8::Undefined(); 550 if (!render_view) return v8::Undefined();
549 551
550 DVLOG(1) << "GetThemeAreaHeight: " 552 DVLOG(1) << render_view << " GetThemeAreaHeight: "
551 << SearchBox::Get(render_view)->GetThemeAreaHeight(); 553 << SearchBox::Get(render_view)->GetThemeAreaHeight();
552 return v8::Int32::New(SearchBox::Get(render_view)->GetThemeAreaHeight()); 554 return v8::Int32::New(SearchBox::Get(render_view)->GetThemeAreaHeight());
553 } 555 }
554 556
555 // static 557 // static
556 v8::Handle<v8::Value> SearchBoxExtensionWrapper::NavigateContentWindow( 558 v8::Handle<v8::Value> SearchBoxExtensionWrapper::NavigateContentWindow(
557 const v8::Arguments& args) { 559 const v8::Arguments& args) {
558 content::RenderView* render_view = GetRenderView(); 560 content::RenderView* render_view = GetRenderView();
559 if (!render_view || !args.Length()) return v8::Undefined(); 561 if (!render_view || !args.Length()) return v8::Undefined();
560 562
(...skipping 12 matching lines...) Expand all
573 WebKit::WebURLRequest request(destination_url); 575 WebKit::WebURLRequest request(destination_url);
574 render_view->GetWebView()->mainFrame()->loadRequest(request); 576 render_view->GetWebView()->mainFrame()->loadRequest(request);
575 } 577 }
576 578
577 return v8::Undefined(); 579 return v8::Undefined();
578 } 580 }
579 581
580 // static 582 // static
581 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetSuggestions( 583 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetSuggestions(
582 const v8::Arguments& args) { 584 const v8::Arguments& args) {
583 DVLOG(1) << "SetSuggestions";
584 content::RenderView* render_view = GetRenderView(); 585 content::RenderView* render_view = GetRenderView();
585 if (!render_view || !args.Length()) return v8::Undefined(); 586 if (!render_view || !args.Length()) return v8::Undefined();
586 587
588 DVLOG(1) << render_view << " SetSuggestions";
587 v8::Handle<v8::Object> suggestion_json = args[0]->ToObject(); 589 v8::Handle<v8::Object> suggestion_json = args[0]->ToObject();
588 590
589 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW; 591 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW;
590 InstantSuggestionType type = INSTANT_SUGGESTION_SEARCH; 592 InstantSuggestionType type = INSTANT_SUGGESTION_SEARCH;
591 v8::Handle<v8::Value> complete_value = 593 v8::Handle<v8::Value> complete_value =
592 suggestion_json->Get(v8::String::New("complete_behavior")); 594 suggestion_json->Get(v8::String::New("complete_behavior"));
593 if (complete_value->Equals(v8::String::New("now"))) { 595 if (complete_value->Equals(v8::String::New("now"))) {
594 behavior = INSTANT_COMPLETE_NOW; 596 behavior = INSTANT_COMPLETE_NOW;
595 } else if (complete_value->Equals(v8::String::New("never"))) { 597 } else if (complete_value->Equals(v8::String::New("never"))) {
596 behavior = INSTANT_COMPLETE_NEVER; 598 behavior = INSTANT_COMPLETE_NEVER;
(...skipping 15 matching lines...) Expand all
612 } 614 }
613 615
614 SearchBox::Get(render_view)->SetSuggestions(suggestions); 616 SearchBox::Get(render_view)->SetSuggestions(suggestions);
615 617
616 return v8::Undefined(); 618 return v8::Undefined();
617 } 619 }
618 620
619 // static 621 // static
620 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetQuerySuggestion( 622 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetQuerySuggestion(
621 const v8::Arguments& args) { 623 const v8::Arguments& args) {
622 DVLOG(1) << "SetQuerySuggestion";
623 content::RenderView* render_view = GetRenderView(); 624 content::RenderView* render_view = GetRenderView();
624 if (!render_view || args.Length() < 2) return v8::Undefined(); 625 if (!render_view || args.Length() < 2) return v8::Undefined();
625 626
627 DVLOG(1) << render_view << " SetQuerySuggestion";
626 string16 text = V8ValueToUTF16(args[0]); 628 string16 text = V8ValueToUTF16(args[0]);
627 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW; 629 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW;
628 InstantSuggestionType type = INSTANT_SUGGESTION_URL; 630 InstantSuggestionType type = INSTANT_SUGGESTION_URL;
629 631
630 if (args[1]->Uint32Value() == 2) { 632 if (args[1]->Uint32Value() == 2) {
631 behavior = INSTANT_COMPLETE_NEVER; 633 behavior = INSTANT_COMPLETE_NEVER;
632 type = INSTANT_SUGGESTION_SEARCH; 634 type = INSTANT_SUGGESTION_SEARCH;
633 } 635 }
634 636
635 std::vector<InstantSuggestion> suggestions; 637 std::vector<InstantSuggestion> suggestions;
636 suggestions.push_back(InstantSuggestion(text, behavior, type)); 638 suggestions.push_back(InstantSuggestion(text, behavior, type));
637 SearchBox::Get(render_view)->SetSuggestions(suggestions); 639 SearchBox::Get(render_view)->SetSuggestions(suggestions);
638 640
639 return v8::Undefined(); 641 return v8::Undefined();
640 } 642 }
641 643
642 // static 644 // static
643 v8::Handle<v8::Value> 645 v8::Handle<v8::Value>
644 SearchBoxExtensionWrapper::SetQuerySuggestionFromAutocompleteResult( 646 SearchBoxExtensionWrapper::SetQuerySuggestionFromAutocompleteResult(
645 const v8::Arguments& args) { 647 const v8::Arguments& args) {
646 DVLOG(1) << "SetQuerySuggestionFromAutocompleteResult";
647 content::RenderView* render_view = GetRenderView(); 648 content::RenderView* render_view = GetRenderView();
648 if (!render_view || !args.Length()) return v8::Undefined(); 649 if (!render_view || !args.Length()) return v8::Undefined();
649 650
651 DVLOG(1) << render_view << " SetQuerySuggestionFromAutocompleteResult";
650 const InstantAutocompleteResult* result = SearchBox::Get(render_view)-> 652 const InstantAutocompleteResult* result = SearchBox::Get(render_view)->
651 GetAutocompleteResultWithId(args[0]->Uint32Value()); 653 GetAutocompleteResultWithId(args[0]->Uint32Value());
652 if (!result) return v8::Undefined(); 654 if (!result) return v8::Undefined();
653 655
654 // We only support selecting autocomplete results that are URLs. 656 // We only support selecting autocomplete results that are URLs.
655 string16 text = result->destination_url; 657 string16 text = result->destination_url;
656 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW; 658 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW;
657 InstantSuggestionType type = INSTANT_SUGGESTION_URL; 659 InstantSuggestionType type = INSTANT_SUGGESTION_URL;
658 660
659 std::vector<InstantSuggestion> suggestions; 661 std::vector<InstantSuggestion> suggestions;
660 suggestions.push_back(InstantSuggestion(text, behavior, type)); 662 suggestions.push_back(InstantSuggestion(text, behavior, type));
661 SearchBox::Get(render_view)->SetSuggestions(suggestions); 663 SearchBox::Get(render_view)->SetSuggestions(suggestions);
662 664
663 return v8::Undefined(); 665 return v8::Undefined();
664 } 666 }
665 667
666 // static 668 // static
667 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetQuery( 669 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetQuery(
668 const v8::Arguments& args) { 670 const v8::Arguments& args) {
669 DVLOG(1) << "SetQuery";
670 content::RenderView* render_view = GetRenderView(); 671 content::RenderView* render_view = GetRenderView();
671 if (!render_view || args.Length() < 2) return v8::Undefined(); 672 if (!render_view || args.Length() < 2) return v8::Undefined();
672 673
674 DVLOG(1) << render_view << " SetQuery";
673 string16 text = V8ValueToUTF16(args[0]); 675 string16 text = V8ValueToUTF16(args[0]);
674 InstantCompleteBehavior behavior = INSTANT_COMPLETE_REPLACE; 676 InstantCompleteBehavior behavior = INSTANT_COMPLETE_REPLACE;
675 InstantSuggestionType type = INSTANT_SUGGESTION_SEARCH; 677 InstantSuggestionType type = INSTANT_SUGGESTION_SEARCH;
676 678
677 if (args[1]->Uint32Value() == 1) 679 if (args[1]->Uint32Value() == 1)
678 type = INSTANT_SUGGESTION_URL; 680 type = INSTANT_SUGGESTION_URL;
679 681
680 std::vector<InstantSuggestion> suggestions; 682 std::vector<InstantSuggestion> suggestions;
681 suggestions.push_back(InstantSuggestion(text, behavior, type)); 683 suggestions.push_back(InstantSuggestion(text, behavior, type));
682 SearchBox::Get(render_view)->SetSuggestions(suggestions); 684 SearchBox::Get(render_view)->SetSuggestions(suggestions);
683 685
684 return v8::Undefined(); 686 return v8::Undefined();
685 } 687 }
686 688
687 v8::Handle<v8::Value> 689 v8::Handle<v8::Value>
688 SearchBoxExtensionWrapper::SetQueryFromAutocompleteResult( 690 SearchBoxExtensionWrapper::SetQueryFromAutocompleteResult(
689 const v8::Arguments& args) { 691 const v8::Arguments& args) {
690 DVLOG(1) << "SetQueryFromAutocompleteResult";
691 content::RenderView* render_view = GetRenderView(); 692 content::RenderView* render_view = GetRenderView();
692 if (!render_view || !args.Length()) return v8::Undefined(); 693 if (!render_view || !args.Length()) return v8::Undefined();
693 694
695 DVLOG(1) << render_view << " SetQueryFromAutocompleteResult";
694 const InstantAutocompleteResult* result = SearchBox::Get(render_view)-> 696 const InstantAutocompleteResult* result = SearchBox::Get(render_view)->
695 GetAutocompleteResultWithId(args[0]->Uint32Value()); 697 GetAutocompleteResultWithId(args[0]->Uint32Value());
696 if (!result) return v8::Undefined(); 698 if (!result) return v8::Undefined();
697 699
698 // We only support selecting autocomplete results that are URLs. 700 // We only support selecting autocomplete results that are URLs.
699 string16 text = result->destination_url; 701 string16 text = result->destination_url;
700 InstantCompleteBehavior behavior = INSTANT_COMPLETE_REPLACE; 702 InstantCompleteBehavior behavior = INSTANT_COMPLETE_REPLACE;
701 // TODO(jered): Distinguish between history URLs and search provider 703 // TODO(jered): Distinguish between history URLs and search provider
702 // navsuggest URLs so that we can do proper accounting on history URLs. 704 // navsuggest URLs so that we can do proper accounting on history URLs.
703 InstantSuggestionType type = INSTANT_SUGGESTION_URL; 705 InstantSuggestionType type = INSTANT_SUGGESTION_URL;
704 706
705 std::vector<InstantSuggestion> suggestions; 707 std::vector<InstantSuggestion> suggestions;
706 suggestions.push_back(InstantSuggestion(text, behavior, type)); 708 suggestions.push_back(InstantSuggestion(text, behavior, type));
707 SearchBox::Get(render_view)->SetSuggestions(suggestions); 709 SearchBox::Get(render_view)->SetSuggestions(suggestions);
708 710
709 return v8::Undefined(); 711 return v8::Undefined();
710 } 712 }
711 713
712 // static 714 // static
713 v8::Handle<v8::Value> SearchBoxExtensionWrapper::Show( 715 v8::Handle<v8::Value> SearchBoxExtensionWrapper::Show(
714 const v8::Arguments& args) { 716 const v8::Arguments& args) {
715 DVLOG(1) << "ShowInstantPreview";
716 content::RenderView* render_view = GetRenderView(); 717 content::RenderView* render_view = GetRenderView();
717 if (!render_view || args.Length() < 2) return v8::Undefined(); 718 if (!render_view || args.Length() < 2) return v8::Undefined();
718 719
720 DVLOG(1) << render_view << " ShowInstantPreview";
719 InstantShownReason reason = INSTANT_SHOWN_NOT_SPECIFIED; 721 InstantShownReason reason = INSTANT_SHOWN_NOT_SPECIFIED;
720 switch (args[0]->Uint32Value()) { 722 switch (args[0]->Uint32Value()) {
721 case 1: reason = INSTANT_SHOWN_CUSTOM_NTP_CONTENT; break; 723 case 1: reason = INSTANT_SHOWN_CUSTOM_NTP_CONTENT; break;
722 case 2: reason = INSTANT_SHOWN_QUERY_SUGGESTIONS; break; 724 case 2: reason = INSTANT_SHOWN_QUERY_SUGGESTIONS; break;
723 case 3: reason = INSTANT_SHOWN_ZERO_SUGGESTIONS; break; 725 case 3: reason = INSTANT_SHOWN_ZERO_SUGGESTIONS; break;
724 } 726 }
725 727
726 int height = 100; 728 int height = 100;
727 InstantSizeUnits units = INSTANT_SIZE_PERCENT; 729 InstantSizeUnits units = INSTANT_SIZE_PERCENT;
728 if (args[1]->IsInt32()) { 730 if (args[1]->IsInt32()) {
729 height = args[1]->Int32Value(); 731 height = args[1]->Int32Value();
730 units = INSTANT_SIZE_PIXELS; 732 units = INSTANT_SIZE_PIXELS;
731 } 733 }
732 734
733 SearchBox::Get(render_view)->ShowInstantPreview(reason, height, units); 735 SearchBox::Get(render_view)->ShowInstantPreview(reason, height, units);
734 736
735 return v8::Undefined(); 737 return v8::Undefined();
736 } 738 }
737 739
738 // static 740 // static
739 void SearchBoxExtension::DispatchChange(WebKit::WebFrame* frame) { 741 void SearchBoxExtension::DispatchChange(WebKit::WebFrame* frame) {
740 DVLOG(1) << "DispatchChange";
741 Dispatch(frame, kDispatchChangeEventScript); 742 Dispatch(frame, kDispatchChangeEventScript);
742 } 743 }
743 744
744 // static 745 // static
745 void SearchBoxExtension::DispatchSubmit(WebKit::WebFrame* frame) { 746 void SearchBoxExtension::DispatchSubmit(WebKit::WebFrame* frame) {
746 Dispatch(frame, kDispatchSubmitEventScript); 747 Dispatch(frame, kDispatchSubmitEventScript);
747 } 748 }
748 749
749 // static 750 // static
750 void SearchBoxExtension::DispatchCancel(WebKit::WebFrame* frame) { 751 void SearchBoxExtension::DispatchCancel(WebKit::WebFrame* frame) {
751 Dispatch(frame, kDispatchCancelEventScript); 752 Dispatch(frame, kDispatchCancelEventScript);
752 } 753 }
753 754
754 // static 755 // static
755 void SearchBoxExtension::DispatchResize(WebKit::WebFrame* frame) { 756 void SearchBoxExtension::DispatchResize(WebKit::WebFrame* frame) {
756 Dispatch(frame, kDispatchResizeEventScript); 757 Dispatch(frame, kDispatchResizeEventScript);
757 } 758 }
758 759
759 // static 760 // static
760 bool SearchBoxExtension::PageSupportsInstant(WebKit::WebFrame* frame) { 761 bool SearchBoxExtension::PageSupportsInstant(WebKit::WebFrame* frame) {
761 if (!frame) return false; 762 if (!frame) return false;
762 763
763 v8::Handle<v8::Value> v = frame->executeScriptAndReturnValue( 764 v8::Handle<v8::Value> v = frame->executeScriptAndReturnValue(
764 WebKit::WebScriptSource(kSupportsInstantScript)); 765 WebKit::WebScriptSource(kSupportsInstantScript));
765 bool supports_instant = !v.IsEmpty() && v->BooleanValue(); 766 return !v.IsEmpty() && v->BooleanValue();
766
767 // Send a resize message to tell the page that Chrome is actively using the
768 // searchbox API with it. The page uses the message to transition from
769 // "homepage" mode to "search" mode.
770 if (supports_instant)
771 DispatchResize(frame);
772
773 DVLOG(1) << "PageSupportsInstant: " << supports_instant;
774 return supports_instant;
775 } 767 }
776 768
777 // static 769 // static
778 void SearchBoxExtension::DispatchAutocompleteResults(WebKit::WebFrame* frame) { 770 void SearchBoxExtension::DispatchAutocompleteResults(WebKit::WebFrame* frame) {
779 DVLOG(1) << "DispatchAutocompleteResults";
780 Dispatch(frame, kDispatchAutocompleteResultsEventScript); 771 Dispatch(frame, kDispatchAutocompleteResultsEventScript);
781 } 772 }
782 773
783 // static 774 // static
784 void SearchBoxExtension::DispatchUpOrDownKeyPress(WebKit::WebFrame* frame, 775 void SearchBoxExtension::DispatchUpOrDownKeyPress(WebKit::WebFrame* frame,
785 int count) { 776 int count) {
786 Dispatch(frame, WebKit::WebString::fromUTF8( 777 Dispatch(frame, WebKit::WebString::fromUTF8(
787 base::StringPrintf(kDispatchUpOrDownKeyPressEventScript, abs(count), 778 base::StringPrintf(kDispatchUpOrDownKeyPressEventScript, abs(count),
788 count < 0 ? ui::VKEY_UP : ui::VKEY_DOWN))); 779 count < 0 ? ui::VKEY_UP : ui::VKEY_DOWN)));
789 } 780 }
790 781
791 // static 782 // static
792 void SearchBoxExtension::DispatchContextChange(WebKit::WebFrame* frame) { 783 void SearchBoxExtension::DispatchContextChange(WebKit::WebFrame* frame) {
793 DVLOG(1) << "DispatchContextChange";
794 Dispatch(frame, kDispatchContextChangeEventScript); 784 Dispatch(frame, kDispatchContextChangeEventScript);
795 } 785 }
796 786
797 // static 787 // static
798 void SearchBoxExtension::DispatchThemeChange(WebKit::WebFrame* frame) { 788 void SearchBoxExtension::DispatchThemeChange(WebKit::WebFrame* frame) {
799 Dispatch(frame, kDispatchThemeChangeEventScript); 789 Dispatch(frame, kDispatchThemeChangeEventScript);
800 } 790 }
801 791
802 // static 792 // static
803 void SearchBoxExtension::DispatchThemeAreaHeightChange( 793 void SearchBoxExtension::DispatchThemeAreaHeightChange(
804 WebKit::WebFrame* frame) { 794 WebKit::WebFrame* frame) {
805 Dispatch(frame, kDispatchThemeAreaHeightChangeEventScript); 795 Dispatch(frame, kDispatchThemeAreaHeightChangeEventScript);
806 } 796 }
807 797
808 // static 798 // static
809 v8::Extension* SearchBoxExtension::Get() { 799 v8::Extension* SearchBoxExtension::Get() {
810 return new SearchBoxExtensionWrapper(ResourceBundle::GetSharedInstance(). 800 return new SearchBoxExtensionWrapper(ResourceBundle::GetSharedInstance().
811 GetRawDataResource(IDR_SEARCHBOX_API)); 801 GetRawDataResource(IDR_SEARCHBOX_API));
812 } 802 }
813 803
814 } // namespace extensions_v8 804 } // namespace extensions_v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698