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

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: 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 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 306
307 return content::RenderView::FromWebView(webview); 307 return content::RenderView::FromWebView(webview);
308 } 308 }
309 309
310 // static 310 // static
311 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetQuery( 311 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetQuery(
312 const v8::Arguments& args) { 312 const v8::Arguments& args) {
313 content::RenderView* render_view = GetRenderView(); 313 content::RenderView* render_view = GetRenderView();
314 if (!render_view) return v8::Undefined(); 314 if (!render_view) return v8::Undefined();
315 315
316 DVLOG(1) << "GetQuery: '" << SearchBox::Get(render_view)->query() << "'"; 316 DVLOG(1) << render_view << " GetQuery: '"
317 << SearchBox::Get(render_view)->query() << "'";
317 return UTF16ToV8String(SearchBox::Get(render_view)->query()); 318 return UTF16ToV8String(SearchBox::Get(render_view)->query());
318 } 319 }
319 320
320 // static 321 // static
321 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetVerbatim( 322 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetVerbatim(
322 const v8::Arguments& args) { 323 const v8::Arguments& args) {
323 content::RenderView* render_view = GetRenderView(); 324 content::RenderView* render_view = GetRenderView();
324 if (!render_view) return v8::Undefined(); 325 if (!render_view) return v8::Undefined();
325 326
326 DVLOG(1) << "GetVerbatim: " << SearchBox::Get(render_view)->verbatim(); 327 DVLOG(1) << render_view << " GetVerbatim: "
328 << SearchBox::Get(render_view)->verbatim();
327 return v8::Boolean::New(SearchBox::Get(render_view)->verbatim()); 329 return v8::Boolean::New(SearchBox::Get(render_view)->verbatim());
328 } 330 }
329 331
330 // static 332 // static
331 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetSelectionStart( 333 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetSelectionStart(
332 const v8::Arguments& args) { 334 const v8::Arguments& args) {
333 content::RenderView* render_view = GetRenderView(); 335 content::RenderView* render_view = GetRenderView();
334 if (!render_view) return v8::Undefined(); 336 if (!render_view) return v8::Undefined();
335 337
336 return v8::Uint32::New(SearchBox::Get(render_view)->selection_start()); 338 return v8::Uint32::New(SearchBox::Get(render_view)->selection_start());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 const v8::Arguments& args) { 379 const v8::Arguments& args) {
378 content::RenderView* render_view = GetRenderView(); 380 content::RenderView* render_view = GetRenderView();
379 if (!render_view) return v8::Undefined(); 381 if (!render_view) return v8::Undefined();
380 382
381 return v8::Int32::New(SearchBox::Get(render_view)->GetRect().height()); 383 return v8::Int32::New(SearchBox::Get(render_view)->GetRect().height());
382 } 384 }
383 385
384 // static 386 // static
385 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetAutocompleteResults( 387 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetAutocompleteResults(
386 const v8::Arguments& args) { 388 const v8::Arguments& args) {
387 DVLOG(1) << "GetAutocompleteResults";
388 content::RenderView* render_view = GetRenderView(); 389 content::RenderView* render_view = GetRenderView();
389 if (!render_view) return v8::Undefined(); 390 if (!render_view) return v8::Undefined();
390 391
392 DVLOG(1) << render_view << " GetAutocompleteResults";
391 const std::vector<InstantAutocompleteResult>& results = 393 const std::vector<InstantAutocompleteResult>& results =
392 SearchBox::Get(render_view)->GetAutocompleteResults(); 394 SearchBox::Get(render_view)->GetAutocompleteResults();
393 const size_t results_base = SearchBox::Get(render_view)->results_base(); 395 const size_t results_base = SearchBox::Get(render_view)->results_base();
394 396
395 v8::Handle<v8::Array> results_array = v8::Array::New(results.size()); 397 v8::Handle<v8::Array> results_array = v8::Array::New(results.size());
396 for (size_t i = 0; i < results.size(); ++i) { 398 for (size_t i = 0; i < results.size(); ++i) {
397 v8::Handle<v8::Object> result = v8::Object::New(); 399 v8::Handle<v8::Object> result = v8::Object::New();
398 result->Set(v8::String::New("provider"), 400 result->Set(v8::String::New("provider"),
399 UTF16ToV8String(results[i].provider)); 401 UTF16ToV8String(results[i].provider));
400 result->Set(v8::String::New("type"), UTF16ToV8String(results[i].type)); 402 result->Set(v8::String::New("type"), UTF16ToV8String(results[i].type));
(...skipping 13 matching lines...) Expand all
414 return results_array; 416 return results_array;
415 } 417 }
416 418
417 // static 419 // static
418 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetContext( 420 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetContext(
419 const v8::Arguments& args) { 421 const v8::Arguments& args) {
420 content::RenderView* render_view = GetRenderView(); 422 content::RenderView* render_view = GetRenderView();
421 if (!render_view) return v8::Undefined(); 423 if (!render_view) return v8::Undefined();
422 424
423 const chrome::search::Mode& mode = SearchBox::Get(render_view)->mode(); 425 const chrome::search::Mode& mode = SearchBox::Get(render_view)->mode();
424 DVLOG(1) << "GetContext: " << mode.origin << ":" << mode.mode; 426 DVLOG(1) << render_view << " GetContext: " << mode.origin << ":" << mode.mode;
425 v8::Handle<v8::Object> context = v8::Object::New(); 427 v8::Handle<v8::Object> context = v8::Object::New();
426 // TODO(jered): Remove isNewTabPage, it's deprecated. 428 // TODO(jered): Remove isNewTabPage, it's deprecated.
427 context->Set(v8::String::New("isNewTabPage"), 429 context->Set(v8::String::New("isNewTabPage"),
428 v8::Boolean::New(mode.is_ntp())); 430 v8::Boolean::New(mode.is_ntp()));
429 context->Set(v8::String::New("searchMode"), 431 context->Set(v8::String::New("searchMode"),
430 v8::Uint32::New(mode.mode)); 432 v8::Uint32::New(mode.mode));
431 context->Set(v8::String::New("searchOrigin"), 433 context->Set(v8::String::New("searchOrigin"),
432 v8::Uint32::New(mode.origin)); 434 v8::Uint32::New(mode.origin));
433 return context; 435 return context;
434 } 436 }
435 437
436 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetThemeBackgroundInfo( 438 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetThemeBackgroundInfo(
437 const v8::Arguments& args) { 439 const v8::Arguments& args) {
438 DVLOG(1) << "GetThemeBackgroundInfo";
439 content::RenderView* render_view = GetRenderView(); 440 content::RenderView* render_view = GetRenderView();
440 if (!render_view) return v8::Undefined(); 441 if (!render_view) return v8::Undefined();
441 442
443 DVLOG(1) << render_view << " GetThemeBackgroundInfo";
442 const ThemeBackgroundInfo& theme_info = 444 const ThemeBackgroundInfo& theme_info =
443 SearchBox::Get(render_view)->GetThemeBackgroundInfo(); 445 SearchBox::Get(render_view)->GetThemeBackgroundInfo();
444 v8::Handle<v8::Object> info = v8::Object::New(); 446 v8::Handle<v8::Object> info = v8::Object::New();
445 447
446 // The theme background color is in RGBA format "rgba(R,G,B,A)" where R, G and 448 // The theme background color is in RGBA format "rgba(R,G,B,A)" where R, G and
447 // B are between 0 and 255 inclusive, and A is a double between 0 and 1 449 // B are between 0 and 255 inclusive, and A is a double between 0 and 1
448 // inclusive. 450 // inclusive.
449 // This is the CSS "background-color" format. 451 // This is the CSS "background-color" format.
450 // Value is always valid. 452 // Value is always valid.
451 info->Set(v8::String::New("colorRgba"), UTF8ToV8String( 453 info->Set(v8::String::New("colorRgba"), UTF8ToV8String(
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 528
527 return info; 529 return info;
528 } 530 }
529 531
530 532
531 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetThemeAreaHeight( 533 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetThemeAreaHeight(
532 const v8::Arguments& args) { 534 const v8::Arguments& args) {
533 content::RenderView* render_view = GetRenderView(); 535 content::RenderView* render_view = GetRenderView();
534 if (!render_view) return v8::Undefined(); 536 if (!render_view) return v8::Undefined();
535 537
536 DVLOG(1) << "GetThemeAreaHeight: " 538 DVLOG(1) << render_view << " GetThemeAreaHeight: "
537 << SearchBox::Get(render_view)->GetThemeAreaHeight(); 539 << SearchBox::Get(render_view)->GetThemeAreaHeight();
538 return v8::Int32::New(SearchBox::Get(render_view)->GetThemeAreaHeight()); 540 return v8::Int32::New(SearchBox::Get(render_view)->GetThemeAreaHeight());
539 } 541 }
540 542
541 // static 543 // static
542 v8::Handle<v8::Value> SearchBoxExtensionWrapper::NavigateContentWindow( 544 v8::Handle<v8::Value> SearchBoxExtensionWrapper::NavigateContentWindow(
543 const v8::Arguments& args) { 545 const v8::Arguments& args) {
544 content::RenderView* render_view = GetRenderView(); 546 content::RenderView* render_view = GetRenderView();
545 if (!render_view || !args.Length()) return v8::Undefined(); 547 if (!render_view || !args.Length()) return v8::Undefined();
546 548
(...skipping 12 matching lines...) Expand all
559 WebKit::WebURLRequest request(destination_url); 561 WebKit::WebURLRequest request(destination_url);
560 render_view->GetWebView()->mainFrame()->loadRequest(request); 562 render_view->GetWebView()->mainFrame()->loadRequest(request);
561 } 563 }
562 564
563 return v8::Undefined(); 565 return v8::Undefined();
564 } 566 }
565 567
566 // static 568 // static
567 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetSuggestions( 569 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetSuggestions(
568 const v8::Arguments& args) { 570 const v8::Arguments& args) {
569 DVLOG(1) << "SetSuggestions";
570 content::RenderView* render_view = GetRenderView(); 571 content::RenderView* render_view = GetRenderView();
571 if (!render_view || !args.Length()) return v8::Undefined(); 572 if (!render_view || !args.Length()) return v8::Undefined();
572 573
574 DVLOG(1) << render_view << " SetSuggestions";
573 v8::Handle<v8::Object> suggestion_json = args[0]->ToObject(); 575 v8::Handle<v8::Object> suggestion_json = args[0]->ToObject();
574 576
575 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW; 577 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW;
576 InstantSuggestionType type = INSTANT_SUGGESTION_SEARCH; 578 InstantSuggestionType type = INSTANT_SUGGESTION_SEARCH;
577 v8::Handle<v8::Value> complete_value = 579 v8::Handle<v8::Value> complete_value =
578 suggestion_json->Get(v8::String::New("complete_behavior")); 580 suggestion_json->Get(v8::String::New("complete_behavior"));
579 if (complete_value->Equals(v8::String::New("now"))) { 581 if (complete_value->Equals(v8::String::New("now"))) {
580 behavior = INSTANT_COMPLETE_NOW; 582 behavior = INSTANT_COMPLETE_NOW;
581 } else if (complete_value->Equals(v8::String::New("never"))) { 583 } else if (complete_value->Equals(v8::String::New("never"))) {
582 behavior = INSTANT_COMPLETE_NEVER; 584 behavior = INSTANT_COMPLETE_NEVER;
(...skipping 15 matching lines...) Expand all
598 } 600 }
599 601
600 SearchBox::Get(render_view)->SetSuggestions(suggestions); 602 SearchBox::Get(render_view)->SetSuggestions(suggestions);
601 603
602 return v8::Undefined(); 604 return v8::Undefined();
603 } 605 }
604 606
605 // static 607 // static
606 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetQuerySuggestion( 608 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetQuerySuggestion(
607 const v8::Arguments& args) { 609 const v8::Arguments& args) {
608 DVLOG(1) << "SetQuerySuggestion";
609 content::RenderView* render_view = GetRenderView(); 610 content::RenderView* render_view = GetRenderView();
610 if (!render_view || args.Length() < 2) return v8::Undefined(); 611 if (!render_view || args.Length() < 2) return v8::Undefined();
611 612
613 DVLOG(1) << render_view << " SetQuerySuggestion";
612 string16 text = V8ValueToUTF16(args[0]); 614 string16 text = V8ValueToUTF16(args[0]);
613 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW; 615 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW;
614 InstantSuggestionType type = INSTANT_SUGGESTION_URL; 616 InstantSuggestionType type = INSTANT_SUGGESTION_URL;
615 617
616 if (args[1]->Uint32Value() == 2) { 618 if (args[1]->Uint32Value() == 2) {
617 behavior = INSTANT_COMPLETE_NEVER; 619 behavior = INSTANT_COMPLETE_NEVER;
618 type = INSTANT_SUGGESTION_SEARCH; 620 type = INSTANT_SUGGESTION_SEARCH;
619 } 621 }
620 622
621 std::vector<InstantSuggestion> suggestions; 623 std::vector<InstantSuggestion> suggestions;
622 suggestions.push_back(InstantSuggestion(text, behavior, type)); 624 suggestions.push_back(InstantSuggestion(text, behavior, type));
623 SearchBox::Get(render_view)->SetSuggestions(suggestions); 625 SearchBox::Get(render_view)->SetSuggestions(suggestions);
624 626
625 return v8::Undefined(); 627 return v8::Undefined();
626 } 628 }
627 629
628 // static 630 // static
629 v8::Handle<v8::Value> 631 v8::Handle<v8::Value>
630 SearchBoxExtensionWrapper::SetQuerySuggestionFromAutocompleteResult( 632 SearchBoxExtensionWrapper::SetQuerySuggestionFromAutocompleteResult(
631 const v8::Arguments& args) { 633 const v8::Arguments& args) {
632 DVLOG(1) << "SetQuerySuggestionFromAutocompleteResult";
633 content::RenderView* render_view = GetRenderView(); 634 content::RenderView* render_view = GetRenderView();
634 if (!render_view || !args.Length()) return v8::Undefined(); 635 if (!render_view || !args.Length()) return v8::Undefined();
635 636
637 DVLOG(1) << render_view << " SetQuerySuggestionFromAutocompleteResult";
636 const InstantAutocompleteResult* result = SearchBox::Get(render_view)-> 638 const InstantAutocompleteResult* result = SearchBox::Get(render_view)->
637 GetAutocompleteResultWithId(args[0]->Uint32Value()); 639 GetAutocompleteResultWithId(args[0]->Uint32Value());
638 if (!result) return v8::Undefined(); 640 if (!result) return v8::Undefined();
639 641
640 // We only support selecting autocomplete results that are URLs. 642 // We only support selecting autocomplete results that are URLs.
641 string16 text = result->destination_url; 643 string16 text = result->destination_url;
642 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW; 644 InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW;
643 InstantSuggestionType type = INSTANT_SUGGESTION_URL; 645 InstantSuggestionType type = INSTANT_SUGGESTION_URL;
644 646
645 std::vector<InstantSuggestion> suggestions; 647 std::vector<InstantSuggestion> suggestions;
646 suggestions.push_back(InstantSuggestion(text, behavior, type)); 648 suggestions.push_back(InstantSuggestion(text, behavior, type));
647 SearchBox::Get(render_view)->SetSuggestions(suggestions); 649 SearchBox::Get(render_view)->SetSuggestions(suggestions);
648 650
649 return v8::Undefined(); 651 return v8::Undefined();
650 } 652 }
651 653
652 // static 654 // static
653 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetQuery( 655 v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetQuery(
654 const v8::Arguments& args) { 656 const v8::Arguments& args) {
655 DVLOG(1) << "SetQuery";
656 content::RenderView* render_view = GetRenderView(); 657 content::RenderView* render_view = GetRenderView();
657 if (!render_view || args.Length() < 2) return v8::Undefined(); 658 if (!render_view || args.Length() < 2) return v8::Undefined();
658 659
660 DVLOG(1) << render_view << " SetQuery";
659 string16 text = V8ValueToUTF16(args[0]); 661 string16 text = V8ValueToUTF16(args[0]);
660 InstantCompleteBehavior behavior = INSTANT_COMPLETE_REPLACE; 662 InstantCompleteBehavior behavior = INSTANT_COMPLETE_REPLACE;
661 InstantSuggestionType type = INSTANT_SUGGESTION_SEARCH; 663 InstantSuggestionType type = INSTANT_SUGGESTION_SEARCH;
662 664
663 if (args[1]->Uint32Value() == 1) 665 if (args[1]->Uint32Value() == 1)
664 type = INSTANT_SUGGESTION_URL; 666 type = INSTANT_SUGGESTION_URL;
665 667
666 std::vector<InstantSuggestion> suggestions; 668 std::vector<InstantSuggestion> suggestions;
667 suggestions.push_back(InstantSuggestion(text, behavior, type)); 669 suggestions.push_back(InstantSuggestion(text, behavior, type));
668 SearchBox::Get(render_view)->SetSuggestions(suggestions); 670 SearchBox::Get(render_view)->SetSuggestions(suggestions);
669 671
670 return v8::Undefined(); 672 return v8::Undefined();
671 } 673 }
672 674
673 v8::Handle<v8::Value> 675 v8::Handle<v8::Value>
674 SearchBoxExtensionWrapper::SetQueryFromAutocompleteResult( 676 SearchBoxExtensionWrapper::SetQueryFromAutocompleteResult(
675 const v8::Arguments& args) { 677 const v8::Arguments& args) {
676 DVLOG(1) << "SetQueryFromAutocompleteResult";
677 content::RenderView* render_view = GetRenderView(); 678 content::RenderView* render_view = GetRenderView();
678 if (!render_view || !args.Length()) return v8::Undefined(); 679 if (!render_view || !args.Length()) return v8::Undefined();
679 680
681 DVLOG(1) << render_view << " SetQueryFromAutocompleteResult";
680 const InstantAutocompleteResult* result = SearchBox::Get(render_view)-> 682 const InstantAutocompleteResult* result = SearchBox::Get(render_view)->
681 GetAutocompleteResultWithId(args[0]->Uint32Value()); 683 GetAutocompleteResultWithId(args[0]->Uint32Value());
682 if (!result) return v8::Undefined(); 684 if (!result) return v8::Undefined();
683 685
684 // We only support selecting autocomplete results that are URLs. 686 // We only support selecting autocomplete results that are URLs.
685 string16 text = result->destination_url; 687 string16 text = result->destination_url;
686 InstantCompleteBehavior behavior = INSTANT_COMPLETE_REPLACE; 688 InstantCompleteBehavior behavior = INSTANT_COMPLETE_REPLACE;
687 // TODO(jered): Distinguish between history URLs and search provider 689 // TODO(jered): Distinguish between history URLs and search provider
688 // navsuggest URLs so that we can do proper accounting on history URLs. 690 // navsuggest URLs so that we can do proper accounting on history URLs.
689 InstantSuggestionType type = INSTANT_SUGGESTION_URL; 691 InstantSuggestionType type = INSTANT_SUGGESTION_URL;
690 692
691 std::vector<InstantSuggestion> suggestions; 693 std::vector<InstantSuggestion> suggestions;
692 suggestions.push_back(InstantSuggestion(text, behavior, type)); 694 suggestions.push_back(InstantSuggestion(text, behavior, type));
693 SearchBox::Get(render_view)->SetSuggestions(suggestions); 695 SearchBox::Get(render_view)->SetSuggestions(suggestions);
694 696
695 return v8::Undefined(); 697 return v8::Undefined();
696 } 698 }
697 699
698 // static 700 // static
699 v8::Handle<v8::Value> SearchBoxExtensionWrapper::Show( 701 v8::Handle<v8::Value> SearchBoxExtensionWrapper::Show(
700 const v8::Arguments& args) { 702 const v8::Arguments& args) {
701 DVLOG(1) << "ShowInstantPreview";
702 content::RenderView* render_view = GetRenderView(); 703 content::RenderView* render_view = GetRenderView();
703 if (!render_view || args.Length() < 2) return v8::Undefined(); 704 if (!render_view || args.Length() < 2) return v8::Undefined();
704 705
706 DVLOG(1) << render_view << " ShowInstantPreview";
705 InstantShownReason reason = INSTANT_SHOWN_NOT_SPECIFIED; 707 InstantShownReason reason = INSTANT_SHOWN_NOT_SPECIFIED;
706 switch (args[0]->Uint32Value()) { 708 switch (args[0]->Uint32Value()) {
707 case 1: reason = INSTANT_SHOWN_CUSTOM_NTP_CONTENT; break; 709 case 1: reason = INSTANT_SHOWN_CUSTOM_NTP_CONTENT; break;
708 case 2: reason = INSTANT_SHOWN_QUERY_SUGGESTIONS; break; 710 case 2: reason = INSTANT_SHOWN_QUERY_SUGGESTIONS; break;
709 case 3: reason = INSTANT_SHOWN_ZERO_SUGGESTIONS; break; 711 case 3: reason = INSTANT_SHOWN_ZERO_SUGGESTIONS; break;
710 } 712 }
711 713
712 int height = 100; 714 int height = 100;
713 InstantSizeUnits units = INSTANT_SIZE_PERCENT; 715 InstantSizeUnits units = INSTANT_SIZE_PERCENT;
714 if (args[1]->IsInt32()) { 716 if (args[1]->IsInt32()) {
715 height = args[1]->Int32Value(); 717 height = args[1]->Int32Value();
716 units = INSTANT_SIZE_PIXELS; 718 units = INSTANT_SIZE_PIXELS;
717 } 719 }
718 720
719 SearchBox::Get(render_view)->ShowInstantPreview(reason, height, units); 721 SearchBox::Get(render_view)->ShowInstantPreview(reason, height, units);
720 722
721 return v8::Undefined(); 723 return v8::Undefined();
722 } 724 }
723 725
724 // static 726 // static
725 void SearchBoxExtension::DispatchChange(WebKit::WebFrame* frame) { 727 void SearchBoxExtension::DispatchChange(WebKit::WebFrame* frame) {
726 DVLOG(1) << "DispatchChange";
727 Dispatch(frame, kDispatchChangeEventScript); 728 Dispatch(frame, kDispatchChangeEventScript);
728 } 729 }
729 730
730 // static 731 // static
731 void SearchBoxExtension::DispatchSubmit(WebKit::WebFrame* frame) { 732 void SearchBoxExtension::DispatchSubmit(WebKit::WebFrame* frame) {
732 Dispatch(frame, kDispatchSubmitEventScript); 733 Dispatch(frame, kDispatchSubmitEventScript);
733 } 734 }
734 735
735 // static 736 // static
736 void SearchBoxExtension::DispatchCancel(WebKit::WebFrame* frame) { 737 void SearchBoxExtension::DispatchCancel(WebKit::WebFrame* frame) {
737 Dispatch(frame, kDispatchCancelEventScript); 738 Dispatch(frame, kDispatchCancelEventScript);
738 } 739 }
739 740
740 // static 741 // static
741 void SearchBoxExtension::DispatchResize(WebKit::WebFrame* frame) { 742 void SearchBoxExtension::DispatchResize(WebKit::WebFrame* frame) {
742 Dispatch(frame, kDispatchResizeEventScript); 743 Dispatch(frame, kDispatchResizeEventScript);
743 } 744 }
744 745
745 // static 746 // static
746 bool SearchBoxExtension::PageSupportsInstant(WebKit::WebFrame* frame) { 747 bool SearchBoxExtension::PageSupportsInstant(WebKit::WebFrame* frame) {
747 if (!frame) return false; 748 if (!frame) return false;
748 749
749 v8::Handle<v8::Value> v = frame->executeScriptAndReturnValue( 750 v8::Handle<v8::Value> v = frame->executeScriptAndReturnValue(
750 WebKit::WebScriptSource(kSupportsInstantScript)); 751 WebKit::WebScriptSource(kSupportsInstantScript));
751 bool supports_instant = !v.IsEmpty() && v->BooleanValue(); 752 return !v.IsEmpty() && v->BooleanValue();
752
753 // Send a resize message to tell the page that Chrome is actively using the
754 // searchbox API with it. The page uses the message to transition from
755 // "homepage" mode to "search" mode.
756 if (supports_instant)
757 DispatchResize(frame);
758
759 DVLOG(1) << "PageSupportsInstant: " << supports_instant;
760 return supports_instant;
761 } 753 }
762 754
763 // static 755 // static
764 void SearchBoxExtension::DispatchAutocompleteResults(WebKit::WebFrame* frame) { 756 void SearchBoxExtension::DispatchAutocompleteResults(WebKit::WebFrame* frame) {
765 DVLOG(1) << "DispatchAutocompleteResults";
766 Dispatch(frame, kDispatchAutocompleteResultsEventScript); 757 Dispatch(frame, kDispatchAutocompleteResultsEventScript);
767 } 758 }
768 759
769 // static 760 // static
770 void SearchBoxExtension::DispatchUpOrDownKeyPress(WebKit::WebFrame* frame, 761 void SearchBoxExtension::DispatchUpOrDownKeyPress(WebKit::WebFrame* frame,
771 int count) { 762 int count) {
772 Dispatch(frame, WebKit::WebString::fromUTF8( 763 Dispatch(frame, WebKit::WebString::fromUTF8(
773 base::StringPrintf(kDispatchUpOrDownKeyPressEventScript, abs(count), 764 base::StringPrintf(kDispatchUpOrDownKeyPressEventScript, abs(count),
774 count < 0 ? ui::VKEY_UP : ui::VKEY_DOWN))); 765 count < 0 ? ui::VKEY_UP : ui::VKEY_DOWN)));
775 } 766 }
776 767
777 // static 768 // static
778 void SearchBoxExtension::DispatchContextChange(WebKit::WebFrame* frame) { 769 void SearchBoxExtension::DispatchContextChange(WebKit::WebFrame* frame) {
779 DVLOG(1) << "DispatchContextChange";
780 Dispatch(frame, kDispatchContextChangeEventScript); 770 Dispatch(frame, kDispatchContextChangeEventScript);
781 } 771 }
782 772
783 // static 773 // static
784 void SearchBoxExtension::DispatchThemeChange(WebKit::WebFrame* frame) { 774 void SearchBoxExtension::DispatchThemeChange(WebKit::WebFrame* frame) {
785 Dispatch(frame, kDispatchThemeChangeEventScript); 775 Dispatch(frame, kDispatchThemeChangeEventScript);
786 } 776 }
787 777
788 // static 778 // static
789 void SearchBoxExtension::DispatchThemeAreaHeightChange( 779 void SearchBoxExtension::DispatchThemeAreaHeightChange(
790 WebKit::WebFrame* frame) { 780 WebKit::WebFrame* frame) {
791 Dispatch(frame, kDispatchThemeAreaHeightChangeEventScript); 781 Dispatch(frame, kDispatchThemeAreaHeightChangeEventScript);
792 } 782 }
793 783
794 // static 784 // static
795 v8::Extension* SearchBoxExtension::Get() { 785 v8::Extension* SearchBoxExtension::Get() {
796 return new SearchBoxExtensionWrapper(ResourceBundle::GetSharedInstance(). 786 return new SearchBoxExtensionWrapper(ResourceBundle::GetSharedInstance().
797 GetRawDataResource(IDR_SEARCHBOX_API)); 787 GetRawDataResource(IDR_SEARCHBOX_API));
798 } 788 }
799 789
800 } // namespace extensions_v8 790 } // namespace extensions_v8
OLDNEW
« chrome/renderer/searchbox/searchbox.cc ('K') | « chrome/renderer/searchbox/searchbox.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698