blob: 06cecf73a2bf240aa26bdbdf1c038f9ef4cce3ff [file] [log] [blame]
// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/test/plugin/plugin_window_size_test.h"
#include "content/test/plugin/plugin_client.h"
namespace NPAPIClient {
PluginWindowSizeTest::PluginWindowSizeTest(NPP id,
NPNetscapeFuncs *host_functions)
: PluginTest(id, host_functions) {
}
NPError PluginWindowSizeTest::SetWindow(NPWindow* pNPWindow) {
if (pNPWindow->window == NULL)
return NPERR_NO_ERROR;
HWND window = reinterpret_cast<HWND>(pNPWindow->window);
if (!::IsWindow(window)) {
SetError("Invalid arguments passed in");
return NPERR_INVALID_PARAM;
}
RECT window_rect = {0};
window_rect.left = pNPWindow->x;
window_rect.top = pNPWindow->y;
window_rect.right = pNPWindow->width;
window_rect.bottom = pNPWindow->height;
if (!::IsRectEmpty(&window_rect)) {
RECT client_rect = {0};
::GetClientRect(window, &client_rect);
if (::IsRectEmpty(&client_rect)) {
SetError("The client rect of the plugin window is empty. Test failed");
}
// Bug 6742: ensure that the coordinates passed in are relative to the
// parent HWND.
POINT origin_from_os;
RECT window_rect_from_os;
::GetWindowRect(window, &window_rect_from_os);
origin_from_os.x = window_rect_from_os.left;
origin_from_os.y = window_rect_from_os.top;
::ScreenToClient(GetParent(window), &origin_from_os);
if (origin_from_os.x != pNPWindow->x || origin_from_os.y != pNPWindow->y)
SetError("Wrong position passed in to SetWindow! Test failed");
SignalTestCompleted();
}
return NPERR_NO_ERROR;
}
} // namespace NPAPIClient