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

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

Issue 1980133002: Implement pointer lock API for out-of-process iframes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removing one more override Created 4 years, 7 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
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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <cmath> 9 #include <cmath>
10 #include <utility> 10 #include <utility>
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 is_subframe_(false), 409 is_subframe_(false),
410 force_disable_overscroll_content_(false), 410 force_disable_overscroll_content_(false),
411 last_dialog_suppressed_(false), 411 last_dialog_suppressed_(false),
412 geolocation_service_context_(new GeolocationServiceContext()), 412 geolocation_service_context_(new GeolocationServiceContext()),
413 accessibility_mode_( 413 accessibility_mode_(
414 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode()), 414 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode()),
415 audio_stream_monitor_(this), 415 audio_stream_monitor_(this),
416 bluetooth_connected_device_count_(0), 416 bluetooth_connected_device_count_(0),
417 virtual_keyboard_requested_(false), 417 virtual_keyboard_requested_(false),
418 page_scale_factor_is_one_(true), 418 page_scale_factor_is_one_(true),
419 mouse_lock_widget_(nullptr),
419 loading_weak_factory_(this), 420 loading_weak_factory_(this),
420 weak_factory_(this) { 421 weak_factory_(this) {
421 frame_tree_.SetFrameRemoveListener( 422 frame_tree_.SetFrameRemoveListener(
422 base::Bind(&WebContentsImpl::OnFrameRemoved, 423 base::Bind(&WebContentsImpl::OnFrameRemoved,
423 base::Unretained(this))); 424 base::Unretained(this)));
424 #if defined(OS_ANDROID) 425 #if defined(OS_ANDROID)
425 media_web_contents_observer_.reset(new MediaWebContentsObserverAndroid(this)); 426 media_web_contents_observer_.reset(new MediaWebContentsObserverAndroid(this));
426 #else 427 #else
427 media_web_contents_observer_.reset(new MediaWebContentsObserver(this)); 428 media_web_contents_observer_.reset(new MediaWebContentsObserver(this));
428 #endif 429 #endif
(...skipping 1253 matching lines...) Expand 10 before | Expand all | Expand 10 after
1682 render_widget_host->GetRoutingID() == fullscreen_widget_routing_id_) { 1683 render_widget_host->GetRoutingID() == fullscreen_widget_routing_id_) {
1683 if (delegate_ && delegate_->EmbedsFullscreenWidget()) 1684 if (delegate_ && delegate_->EmbedsFullscreenWidget())
1684 delegate_->ExitFullscreenModeForTab(this); 1685 delegate_->ExitFullscreenModeForTab(this);
1685 FOR_EACH_OBSERVER(WebContentsObserver, 1686 FOR_EACH_OBSERVER(WebContentsObserver,
1686 observers_, 1687 observers_,
1687 DidDestroyFullscreenWidget()); 1688 DidDestroyFullscreenWidget());
1688 fullscreen_widget_routing_id_ = MSG_ROUTING_NONE; 1689 fullscreen_widget_routing_id_ = MSG_ROUTING_NONE;
1689 if (fullscreen_widget_had_focus_at_shutdown_) 1690 if (fullscreen_widget_had_focus_at_shutdown_)
1690 view_->RestoreFocus(); 1691 view_->RestoreFocus();
1691 } 1692 }
1693
1694 if (mouse_lock_widget_ == render_widget_host)
1695 mouse_lock_widget_ = nullptr;
1692 } 1696 }
1693 1697
1694 void WebContentsImpl::RenderWidgetGotFocus( 1698 void WebContentsImpl::RenderWidgetGotFocus(
1695 RenderWidgetHostImpl* render_widget_host) { 1699 RenderWidgetHostImpl* render_widget_host) {
1696 // Notify the observers if an embedded fullscreen widget was focused. 1700 // Notify the observers if an embedded fullscreen widget was focused.
1697 if (delegate_ && render_widget_host && delegate_->EmbedsFullscreenWidget() && 1701 if (delegate_ && render_widget_host && delegate_->EmbedsFullscreenWidget() &&
1698 render_widget_host->GetView() == GetFullscreenRenderWidgetHostView()) { 1702 render_widget_host->GetView() == GetFullscreenRenderWidgetHostView()) {
1699 NotifyWebContentsFocused(); 1703 NotifyWebContentsFocused();
1700 } 1704 }
1701 } 1705 }
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
1880 return blink::WebDisplayModeBrowser; 1884 return blink::WebDisplayModeBrowser;
1881 1885
1882 return delegate_ ? delegate_->GetDisplayMode(this) 1886 return delegate_ ? delegate_->GetDisplayMode(this)
1883 : blink::WebDisplayModeBrowser; 1887 : blink::WebDisplayModeBrowser;
1884 } 1888 }
1885 1889
1886 void WebContentsImpl::RequestToLockMouse( 1890 void WebContentsImpl::RequestToLockMouse(
1887 RenderWidgetHostImpl* render_widget_host, 1891 RenderWidgetHostImpl* render_widget_host,
1888 bool user_gesture, 1892 bool user_gesture,
1889 bool last_unlocked_by_target) { 1893 bool last_unlocked_by_target) {
1890 if (render_widget_host != GetRenderViewHost()->GetWidget()) { 1894 if (mouse_lock_widget_) {
1891 render_widget_host->GotResponseToLockMouseRequest(false); 1895 render_widget_host->GotResponseToLockMouseRequest(false);
1892 return; 1896 return;
1893 } 1897 }
1894 1898
1895 if (delegate_) 1899 bool widget_in_frame_tree = false;
1900 for (FrameTreeNode* node : frame_tree_.Nodes()) {
1901 if (node->current_frame_host()->GetRenderWidgetHost() ==
1902 render_widget_host) {
1903 widget_in_frame_tree = true;
1904 break;
1905 }
1906 }
1907
1908 if (widget_in_frame_tree && delegate_) {
1909 mouse_lock_widget_ = render_widget_host;
1896 delegate_->RequestToLockMouse(this, user_gesture, last_unlocked_by_target); 1910 delegate_->RequestToLockMouse(this, user_gesture, last_unlocked_by_target);
1897 else 1911 } else
1898 GotResponseToLockMouseRequest(false); 1912 render_widget_host->GotResponseToLockMouseRequest(false);
1899 } 1913 }
1900 1914
1901 void WebContentsImpl::LostMouseLock(RenderWidgetHostImpl* render_widget_host) { 1915 void WebContentsImpl::LostMouseLock(RenderWidgetHostImpl* render_widget_host) {
1902 if (!RenderViewHostImpl::From(render_widget_host)) 1916 CHECK(mouse_lock_widget_);
1903 return; 1917 mouse_lock_widget_->SendMouseLockLost();
1918 mouse_lock_widget_ = nullptr;
1904 1919
1905 if (delegate_) 1920 if (delegate_)
1906 delegate_->LostMouseLock(); 1921 delegate_->LostMouseLock();
1907 } 1922 }
1908 1923
1909 void WebContentsImpl::ForwardCompositorProto( 1924 void WebContentsImpl::ForwardCompositorProto(
1910 RenderWidgetHostImpl* render_widget_host, 1925 RenderWidgetHostImpl* render_widget_host,
1911 const std::vector<uint8_t>& proto) { 1926 const std::vector<uint8_t>& proto) {
1912 if (delegate_) 1927 if (delegate_)
1913 delegate_->ForwardCompositorProto(render_widget_host, proto); 1928 delegate_->ForwardCompositorProto(render_widget_host, proto);
(...skipping 1013 matching lines...) Expand 10 before | Expand all | Expand 10 after
2927 } 2942 }
2928 2943
2929 gfx::Size WebContentsImpl::GetPreferredSize() const { 2944 gfx::Size WebContentsImpl::GetPreferredSize() const {
2930 return capturer_count_ == 0 ? preferred_size_ : preferred_size_for_capture_; 2945 return capturer_count_ == 0 ? preferred_size_ : preferred_size_for_capture_;
2931 } 2946 }
2932 2947
2933 bool WebContentsImpl::GotResponseToLockMouseRequest(bool allowed) { 2948 bool WebContentsImpl::GotResponseToLockMouseRequest(bool allowed) {
2934 if (GetBrowserPluginGuest()) 2949 if (GetBrowserPluginGuest())
2935 return GetBrowserPluginGuest()->LockMouse(allowed); 2950 return GetBrowserPluginGuest()->LockMouse(allowed);
2936 2951
2937 return GetRenderViewHost() 2952 if (mouse_lock_widget_)
2938 ? GetRenderViewHost()->GetWidget()->GotResponseToLockMouseRequest( 2953 return mouse_lock_widget_->GotResponseToLockMouseRequest(allowed);
2939 allowed) 2954 return false;
2940 : false;
2941 } 2955 }
2942 2956
2943 bool WebContentsImpl::HasOpener() const { 2957 bool WebContentsImpl::HasOpener() const {
2944 return GetOpener() != NULL; 2958 return GetOpener() != NULL;
2945 } 2959 }
2946 2960
2947 WebContentsImpl* WebContentsImpl::GetOpener() const { 2961 WebContentsImpl* WebContentsImpl::GetOpener() const {
2948 FrameTreeNode* opener_ftn = frame_tree_.root()->opener(); 2962 FrameTreeNode* opener_ftn = frame_tree_.root()->opener();
2949 return opener_ftn ? FromFrameTreeNode(opener_ftn) : nullptr; 2963 return opener_ftn ? FromFrameTreeNode(opener_ftn) : nullptr;
2950 } 2964 }
(...skipping 2086 matching lines...) Expand 10 before | Expand all | Expand 10 after
5037 for (RenderViewHost* render_view_host : render_view_host_set) 5051 for (RenderViewHost* render_view_host : render_view_host_set)
5038 render_view_host->OnWebkitPreferencesChanged(); 5052 render_view_host->OnWebkitPreferencesChanged();
5039 } 5053 }
5040 5054
5041 void WebContentsImpl::SetJavaScriptDialogManagerForTesting( 5055 void WebContentsImpl::SetJavaScriptDialogManagerForTesting(
5042 JavaScriptDialogManager* dialog_manager) { 5056 JavaScriptDialogManager* dialog_manager) {
5043 dialog_manager_ = dialog_manager; 5057 dialog_manager_ = dialog_manager;
5044 } 5058 }
5045 5059
5046 } // namespace content 5060 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698