Home | History | Annotate | Download | only in plugin
      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 #ifndef CONTENT_TEST_PLUGIN_PLUGIN_NPOBJECT_LIFETIME_TEST_H_
      6 #define CONTENT_TEST_PLUGIN_PLUGIN_NPOBJECT_LIFETIME_TEST_H_
      7 
      8 #include "base/compiler_specific.h"
      9 #include "build/build_config.h"
     10 #include "content/test/plugin/plugin_test.h"
     11 
     12 namespace NPAPIClient {
     13 
     14 // The NPObjectLifeTime class tests the case where a plugin has an NPObject
     15 // which points to a different plugin instance on a different frame in the
     16 // page and whether refcounts on this npobject are valid when the source frame
     17 // is destroyed.
     18 class NPObjectLifetimeTest : public PluginTest {
     19  public:
     20   // Constructor.
     21   NPObjectLifetimeTest(NPP id, NPNetscapeFuncs *host_functions);
     22 
     23   // NPAPI SetWindow handler.
     24   virtual NPError SetWindow(NPWindow* pNPWindow) OVERRIDE;
     25 
     26   virtual void  URLNotify(const char* url,
     27                           NPReason reason,
     28                           void* data) OVERRIDE;
     29 
     30  protected:
     31   NPObject* other_plugin_instance_object_;
     32 
     33 #if defined(OS_WIN)
     34   static void CALLBACK TimerProc(HWND window, UINT message, UINT_PTR timer_id,
     35                                  DWORD elapsed_milli_seconds);
     36   UINT_PTR timer_id_;
     37 #endif
     38   DISALLOW_IMPLICIT_CONSTRUCTORS(NPObjectLifetimeTest);
     39 };
     40 
     41 // The NPObjectLifetimeTestInstance2 class represents the plugin instance
     42 // which is deleted by the NPObjectLifeTime class via a javascript function.
     43 class NPObjectLifetimeTestInstance2 : public PluginTest {
     44  public:
     45   // Constructor.
     46   NPObjectLifetimeTestInstance2(NPP id, NPNetscapeFuncs *host_functions);
     47   virtual ~NPObjectLifetimeTestInstance2();
     48 
     49   // NPAPI SetWindow handler.
     50   virtual NPError SetWindow(NPWindow* pNPWindow) OVERRIDE;
     51  protected:
     52   static NPObject* plugin_instance_object_;
     53   friend class NPObjectLifetimeTest;
     54 
     55   DISALLOW_IMPLICIT_CONSTRUCTORS(NPObjectLifetimeTestInstance2);
     56 };
     57 
     58 // The NPObjectLifeTime class tests the case where a plugin instance is
     59 // destroyed in NPN_Evaluate
     60 class NPObjectDeletePluginInNPN_Evaluate : public PluginTest {
     61  public:
     62   // Constructor.
     63   NPObjectDeletePluginInNPN_Evaluate(NPP id, NPNetscapeFuncs *host_functions);
     64   virtual ~NPObjectDeletePluginInNPN_Evaluate();
     65 
     66   // NPAPI SetWindow handler.
     67   virtual NPError SetWindow(NPWindow* pNPWindow) OVERRIDE;
     68 
     69  protected:
     70   NPObject* plugin_instance_object_;
     71 #if defined(OS_WIN)
     72   static void CALLBACK TimerProc(HWND window, UINT message, UINT_PTR timer_id,
     73                                  DWORD elapsed_milli_seconds);
     74   UINT_PTR timer_id_;
     75 #endif
     76 
     77  private:
     78   static NPObjectDeletePluginInNPN_Evaluate* g_npn_evaluate_test_instance_;
     79 
     80   DISALLOW_IMPLICIT_CONSTRUCTORS(NPObjectDeletePluginInNPN_Evaluate);
     81 };
     82 
     83 }  // namespace NPAPIClient
     84 
     85 #endif  // CONTENT_TEST_PLUGIN_PLUGIN_NPOBJECT_LIFETIME_TEST_H_
     86