summaryrefslogtreecommitdiffstats
path: root/content/test/plugin/plugin_npobject_lifetime_test.h
diff options
context:
space:
mode:
Diffstat (limited to 'content/test/plugin/plugin_npobject_lifetime_test.h')
-rw-r--r--content/test/plugin/plugin_npobject_lifetime_test.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/content/test/plugin/plugin_npobject_lifetime_test.h b/content/test/plugin/plugin_npobject_lifetime_test.h
new file mode 100644
index 0000000..baf0ee8
--- /dev/null
+++ b/content/test/plugin/plugin_npobject_lifetime_test.h
@@ -0,0 +1,85 @@
+// Copyright (c) 2011 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.
+
+#ifndef CONTENT_TEST_PLUGIN_PLUGIN_NPOBJECT_LIFETIME_TEST_H_
+#define CONTENT_TEST_PLUGIN_PLUGIN_NPOBJECT_LIFETIME_TEST_H_
+
+#include "base/compiler_specific.h"
+#include "build/build_config.h"
+#include "content/test/plugin/plugin_test.h"
+
+namespace NPAPIClient {
+
+// The NPObjectLifeTime class tests the case where a plugin has an NPObject
+// which points to a different plugin instance on a different frame in the
+// page and whether refcounts on this npobject are valid when the source frame
+// is destroyed.
+class NPObjectLifetimeTest : public PluginTest {
+ public:
+ // Constructor.
+ NPObjectLifetimeTest(NPP id, NPNetscapeFuncs *host_functions);
+
+ // NPAPI SetWindow handler.
+ virtual NPError SetWindow(NPWindow* pNPWindow) OVERRIDE;
+
+ virtual void URLNotify(const char* url,
+ NPReason reason,
+ void* data) OVERRIDE;
+
+ protected:
+ NPObject* other_plugin_instance_object_;
+
+#if defined(OS_WIN)
+ static void CALLBACK TimerProc(HWND window, UINT message, UINT_PTR timer_id,
+ DWORD elapsed_milli_seconds);
+ UINT_PTR timer_id_;
+#endif
+ DISALLOW_IMPLICIT_CONSTRUCTORS(NPObjectLifetimeTest);
+};
+
+// The NPObjectLifetimeTestInstance2 class represents the plugin instance
+// which is deleted by the NPObjectLifeTime class via a javascript function.
+class NPObjectLifetimeTestInstance2 : public PluginTest {
+ public:
+ // Constructor.
+ NPObjectLifetimeTestInstance2(NPP id, NPNetscapeFuncs *host_functions);
+ virtual ~NPObjectLifetimeTestInstance2();
+
+ // NPAPI SetWindow handler.
+ virtual NPError SetWindow(NPWindow* pNPWindow) OVERRIDE;
+ protected:
+ static NPObject* plugin_instance_object_;
+ friend class NPObjectLifetimeTest;
+
+ DISALLOW_IMPLICIT_CONSTRUCTORS(NPObjectLifetimeTestInstance2);
+};
+
+// The NPObjectLifeTime class tests the case where a plugin instance is
+// destroyed in NPN_Evaluate
+class NPObjectDeletePluginInNPN_Evaluate : public PluginTest {
+ public:
+ // Constructor.
+ NPObjectDeletePluginInNPN_Evaluate(NPP id, NPNetscapeFuncs *host_functions);
+ virtual ~NPObjectDeletePluginInNPN_Evaluate();
+
+ // NPAPI SetWindow handler.
+ virtual NPError SetWindow(NPWindow* pNPWindow) OVERRIDE;
+
+ protected:
+ NPObject* plugin_instance_object_;
+#if defined(OS_WIN)
+ static void CALLBACK TimerProc(HWND window, UINT message, UINT_PTR timer_id,
+ DWORD elapsed_milli_seconds);
+ UINT_PTR timer_id_;
+#endif
+
+ private:
+ static NPObjectDeletePluginInNPN_Evaluate* g_npn_evaluate_test_instance_;
+
+ DISALLOW_IMPLICIT_CONSTRUCTORS(NPObjectDeletePluginInNPN_Evaluate);
+};
+
+} // namespace NPAPIClient
+
+#endif // CONTENT_TEST_PLUGIN_PLUGIN_NPOBJECT_LIFETIME_TEST_H_