Title: [93381] trunk/Source/WebKit/chromium
Revision
93381
Author
[email protected]
Date
2011-08-18 18:17:22 -0700 (Thu, 18 Aug 2011)

Log Message

Chromium plumbing for webkitRequestFullScreen
https://bugs.webkit.org/show_bug.cgi?id=66031

Reviewed by Darin Fisher.

* public/WebView.h:
* public/WebViewClient.h:
(WebKit::WebViewClient::enterFullscreenForElement):
(WebKit::WebViewClient::exitFullscreenForElement):
* src/ChromeClientImpl.cpp:
(WebKit::ChromeClientImpl::enterFullScreenForElement):
(WebKit::ChromeClientImpl::exitFullScreenForElement):
* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::exitFullscreen):
* src/WebViewImpl.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/chromium/ChangeLog (93380 => 93381)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-08-19 01:09:34 UTC (rev 93380)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-08-19 01:17:22 UTC (rev 93381)
@@ -1,3 +1,21 @@
+2011-08-18  James Kozianski  <[email protected]>
+
+        Chromium plumbing for webkitRequestFullScreen
+        https://bugs.webkit.org/show_bug.cgi?id=66031
+
+        Reviewed by Darin Fisher.
+
+        * public/WebView.h:
+        * public/WebViewClient.h:
+        (WebKit::WebViewClient::enterFullscreenForElement):
+        (WebKit::WebViewClient::exitFullscreenForElement):
+        * src/ChromeClientImpl.cpp:
+        (WebKit::ChromeClientImpl::enterFullScreenForElement):
+        (WebKit::ChromeClientImpl::exitFullScreenForElement):
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::exitFullscreen):
+        * src/WebViewImpl.h:
+
 2011-08-18  Chris Rogers  <[email protected]>
 
         Implement WebMediaPlayerClientImpl::audioSourceProvider() and interface into chromium

Modified: trunk/Source/WebKit/chromium/public/WebView.h (93380 => 93381)


--- trunk/Source/WebKit/chromium/public/WebView.h	2011-08-19 01:09:34 UTC (rev 93380)
+++ trunk/Source/WebKit/chromium/public/WebView.h	2011-08-19 01:17:22 UTC (rev 93381)
@@ -373,6 +373,12 @@
     virtual void setVisibilityState(WebPageVisibilityState visibilityState,
                                     bool isInitialState) { }
 
+
+    // Fullscreen -----------------------------------------------------------
+
+    virtual void exitFullscreen() = 0;
+
+
 protected:
     ~WebView() {}
 };

Modified: trunk/Source/WebKit/chromium/public/WebViewClient.h (93380 => 93381)


--- trunk/Source/WebKit/chromium/public/WebViewClient.h	2011-08-19 01:09:34 UTC (rev 93380)
+++ trunk/Source/WebKit/chromium/public/WebViewClient.h	2011-08-19 01:17:22 UTC (rev 93381)
@@ -215,6 +215,8 @@
     virtual bool supportsFullscreen() { return false; }
     virtual void enterFullscreenForNode(const WebNode&) { }
     virtual void exitFullscreenForNode(const WebNode&) { }
+    virtual void enterFullscreen() { }
+    virtual void exitFullscreen() { }
 
     // UI ------------------------------------------------------------------
 

Modified: trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp (93380 => 93381)


--- trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp	2011-08-19 01:09:34 UTC (rev 93380)
+++ trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp	2011-08-19 01:17:22 UTC (rev 93381)
@@ -899,8 +899,12 @@
 
 void ChromeClientImpl::enterFullScreenForElement(WebCore::Element* element)
 {
+    // FIXME: Make this code support asynchronous embedder implementations of
+    // enterFullscreenForElement() by restructuring this code to wait for an
+    // ACK.
     // FIXME: We may need to call these someplace else when window resizes.
     element->document()->webkitWillEnterFullScreenForElement(element);
+    m_webView->client()->enterFullscreen();
     element->document()->webkitDidEnterFullScreenForElement(element);
 }
 
@@ -908,6 +912,7 @@
 {
     // FIXME: We may need to call these someplace else when window resizes.
     element->document()->webkitWillExitFullScreenForElement(element);
+    m_webView->client()->exitFullscreen();
     element->document()->webkitDidExitFullScreenForElement(element);
 }
 

Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (93380 => 93381)


--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2011-08-19 01:09:34 UTC (rev 93380)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2011-08-19 01:17:22 UTC (rev 93381)
@@ -2693,5 +2693,16 @@
 }
 #endif
 
+void WebViewImpl::exitFullscreen()
+{
+#if ENABLE(FULLSCREEN_API)
+    Document* document = page()->mainFrame()->document();
+    Element* fullscreenElement = document->webkitCurrentFullScreenElement();
+    if (!fullscreenElement)
+        return;
+    document->webkitWillExitFullScreenForElement(fullscreenElement);
+    document->webkitDidExitFullScreenForElement(fullscreenElement);
+#endif
+}
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.h (93380 => 93381)


--- trunk/Source/WebKit/chromium/src/WebViewImpl.h	2011-08-19 01:09:34 UTC (rev 93380)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.h	2011-08-19 01:17:22 UTC (rev 93381)
@@ -208,6 +208,7 @@
                                     unsigned inactiveBackgroundColor,
                                     unsigned inactiveForegroundColor);
     virtual void performCustomContextMenuAction(unsigned action);
+    virtual void exitFullscreen();
 
     // CCLayerTreeHostClient
     virtual void animateAndLayout(double frameBeginTime);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to