Index: content/browser/web_contents/web_contents_impl.cc |
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
index 67cf02fbb7bcaac2202668930a942bf07a437695..a0cb39f200b934fccfbf2e40015d9e510b4bd4e6 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -348,6 +348,7 @@ WebContentsImpl::WebContentsImpl( |
render_view_message_source_(NULL), |
fullscreen_widget_routing_id_(MSG_ROUTING_NONE), |
is_subframe_(false), |
+ overscroll_content_disabled_(false), |
last_dialog_suppressed_(false) { |
for (size_t i = 0; i < g_created_callbacks.Get().size(); i++) |
g_created_callbacks.Get().at(i).Run(this); |
@@ -614,7 +615,7 @@ void WebContentsImpl::SetDelegate(WebContentsDelegate* delegate) { |
delegate_->Attach(this); |
// Ensure the visible RVH reflects the new delegate's preferences. |
if (view_) |
- view_->SetOverscrollControllerEnabled(delegate->CanOverscrollContent()); |
+ view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
} |
} |
@@ -1695,6 +1696,13 @@ void WebContentsImpl::DidSendScreenRects(RenderWidgetHostImpl* rwh) { |
browser_plugin_embedder_->DidSendScreenRects(); |
} |
+void WebContentsImpl::SetOverscrollContentDisabled(bool disabled) { |
+ overscroll_content_disabled_ = disabled; |
+ // Make sure the visible RVH reflects new preference. |
+ if (view_) |
+ view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
+} |
+ |
void WebContentsImpl::UpdatePreferredSize(const gfx::Size& pref_size) { |
const gfx::Size old_size = GetPreferredSize(); |
preferred_size_ = pref_size; |
@@ -2453,10 +2461,9 @@ void WebContentsImpl::DidNavigateMainFramePostCommit( |
FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
DidNavigateMainFrame(details, params)); |
- if (delegate_) { |
+ if (delegate_) |
delegate_->DidNavigateMainFramePostCommit(this); |
- view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent()); |
- } |
+ view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
} |
void WebContentsImpl::DidNavigateAnyFramePostCommit( |
@@ -2481,6 +2488,9 @@ void WebContentsImpl::SetMainFrameMimeType(const std::string& mime_type) { |
} |
bool WebContentsImpl::CanOverscrollContent() const { |
+ if (overscroll_content_disabled_) |
+ return false; |
+ |
if (delegate_) |
return delegate_->CanOverscrollContent(); |
@@ -3292,7 +3302,7 @@ void WebContentsImpl::RenderViewCreated(RenderViewHost* render_view_host) { |
return; |
if (delegate_) |
- view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent()); |
+ view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
NotificationService::current()->Notify( |
NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED, |
@@ -3794,7 +3804,7 @@ void WebContentsImpl::NotifySwappedFromRenderManager(RenderViewHost* old_host, |
// Make sure the visible RVH reflects the new delegate's preferences. |
if (delegate_) |
- view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent()); |
+ view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
view_->RenderViewSwappedIn(new_host); |
} |