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/browser/web_contents/web_contents_impl.h" | 5 #include "content/browser/web_contents/web_contents_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 2856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2867 return; | 2867 return; |
2868 | 2868 |
2869 if (delegate_) | 2869 if (delegate_) |
2870 view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent()); | 2870 view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent()); |
2871 | 2871 |
2872 NotificationService::current()->Notify( | 2872 NotificationService::current()->Notify( |
2873 NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED, | 2873 NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED, |
2874 Source<WebContents>(this), | 2874 Source<WebContents>(this), |
2875 Details<RenderViewHost>(render_view_host)); | 2875 Details<RenderViewHost>(render_view_host)); |
2876 NavigationEntry* entry = controller_.GetActiveEntry(); | 2876 NavigationEntry* entry = controller_.GetActiveEntry(); |
2877 if (!entry) | 2877 if (entry) { |
2878 return; | 2878 // When we're creating views, we're still doing initial setup, so we always |
2879 // use the pending Web UI rather than any possibly existing committed one. | |
2880 if (render_manager_.pending_web_ui()) | |
2881 render_manager_.pending_web_ui()->RenderViewCreated(render_view_host); | |
2879 | 2882 |
2880 // When we're creating views, we're still doing initial setup, so we always | 2883 if (entry->IsViewSourceMode()) { |
2881 // use the pending Web UI rather than any possibly existing committed one. | 2884 // Put the renderer in view source mode. |
2882 if (render_manager_.pending_web_ui()) | 2885 render_view_host->Send( |
2883 render_manager_.pending_web_ui()->RenderViewCreated(render_view_host); | 2886 new ViewMsg_EnableViewSourceMode(render_view_host->GetRoutingID())); |
2887 } | |
2884 | 2888 |
2885 if (entry->IsViewSourceMode()) { | 2889 view_->RenderViewCreated(render_view_host); |
2886 // Put the renderer in view source mode. | |
2887 render_view_host->Send( | |
2888 new ViewMsg_EnableViewSourceMode(render_view_host->GetRoutingID())); | |
2889 } | 2890 } |
2890 | |
2891 view_->RenderViewCreated(render_view_host); | |
2892 | |
2893 FOR_EACH_OBSERVER( | 2891 FOR_EACH_OBSERVER( |
2894 WebContentsObserver, observers_, RenderViewCreated(render_view_host)); | 2892 WebContentsObserver, observers_, RenderViewCreated(render_view_host)); |
2895 } | 2893 } |
2896 | 2894 |
2897 void WebContentsImpl::RenderViewReady(RenderViewHost* rvh) { | 2895 void WebContentsImpl::RenderViewReady(RenderViewHost* rvh) { |
2898 if (rvh != GetRenderViewHost()) { | 2896 if (rvh != GetRenderViewHost()) { |
2899 // Don't notify the world, since this came from a renderer in the | 2897 // Don't notify the world, since this came from a renderer in the |
2900 // background. | 2898 // background. |
2901 return; | 2899 return; |
2902 } | 2900 } |
(...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3629 | 3627 |
3630 WebUIImpl* WebContentsImpl::CreateWebUIForRenderManager(const GURL& url) { | 3628 WebUIImpl* WebContentsImpl::CreateWebUIForRenderManager(const GURL& url) { |
3631 return static_cast<WebUIImpl*>(CreateWebUI(url)); | 3629 return static_cast<WebUIImpl*>(CreateWebUI(url)); |
3632 } | 3630 } |
3633 | 3631 |
3634 NavigationEntry* | 3632 NavigationEntry* |
3635 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { | 3633 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { |
3636 return controller_.GetLastCommittedEntry(); | 3634 return controller_.GetLastCommittedEntry(); |
3637 } | 3635 } |
3638 | 3636 |
3639 bool WebContentsImpl::CreateRenderViewForRenderManager( | 3637 bool WebContentsImpl::CreateRenderView(RenderViewHost* render_view_host, |
3640 RenderViewHost* render_view_host, int opener_route_id) { | 3638 int opener_route_id, |
3641 TRACE_EVENT0("browser", "WebContentsImpl::CreateRenderViewForRenderManager"); | 3639 int max_page_id) { |
3642 // Can be NULL during tests. | 3640 // Can be NULL during tests. |
3643 RenderWidgetHostView* rwh_view = view_->CreateViewForWidget(render_view_host); | 3641 RenderWidgetHostView* rwh_view = view_->CreateViewForWidget(render_view_host); |
3644 | 3642 |
3645 // Now that the RenderView has been created, we need to tell it its size. | 3643 // Now that the RenderView has been created, we need to tell it its size. |
3646 if (rwh_view) | 3644 if (rwh_view) |
3647 rwh_view->SetSize(view_->GetContainerSize()); | 3645 rwh_view->SetSize(view_->GetContainerSize()); |
3648 | 3646 |
3649 // Make sure we use the correct starting page_id in the new RenderView. | |
3650 UpdateMaxPageIDIfNecessary(render_view_host); | |
3651 int32 max_page_id = | |
3652 GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); | |
Charlie Reis
2013/08/21 22:06:26
These max page ID calls have to stay, or else the
michaelbai
2013/08/21 23:32:17
Done.
| |
3653 | |
3654 if (!static_cast<RenderViewHostImpl*>( | 3647 if (!static_cast<RenderViewHostImpl*>( |
3655 render_view_host)->CreateRenderView(string16(), | 3648 render_view_host)->CreateRenderView(string16(), |
3656 opener_route_id, | 3649 opener_route_id, |
3657 max_page_id)) { | 3650 max_page_id)) { |
3658 return false; | 3651 return false; |
3659 } | 3652 } |
3660 | 3653 |
3661 #if defined(OS_LINUX) || defined(OS_OPENBSD) | 3654 #if defined(OS_LINUX) || defined(OS_OPENBSD) |
3662 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on | 3655 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on |
3663 // linux. See crbug.com/83941. | 3656 // linux. See crbug.com/83941. |
3664 if (rwh_view) { | 3657 if (rwh_view) { |
3665 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) | 3658 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) |
3666 render_widget_host->WasResized(); | 3659 render_widget_host->WasResized(); |
3667 } | 3660 } |
3668 #endif | 3661 #endif |
3669 | 3662 |
3670 return true; | 3663 return true; |
3671 } | 3664 } |
3672 | 3665 |
3666 bool WebContentsImpl::CreateRenderViewForRenderManager( | |
3667 RenderViewHost* render_view_host, int opener_route_id) { | |
3668 TRACE_EVENT0("browser", "WebContentsImpl::CreateRenderViewForRenderManager"); | |
3669 | |
3670 // Make sure we use the correct starting page_id in the new RenderView. | |
3671 UpdateMaxPageIDIfNecessary(render_view_host); | |
3672 int32 max_page_id = | |
3673 GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); | |
3674 return CreateRenderView(render_view_host, opener_route_id, max_page_id); | |
3675 } | |
3676 | |
3677 #if defined(OS_ANDROID) | |
3678 bool WebContentsImpl::CreateRenderViewWithoutNavigationEntry( | |
3679 RenderViewHost* render_view_host) { | |
3680 return CreateRenderView(render_view_host, MSG_ROUTING_NONE, -1); | |
Charlie Reis
2013/08/21 22:06:26
Just call CreatRenderViewForRenderManager here.
michaelbai
2013/08/21 23:32:17
Done.
| |
3681 } | |
3682 #endif | |
3683 | |
3673 void WebContentsImpl::OnDialogClosed(RenderViewHost* rvh, | 3684 void WebContentsImpl::OnDialogClosed(RenderViewHost* rvh, |
3674 IPC::Message* reply_msg, | 3685 IPC::Message* reply_msg, |
3675 bool success, | 3686 bool success, |
3676 const string16& user_input) { | 3687 const string16& user_input) { |
3677 if (is_showing_before_unload_dialog_ && !success) { | 3688 if (is_showing_before_unload_dialog_ && !success) { |
3678 // If a beforeunload dialog is canceled, we need to stop the throbber from | 3689 // If a beforeunload dialog is canceled, we need to stop the throbber from |
3679 // spinning, since we forced it to start spinning in Navigate. | 3690 // spinning, since we forced it to start spinning in Navigate. |
3680 DidStopLoading(rvh); | 3691 DidStopLoading(rvh); |
3681 controller_.DiscardNonCommittedEntries(); | 3692 controller_.DiscardNonCommittedEntries(); |
3682 | 3693 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3731 } | 3742 } |
3732 | 3743 |
3733 void WebContentsImpl::ClearAllPowerSaveBlockers() { | 3744 void WebContentsImpl::ClearAllPowerSaveBlockers() { |
3734 for (PowerSaveBlockerMap::iterator i(power_save_blockers_.begin()); | 3745 for (PowerSaveBlockerMap::iterator i(power_save_blockers_.begin()); |
3735 i != power_save_blockers_.end(); ++i) | 3746 i != power_save_blockers_.end(); ++i) |
3736 STLDeleteValues(&power_save_blockers_[i->first]); | 3747 STLDeleteValues(&power_save_blockers_[i->first]); |
3737 power_save_blockers_.clear(); | 3748 power_save_blockers_.clear(); |
3738 } | 3749 } |
3739 | 3750 |
3740 } // namespace content | 3751 } // namespace content |
OLD | NEW |