diff options
author | Ben Murdoch <benm@google.com> | 2011-05-05 14:36:32 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-05-10 15:38:30 +0100 |
commit | f05b935882198ccf7d81675736e3aeb089c5113a (patch) | |
tree | 4ea0ca838d9ef1b15cf17ddb3928efb427c7e5a1 /WebKitTools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp | |
parent | 60fbdcc62bced8db2cb1fd233cc4d1e4ea17db1b (diff) | |
download | external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.zip external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.tar.gz external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.tar.bz2 |
Merge WebKit at r74534: Initial merge by git.
Change-Id: I6ccd1154fa1b19c2ec2a66878eb675738735f1eb
Diffstat (limited to 'WebKitTools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp')
-rw-r--r-- | WebKitTools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp deleted file mode 100644 index 975a598..0000000 --- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (C) 2010 Apple Inc. 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 INC. AND ITS CONTRIBUTORS ``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 INC. OR ITS 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 "PluginTest.h" - -#include "PluginObject.h" - -using namespace std; - -// The plugin's window's window region should be set to the plugin's clip rect. - -class WindowRegionIsSetToClipRect : public PluginTest { -public: - WindowRegionIsSetToClipRect(NPP, const string& identifier); - -private: - virtual NPError NPP_SetWindow(NPP, NPWindow*); - - bool m_didReceiveInitialSetWindowCall; -}; - -static PluginTest::Register<WindowRegionIsSetToClipRect> registrar("window-region-is-set-to-clip-rect"); - -WindowRegionIsSetToClipRect::WindowRegionIsSetToClipRect(NPP npp, const string& identifier) - : PluginTest(npp, identifier) - , m_didReceiveInitialSetWindowCall(false) -{ -} - -NPError WindowRegionIsSetToClipRect::NPP_SetWindow(NPP instance, NPWindow* window) -{ - if (m_didReceiveInitialSetWindowCall) - return NPERR_NO_ERROR; - m_didReceiveInitialSetWindowCall = true; - - if (window->type != NPWindowTypeWindow) { - pluginLog(instance, "window->type should be NPWindowTypeWindow but was %d", window->type); - return NPERR_GENERIC_ERROR; - } - - HWND hwnd = reinterpret_cast<HWND>(window->window); - - RECT regionRect; - if (::GetWindowRgnBox(hwnd, ®ionRect) == ERROR) { - pluginLog(instance, "::GetWindowRgnBox failed with error %u", ::GetLastError()); - return NPERR_GENERIC_ERROR; - } - - // This expected rect is based on the layout of window-region-is-set-to-clip-rect.html. - RECT expectedRect = { 50, 50, 100, 100 }; - if (!::EqualRect(®ionRect, &expectedRect)) { - pluginLog(instance, "Expected region rect {left=%u, top=%u, right=%u, bottom=%u}, but got {left=%d, top=%d, right=%d, bottom=%d}", expectedRect.left, expectedRect.top, expectedRect.right, expectedRect.bottom, regionRect.left, regionRect.top, regionRect.right, regionRect.bottom); - return NPERR_GENERIC_ERROR; - } - - pluginLog(instance, "PASS: Plugin's window's window region has been set as expected"); - - // While we're here, check that our window class doesn't have the CS_PARENTDC style, which - // defeats clipping by ignoring the window region and always clipping to the parent window. - // FIXME: It would be nice to have a pixel test that shows that we're - // getting clipped correctly, but unfortunately window regions are ignored - // during WM_PRINT (see <http://webkit.org/b/49034>). - wchar_t className[512]; - if (!::GetClassNameW(hwnd, className, _countof(className))) { - pluginLog(instance, "::GetClassName failed with error %u", ::GetLastError()); - return NPERR_GENERIC_ERROR; - } - -#ifdef DEBUG_ALL - const wchar_t webKitDLLName[] = L"WebKit_debug.dll"; -#else - const wchar_t webKitDLLName[] = L"WebKit.dll"; -#endif - HMODULE webKitModule = ::GetModuleHandleW(webKitDLLName); - if (!webKitModule) { - pluginLog(instance, "::GetModuleHandleW failed with error %u", ::GetLastError()); - return NPERR_GENERIC_ERROR; - } - - WNDCLASSW wndClass; - if (!::GetClassInfoW(webKitModule, className, &wndClass)) { - pluginLog(instance, "::GetClassInfoW failed with error %u", ::GetLastError()); - return NPERR_GENERIC_ERROR; - } - - if (wndClass.style & CS_PARENTDC) - pluginLog(instance, "FAIL: Plugin's window's class has the CS_PARENTDC style, which will defeat clipping"); - else - pluginLog(instance, "PASS: Plugin's window's class does not have the CS_PARENTDC style"); - - return NPERR_NO_ERROR; -} |