Chromium Code Reviews| Index: third_party/WebKit/Source/web/WebViewImpl.cpp |
| diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp |
| index dbce5b06b65f7e4ff4ef9e4783670e765bcfada8..70fd87996f31152293f601ed2e16c5978a4ec75a 100644 |
| --- a/third_party/WebKit/Source/web/WebViewImpl.cpp |
| +++ b/third_party/WebKit/Source/web/WebViewImpl.cpp |
| @@ -146,6 +146,7 @@ |
| #include "public/web/WebPlugin.h" |
| #include "public/web/WebPluginAction.h" |
| #include "public/web/WebRange.h" |
| +#include "public/web/WebScopedUserGesture.h" |
| #include "public/web/WebSelection.h" |
| #include "public/web/WebTextInputInfo.h" |
| #include "public/web/WebViewClient.h" |
| @@ -1941,6 +1942,37 @@ void WebViewImpl::resize(const WebSize& newSize) |
| newSize, topControls().height(), topControls().shrinkViewport()); |
| } |
| +void WebViewImpl::willEnterFullScreen(WebRemoteFrame* fullscreenFrame) |
| +{ |
| + FrameOwner* owner = toWebRemoteFrameImpl(fullscreenFrame)->frame()->owner(); |
|
dcheng
2016/05/19 22:08:39
In a future patch, let's try moving this to WebRem
alexmos
2016/05/19 23:58:19
Will do, I think that should be possible.
|
| + HTMLFrameOwnerElement* ownerElement = toHTMLFrameOwnerElement(owner); |
| + |
| + // Let FullscreenController know that |ownerElement| is an ancestor of the |
| + // actual fullscreen element, so that it can be treated a little |
| + // differently: |
| + // - it will need :-webkit-full-screen-ancestor style in addition to |
| + // :-webkit-full-screen. |
| + // - it does not need to resend the ToggleFullscreen IPC to the browser |
| + // process. |
| + m_fullscreenController->setFullscreenIsForCrossProcessAncestor(); |
|
dcheng
2016/05/19 22:08:39
This seems like the main blocker against moving th
alexmos
2016/05/19 23:58:19
Yes, I think that should be feasible. In fact, on
dcheng
2016/05/20 07:01:44
Yeah, followup is fine. Thanks!
|
| + |
| + // Call requestFullScreen() on |ownerElement| to make it the provisional |
| + // fullscreen element in FullscreenController, and to prepare |
| + // fullscreenchange events that will need to fire on it and its (local) |
| + // ancestors. The events will be triggered if/when fullscreen is entered. |
| + // Note that requestFullscreen() requires a user gesture. |
| + // |
| + // TODO(alexmos): currently, WebElement::requestFullScreen assumes prefixed |
| + // requests, but in the future, this should plumb in information about |
| + // which request type (prefixed or unprefixed) to use for firing fullscreen |
| + // events. |
| + { |
| + WebElement element(ownerElement); |
|
dcheng
2016/05/19 22:08:39
Nit: let's use the core API directly, I looked at
alexmos
2016/05/19 23:58:19
Done.
|
| + WebScopedUserGesture userGesture; |
| + element.requestFullScreen(); |
| + } |
| +} |
| + |
| void WebViewImpl::didEnterFullScreen() |
| { |
| m_fullscreenController->didEnterFullScreen(); |
| @@ -1951,6 +1983,11 @@ void WebViewImpl::didExitFullScreen() |
| m_fullscreenController->didExitFullScreen(); |
| } |
| +void WebViewImpl::didUpdateFullScreenSize() |
| +{ |
| + m_fullscreenController->updateSize(); |
| +} |
| + |
| void WebViewImpl::beginFrame(double lastFrameTimeMonotonic) |
| { |
| TRACE_EVENT1("blink", "WebViewImpl::beginFrame", "frameTime", lastFrameTimeMonotonic); |