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

Side by Side Diff: content/renderer/render_view_impl.cc

Issue 11362161: Use the WebTestProxy for layout tests in content_shell (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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 "content/renderer/render_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 return -1; 529 return -1;
530 530
531 if (item.httpBody().isNull()) 531 if (item.httpBody().isNull())
532 return -1; 532 return -1;
533 533
534 return item.httpBody().identifier(); 534 return item.httpBody().identifier();
535 } 535 }
536 536
537 } // namespace 537 } // namespace
538 538
539 RenderViewImpl::RenderViewImpl( 539 RenderViewImplParams::RenderViewImplParams(
540 int32 opener_id, 540 int32 opener_id,
541 const RendererPreferences& renderer_prefs, 541 const RendererPreferences& renderer_prefs,
542 const WebPreferences& webkit_prefs, 542 const WebPreferences& webkit_prefs,
543 SharedRenderViewCounter* counter, 543 SharedRenderViewCounter* counter,
544 int32 routing_id, 544 int32 routing_id,
545 int32 surface_id, 545 int32 surface_id,
546 int64 session_storage_namespace_id, 546 int64 session_storage_namespace_id,
547 const string16& frame_name, 547 const string16& frame_name,
548 bool is_renderer_created, 548 bool is_renderer_created,
549 bool swapped_out, 549 bool swapped_out,
550 int32 next_page_id, 550 int32 next_page_id,
551 const WebKit::WebScreenInfo& screen_info, 551 const WebKit::WebScreenInfo& screen_info,
552 AccessibilityMode accessibility_mode) 552 AccessibilityMode accessibility_mode)
553 : RenderWidget(WebKit::WebPopupTypeNone, screen_info, swapped_out), 553 : opener_id(opener_id),
554 webkit_preferences_(webkit_prefs), 554 renderer_prefs(renderer_prefs),
555 webkit_prefs(webkit_prefs),
556 counter(counter),
557 routing_id(routing_id),
558 surface_id(surface_id),
559 session_storage_namespace_id(session_storage_namespace_id),
560 frame_name(frame_name),
561 is_renderer_created(is_renderer_created),
562 swapped_out(swapped_out),
563 next_page_id(next_page_id),
564 screen_info(screen_info),
565 accessibility_mode(accessibility_mode) {
566 }
567
568 RenderViewImplParams::~RenderViewImplParams() {}
569
570 RenderViewImpl::RenderViewImpl(RenderViewImplParams* params)
571 : RenderWidget(WebKit::WebPopupTypeNone,
572 params->screen_info,
573 params->swapped_out),
574 webkit_preferences_(params->webkit_prefs),
555 send_content_state_immediately_(false), 575 send_content_state_immediately_(false),
556 enabled_bindings_(0), 576 enabled_bindings_(0),
557 send_preferred_size_changes_(false), 577 send_preferred_size_changes_(false),
558 is_loading_(false), 578 is_loading_(false),
559 navigation_gesture_(NavigationGestureUnknown), 579 navigation_gesture_(NavigationGestureUnknown),
560 opened_by_user_gesture_(true), 580 opened_by_user_gesture_(true),
561 opener_suppressed_(false), 581 opener_suppressed_(false),
562 page_id_(-1), 582 page_id_(-1),
563 last_page_id_sent_to_browser_(-1), 583 last_page_id_sent_to_browser_(-1),
564 next_page_id_(next_page_id), 584 next_page_id_(params->next_page_id),
565 history_list_offset_(-1), 585 history_list_offset_(-1),
566 history_list_length_(0), 586 history_list_length_(0),
567 target_url_status_(TARGET_NONE), 587 target_url_status_(TARGET_NONE),
568 selection_text_offset_(0), 588 selection_text_offset_(0),
569 cached_is_main_frame_pinned_to_left_(false), 589 cached_is_main_frame_pinned_to_left_(false),
570 cached_is_main_frame_pinned_to_right_(false), 590 cached_is_main_frame_pinned_to_right_(false),
571 cached_has_main_frame_horizontal_scrollbar_(false), 591 cached_has_main_frame_horizontal_scrollbar_(false),
572 cached_has_main_frame_vertical_scrollbar_(false), 592 cached_has_main_frame_vertical_scrollbar_(false),
573 ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)), 593 ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)),
574 geolocation_dispatcher_(NULL), 594 geolocation_dispatcher_(NULL),
575 input_tag_speech_dispatcher_(NULL), 595 input_tag_speech_dispatcher_(NULL),
576 speech_recognition_dispatcher_(NULL), 596 speech_recognition_dispatcher_(NULL),
577 device_orientation_dispatcher_(NULL), 597 device_orientation_dispatcher_(NULL),
578 media_stream_dispatcher_(NULL), 598 media_stream_dispatcher_(NULL),
579 media_stream_impl_(NULL), 599 media_stream_impl_(NULL),
580 devtools_agent_(NULL), 600 devtools_agent_(NULL),
581 accessibility_mode_(AccessibilityModeOff), 601 accessibility_mode_(AccessibilityModeOff),
582 renderer_accessibility_(NULL), 602 renderer_accessibility_(NULL),
583 java_bridge_dispatcher_(NULL), 603 java_bridge_dispatcher_(NULL),
584 mouse_lock_dispatcher_(NULL), 604 mouse_lock_dispatcher_(NULL),
585 #if defined(OS_ANDROID) 605 #if defined(OS_ANDROID)
586 body_background_color_(SK_ColorWHITE), 606 body_background_color_(SK_ColorWHITE),
587 update_frame_info_scheduled_(false), 607 update_frame_info_scheduled_(false),
588 expected_content_intent_id_(0), 608 expected_content_intent_id_(0),
589 media_player_proxy_(NULL), 609 media_player_proxy_(NULL),
590 synchronous_find_active_match_ordinal_(-1), 610 synchronous_find_active_match_ordinal_(-1),
591 ALLOW_THIS_IN_INITIALIZER_LIST( 611 ALLOW_THIS_IN_INITIALIZER_LIST(
592 load_progress_tracker_(new LoadProgressTracker(this))), 612 load_progress_tracker_(new LoadProgressTracker(this))),
593 #endif 613 #endif
594 session_storage_namespace_id_(session_storage_namespace_id), 614 session_storage_namespace_id_(params->session_storage_namespace_id),
595 handling_select_range_(false), 615 handling_select_range_(false),
596 #if defined(OS_WIN) 616 #if defined(OS_WIN)
597 focused_plugin_id_(-1), 617 focused_plugin_id_(-1),
598 #endif 618 #endif
599 updating_frame_tree_(false), 619 updating_frame_tree_(false),
600 pending_frame_tree_update_(false), 620 pending_frame_tree_update_(false),
601 target_process_id_(0), 621 target_process_id_(0),
602 target_routing_id_(0), 622 target_routing_id_(0),
603 ALLOW_THIS_IN_INITIALIZER_LIST(pepper_delegate_(this)) { 623 ALLOW_THIS_IN_INITIALIZER_LIST(pepper_delegate_(this)) {
604 set_throttle_input_events(renderer_prefs.throttle_input_events); 624 set_throttle_input_events(params->renderer_prefs.throttle_input_events);
605 routing_id_ = routing_id; 625 routing_id_ = params->routing_id;
606 surface_id_ = surface_id; 626 surface_id_ = params->surface_id;
607 if (opener_id != MSG_ROUTING_NONE && is_renderer_created) 627 if (params->opener_id != MSG_ROUTING_NONE && params->is_renderer_created)
608 opener_id_ = opener_id; 628 opener_id_ = params->opener_id;
609 629
610 // Ensure we start with a valid next_page_id_ from the browser. 630 // Ensure we start with a valid next_page_id_ from the browser.
611 DCHECK_GE(next_page_id_, 0); 631 DCHECK_GE(next_page_id_, 0);
612 632
613 #if defined(ENABLE_NOTIFICATIONS) 633 #if defined(ENABLE_NOTIFICATIONS)
614 notification_provider_ = new NotificationProvider(this); 634 notification_provider_ = new NotificationProvider(this);
615 #else 635 #else
616 notification_provider_ = NULL; 636 notification_provider_ = NULL;
617 #endif 637 #endif
618 638
(...skipping 12 matching lines...) Expand all
631 ? command_line.GetSwitchValueASCII(switches::kNetworkCountryIso) 651 ? command_line.GetSwitchValueASCII(switches::kNetworkCountryIso)
632 : device_info->GetNetworkCountryIso(); 652 : device_info->GetNetworkCountryIso();
633 content_detectors_.push_back(linked_ptr<ContentDetector>( 653 content_detectors_.push_back(linked_ptr<ContentDetector>(
634 new AddressDetector())); 654 new AddressDetector()));
635 content_detectors_.push_back(linked_ptr<ContentDetector>( 655 content_detectors_.push_back(linked_ptr<ContentDetector>(
636 new PhoneNumberDetector(region_code))); 656 new PhoneNumberDetector(region_code)));
637 content_detectors_.push_back(linked_ptr<ContentDetector>( 657 content_detectors_.push_back(linked_ptr<ContentDetector>(
638 new EmailDetector())); 658 new EmailDetector()));
639 #endif 659 #endif
640 660
641 if (counter) { 661 if (params->counter) {
642 shared_popup_counter_ = counter; 662 shared_popup_counter_ = params->counter;
643 // Only count this if it isn't swapped out upon creation. 663 // Only count this if it isn't swapped out upon creation.
644 if (!swapped_out) 664 if (!params->swapped_out)
645 shared_popup_counter_->data++; 665 shared_popup_counter_->data++;
646 decrement_shared_popup_at_destruction_ = true; 666 decrement_shared_popup_at_destruction_ = true;
647 } else { 667 } else {
648 shared_popup_counter_ = new SharedRenderViewCounter(0); 668 shared_popup_counter_ = new SharedRenderViewCounter(0);
649 decrement_shared_popup_at_destruction_ = false; 669 decrement_shared_popup_at_destruction_ = false;
650 } 670 }
651 671
652 RenderThread::Get()->AddRoute(routing_id_, this); 672 RenderThread::Get()->AddRoute(routing_id_, this);
653 // Take a reference on behalf of the RenderThread. This will be balanced 673 // Take a reference on behalf of the RenderThread. This will be balanced
654 // when we receive ViewMsg_ClosePage. 674 // when we receive ViewMsg_ClosePage.
655 AddRef(); 675 AddRef();
656 676
657 // If this is a popup, we must wait for the CreatingNew_ACK message before 677 // If this is a popup, we must wait for the CreatingNew_ACK message before
658 // completing initialization. Otherwise, we can finish it now. 678 // completing initialization. Otherwise, we can finish it now.
659 if (opener_id_ == MSG_ROUTING_NONE) { 679 if (opener_id_ == MSG_ROUTING_NONE) {
660 did_show_ = true; 680 did_show_ = true;
661 CompleteInit(); 681 CompleteInit();
662 } 682 }
663 683
664 g_view_map.Get().insert(std::make_pair(webview(), this)); 684 g_view_map.Get().insert(std::make_pair(webview(), this));
665 webview()->setDeviceScaleFactor(device_scale_factor_); 685 webview()->setDeviceScaleFactor(device_scale_factor_);
666 webkit_preferences_.Apply(webview()); 686 webkit_preferences_.Apply(webview());
667 webview()->initializeMainFrame(this); 687 webview()->initializeMainFrame(this);
668 if (!frame_name.empty()) 688 if (!params->frame_name.empty())
669 webview()->mainFrame()->setName(frame_name); 689 webview()->mainFrame()->setName(params->frame_name);
670 webview()->settings()->setMinimumTimerInterval( 690 webview()->settings()->setMinimumTimerInterval(
671 is_hidden() ? webkit_glue::kBackgroundTabTimerInterval : 691 is_hidden() ? webkit_glue::kBackgroundTabTimerInterval :
672 webkit_glue::kForegroundTabTimerInterval); 692 webkit_glue::kForegroundTabTimerInterval);
673 693
674 OnSetRendererPrefs(renderer_prefs); 694 OnSetRendererPrefs(params->renderer_prefs);
675 695
676 #if defined(ENABLE_WEBRTC) 696 #if defined(ENABLE_WEBRTC)
677 if (!media_stream_dispatcher_) 697 if (!media_stream_dispatcher_)
678 media_stream_dispatcher_ = new MediaStreamDispatcher(this); 698 media_stream_dispatcher_ = new MediaStreamDispatcher(this);
679 #endif 699 #endif
680 700
681 new MHTMLGenerator(this); 701 new MHTMLGenerator(this);
682 #if defined(OS_MACOSX) 702 #if defined(OS_MACOSX)
683 new TextInputClientObserver(this); 703 new TextInputClientObserver(this);
684 #endif // defined(OS_MACOSX) 704 #endif // defined(OS_MACOSX)
685 705
686 #if defined(OS_ANDROID) 706 #if defined(OS_ANDROID)
687 media_player_manager_.reset( 707 media_player_manager_.reset(
688 new webkit_media::WebMediaPlayerManagerAndroid()); 708 new webkit_media::WebMediaPlayerManagerAndroid());
689 #endif 709 #endif
690 710
691 // The next group of objects all implement RenderViewObserver, so are deleted 711 // The next group of objects all implement RenderViewObserver, so are deleted
692 // along with the RenderView automatically. 712 // along with the RenderView automatically.
693 devtools_agent_ = new DevToolsAgent(this); 713 devtools_agent_ = new DevToolsAgent(this);
694 mouse_lock_dispatcher_ = new RenderViewMouseLockDispatcher(this); 714 mouse_lock_dispatcher_ = new RenderViewMouseLockDispatcher(this);
695 intents_host_ = new WebIntentsHost(this); 715 intents_host_ = new WebIntentsHost(this);
696 716
697 // Create renderer_accessibility_ if needed. 717 // Create renderer_accessibility_ if needed.
698 OnSetAccessibilityMode(accessibility_mode); 718 OnSetAccessibilityMode(params->accessibility_mode);
699 719
700 new IdleUserDetector(this); 720 new IdleUserDetector(this);
701 721
702 if (command_line.HasSwitch(switches::kDomAutomationController)) 722 if (command_line.HasSwitch(switches::kDomAutomationController))
703 enabled_bindings_ |= BINDINGS_POLICY_DOM_AUTOMATION; 723 enabled_bindings_ |= BINDINGS_POLICY_DOM_AUTOMATION;
704 724
705 ProcessViewLayoutFlags(command_line); 725 ProcessViewLayoutFlags(command_line);
706 726
707 GetContentClient()->renderer()->RenderViewCreated(this); 727 GetContentClient()->renderer()->RenderViewCreated(this);
708 728
709 // If we have an opener_id but we weren't created by a renderer, then 729 // If we have an opener_id but we weren't created by a renderer, then
710 // it's the browser asking us to set our opener to another RenderView. 730 // it's the browser asking us to set our opener to another RenderView.
711 if (opener_id != MSG_ROUTING_NONE && !is_renderer_created) { 731 if (params->opener_id != MSG_ROUTING_NONE && !params->is_renderer_created) {
712 RenderViewImpl* opener_view = FromRoutingID(opener_id); 732 RenderViewImpl* opener_view = FromRoutingID(params->opener_id);
713 if (opener_view) 733 if (opener_view)
714 webview()->mainFrame()->setOpener(opener_view->webview()->mainFrame()); 734 webview()->mainFrame()->setOpener(opener_view->webview()->mainFrame());
715 } 735 }
716 736
717 // If we are initially swapped out, navigate to kSwappedOutURL. 737 // If we are initially swapped out, navigate to kSwappedOutURL.
718 // This ensures we are in a unique origin that others cannot script. 738 // This ensures we are in a unique origin that others cannot script.
719 if (is_swapped_out_) 739 if (is_swapped_out_)
720 NavigateToSwappedOutURL(webview()->mainFrame()); 740 NavigateToSwappedOutURL(webview()->mainFrame());
721 } 741 }
722 742
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 int32 routing_id, 806 int32 routing_id,
787 int32 surface_id, 807 int32 surface_id,
788 int64 session_storage_namespace_id, 808 int64 session_storage_namespace_id,
789 const string16& frame_name, 809 const string16& frame_name,
790 bool is_renderer_created, 810 bool is_renderer_created,
791 bool swapped_out, 811 bool swapped_out,
792 int32 next_page_id, 812 int32 next_page_id,
793 const WebKit::WebScreenInfo& screen_info, 813 const WebKit::WebScreenInfo& screen_info,
794 AccessibilityMode accessibility_mode) { 814 AccessibilityMode accessibility_mode) {
795 DCHECK(routing_id != MSG_ROUTING_NONE); 815 DCHECK(routing_id != MSG_ROUTING_NONE);
796 return new RenderViewImpl( 816 RenderViewImplParams params(
797 opener_id, 817 opener_id,
798 renderer_prefs, 818 renderer_prefs,
799 webkit_prefs, 819 webkit_prefs,
800 counter, 820 counter,
801 routing_id, 821 routing_id,
802 surface_id, 822 surface_id,
803 session_storage_namespace_id, 823 session_storage_namespace_id,
804 frame_name, 824 frame_name,
805 is_renderer_created, 825 is_renderer_created,
806 swapped_out, 826 swapped_out,
807 next_page_id, 827 next_page_id,
808 screen_info, 828 screen_info,
809 accessibility_mode); 829 accessibility_mode);
830 RenderViewImpl* render_view = NULL;
831 if (GetContentClient()->renderer()->OverrideCreateRenderViewImpl(
832 &params, &render_view)) {
833 return render_view;
834 }
835 return new RenderViewImpl(&params);
810 } 836 }
811 837
812 void RenderViewImpl::AddObserver(RenderViewObserver* observer) { 838 void RenderViewImpl::AddObserver(RenderViewObserver* observer) {
813 observers_.AddObserver(observer); 839 observers_.AddObserver(observer);
814 } 840 }
815 841
816 void RenderViewImpl::RemoveObserver(RenderViewObserver* observer) { 842 void RenderViewImpl::RemoveObserver(RenderViewObserver* observer) {
817 observer->RenderViewGone(); 843 observer->RenderViewGone();
818 observers_.RemoveObserver(observer); 844 observers_.RemoveObserver(observer);
819 } 845 }
(...skipping 5541 matching lines...) Expand 10 before | Expand all | Expand 10 after
6361 } 6387 }
6362 #endif 6388 #endif
6363 6389
6364 void RenderViewImpl::OnReleaseDisambiguationPopupDIB( 6390 void RenderViewImpl::OnReleaseDisambiguationPopupDIB(
6365 TransportDIB::Handle dib_handle) { 6391 TransportDIB::Handle dib_handle) {
6366 TransportDIB* dib = TransportDIB::CreateWithHandle(dib_handle); 6392 TransportDIB* dib = TransportDIB::CreateWithHandle(dib_handle);
6367 RenderProcess::current()->ReleaseTransportDIB(dib); 6393 RenderProcess::current()->ReleaseTransportDIB(dib);
6368 } 6394 }
6369 6395
6370 } // namespace content 6396 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698