1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/test/plugin/plugin_javascript_open_popup.h"
6
7#include "build/build_config.h"
8#include "base/logging.h"
9
10#include "content/test/plugin/plugin_client.h"
11
12namespace NPAPIClient {
13
14ExecuteJavascriptOpenPopupWithPluginTest::
15    ExecuteJavascriptOpenPopupWithPluginTest(NPP id,
16                                             NPNetscapeFuncs *host_functions)
17    : PluginTest(id, host_functions),
18      popup_window_test_started_(false) {
19}
20
21int16 ExecuteJavascriptOpenPopupWithPluginTest::SetWindow(
22    NPWindow* window) {
23#if !defined(OS_MACOSX)
24  if (window->window == NULL)
25    return NPERR_NO_ERROR;
26#endif
27
28  if (!popup_window_test_started_) {
29    popup_window_test_started_ = true;
30    HostFunctions()->geturl(
31        id(), "popup_window_with_target_plugin.html", "_blank");
32  }
33  return NPERR_NO_ERROR;
34}
35
36// ExecuteJavascriptPopupWindowTargetPluginTest member defines.
37ExecuteJavascriptPopupWindowTargetPluginTest::
38    ExecuteJavascriptPopupWindowTargetPluginTest(
39        NPP id, NPNetscapeFuncs* host_functions)
40    : PluginTest(id, host_functions),
41      test_completed_(false) {
42}
43
44int16 ExecuteJavascriptPopupWindowTargetPluginTest::SetWindow(
45    NPWindow* window) {
46#if !defined(OS_MACOSX)
47  if (window->window == NULL)
48    return NPERR_NO_ERROR;
49#endif
50
51  if (!test_completed_) {
52    if (CheckWindow(window)) {
53      SignalTestCompleted();
54      test_completed_ = true;
55    }
56  }
57  return PluginTest::SetWindow(window);
58}
59
60#if defined(OS_WIN)
61bool ExecuteJavascriptPopupWindowTargetPluginTest::CheckWindow(
62    NPWindow* window) {
63  HWND window_handle = reinterpret_cast<HWND>(window->window);
64
65  if (IsWindow(window_handle)) {
66    HWND parent_window = GetParent(window_handle);
67    if (!IsWindow(parent_window))
68      SetError("Windowed plugin instantiated with NULL parent");
69    return true;
70  }
71
72  return false;
73}
74
75#elif defined(OS_MACOSX)
76bool ExecuteJavascriptPopupWindowTargetPluginTest::CheckWindow(
77    NPWindow* window) {
78  // TODO(port) scaffolding--replace with a real test once NPWindow is done.
79  return false;
80}
81#endif
82
83} // namespace NPAPIClient
84