| 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 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 658 pepper_last_mouse_event_target_(NULL), | 658 pepper_last_mouse_event_target_(NULL), |
| 659 #endif | 659 #endif |
| 660 enumeration_completion_id_(0), | 660 enumeration_completion_id_(0), |
| 661 session_storage_namespace_id_(params.session_storage_namespace_id), | 661 session_storage_namespace_id_(params.session_storage_namespace_id), |
| 662 page_scale_factor_is_one_(true) { | 662 page_scale_factor_is_one_(true) { |
| 663 } | 663 } |
| 664 | 664 |
| 665 void RenderViewImpl::Initialize(const ViewMsg_New_Params& params, | 665 void RenderViewImpl::Initialize(const ViewMsg_New_Params& params, |
| 666 bool was_created_by_renderer) { | 666 bool was_created_by_renderer) { |
| 667 routing_id_ = params.view_id; | 667 routing_id_ = params.view_id; |
| 668 surface_id_ = params.surface_id; | 668 surface_id_ = params.view_surface_id; |
| 669 | 669 |
| 670 int opener_view_routing_id; | 670 int opener_view_routing_id; |
| 671 WebFrame* opener_frame = RenderFrameImpl::ResolveOpener( | 671 WebFrame* opener_frame = RenderFrameImpl::ResolveOpener( |
| 672 params.opener_frame_route_id, &opener_view_routing_id); | 672 params.opener_frame_route_id, &opener_view_routing_id); |
| 673 if (opener_view_routing_id != MSG_ROUTING_NONE && was_created_by_renderer) | 673 if (opener_view_routing_id != MSG_ROUTING_NONE && was_created_by_renderer) |
| 674 opener_id_ = opener_view_routing_id; | 674 opener_id_ = opener_view_routing_id; |
| 675 | 675 |
| 676 display_mode_= params.initial_size.display_mode; | 676 display_mode_= params.initial_size.display_mode; |
| 677 | 677 |
| 678 // Ensure we start with a valid next_page_id_ from the browser. | 678 // Ensure we start with a valid next_page_id_ from the browser. |
| 679 DCHECK_GE(next_page_id_, 0); | 679 DCHECK_GE(next_page_id_, 0); |
| 680 | 680 |
| 681 webwidget_ = WebView::create(this); | 681 webwidget_ = WebView::create(this); |
| 682 webwidget_mouse_lock_target_.reset(new WebWidgetLockTarget(webwidget_)); | 682 webwidget_mouse_lock_target_.reset(new WebWidgetLockTarget(webwidget_)); |
| 683 | 683 |
| 684 g_view_map.Get().insert(std::make_pair(webview(), this)); | 684 g_view_map.Get().insert(std::make_pair(webview(), this)); |
| 685 g_routing_id_view_map.Get().insert(std::make_pair(routing_id_, this)); | 685 g_routing_id_view_map.Get().insert(std::make_pair(routing_id_, this)); |
| 686 | 686 |
| 687 const base::CommandLine& command_line = | 687 const base::CommandLine& command_line = |
| 688 *base::CommandLine::ForCurrentProcess(); | 688 *base::CommandLine::ForCurrentProcess(); |
| 689 | 689 |
| 690 if (command_line.HasSwitch(switches::kStatsCollectionController)) | 690 if (command_line.HasSwitch(switches::kStatsCollectionController)) |
| 691 stats_collection_observer_.reset(new StatsCollectionObserver(this)); | 691 stats_collection_observer_.reset(new StatsCollectionObserver(this)); |
| 692 | 692 |
| 693 if (params.main_frame_routing_id != MSG_ROUTING_NONE) { | 693 if (params.main_frame_routing_id != MSG_ROUTING_NONE) { |
| 694 main_render_frame_ = | 694 main_render_frame_ = RenderFrameImpl::CreateMainFrame( |
| 695 RenderFrameImpl::CreateMainFrame(this, params.main_frame_routing_id); | 695 this, params.main_frame_routing_id, params.main_frame_widget_routing_id, |
| 696 params.widget_surface_id, params.hidden, screen_info(), |
| 697 compositor_deps_); |
| 696 } | 698 } |
| 697 | 699 |
| 698 if (params.proxy_routing_id != MSG_ROUTING_NONE) { | 700 if (params.proxy_routing_id != MSG_ROUTING_NONE) { |
| 699 CHECK(params.swapped_out); | 701 CHECK(params.swapped_out); |
| 700 if (main_render_frame_) { | 702 if (main_render_frame_) { |
| 701 DCHECK(!SiteIsolationPolicy::IsSwappedOutStateForbidden()); | 703 DCHECK(!SiteIsolationPolicy::IsSwappedOutStateForbidden()); |
| 702 RenderFrameProxy* proxy = RenderFrameProxy::CreateProxyToReplaceFrame( | 704 RenderFrameProxy* proxy = RenderFrameProxy::CreateProxyToReplaceFrame( |
| 703 main_render_frame_, params.proxy_routing_id, | 705 main_render_frame_, params.proxy_routing_id, |
| 704 blink::WebTreeScopeType::Document); | 706 blink::WebTreeScopeType::Document); |
| 705 main_render_frame_->set_render_frame_proxy(proxy); | 707 main_render_frame_->set_render_frame_proxy(proxy); |
| (...skipping 881 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1587 params.disposition = NavigationPolicyToDisposition(policy); | 1589 params.disposition = NavigationPolicyToDisposition(policy); |
| 1588 if (!request.isNull()) { | 1590 if (!request.isNull()) { |
| 1589 params.target_url = request.url(); | 1591 params.target_url = request.url(); |
| 1590 params.referrer = GetReferrerFromRequest(creator, request); | 1592 params.referrer = GetReferrerFromRequest(creator, request); |
| 1591 } | 1593 } |
| 1592 params.features = features; | 1594 params.features = features; |
| 1593 | 1595 |
| 1594 for (size_t i = 0; i < features.additionalFeatures.size(); ++i) | 1596 for (size_t i = 0; i < features.additionalFeatures.size(); ++i) |
| 1595 params.additional_features.push_back(features.additionalFeatures[i]); | 1597 params.additional_features.push_back(features.additionalFeatures[i]); |
| 1596 | 1598 |
| 1597 int32 routing_id = MSG_ROUTING_NONE; | 1599 ViewHostMsg_CreateWindow_Reply reply; |
| 1598 int32 main_frame_routing_id = MSG_ROUTING_NONE; | 1600 RenderThread::Get()->Send(new ViewHostMsg_CreateWindow(params, &reply)); |
| 1599 int32 surface_id = 0; | 1601 if (reply.route_id == MSG_ROUTING_NONE) |
| 1600 int64 cloned_session_storage_namespace_id = 0; | |
| 1601 | |
| 1602 RenderThread::Get()->Send(new ViewHostMsg_CreateWindow( | |
| 1603 params, &routing_id, &main_frame_routing_id, &surface_id, | |
| 1604 &cloned_session_storage_namespace_id)); | |
| 1605 if (routing_id == MSG_ROUTING_NONE) | |
| 1606 return NULL; | 1602 return NULL; |
| 1607 | 1603 |
| 1608 WebUserGestureIndicator::consumeUserGesture(); | 1604 WebUserGestureIndicator::consumeUserGesture(); |
| 1609 | 1605 |
| 1610 // While this view may be a background extension page, it can spawn a visible | 1606 // While this view may be a background extension page, it can spawn a visible |
| 1611 // render view. So we just assume that the new one is not another background | 1607 // render view. So we just assume that the new one is not another background |
| 1612 // page instead of passing on our own value. | 1608 // page instead of passing on our own value. |
| 1613 // TODO(vangelis): Can we tell if the new view will be a background page? | 1609 // TODO(vangelis): Can we tell if the new view will be a background page? |
| 1614 bool never_visible = false; | 1610 bool never_visible = false; |
| 1615 | 1611 |
| 1616 ViewMsg_Resize_Params initial_size = ViewMsg_Resize_Params(); | 1612 ViewMsg_Resize_Params initial_size = ViewMsg_Resize_Params(); |
| 1617 initial_size.screen_info = screen_info_; | 1613 initial_size.screen_info = screen_info_; |
| 1618 | 1614 |
| 1619 // The initial hidden state for the RenderViewImpl here has to match what the | 1615 // The initial hidden state for the RenderViewImpl here has to match what the |
| 1620 // browser will eventually decide for the given disposition. Since we have to | 1616 // browser will eventually decide for the given disposition. Since we have to |
| 1621 // return from this call synchronously, we just have to make our best guess | 1617 // return from this call synchronously, we just have to make our best guess |
| 1622 // and rely on the browser sending a WasHidden / WasShown message if it | 1618 // and rely on the browser sending a WasHidden / WasShown message if it |
| 1623 // disagrees. | 1619 // disagrees. |
| 1624 ViewMsg_New_Params view_params; | 1620 ViewMsg_New_Params view_params; |
| 1625 | 1621 |
| 1626 RenderFrameImpl* creator_frame = RenderFrameImpl::FromWebFrame(creator); | 1622 RenderFrameImpl* creator_frame = RenderFrameImpl::FromWebFrame(creator); |
| 1627 view_params.opener_frame_route_id = creator_frame->GetRoutingID(); | 1623 view_params.opener_frame_route_id = creator_frame->GetRoutingID(); |
| 1628 DCHECK_EQ(routing_id_, creator_frame->render_view()->GetRoutingID()); | 1624 DCHECK_EQ(routing_id_, creator_frame->render_view()->GetRoutingID()); |
| 1629 | 1625 |
| 1630 view_params.window_was_created_with_opener = true; | 1626 view_params.window_was_created_with_opener = true; |
| 1631 view_params.renderer_preferences = renderer_preferences_; | 1627 view_params.renderer_preferences = renderer_preferences_; |
| 1632 view_params.web_preferences = webkit_preferences_; | 1628 view_params.web_preferences = webkit_preferences_; |
| 1633 view_params.view_id = routing_id; | 1629 view_params.view_id = reply.route_id; |
| 1634 view_params.main_frame_routing_id = main_frame_routing_id; | 1630 view_params.view_surface_id = reply.surface_id; |
| 1635 view_params.surface_id = surface_id; | 1631 view_params.main_frame_routing_id = reply.main_frame_route_id; |
| 1632 view_params.main_frame_widget_routing_id = reply.main_frame_widget_route_id; |
| 1633 view_params.widget_surface_id = reply.widget_surface_id; |
| 1636 view_params.session_storage_namespace_id = | 1634 view_params.session_storage_namespace_id = |
| 1637 cloned_session_storage_namespace_id; | 1635 reply.cloned_session_storage_namespace_id; |
| 1638 view_params.swapped_out = false; | 1636 view_params.swapped_out = false; |
| 1639 // WebCore will take care of setting the correct name. | 1637 // WebCore will take care of setting the correct name. |
| 1640 view_params.replicated_frame_state = FrameReplicationState(); | 1638 view_params.replicated_frame_state = FrameReplicationState(); |
| 1641 view_params.proxy_routing_id = MSG_ROUTING_NONE; | |
| 1642 view_params.hidden = (params.disposition == NEW_BACKGROUND_TAB); | 1639 view_params.hidden = (params.disposition == NEW_BACKGROUND_TAB); |
| 1643 view_params.never_visible = never_visible; | 1640 view_params.never_visible = never_visible; |
| 1644 view_params.next_page_id = 1; | 1641 view_params.next_page_id = 1; |
| 1645 view_params.initial_size = initial_size; | 1642 view_params.initial_size = initial_size; |
| 1646 view_params.enable_auto_resize = false; | 1643 view_params.enable_auto_resize = false; |
| 1647 view_params.min_size = gfx::Size(); | 1644 view_params.min_size = gfx::Size(); |
| 1648 view_params.max_size = gfx::Size(); | 1645 view_params.max_size = gfx::Size(); |
| 1649 | 1646 |
| 1650 RenderViewImpl* view = | 1647 RenderViewImpl* view = |
| 1651 RenderViewImpl::Create(compositor_deps_, view_params, true); | 1648 RenderViewImpl::Create(compositor_deps_, view_params, true); |
| (...skipping 2131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3783 std::vector<gfx::Size> sizes; | 3780 std::vector<gfx::Size> sizes; |
| 3784 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); | 3781 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); |
| 3785 if (!url.isEmpty()) | 3782 if (!url.isEmpty()) |
| 3786 urls.push_back( | 3783 urls.push_back( |
| 3787 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); | 3784 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); |
| 3788 } | 3785 } |
| 3789 SendUpdateFaviconURL(urls); | 3786 SendUpdateFaviconURL(urls); |
| 3790 } | 3787 } |
| 3791 | 3788 |
| 3792 } // namespace content | 3789 } // namespace content |
| OLD | NEW |