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 2848 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2859 return; | 2859 return; |
2860 | 2860 |
2861 if (delegate_) | 2861 if (delegate_) |
2862 view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent()); | 2862 view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent()); |
2863 | 2863 |
2864 NotificationService::current()->Notify( | 2864 NotificationService::current()->Notify( |
2865 NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED, | 2865 NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED, |
2866 Source<WebContents>(this), | 2866 Source<WebContents>(this), |
2867 Details<RenderViewHost>(render_view_host)); | 2867 Details<RenderViewHost>(render_view_host)); |
2868 NavigationEntry* entry = controller_.GetActiveEntry(); | 2868 NavigationEntry* entry = controller_.GetActiveEntry(); |
2869 if (!entry) | 2869 if (!entry) { |
2870 FOR_EACH_OBSERVER( | |
2871 WebContentsObserver, observers_, RenderViewCreated(render_view_host)); | |
michaelbai
2013/08/20 00:40:22
I think this might reasonable, since the RenderVie
| |
2870 return; | 2872 return; |
2873 } | |
2871 | 2874 |
joth
2013/08/20 05:00:44
style nit: I'd put "if (entry)" around all this co
michaelbai
2013/08/20 19:15:20
Done.
| |
2872 // When we're creating views, we're still doing initial setup, so we always | 2875 // When we're creating views, we're still doing initial setup, so we always |
2873 // use the pending Web UI rather than any possibly existing committed one. | 2876 // use the pending Web UI rather than any possibly existing committed one. |
2874 if (render_manager_.pending_web_ui()) | 2877 if (render_manager_.pending_web_ui()) |
2875 render_manager_.pending_web_ui()->RenderViewCreated(render_view_host); | 2878 render_manager_.pending_web_ui()->RenderViewCreated(render_view_host); |
2876 | 2879 |
2877 if (entry->IsViewSourceMode()) { | 2880 if (entry->IsViewSourceMode()) { |
2878 // Put the renderer in view source mode. | 2881 // Put the renderer in view source mode. |
2879 render_view_host->Send( | 2882 render_view_host->Send( |
2880 new ViewMsg_EnableViewSourceMode(render_view_host->GetRoutingID())); | 2883 new ViewMsg_EnableViewSourceMode(render_view_host->GetRoutingID())); |
2881 } | 2884 } |
(...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3613 | 3616 |
3614 WebUIImpl* WebContentsImpl::CreateWebUIForRenderManager(const GURL& url) { | 3617 WebUIImpl* WebContentsImpl::CreateWebUIForRenderManager(const GURL& url) { |
3615 return static_cast<WebUIImpl*>(CreateWebUI(url)); | 3618 return static_cast<WebUIImpl*>(CreateWebUI(url)); |
3616 } | 3619 } |
3617 | 3620 |
3618 NavigationEntry* | 3621 NavigationEntry* |
3619 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { | 3622 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { |
3620 return controller_.GetLastCommittedEntry(); | 3623 return controller_.GetLastCommittedEntry(); |
3621 } | 3624 } |
3622 | 3625 |
3623 bool WebContentsImpl::CreateRenderViewForRenderManager( | 3626 bool WebContentsImpl::CreateRenderViewInternal(RenderViewHost* render_view_host, |
3624 RenderViewHost* render_view_host, int opener_route_id) { | 3627 int opener_route_id, |
3625 TRACE_EVENT0("browser", "WebContentsImpl::CreateRenderViewForRenderManager"); | 3628 int max_page_id) { |
3626 // Can be NULL during tests. | 3629 // Can be NULL during tests. |
3627 RenderWidgetHostView* rwh_view = view_->CreateViewForWidget(render_view_host); | 3630 RenderWidgetHostView* rwh_view = view_->CreateViewForWidget(render_view_host); |
3628 | 3631 |
3629 // Now that the RenderView has been created, we need to tell it its size. | 3632 // Now that the RenderView has been created, we need to tell it its size. |
3630 if (rwh_view) | 3633 if (rwh_view) |
3631 rwh_view->SetSize(view_->GetContainerSize()); | 3634 rwh_view->SetSize(view_->GetContainerSize()); |
3632 | 3635 |
3633 // Make sure we use the correct starting page_id in the new RenderView. | |
3634 UpdateMaxPageIDIfNecessary(render_view_host); | |
3635 int32 max_page_id = | |
3636 GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); | |
3637 | |
3638 if (!static_cast<RenderViewHostImpl*>( | 3636 if (!static_cast<RenderViewHostImpl*>( |
3639 render_view_host)->CreateRenderView(string16(), | 3637 render_view_host)->CreateRenderView(string16(), |
3640 opener_route_id, | 3638 opener_route_id, |
3641 max_page_id)) { | 3639 max_page_id)) { |
3642 return false; | 3640 return false; |
3643 } | 3641 } |
3644 | 3642 |
3645 #if defined(OS_LINUX) || defined(OS_OPENBSD) | 3643 #if defined(OS_LINUX) || defined(OS_OPENBSD) |
3646 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on | 3644 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on |
3647 // linux. See crbug.com/83941. | 3645 // linux. See crbug.com/83941. |
3648 if (rwh_view) { | 3646 if (rwh_view) { |
3649 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) | 3647 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) |
3650 render_widget_host->WasResized(); | 3648 render_widget_host->WasResized(); |
3651 } | 3649 } |
3652 #endif | 3650 #endif |
3653 | 3651 |
3654 return true; | 3652 return true; |
3655 } | 3653 } |
3656 | 3654 |
3655 bool WebContentsImpl::CreateRenderViewForRenderManager( | |
3656 RenderViewHost* render_view_host, int opener_route_id) { | |
3657 TRACE_EVENT0("browser", "WebContentsImpl::CreateRenderViewForRenderManager"); | |
3658 | |
3659 // Make sure we use the correct starting page_id in the new RenderView. | |
3660 UpdateMaxPageIDIfNecessary(render_view_host); | |
3661 int32 max_page_id = | |
3662 GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); | |
3663 return CreateRenderViewInternal(render_view_host, opener_route_id, | |
3664 max_page_id); | |
3665 } | |
3666 | |
3667 #if defined(OS_ANDROID) | |
3668 bool WebContentsImpl::CreateRenderView(RenderViewHost* render_view_host, | |
3669 int opener_route_id, | |
3670 int max_page_id) { | |
3671 return CreateRenderViewInternal(render_view_host, opener_route_id, | |
3672 max_page_id); | |
3673 } | |
3674 #endif | |
3675 | |
3657 void WebContentsImpl::OnDialogClosed(RenderViewHost* rvh, | 3676 void WebContentsImpl::OnDialogClosed(RenderViewHost* rvh, |
3658 IPC::Message* reply_msg, | 3677 IPC::Message* reply_msg, |
3659 bool success, | 3678 bool success, |
3660 const string16& user_input) { | 3679 const string16& user_input) { |
3661 if (is_showing_before_unload_dialog_ && !success) { | 3680 if (is_showing_before_unload_dialog_ && !success) { |
3662 // If a beforeunload dialog is canceled, we need to stop the throbber from | 3681 // If a beforeunload dialog is canceled, we need to stop the throbber from |
3663 // spinning, since we forced it to start spinning in Navigate. | 3682 // spinning, since we forced it to start spinning in Navigate. |
3664 DidStopLoading(rvh); | 3683 DidStopLoading(rvh); |
3665 controller_.DiscardNonCommittedEntries(); | 3684 controller_.DiscardNonCommittedEntries(); |
3666 | 3685 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3715 } | 3734 } |
3716 | 3735 |
3717 void WebContentsImpl::ClearAllPowerSaveBlockers() { | 3736 void WebContentsImpl::ClearAllPowerSaveBlockers() { |
3718 for (PowerSaveBlockerMap::iterator i(power_save_blockers_.begin()); | 3737 for (PowerSaveBlockerMap::iterator i(power_save_blockers_.begin()); |
3719 i != power_save_blockers_.end(); ++i) | 3738 i != power_save_blockers_.end(); ++i) |
3720 STLDeleteValues(&power_save_blockers_[i->first]); | 3739 STLDeleteValues(&power_save_blockers_[i->first]); |
3721 power_save_blockers_.clear(); | 3740 power_save_blockers_.clear(); |
3722 } | 3741 } |
3723 | 3742 |
3724 } // namespace content | 3743 } // namespace content |
OLD | NEW |