Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 631 next_page_id_(params.next_page_id), | 631 next_page_id_(params.next_page_id), |
| 632 history_list_offset_(-1), | 632 history_list_offset_(-1), |
| 633 history_list_length_(0), | 633 history_list_length_(0), |
| 634 frames_in_progress_(0), | 634 frames_in_progress_(0), |
| 635 target_url_status_(TARGET_NONE), | 635 target_url_status_(TARGET_NONE), |
| 636 uses_temporary_zoom_level_(false), | 636 uses_temporary_zoom_level_(false), |
| 637 #if defined(OS_ANDROID) | 637 #if defined(OS_ANDROID) |
| 638 top_controls_constraints_(TOP_CONTROLS_STATE_BOTH), | 638 top_controls_constraints_(TOP_CONTROLS_STATE_BOTH), |
| 639 #endif | 639 #endif |
| 640 has_scrolled_focused_editable_node_into_rect_(false), | 640 has_scrolled_focused_editable_node_into_rect_(false), |
| 641 main_render_frame_(nullptr), | |
| 641 speech_recognition_dispatcher_(NULL), | 642 speech_recognition_dispatcher_(NULL), |
| 642 mouse_lock_dispatcher_(NULL), | 643 mouse_lock_dispatcher_(NULL), |
| 643 #if defined(OS_ANDROID) | 644 #if defined(OS_ANDROID) |
| 644 expected_content_intent_id_(0), | 645 expected_content_intent_id_(0), |
| 645 #endif | 646 #endif |
| 646 #if defined(OS_WIN) | 647 #if defined(OS_WIN) |
| 647 focused_plugin_id_(-1), | 648 focused_plugin_id_(-1), |
| 648 #endif | 649 #endif |
| 649 #if defined(ENABLE_PLUGINS) | 650 #if defined(ENABLE_PLUGINS) |
| 650 plugin_find_handler_(NULL), | 651 plugin_find_handler_(NULL), |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 661 bool was_created_by_renderer) { | 662 bool was_created_by_renderer) { |
| 662 routing_id_ = params.view_id; | 663 routing_id_ = params.view_id; |
| 663 surface_id_ = params.surface_id; | 664 surface_id_ = params.surface_id; |
| 664 if (params.opener_route_id != MSG_ROUTING_NONE && was_created_by_renderer) | 665 if (params.opener_route_id != MSG_ROUTING_NONE && was_created_by_renderer) |
| 665 opener_id_ = params.opener_route_id; | 666 opener_id_ = params.opener_route_id; |
| 666 display_mode_= params.initial_size.display_mode; | 667 display_mode_= params.initial_size.display_mode; |
| 667 | 668 |
| 668 // Ensure we start with a valid next_page_id_ from the browser. | 669 // Ensure we start with a valid next_page_id_ from the browser. |
| 669 DCHECK_GE(next_page_id_, 0); | 670 DCHECK_GE(next_page_id_, 0); |
| 670 | 671 |
| 671 main_render_frame_ = RenderFrameImpl::Create( | 672 if (params.main_frame_routing_id != MSG_ROUTING_NONE) { |
| 672 this, params.main_frame_routing_id); | 673 main_render_frame_ = RenderFrameImpl::Create( |
| 673 // The main frame WebLocalFrame object is closed by | 674 this, params.main_frame_routing_id); |
| 674 // RenderFrameImpl::frameDetached(). | 675 // The main frame WebLocalFrame object is closed by |
| 675 WebLocalFrame* web_frame = WebLocalFrame::create( | 676 // RenderFrameImpl::frameDetached(). |
| 676 blink::WebTreeScopeType::Document, main_render_frame_); | 677 WebLocalFrame* web_frame = WebLocalFrame::create( |
| 677 main_render_frame_->SetWebFrame(web_frame); | 678 blink::WebTreeScopeType::Document, main_render_frame_); |
| 679 main_render_frame_->SetWebFrame(web_frame); | |
| 680 } | |
| 678 | 681 |
| 679 compositor_deps_ = compositor_deps; | 682 compositor_deps_ = compositor_deps; |
| 680 webwidget_ = WebView::create(this); | 683 webwidget_ = WebView::create(this); |
| 681 webwidget_mouse_lock_target_.reset(new WebWidgetLockTarget(webwidget_)); | 684 webwidget_mouse_lock_target_.reset(new WebWidgetLockTarget(webwidget_)); |
| 682 | 685 |
| 686 g_view_map.Get().insert(std::make_pair(webview(), this)); | |
| 687 g_routing_id_view_map.Get().insert(std::make_pair(routing_id_, this)); | |
|
Charlie Reis
2015/06/04 00:02:11
Why did you need to move this up?
nasko
2015/06/04 14:57:14
I want to ensure that any code that does discovery
| |
| 688 | |
| 683 const base::CommandLine& command_line = | 689 const base::CommandLine& command_line = |
| 684 *base::CommandLine::ForCurrentProcess(); | 690 *base::CommandLine::ForCurrentProcess(); |
| 685 | 691 |
| 686 if (command_line.HasSwitch(switches::kStatsCollectionController)) | 692 if (command_line.HasSwitch(switches::kStatsCollectionController)) |
| 687 stats_collection_observer_.reset(new StatsCollectionObserver(this)); | 693 stats_collection_observer_.reset(new StatsCollectionObserver(this)); |
| 688 | 694 |
| 695 RenderFrameProxy* proxy = NULL; | |
| 696 if (params.proxy_routing_id != MSG_ROUTING_NONE) { | |
| 697 CHECK(params.swapped_out); | |
| 698 if (main_render_frame_) { | |
| 699 proxy = RenderFrameProxy::CreateProxyToReplaceFrame( | |
| 700 main_render_frame_, params.proxy_routing_id, | |
| 701 blink::WebTreeScopeType::Document); | |
| 702 main_render_frame_->set_render_frame_proxy(proxy); | |
| 703 } else { | |
| 704 proxy = RenderFrameProxy::CreateFrameProxy( | |
| 705 params.proxy_routing_id, | |
| 706 MSG_ROUTING_NONE, | |
| 707 routing_id_, | |
| 708 params.replicated_frame_state); | |
| 709 } | |
| 710 } | |
| 711 | |
| 712 // In --site-per-process, just use the WebRemoteFrame as the main frame. | |
| 713 if (command_line.HasSwitch(switches::kSitePerProcess) && proxy) { | |
| 714 webview()->setMainFrame(proxy->web_frame()); | |
| 715 // Initialize the WebRemoteFrame with information replicated from the | |
| 716 // browser process. | |
| 717 proxy->SetReplicatedState(params.replicated_frame_state); | |
| 718 } else { | |
| 719 webview()->setMainFrame(main_render_frame_->GetWebFrame()); | |
| 720 } | |
| 721 if (main_render_frame_) | |
| 722 main_render_frame_->Initialize(); | |
| 723 | |
| 689 #if defined(OS_ANDROID) | 724 #if defined(OS_ANDROID) |
| 690 content_detectors_.push_back(linked_ptr<ContentDetector>( | 725 content_detectors_.push_back(linked_ptr<ContentDetector>( |
| 691 new AddressDetector())); | 726 new AddressDetector())); |
| 692 const std::string& contry_iso = | 727 const std::string& contry_iso = |
| 693 params.renderer_preferences.network_contry_iso; | 728 params.renderer_preferences.network_contry_iso; |
| 694 if (!contry_iso.empty()) { | 729 if (!contry_iso.empty()) { |
| 695 content_detectors_.push_back(linked_ptr<ContentDetector>( | 730 content_detectors_.push_back(linked_ptr<ContentDetector>( |
| 696 new PhoneNumberDetector(contry_iso))); | 731 new PhoneNumberDetector(contry_iso))); |
| 697 } | 732 } |
| 698 content_detectors_.push_back(linked_ptr<ContentDetector>( | 733 content_detectors_.push_back(linked_ptr<ContentDetector>( |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 710 RenderThreadImpl::current()->WidgetHidden(); | 745 RenderThreadImpl::current()->WidgetHidden(); |
| 711 } | 746 } |
| 712 | 747 |
| 713 // If this is a popup, we must wait for the CreatingNew_ACK message before | 748 // If this is a popup, we must wait for the CreatingNew_ACK message before |
| 714 // completing initialization. Otherwise, we can finish it now. | 749 // completing initialization. Otherwise, we can finish it now. |
| 715 if (opener_id_ == MSG_ROUTING_NONE) { | 750 if (opener_id_ == MSG_ROUTING_NONE) { |
| 716 did_show_ = true; | 751 did_show_ = true; |
| 717 CompleteInit(); | 752 CompleteInit(); |
| 718 } | 753 } |
| 719 | 754 |
| 720 g_view_map.Get().insert(std::make_pair(webview(), this)); | |
| 721 g_routing_id_view_map.Get().insert(std::make_pair(routing_id_, this)); | |
| 722 webview()->setDeviceScaleFactor(device_scale_factor_); | 755 webview()->setDeviceScaleFactor(device_scale_factor_); |
| 723 webview()->setDisplayMode(display_mode_); | 756 webview()->setDisplayMode(display_mode_); |
| 724 webview()->settings()->setPreferCompositingToLCDTextEnabled( | 757 webview()->settings()->setPreferCompositingToLCDTextEnabled( |
| 725 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_)); | 758 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_)); |
| 726 webview()->settings()->setThreadedScrollingEnabled( | 759 webview()->settings()->setThreadedScrollingEnabled( |
| 727 !command_line.HasSwitch(switches::kDisableThreadedScrolling)); | 760 !command_line.HasSwitch(switches::kDisableThreadedScrolling)); |
| 728 webview()->settings()->setRootLayerScrolls( | 761 webview()->settings()->setRootLayerScrolls( |
| 729 command_line.HasSwitch(switches::kRootLayerScrolls)); | 762 command_line.HasSwitch(switches::kRootLayerScrolls)); |
| 730 | 763 |
| 731 ApplyWebPreferences(webkit_preferences_, webview()); | 764 ApplyWebPreferences(webkit_preferences_, webview()); |
| 732 | 765 |
| 733 RenderFrameProxy* proxy = NULL; | |
| 734 if (params.proxy_routing_id != MSG_ROUTING_NONE) { | |
| 735 CHECK(params.swapped_out); | |
| 736 proxy = RenderFrameProxy::CreateProxyToReplaceFrame( | |
| 737 main_render_frame_, params.proxy_routing_id, | |
| 738 blink::WebTreeScopeType::Document); | |
| 739 main_render_frame_->set_render_frame_proxy(proxy); | |
| 740 } | |
| 741 | |
| 742 // In --site-per-process, just use the WebRemoteFrame as the main frame. | |
| 743 if (command_line.HasSwitch(switches::kSitePerProcess) && proxy) { | |
| 744 webview()->setMainFrame(proxy->web_frame()); | |
| 745 // Initialize the WebRemoteFrame with information replicated from the | |
| 746 // browser process. | |
| 747 proxy->SetReplicatedState(params.replicated_frame_state); | |
| 748 } else { | |
| 749 webview()->setMainFrame(main_render_frame_->GetWebFrame()); | |
| 750 } | |
| 751 main_render_frame_->Initialize(); | |
| 752 | |
|
pgorszkowski
2015/09/14 13:26:10
Moving this part before ApplyWebPreferences causes
| |
| 753 if (switches::IsTouchDragDropEnabled()) | 766 if (switches::IsTouchDragDropEnabled()) |
| 754 webview()->settings()->setTouchDragDropEnabled(true); | 767 webview()->settings()->setTouchDragDropEnabled(true); |
| 755 | 768 |
| 756 if (switches::IsTouchEditingEnabled()) | 769 if (switches::IsTouchEditingEnabled()) |
| 757 webview()->settings()->setTouchEditingEnabled(true); | 770 webview()->settings()->setTouchEditingEnabled(true); |
| 758 | 771 |
| 759 WebSettings::SelectionStrategyType selection_strategy = | 772 WebSettings::SelectionStrategyType selection_strategy = |
| 760 WebSettings::SelectionStrategyType::Character; | 773 WebSettings::SelectionStrategyType::Character; |
| 761 const std::string selection_strategy_str = | 774 const std::string selection_strategy_str = |
| 762 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( | 775 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| (...skipping 3004 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3767 std::vector<gfx::Size> sizes; | 3780 std::vector<gfx::Size> sizes; |
| 3768 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); | 3781 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); |
| 3769 if (!url.isEmpty()) | 3782 if (!url.isEmpty()) |
| 3770 urls.push_back( | 3783 urls.push_back( |
| 3771 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); | 3784 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); |
| 3772 } | 3785 } |
| 3773 SendUpdateFaviconURL(urls); | 3786 SendUpdateFaviconURL(urls); |
| 3774 } | 3787 } |
| 3775 | 3788 |
| 3776 } // namespace content | 3789 } // namespace content |
| OLD | NEW |