summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp')
-rw-r--r--Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp b/Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp
index 0323698ce..0becc77eb 100644
--- a/Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp
+++ b/Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp
@@ -28,13 +28,14 @@
#if ENABLE(FULLSCREEN_API)
#include "Connection.h"
-#include "MessageID.h"
#include "WebCoreArgumentCoders.h"
+#include "WebFrame.h"
#include "WebFullScreenManagerProxyMessages.h"
#include "WebPage.h"
-#include "WebProcess.h"
#include <WebCore/Color.h>
#include <WebCore/Element.h>
+#include <WebCore/Frame.h>
+#include <WebCore/FrameView.h>
#include <WebCore/Page.h>
#include <WebCore/RenderLayer.h>
#include <WebCore/RenderLayerBacking.h>
@@ -52,7 +53,7 @@ static IntRect screenRectOfContents(Element* element)
#if USE(ACCELERATED_COMPOSITING)
if (element->renderer() && element->renderer()->hasLayer() && element->renderer()->enclosingLayer()->isComposited()) {
FloatQuad contentsBox = static_cast<FloatRect>(element->renderer()->enclosingLayer()->backing()->contentsBox());
- contentsBox = element->renderer()->localToAbsoluteQuad(contentsBox, SnapOffsetForTransforms);
+ contentsBox = element->renderer()->localToAbsoluteQuad(contentsBox);
return element->renderer()->view()->frameView()->contentsToScreen(contentsBox.enclosingBoundingBox());
}
#endif
@@ -78,9 +79,9 @@ WebCore::Element* WebFullScreenManager::element()
return m_element.get();
}
-void WebFullScreenManager::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder)
+void WebFullScreenManager::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageDecoder& decoder)
{
- didReceiveWebFullScreenManagerMessage(connection, messageID, decoder);
+ didReceiveWebFullScreenManagerMessage(connection, decoder);
}
bool WebFullScreenManager::supportsFullScreen(bool withKeyboard)
@@ -108,6 +109,7 @@ void WebFullScreenManager::willEnterFullScreen()
{
ASSERT(m_element);
m_element->document()->webkitWillEnterFullScreenForElement(m_element.get());
+ m_page->hidePageBanners();
m_element->document()->updateLayout();
m_page->forceRepaintWithoutCallback();
m_finalFrame = screenRectOfContents(m_element.get());
@@ -125,6 +127,7 @@ void WebFullScreenManager::willExitFullScreen()
ASSERT(m_element);
m_finalFrame = screenRectOfContents(m_element.get());
m_element->document()->webkitWillExitFullScreenForElement(m_element.get());
+ m_page->showPageBanners();
m_page->injectedBundleFullScreenClient().beganExitFullScreen(m_page.get(), m_finalFrame, m_initialFrame);
}
@@ -151,6 +154,16 @@ void WebFullScreenManager::close()
m_page->injectedBundleFullScreenClient().closeFullScreen(m_page.get());
}
+void WebFullScreenManager::saveScrollPosition()
+{
+ m_scrollPosition = m_page->corePage()->mainFrame()->view()->scrollPosition();
+}
+
+void WebFullScreenManager::restoreScrollPosition()
+{
+ m_page->corePage()->mainFrame()->view()->setScrollPosition(m_scrollPosition);
+}
+
} // namespace WebKit
#endif // ENABLE(FULLSCREEN_API)