Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 313083002: Disable overscroll navigation when emulating touch. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed comments Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 is_showing_before_unload_dialog_(false), 340 is_showing_before_unload_dialog_(false),
341 last_active_time_(base::TimeTicks::Now()), 341 last_active_time_(base::TimeTicks::Now()),
342 closed_by_user_gesture_(false), 342 closed_by_user_gesture_(false),
343 minimum_zoom_percent_(static_cast<int>(kMinimumZoomFactor * 100)), 343 minimum_zoom_percent_(static_cast<int>(kMinimumZoomFactor * 100)),
344 maximum_zoom_percent_(static_cast<int>(kMaximumZoomFactor * 100)), 344 maximum_zoom_percent_(static_cast<int>(kMaximumZoomFactor * 100)),
345 totalPinchGestureAmount_(0), 345 totalPinchGestureAmount_(0),
346 currentPinchZoomStepDelta_(0), 346 currentPinchZoomStepDelta_(0),
347 render_view_message_source_(NULL), 347 render_view_message_source_(NULL),
348 fullscreen_widget_routing_id_(MSG_ROUTING_NONE), 348 fullscreen_widget_routing_id_(MSG_ROUTING_NONE),
349 is_subframe_(false), 349 is_subframe_(false),
350 touch_emulation_enabled_(false),
350 last_dialog_suppressed_(false) { 351 last_dialog_suppressed_(false) {
351 for (size_t i = 0; i < g_created_callbacks.Get().size(); i++) 352 for (size_t i = 0; i < g_created_callbacks.Get().size(); i++)
352 g_created_callbacks.Get().at(i).Run(this); 353 g_created_callbacks.Get().at(i).Run(this);
353 frame_tree_.SetFrameRemoveListener( 354 frame_tree_.SetFrameRemoveListener(
354 base::Bind(&WebContentsImpl::OnFrameRemoved, 355 base::Bind(&WebContentsImpl::OnFrameRemoved,
355 base::Unretained(this))); 356 base::Unretained(this)));
356 } 357 }
357 358
358 WebContentsImpl::~WebContentsImpl() { 359 WebContentsImpl::~WebContentsImpl() {
359 is_being_destroyed_ = true; 360 is_being_destroyed_ = true;
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 // TODO(cbentzel): remove this debugging code? 607 // TODO(cbentzel): remove this debugging code?
607 if (delegate == delegate_) 608 if (delegate == delegate_)
608 return; 609 return;
609 if (delegate_) 610 if (delegate_)
610 delegate_->Detach(this); 611 delegate_->Detach(this);
611 delegate_ = delegate; 612 delegate_ = delegate;
612 if (delegate_) { 613 if (delegate_) {
613 delegate_->Attach(this); 614 delegate_->Attach(this);
614 // Ensure the visible RVH reflects the new delegate's preferences. 615 // Ensure the visible RVH reflects the new delegate's preferences.
615 if (view_) 616 if (view_)
616 view_->SetOverscrollControllerEnabled(delegate->CanOverscrollContent()); 617 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
617 } 618 }
618 } 619 }
619 620
620 RenderProcessHost* WebContentsImpl::GetRenderProcessHost() const { 621 RenderProcessHost* WebContentsImpl::GetRenderProcessHost() const {
621 RenderViewHostImpl* host = GetRenderManager()->current_host(); 622 RenderViewHostImpl* host = GetRenderManager()->current_host();
622 return host ? host->GetProcess() : NULL; 623 return host ? host->GetProcess() : NULL;
623 } 624 }
624 625
625 RenderFrameHost* WebContentsImpl::GetMainFrame() { 626 RenderFrameHost* WebContentsImpl::GetMainFrame() {
626 return frame_tree_.root()->current_frame_host(); 627 return frame_tree_.root()->current_frame_host();
(...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after
1691 const gfx::Rect& anchor_in_root_view) { 1692 const gfx::Rect& anchor_in_root_view) {
1692 if (delegate_) 1693 if (delegate_)
1693 delegate_->MoveValidationMessage(this, anchor_in_root_view); 1694 delegate_->MoveValidationMessage(this, anchor_in_root_view);
1694 } 1695 }
1695 1696
1696 void WebContentsImpl::DidSendScreenRects(RenderWidgetHostImpl* rwh) { 1697 void WebContentsImpl::DidSendScreenRects(RenderWidgetHostImpl* rwh) {
1697 if (browser_plugin_embedder_) 1698 if (browser_plugin_embedder_)
1698 browser_plugin_embedder_->DidSendScreenRects(); 1699 browser_plugin_embedder_->DidSendScreenRects();
1699 } 1700 }
1700 1701
1702 void WebContentsImpl::OnTouchEmulationEnabled(bool enabled) {
1703 touch_emulation_enabled_ = enabled;
1704 if (view_)
1705 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
1706 }
1707
1701 void WebContentsImpl::UpdatePreferredSize(const gfx::Size& pref_size) { 1708 void WebContentsImpl::UpdatePreferredSize(const gfx::Size& pref_size) {
1702 const gfx::Size old_size = GetPreferredSize(); 1709 const gfx::Size old_size = GetPreferredSize();
1703 preferred_size_ = pref_size; 1710 preferred_size_ = pref_size;
1704 OnPreferredSizeChanged(old_size); 1711 OnPreferredSizeChanged(old_size);
1705 } 1712 }
1706 1713
1707 void WebContentsImpl::ResizeDueToAutoResize(const gfx::Size& new_size) { 1714 void WebContentsImpl::ResizeDueToAutoResize(const gfx::Size& new_size) {
1708 if (delegate_) 1715 if (delegate_)
1709 delegate_->ResizeDueToAutoResize(this, new_size); 1716 delegate_->ResizeDueToAutoResize(this, new_size);
1710 } 1717 }
(...skipping 738 matching lines...) Expand 10 before | Expand all | Expand 10 after
2449 // displayed insecure content. 2456 // displayed insecure content.
2450 displayed_insecure_content_ = false; 2457 displayed_insecure_content_ = false;
2451 SSLManager::NotifySSLInternalStateChanged( 2458 SSLManager::NotifySSLInternalStateChanged(
2452 GetController().GetBrowserContext()); 2459 GetController().GetBrowserContext());
2453 } 2460 }
2454 2461
2455 // Notify observers about navigation. 2462 // Notify observers about navigation.
2456 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 2463 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
2457 DidNavigateMainFrame(details, params)); 2464 DidNavigateMainFrame(details, params));
2458 2465
2459 if (delegate_) { 2466 if (delegate_)
2460 delegate_->DidNavigateMainFramePostCommit(this); 2467 delegate_->DidNavigateMainFramePostCommit(this);
2461 view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent()); 2468 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
2462 }
2463 } 2469 }
2464 2470
2465 void WebContentsImpl::DidNavigateAnyFramePostCommit( 2471 void WebContentsImpl::DidNavigateAnyFramePostCommit(
2466 RenderFrameHostImpl* render_frame_host, 2472 RenderFrameHostImpl* render_frame_host,
2467 const LoadCommittedDetails& details, 2473 const LoadCommittedDetails& details,
2468 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) { 2474 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) {
2469 // Now that something has committed, we don't need to track whether the 2475 // Now that something has committed, we don't need to track whether the
2470 // initial page has been accessed. 2476 // initial page has been accessed.
2471 has_accessed_initial_document_ = false; 2477 has_accessed_initial_document_ = false;
2472 2478
2473 // If we navigate off the page, close all JavaScript dialogs. 2479 // If we navigate off the page, close all JavaScript dialogs.
2474 if (dialog_manager_ && !details.is_in_page) 2480 if (dialog_manager_ && !details.is_in_page)
2475 dialog_manager_->CancelActiveAndPendingDialogs(this); 2481 dialog_manager_->CancelActiveAndPendingDialogs(this);
2476 2482
2477 // Notify observers about navigation. 2483 // Notify observers about navigation.
2478 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 2484 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
2479 DidNavigateAnyFrame(details, params)); 2485 DidNavigateAnyFrame(details, params));
2480 } 2486 }
2481 2487
2482 void WebContentsImpl::SetMainFrameMimeType(const std::string& mime_type) { 2488 void WebContentsImpl::SetMainFrameMimeType(const std::string& mime_type) {
2483 contents_mime_type_ = mime_type; 2489 contents_mime_type_ = mime_type;
2484 } 2490 }
2485 2491
2486 bool WebContentsImpl::CanOverscrollContent() const { 2492 bool WebContentsImpl::CanOverscrollContent() const {
2493 // Disable overscroll when touch emulation is on. See crbug.com/369938.
2494 if (touch_emulation_enabled_)
2495 return false;
2496
2487 if (delegate_) 2497 if (delegate_)
2488 return delegate_->CanOverscrollContent(); 2498 return delegate_->CanOverscrollContent();
2489 2499
2490 return false; 2500 return false;
2491 } 2501 }
2492 2502
2493 void WebContentsImpl::OnDidLoadResourceFromMemoryCache( 2503 void WebContentsImpl::OnDidLoadResourceFromMemoryCache(
2494 const GURL& url, 2504 const GURL& url,
2495 const std::string& security_info, 2505 const std::string& security_info,
2496 const std::string& http_method, 2506 const std::string& http_method,
(...skipping 791 matching lines...) Expand 10 before | Expand all | Expand 10 after
3288 } 3298 }
3289 3299
3290 void WebContentsImpl::RenderViewCreated(RenderViewHost* render_view_host) { 3300 void WebContentsImpl::RenderViewCreated(RenderViewHost* render_view_host) {
3291 // Don't send notifications if we are just creating a swapped-out RVH for 3301 // Don't send notifications if we are just creating a swapped-out RVH for
3292 // the opener chain. These won't be used for view-source or WebUI, so it's 3302 // the opener chain. These won't be used for view-source or WebUI, so it's
3293 // ok to return early. 3303 // ok to return early.
3294 if (static_cast<RenderViewHostImpl*>(render_view_host)->IsSwappedOut()) 3304 if (static_cast<RenderViewHostImpl*>(render_view_host)->IsSwappedOut())
3295 return; 3305 return;
3296 3306
3297 if (delegate_) 3307 if (delegate_)
3298 view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent()); 3308 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
3299 3309
3300 NotificationService::current()->Notify( 3310 NotificationService::current()->Notify(
3301 NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED, 3311 NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED,
3302 Source<WebContents>(this), 3312 Source<WebContents>(this),
3303 Details<RenderViewHost>(render_view_host)); 3313 Details<RenderViewHost>(render_view_host));
3304 3314
3305 // When we're creating views, we're still doing initial setup, so we always 3315 // When we're creating views, we're still doing initial setup, so we always
3306 // use the pending Web UI rather than any possibly existing committed one. 3316 // use the pending Web UI rather than any possibly existing committed one.
3307 if (GetRenderManager()->pending_web_ui()) 3317 if (GetRenderManager()->pending_web_ui())
3308 GetRenderManager()->pending_web_ui()->RenderViewCreated(render_view_host); 3318 GetRenderManager()->pending_web_ui()->RenderViewCreated(render_view_host);
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
3790 if (dialog_manager_) 3800 if (dialog_manager_)
3791 dialog_manager_->CancelActiveAndPendingDialogs(this); 3801 dialog_manager_->CancelActiveAndPendingDialogs(this);
3792 } 3802 }
3793 3803
3794 void WebContentsImpl::NotifySwappedFromRenderManager(RenderViewHost* old_host, 3804 void WebContentsImpl::NotifySwappedFromRenderManager(RenderViewHost* old_host,
3795 RenderViewHost* new_host) { 3805 RenderViewHost* new_host) {
3796 NotifySwapped(old_host, new_host); 3806 NotifySwapped(old_host, new_host);
3797 3807
3798 // Make sure the visible RVH reflects the new delegate's preferences. 3808 // Make sure the visible RVH reflects the new delegate's preferences.
3799 if (delegate_) 3809 if (delegate_)
3800 view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent()); 3810 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
3801 3811
3802 view_->RenderViewSwappedIn(new_host); 3812 view_->RenderViewSwappedIn(new_host);
3803 } 3813 }
3804 3814
3805 int WebContentsImpl::CreateOpenerRenderViewsForRenderManager( 3815 int WebContentsImpl::CreateOpenerRenderViewsForRenderManager(
3806 SiteInstance* instance) { 3816 SiteInstance* instance) {
3807 if (!opener_) 3817 if (!opener_)
3808 return MSG_ROUTING_NONE; 3818 return MSG_ROUTING_NONE;
3809 3819
3810 // Recursively create RenderViews for anything else in the opener chain. 3820 // Recursively create RenderViews for anything else in the opener chain.
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
4050 4060
4051 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { 4061 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) {
4052 if (!delegate_) 4062 if (!delegate_)
4053 return; 4063 return;
4054 const gfx::Size new_size = GetPreferredSize(); 4064 const gfx::Size new_size = GetPreferredSize();
4055 if (new_size != old_size) 4065 if (new_size != old_size)
4056 delegate_->UpdatePreferredSize(this, new_size); 4066 delegate_->UpdatePreferredSize(this, new_size);
4057 } 4067 }
4058 4068
4059 } // namespace content 4069 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698