Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(368)

Unified Diff: content/test/plugin/plugin_windowless_test.cc

Issue 1182303010: Delete the NPAPI plugin browsertests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/test/plugin/plugin_windowless_test.h ('k') | content/test/plugin/resource.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/test/plugin/plugin_windowless_test.cc
diff --git a/content/test/plugin/plugin_windowless_test.cc b/content/test/plugin/plugin_windowless_test.cc
deleted file mode 100644
index 5d78bef95c29c462a5d845a7283030e9b2566bb1..0000000000000000000000000000000000000000
--- a/content/test/plugin/plugin_windowless_test.cc
+++ /dev/null
@@ -1,315 +0,0 @@
-// Copyright (c) 2012 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.
-
-#define STRSAFE_NO_DEPRECATE
-
-#include "content/test/plugin/plugin_windowless_test.h"
-
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
-#include "content/test/plugin/plugin_client.h"
-
-// NPEvent does not exist on the Mac.
-#if defined(OS_MACOSX)
-typedef NPCocoaEvent WindowlessPluginTestEvent;
-#else
-typedef NPEvent WindowlessPluginTestEvent;
-#endif
-
-namespace NPAPIClient {
-
-namespace {
-
-// Remember the first plugin instance for tests involving multiple instances.
-WindowlessPluginTest* g_other_instance = NULL;
-
-void OnFinishTest(void* data) {
- static_cast<WindowlessPluginTest*>(data)->SignalTestCompleted();
-}
-
-bool IsPaintEvent(WindowlessPluginTestEvent* np_event) {
-#if defined(OS_WIN)
- return np_event->event == WM_PAINT;
-#elif defined(OS_MACOSX)
- return np_event->type == NPCocoaEventDrawRect;
-#else
- NOTIMPLEMENTED();
- return false;
-#endif
-}
-
-bool IsMouseUpEvent(WindowlessPluginTestEvent* np_event) {
-#if defined(OS_WIN)
- return np_event->event == WM_LBUTTONUP;
-#elif defined(OS_MACOSX)
- return np_event->type == NPCocoaEventMouseUp;
-#else
- NOTIMPLEMENTED();
- return false;
-#endif
-}
-
-#if defined(OS_MACOSX)
-bool IsWindowActivationEvent(WindowlessPluginTestEvent* np_event) {
- return np_event->type == NPCocoaEventWindowFocusChanged &&
- np_event->data.focus.hasFocus;
-}
-#endif
-
-} // namespace
-
-WindowlessPluginTest::WindowlessPluginTest(NPP id,
- NPNetscapeFuncs *host_functions)
- : PluginTest(id, host_functions),
- paint_counter_(0) {
- if (!g_other_instance)
- g_other_instance = this;
-}
-
-bool WindowlessPluginTest::IsWindowless() const {
- return true;
-}
-
-NPError WindowlessPluginTest::New(uint16 mode, int16 argc,
- const char* argn[], const char* argv[],
- NPSavedData* saved) {
- NPError error = PluginTest::New(mode, argc, argn, argv, saved);
-
- if (test_name() == "invoke_js_function_on_create") {
- ExecuteScript(
- NPAPIClient::PluginClient::HostFunctions(), g_other_instance->id(),
- "PluginCreated();", NULL);
- }
-
- return error;
-}
-
-int16 WindowlessPluginTest::HandleEvent(void* event) {
- NPNetscapeFuncs* browser = NPAPIClient::PluginClient::HostFunctions();
-
- NPBool supports_windowless = 0;
- NPError result = browser->getvalue(id(), NPNVSupportsWindowless,
- &supports_windowless);
- if ((result != NPERR_NO_ERROR) || (!supports_windowless)) {
- SetError("Failed to read NPNVSupportsWindowless value");
- SignalTestCompleted();
- return PluginTest::HandleEvent(event);
- }
-
- WindowlessPluginTestEvent* np_event =
- reinterpret_cast<WindowlessPluginTestEvent*>(event);
- if (IsPaintEvent(np_event)) {
- paint_counter_++;
-#if defined(OS_WIN)
- HDC paint_dc = reinterpret_cast<HDC>(np_event->wParam);
- if (paint_dc == NULL) {
- SetError("Invalid Window DC passed to HandleEvent for WM_PAINT");
- SignalTestCompleted();
- return NPERR_GENERIC_ERROR;
- }
-
- HRGN clipping_region = CreateRectRgn(0, 0, 0, 0);
- if (!GetClipRgn(paint_dc, clipping_region)) {
- SetError("No clipping region set in window DC");
- DeleteObject(clipping_region);
- SignalTestCompleted();
- return NPERR_GENERIC_ERROR;
- }
-
- DeleteObject(clipping_region);
-#endif
-
- if (test_name() == "execute_script_delete_in_paint") {
- ExecuteScriptDeleteInPaint(browser);
- } else if (test_name() == "multiple_instances_sync_calls") {
- MultipleInstanceSyncCalls(browser);
- } else if (test_name() == "resize_during_paint") {
- if (paint_counter_ == 1) {
- // So that we get another paint later.
- browser->invalidaterect(id(), NULL);
- } else if (paint_counter_ == 2) {
- // Do this in the second paint since that's asynchronous. The first
- // paint will always be synchronous (since the renderer process doesn't
- // have a cache of the plugin yet). If we try calling NPN_Evaluate while
- // WebKit is painting, it will assert since style recalc is happening
- // during painting.
- ExecuteScriptResizeInPaint(browser);
-
- // So that we can exit the test after the message loop is unrolled.
- browser->pluginthreadasynccall(id(), OnFinishTest, this);
- }
- }
-#if defined(OS_MACOSX)
- } else if (IsWindowActivationEvent(np_event) &&
- test_name() == "convert_point") {
- ConvertPoint(browser);
-#endif
- } else if (IsMouseUpEvent(np_event) &&
- test_name() == "execute_script_delete_in_mouse_up") {
- ExecuteScript(browser, id(), "DeletePluginWithinScript();", NULL);
- SignalTestCompleted();
- } else if (IsMouseUpEvent(np_event) &&
- test_name() == "delete_frame_test") {
- ExecuteScript(
- browser, id(),
- "parent.document.getElementById('frame').outerHTML = ''", NULL);
- }
- // If this test failed, then we'd have crashed by now.
- return PluginTest::HandleEvent(event);
-}
-
-NPError WindowlessPluginTest::ExecuteScript(NPNetscapeFuncs* browser, NPP id,
- const std::string& script, NPVariant* result) {
- std::string script_url = "javascript:";
- script_url += script;
-
- size_t script_length = script_url.length();
- if (script_length != static_cast<uint32_t>(script_length)) {
- return NPERR_GENERIC_ERROR;
- }
-
- NPString script_string = { script_url.c_str(),
- static_cast<uint32_t>(script_length) };
- NPObject *window_obj = NULL;
- browser->getvalue(id, NPNVWindowNPObject, &window_obj);
-
- NPVariant unused_result;
- if (!result)
- result = &unused_result;
-
- return browser->evaluate(id, window_obj, &script_string, result);
-}
-
-void WindowlessPluginTest::ExecuteScriptDeleteInPaint(
- NPNetscapeFuncs* browser) {
- const NPUTF8* urlString = "javascript:DeletePluginWithinScript()";
- const NPUTF8* targetString = NULL;
- browser->geturl(id(), urlString, targetString);
- SignalTestCompleted();
-}
-
-void WindowlessPluginTest::ExecuteScriptResizeInPaint(
- NPNetscapeFuncs* browser) {
- ExecuteScript(browser, id(), "ResizePluginWithinScript();", NULL);
-}
-
-void WindowlessPluginTest::MultipleInstanceSyncCalls(NPNetscapeFuncs* browser) {
- if (this == g_other_instance)
- return;
-
- DCHECK(g_other_instance);
- ExecuteScript(browser, g_other_instance->id(), "TestCallback();", NULL);
- SignalTestCompleted();
-}
-
-#if defined(OS_MACOSX)
-std::string StringForPoint(int x, int y) {
- std::string point_string("(");
- point_string.append(base::IntToString(x));
- point_string.append(", ");
- point_string.append(base::IntToString(y));
- point_string.append(")");
- return point_string;
-}
-#endif
-
-void WindowlessPluginTest::ConvertPoint(NPNetscapeFuncs* browser) {
-#if defined(OS_MACOSX)
- // First, just sanity-test that round trips work.
- NPCoordinateSpace spaces[] = { NPCoordinateSpacePlugin,
- NPCoordinateSpaceWindow,
- NPCoordinateSpaceFlippedWindow,
- NPCoordinateSpaceScreen,
- NPCoordinateSpaceFlippedScreen };
- for (unsigned int i = 0; i < arraysize(spaces); ++i) {
- for (unsigned int j = 0; j < arraysize(spaces); ++j) {
- double x, y, round_trip_x, round_trip_y;
- if (!(browser->convertpoint(id(), 0, 0, spaces[i], &x, &y, spaces[j])) ||
- !(browser->convertpoint(id(), x, y, spaces[j], &round_trip_x,
- &round_trip_y, spaces[i]))) {
- SetError("Conversion failed");
- SignalTestCompleted();
- return;
- }
- if (i != j && x == 0 && y == 0) {
- SetError("Converting a coordinate should change it");
- SignalTestCompleted();
- return;
- }
- if (round_trip_x != 0 || round_trip_y != 0) {
- SetError("Round-trip conversion should return the original point");
- SignalTestCompleted();
- return;
- }
- }
- }
-
- // Now, more extensive testing on a single point.
- double screen_x, screen_y;
- browser->convertpoint(id(), 0, 0, NPCoordinateSpacePlugin,
- &screen_x, &screen_y, NPCoordinateSpaceScreen);
- double flipped_screen_x, flipped_screen_y;
- browser->convertpoint(id(), 0, 0, NPCoordinateSpacePlugin,
- &flipped_screen_x, &flipped_screen_y,
- NPCoordinateSpaceFlippedScreen);
- double window_x, window_y;
- browser->convertpoint(id(), 0, 0, NPCoordinateSpacePlugin,
- &window_x, &window_y, NPCoordinateSpaceWindow);
- double flipped_window_x, flipped_window_y;
- browser->convertpoint(id(), 0, 0, NPCoordinateSpacePlugin,
- &flipped_window_x, &flipped_window_y,
- NPCoordinateSpaceFlippedWindow);
-
- CGRect main_display_bounds = CGDisplayBounds(CGMainDisplayID());
-
- // Check that all the coordinates are right. The constants below are based on
- // the window frame set in the UI test and the content offset in the test
- // html. Y-coordinates are not checked exactly so that the test is robust
- // against toolbar changes, info and bookmark bar visibility, etc.
- const int kWindowHeight = 400;
- const int kWindowXOrigin = 50;
- const int kWindowYOrigin = 50;
- const int kPluginXContentOffset = 50;
- const int kPluginYContentOffset = 50;
- const int kChromeYTolerance = 200;
-
- std::string error_string;
- if (screen_x != flipped_screen_x)
- error_string = "Flipping screen coordinates shouldn't change x";
- else if (flipped_screen_y != main_display_bounds.size.height - screen_y)
- error_string = "Flipped screen coordinates should be flipped vertically";
- else if (screen_x != kWindowXOrigin + kPluginXContentOffset)
- error_string = "Screen x location is wrong";
- else if (flipped_screen_y < kWindowYOrigin + kPluginYContentOffset ||
- flipped_screen_y > kWindowYOrigin + kPluginYContentOffset +
- kChromeYTolerance)
- error_string = "Screen y location is wrong";
- else if (window_x != flipped_window_x)
- error_string = "Flipping window coordinates shouldn't change x";
- else if (flipped_window_y != kWindowHeight - window_y)
- error_string = "Flipped window coordinates should be flipped vertically";
- else if (window_x != kPluginXContentOffset)
- error_string = "Window x location is wrong";
- else if (flipped_window_y < kPluginYContentOffset ||
- flipped_window_y > kPluginYContentOffset + kChromeYTolerance)
- error_string = "Window y location is wrong";
-
- if (!error_string.empty()) {
- error_string.append(" - ");
- error_string.append(StringForPoint(screen_x, screen_y));
- error_string.append(" - ");
- error_string.append(StringForPoint(flipped_screen_x, flipped_screen_y));
- error_string.append(" - ");
- error_string.append(StringForPoint(window_x, window_y));
- error_string.append(" - ");
- error_string.append(StringForPoint(flipped_window_x, flipped_window_y));
- SetError(error_string);
- }
-#else
- SetError("Unimplemented");
-#endif
- SignalTestCompleted();
-}
-
-} // namespace NPAPIClient
« no previous file with comments | « content/test/plugin/plugin_windowless_test.h ('k') | content/test/plugin/resource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698