Index: Source/WebCore/platform/graphics/win/FullScreenController.cpp |
diff --git a/Source/WebCore/platform/graphics/win/FullScreenController.cpp b/Source/WebCore/platform/graphics/win/FullScreenController.cpp |
deleted file mode 100644 |
index def538eb9bb13cdd4735ec3bd9dcd9079fc9b8e1..0000000000000000000000000000000000000000 |
--- a/Source/WebCore/platform/graphics/win/FullScreenController.cpp |
+++ /dev/null |
@@ -1,219 +0,0 @@ |
-/* |
- * Copyright (C) 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved. |
- * Copyright (C) Research In Motion Limited 2009. All rights reserved. |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions |
- * are met: |
- * 1. Redistributions of source code must retain the above copyright |
- * notice, this list of conditions and the following disclaimer. |
- * 2. Redistributions in binary form must reproduce the above copyright |
- * notice, this list of conditions and the following disclaimer in the |
- * documentation and/or other materials provided with the distribution. |
- * |
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- */ |
- |
-#include "config.h" |
- |
-#if ENABLE(FULLSCREEN_API) |
- |
-#include "FullScreenController.h" |
- |
-#include "Element.h" |
-#include "FullScreenControllerClient.h" |
-#include "IntRect.h" |
-#include "MediaPlayerPrivateFullscreenWindow.h" |
-#include "Timer.h" |
-#include "WebCoreInstanceHandle.h" |
-#include <wtf/RefPtr.h> |
- |
-using namespace WebCore; |
- |
-static const int kFullScreenAnimationDuration = 500; // milliseconds |
- |
-class FullScreenController::Private : public MediaPlayerPrivateFullscreenClient { |
-public: |
- Private(FullScreenController* controller, FullScreenControllerClient* client) |
- : m_controller(controller) |
- , m_client(client) |
- , m_originalHost(0) |
- , m_isFullScreen(false) |
- , m_isEnteringFullScreen(false) |
- , m_isExitingFullScreen(false) |
- { |
- } |
- virtual ~Private() { } |
- |
- virtual LRESULT fullscreenClientWndProc(HWND, UINT, WPARAM, LPARAM); |
- |
- FullScreenController* m_controller; |
- FullScreenControllerClient* m_client; |
- OwnPtr<MediaPlayerPrivateFullscreenWindow> m_fullScreenWindow; |
- OwnPtr<MediaPlayerPrivateFullscreenWindow> m_backgroundWindow; |
- IntRect m_fullScreenFrame; |
- IntRect m_originalFrame; |
- HWND m_originalHost; |
- bool m_isFullScreen; |
- bool m_isEnteringFullScreen; |
- bool m_isExitingFullScreen; |
-}; |
- |
-LRESULT FullScreenController::Private::fullscreenClientWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) |
-{ |
- LRESULT lResult = 0; |
- |
- switch (msg) { |
- case WM_MOVE: |
- m_fullScreenFrame.setX(LOWORD(lParam)); |
- m_fullScreenFrame.setY(HIWORD(lParam)); |
- break; |
- case WM_SIZE: |
- m_fullScreenFrame.setWidth(LOWORD(lParam)); |
- m_fullScreenFrame.setHeight(HIWORD(lParam)); |
- if (m_client->fullScreenClientWindow()) |
- ::SetWindowPos(m_client->fullScreenClientWindow(), 0, 0, 0, m_fullScreenFrame.width(), m_fullScreenFrame.height(), SWP_NOREPOSITION | SWP_NOMOVE); |
- break; |
- case WM_ACTIVATE: |
- // Because m_fullScreenWindow is a topmost window, we need to exit full screen explicitly when it's deactivated. |
- if (!wParam && m_fullScreenWindow && (hwnd == m_fullScreenWindow->hwnd())) |
- m_controller->exitFullScreen(); |
- break; |
- case WM_KEYDOWN: |
- if (wParam == VK_ESCAPE) { |
- m_controller->exitFullScreen(); |
- break; |
- } |
- // Fall through. |
- default: |
- lResult = ::DefWindowProc(hwnd, msg, wParam, lParam); |
- } |
- |
- return lResult; |
-} |
- |
-FullScreenController::FullScreenController(FullScreenControllerClient* client) |
- : m_private(adoptPtr(new FullScreenController::Private(this, client))) |
-{ |
- ASSERT_ARG(client, client); |
-} |
- |
-FullScreenController::~FullScreenController() |
-{ |
-} |
- |
-bool FullScreenController::isFullScreen() const |
-{ |
- return m_private->m_isFullScreen; |
-} |
- |
-void FullScreenController::enterFullScreen() |
-{ |
- if (m_private->m_isFullScreen || m_private->m_isEnteringFullScreen) |
- return; |
- m_private->m_isFullScreen = true; |
- m_private->m_isEnteringFullScreen = true; |
- |
- m_private->m_originalHost = m_private->m_client->fullScreenClientParentWindow(); |
- RECT originalFrame = {0, 0, 0, 0}; |
- ::GetClientRect(m_private->m_client->fullScreenClientWindow(), &originalFrame); |
- ::MapWindowPoints(m_private->m_client->fullScreenClientWindow(), m_private->m_originalHost, reinterpret_cast<LPPOINT>(&originalFrame), 2); |
- m_private->m_originalFrame = originalFrame; |
- |
- ASSERT(!m_private->m_backgroundWindow); |
- m_private->m_backgroundWindow = adoptPtr(new MediaPlayerPrivateFullscreenWindow(m_private.get())); |
- m_private->m_backgroundWindow->createWindow(0); |
- ::AnimateWindow(m_private->m_backgroundWindow->hwnd(), kFullScreenAnimationDuration, AW_BLEND | AW_ACTIVATE); |
- |
- m_private->m_client->fullScreenClientWillEnterFullScreen(); |
- ASSERT(!m_private->m_fullScreenWindow); |
- m_private->m_fullScreenWindow = adoptPtr(new MediaPlayerPrivateFullscreenWindow(m_private.get())); |
- ASSERT(m_private->m_fullScreenWindow); |
- m_private->m_fullScreenWindow->createWindow(0); |
- |
- m_private->m_client->fullScreenClientSetParentWindow(m_private->m_fullScreenWindow->hwnd()); |
- |
- IntRect viewFrame(IntPoint(), m_private->m_fullScreenFrame.size()); |
- ::SetWindowPos(m_private->m_fullScreenWindow->hwnd(), HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); |
- ::SetWindowPos(m_private->m_client->fullScreenClientWindow(), HWND_TOP, 0, 0, viewFrame.width(), viewFrame.height(), SWP_NOACTIVATE); |
- |
- m_private->m_client->fullScreenClientDidEnterFullScreen(); |
- m_private->m_client->fullScreenClientForceRepaint(); |
-} |
- |
-void FullScreenController::enterFullScreenRepaintCompleted() |
-{ |
- if (!m_private->m_isEnteringFullScreen) |
- return; |
- m_private->m_isEnteringFullScreen = false; |
- |
- // Normally, when the background fullscreen window is animated in, the Windows taskbar will be hidden, but this doesn't always work for some reason. |
- // Setting the real fullscreen window to be a topmost window will force the taskbar to be hidden when we call AnimateWindow() below if it wasn't before. |
- ::SetWindowPos(m_private->m_fullScreenWindow->hwnd(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); |
- ::AnimateWindow(m_private->m_fullScreenWindow->hwnd(), kFullScreenAnimationDuration, AW_BLEND | AW_ACTIVATE); |
-} |
- |
-void FullScreenController::exitFullScreen() |
-{ |
- if (!m_private->m_isFullScreen || m_private->m_isExitingFullScreen) |
- return; |
- m_private->m_isFullScreen = false; |
- m_private->m_isExitingFullScreen = true; |
- |
- ::AnimateWindow(m_private->m_fullScreenWindow->hwnd(), kFullScreenAnimationDuration, AW_HIDE | AW_BLEND); |
- |
- m_private->m_client->fullScreenClientWillExitFullScreen(); |
- m_private->m_client->fullScreenClientSetParentWindow(m_private->m_originalHost); |
- m_private->m_fullScreenWindow = nullptr; |
- |
- ::SetWindowPos(m_private->m_client->fullScreenClientWindow(), 0, m_private->m_originalFrame.x(), m_private->m_originalFrame.y(), m_private->m_originalFrame.width(), m_private->m_originalFrame.height(), SWP_NOACTIVATE | SWP_NOZORDER); |
- |
- m_private->m_client->fullScreenClientDidExitFullScreen(); |
- m_private->m_client->fullScreenClientForceRepaint(); |
-} |
- |
-void FullScreenController::exitFullScreenRepaintCompleted() |
-{ |
- if (!m_private->m_isExitingFullScreen) |
- return; |
- m_private->m_isExitingFullScreen = false; |
- |
- ASSERT(m_private->m_backgroundWindow); |
- ::AnimateWindow(m_private->m_backgroundWindow->hwnd(), kFullScreenAnimationDuration, AW_HIDE | AW_BLEND); |
- m_private->m_backgroundWindow = nullptr; |
-} |
- |
-void FullScreenController::repaintCompleted() |
-{ |
- if (m_private->m_isEnteringFullScreen) |
- enterFullScreenRepaintCompleted(); |
- else if (m_private->m_isExitingFullScreen) |
- exitFullScreenRepaintCompleted(); |
-} |
- |
-void FullScreenController::close() |
-{ |
- if (!m_private->m_isFullScreen) |
- return; |
- m_private->m_isFullScreen = false; |
- |
- m_private->m_client->fullScreenClientWillExitFullScreen(); |
- m_private->m_client->fullScreenClientSetParentWindow(m_private->m_originalHost); |
- m_private->m_fullScreenWindow = nullptr; |
- |
- m_private->m_client->fullScreenClientDidExitFullScreen(); |
- ::SetWindowPos(m_private->m_client->fullScreenClientWindow(), 0, m_private->m_originalFrame.x(), m_private->m_originalFrame.y(), m_private->m_originalFrame.width(), m_private->m_originalFrame.height(), SWP_NOACTIVATE | SWP_NOZORDER); |
- ::RedrawWindow(m_private->m_client->fullScreenClientWindow(), 0, 0, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN); |
- m_private->m_backgroundWindow = nullptr; |
-} |
-#endif |