| 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 1031 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1042 | 1042 |
| 1043 void WebContentsImpl::DecrementCapturerCount() { | 1043 void WebContentsImpl::DecrementCapturerCount() { |
| 1044 --capturer_count_; | 1044 --capturer_count_; |
| 1045 DVLOG(1) << "There are now " << capturer_count_ | 1045 DVLOG(1) << "There are now " << capturer_count_ |
| 1046 << " capturing(s) of WebContentsImpl@" << this; | 1046 << " capturing(s) of WebContentsImpl@" << this; |
| 1047 DCHECK_LE(0, capturer_count_); | 1047 DCHECK_LE(0, capturer_count_); |
| 1048 | 1048 |
| 1049 if (is_being_destroyed_) | 1049 if (is_being_destroyed_) |
| 1050 return; | 1050 return; |
| 1051 | 1051 |
| 1052 // While capturer_count_ was greater than zero, the WasHidden() calls to RWHV | 1052 if (IsHidden()) { |
| 1053 // were being prevented. If there are no more capturers, make the call now. | |
| 1054 if (capturer_count_ == 0 && !should_normally_be_visible_) { | |
| 1055 DVLOG(1) << "Executing delayed WasHidden()."; | 1053 DVLOG(1) << "Executing delayed WasHidden()."; |
| 1056 WasHidden(); | 1054 WasHidden(); |
| 1057 } | 1055 } |
| 1058 } | 1056 } |
| 1059 | 1057 |
| 1060 int WebContentsImpl::GetCapturerCount() const { | 1058 int WebContentsImpl::GetCapturerCount() const { |
| 1061 return capturer_count_; | 1059 return capturer_count_; |
| 1062 } | 1060 } |
| 1063 | 1061 |
| 1064 bool WebContentsImpl::IsCrashed() const { | 1062 bool WebContentsImpl::IsCrashed() const { |
| (...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1479 create_params.initial_size = view_->GetContainerSize(); | 1477 create_params.initial_size = view_->GetContainerSize(); |
| 1480 } else { | 1478 } else { |
| 1481 // This makes |new_contents| act as a guest. | 1479 // This makes |new_contents| act as a guest. |
| 1482 // For more info, see comment above class BrowserPluginGuest. | 1480 // For more info, see comment above class BrowserPluginGuest. |
| 1483 int instance_id = GetBrowserPluginGuestManager()->get_next_instance_id(); | 1481 int instance_id = GetBrowserPluginGuestManager()->get_next_instance_id(); |
| 1484 WebContentsImpl* new_contents_impl = | 1482 WebContentsImpl* new_contents_impl = |
| 1485 static_cast<WebContentsImpl*>(new_contents); | 1483 static_cast<WebContentsImpl*>(new_contents); |
| 1486 BrowserPluginGuest::CreateWithOpener(instance_id, new_contents_impl, | 1484 BrowserPluginGuest::CreateWithOpener(instance_id, new_contents_impl, |
| 1487 GetBrowserPluginGuest(), !!new_contents_impl->opener()); | 1485 GetBrowserPluginGuest(), !!new_contents_impl->opener()); |
| 1488 } | 1486 } |
| 1487 if (params.disposition == NEW_BACKGROUND_TAB) |
| 1488 create_params.initially_hidden = true; |
| 1489 new_contents->Init(create_params); | 1489 new_contents->Init(create_params); |
| 1490 | 1490 |
| 1491 // Save the window for later if we're not suppressing the opener (since it | 1491 // Save the window for later if we're not suppressing the opener (since it |
| 1492 // will be shown immediately). | 1492 // will be shown immediately). |
| 1493 if (!params.opener_suppressed) { | 1493 if (!params.opener_suppressed) { |
| 1494 if (!is_guest) { | 1494 if (!is_guest) { |
| 1495 WebContentsViewPort* new_view = new_contents->view_.get(); | 1495 WebContentsViewPort* new_view = new_contents->view_.get(); |
| 1496 | 1496 |
| 1497 // TODO(brettw): It seems bogus that we have to call this function on the | 1497 // TODO(brettw): It seems bogus that we have to call this function on the |
| 1498 // newly created object and give it one of its own member variables. | 1498 // newly created object and give it one of its own member variables. |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1540 | 1540 |
| 1541 void WebContentsImpl::CreateNewFullscreenWidget(int route_id) { | 1541 void WebContentsImpl::CreateNewFullscreenWidget(int route_id) { |
| 1542 CreateNewWidget(route_id, true, WebKit::WebPopupTypeNone); | 1542 CreateNewWidget(route_id, true, WebKit::WebPopupTypeNone); |
| 1543 } | 1543 } |
| 1544 | 1544 |
| 1545 void WebContentsImpl::CreateNewWidget(int route_id, | 1545 void WebContentsImpl::CreateNewWidget(int route_id, |
| 1546 bool is_fullscreen, | 1546 bool is_fullscreen, |
| 1547 WebKit::WebPopupType popup_type) { | 1547 WebKit::WebPopupType popup_type) { |
| 1548 RenderProcessHost* process = GetRenderProcessHost(); | 1548 RenderProcessHost* process = GetRenderProcessHost(); |
| 1549 RenderWidgetHostImpl* widget_host = | 1549 RenderWidgetHostImpl* widget_host = |
| 1550 new RenderWidgetHostImpl(this, process, route_id); | 1550 new RenderWidgetHostImpl(this, process, route_id, IsHidden()); |
| 1551 created_widgets_.insert(widget_host); | 1551 created_widgets_.insert(widget_host); |
| 1552 | 1552 |
| 1553 RenderWidgetHostViewPort* widget_view = RenderWidgetHostViewPort::FromRWHV( | 1553 RenderWidgetHostViewPort* widget_view = RenderWidgetHostViewPort::FromRWHV( |
| 1554 view_->CreateViewForPopupWidget(widget_host)); | 1554 view_->CreateViewForPopupWidget(widget_host)); |
| 1555 if (!widget_view) | 1555 if (!widget_view) |
| 1556 return; | 1556 return; |
| 1557 if (!is_fullscreen) { | 1557 if (!is_fullscreen) { |
| 1558 // Popups should not get activated. | 1558 // Popups should not get activated. |
| 1559 widget_view->SetPopupType(popup_type); | 1559 widget_view->SetPopupType(popup_type); |
| 1560 } | 1560 } |
| (...skipping 1864 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3425 WebPreferences WebContentsImpl::GetWebkitPrefs() { | 3425 WebPreferences WebContentsImpl::GetWebkitPrefs() { |
| 3426 // We want to base the page config off of the real URL, rather than the | 3426 // We want to base the page config off of the real URL, rather than the |
| 3427 // display URL. | 3427 // display URL. |
| 3428 GURL url = controller_.GetActiveEntry() | 3428 GURL url = controller_.GetActiveEntry() |
| 3429 ? controller_.GetActiveEntry()->GetURL() : GURL::EmptyGURL(); | 3429 ? controller_.GetActiveEntry()->GetURL() : GURL::EmptyGURL(); |
| 3430 return GetWebkitPrefs(GetRenderViewHost(), url); | 3430 return GetWebkitPrefs(GetRenderViewHost(), url); |
| 3431 } | 3431 } |
| 3432 | 3432 |
| 3433 int WebContentsImpl::CreateSwappedOutRenderView( | 3433 int WebContentsImpl::CreateSwappedOutRenderView( |
| 3434 SiteInstance* instance) { | 3434 SiteInstance* instance) { |
| 3435 return render_manager_.CreateRenderView(instance, MSG_ROUTING_NONE, true); | 3435 return render_manager_.CreateRenderView(instance, MSG_ROUTING_NONE, |
| 3436 true, true); |
| 3436 } | 3437 } |
| 3437 | 3438 |
| 3438 void WebContentsImpl::OnUserGesture() { | 3439 void WebContentsImpl::OnUserGesture() { |
| 3439 // Notify observers. | 3440 // Notify observers. |
| 3440 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture()); | 3441 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture()); |
| 3441 | 3442 |
| 3442 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get(); | 3443 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get(); |
| 3443 if (rdh) // NULL in unittests. | 3444 if (rdh) // NULL in unittests. |
| 3444 rdh->OnUserGesture(this); | 3445 rdh->OnUserGesture(this); |
| 3445 } | 3446 } |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3595 render_manager_.pending_render_view_host()->GetSiteInstance() == instance) | 3596 render_manager_.pending_render_view_host()->GetSiteInstance() == instance) |
| 3596 return render_manager_.pending_render_view_host()->GetRoutingID(); | 3597 return render_manager_.pending_render_view_host()->GetRoutingID(); |
| 3597 | 3598 |
| 3598 RenderViewHostImpl* rvh = render_manager_.GetSwappedOutRenderViewHost( | 3599 RenderViewHostImpl* rvh = render_manager_.GetSwappedOutRenderViewHost( |
| 3599 instance); | 3600 instance); |
| 3600 if (rvh) | 3601 if (rvh) |
| 3601 return rvh->GetRoutingID(); | 3602 return rvh->GetRoutingID(); |
| 3602 | 3603 |
| 3603 // Create a swapped out RenderView in the given SiteInstance if none exists, | 3604 // Create a swapped out RenderView in the given SiteInstance if none exists, |
| 3604 // setting its opener to the given route_id. Return the new view's route_id. | 3605 // setting its opener to the given route_id. Return the new view's route_id. |
| 3605 return render_manager_.CreateRenderView(instance, opener_route_id, true); | 3606 return render_manager_.CreateRenderView(instance, opener_route_id, |
| 3607 true, true); |
| 3606 } | 3608 } |
| 3607 | 3609 |
| 3608 NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() { | 3610 NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() { |
| 3609 return GetController(); | 3611 return GetController(); |
| 3610 } | 3612 } |
| 3611 | 3613 |
| 3612 WebUIImpl* WebContentsImpl::CreateWebUIForRenderManager(const GURL& url) { | 3614 WebUIImpl* WebContentsImpl::CreateWebUIForRenderManager(const GURL& url) { |
| 3613 return static_cast<WebUIImpl*>(CreateWebUI(url)); | 3615 return static_cast<WebUIImpl*>(CreateWebUI(url)); |
| 3614 } | 3616 } |
| 3615 | 3617 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3675 GetCanonicalEncodingNameByAliasName(encoding); | 3677 GetCanonicalEncodingNameByAliasName(encoding); |
| 3676 } | 3678 } |
| 3677 | 3679 |
| 3678 void WebContentsImpl::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { | 3680 void WebContentsImpl::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { |
| 3679 RenderWidgetHostView* rwh_view = view_->CreateViewForWidget(rvh); | 3681 RenderWidgetHostView* rwh_view = view_->CreateViewForWidget(rvh); |
| 3680 // Can be NULL during tests. | 3682 // Can be NULL during tests. |
| 3681 if (rwh_view) | 3683 if (rwh_view) |
| 3682 rwh_view->SetSize(GetView()->GetContainerSize()); | 3684 rwh_view->SetSize(GetView()->GetContainerSize()); |
| 3683 } | 3685 } |
| 3684 | 3686 |
| 3687 bool WebContentsImpl::IsHidden() { |
| 3688 return capturer_count_ == 0 && !should_normally_be_visible_; |
| 3689 } |
| 3690 |
| 3685 RenderViewHostImpl* WebContentsImpl::GetRenderViewHostImpl() { | 3691 RenderViewHostImpl* WebContentsImpl::GetRenderViewHostImpl() { |
| 3686 return static_cast<RenderViewHostImpl*>(GetRenderViewHost()); | 3692 return static_cast<RenderViewHostImpl*>(GetRenderViewHost()); |
| 3687 } | 3693 } |
| 3688 | 3694 |
| 3689 BrowserPluginGuest* WebContentsImpl::GetBrowserPluginGuest() const { | 3695 BrowserPluginGuest* WebContentsImpl::GetBrowserPluginGuest() const { |
| 3690 return browser_plugin_guest_.get(); | 3696 return browser_plugin_guest_.get(); |
| 3691 } | 3697 } |
| 3692 | 3698 |
| 3693 void WebContentsImpl::SetBrowserPluginGuest(BrowserPluginGuest* guest) { | 3699 void WebContentsImpl::SetBrowserPluginGuest(BrowserPluginGuest* guest) { |
| 3694 CHECK(!browser_plugin_guest_); | 3700 CHECK(!browser_plugin_guest_); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 3713 } | 3719 } |
| 3714 | 3720 |
| 3715 void WebContentsImpl::ClearAllPowerSaveBlockers() { | 3721 void WebContentsImpl::ClearAllPowerSaveBlockers() { |
| 3716 for (PowerSaveBlockerMap::iterator i(power_save_blockers_.begin()); | 3722 for (PowerSaveBlockerMap::iterator i(power_save_blockers_.begin()); |
| 3717 i != power_save_blockers_.end(); ++i) | 3723 i != power_save_blockers_.end(); ++i) |
| 3718 STLDeleteValues(&power_save_blockers_[i->first]); | 3724 STLDeleteValues(&power_save_blockers_[i->first]); |
| 3719 power_save_blockers_.clear(); | 3725 power_save_blockers_.clear(); |
| 3720 } | 3726 } |
| 3721 | 3727 |
| 3722 } // namespace content | 3728 } // namespace content |
| OLD | NEW |