1 // Copyright (c) 2012 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.
5 #ifndef PPAPI_TESTS_TEST_INSTANCE_H_
6 #define PPAPI_TESTS_TEST_INSTANCE_H_
11 #include "ppapi/cpp/dev/scriptable_object_deprecated.h"
12 #include "ppapi/tests/test_case.h"
16 // ScriptableObject used by TestInstance.
17 class InstanceSO
: public pp::deprecated::ScriptableObject
{
19 explicit InstanceSO(TestInstance
* i
);
20 virtual ~InstanceSO();
22 // pp::deprecated::ScriptableObject overrides.
23 bool HasMethod(const pp::Var
& name
, pp::Var
* exception
);
24 pp::Var
Call(const pp::Var
& name
,
25 const std::vector
<pp::Var
>& args
,
28 // For out-of-process, the InstanceSO might be deleted after the instance was
29 // already destroyed, so we can't rely on test_instance_ being valid.
30 void clear_test_instance() { test_instance_
= NULL
; }
33 TestInstance
* test_instance_
;
34 const PPB_Testing_Private
* testing_interface_
;
37 class TestInstance
: public TestCase
{
39 TestInstance(TestingInstance
* instance
);
40 virtual ~TestInstance();
42 // TestCase implementation.
44 virtual void RunTests(const std::string
& filter
);
46 void set_string(const std::string
& s
) { string_
= s
; }
48 // Leak a reference to the given var, but ignore the leak in the leak checking
49 // that happens at shutdown. This allows us to test the "ForceFree" that
50 // happens on instance shutdown.
51 void LeakReferenceAndIgnore(const pp::Var
& leaked
);
53 // This resets the scriptable object if it gets destroyed before the instance
54 // which should be the case for in-process tests.
55 void clear_instance_so() { instance_so_
= NULL
; }
58 // Test case protected overrides.
59 virtual pp::deprecated::ScriptableObject
* CreateTestObject();
62 std::string
TestExecuteScript();
63 std::string
TestRecursiveObjects();
64 std::string
TestLeakedObjectDestructors();
65 std::string
TestSetupExecuteScriptAtInstanceShutdown();
66 std::string
TestExecuteScriptAtInstanceShutdown();
68 // Value written by set_string which is called by the ScriptableObject. This
69 // allows us to keep track of what was called.
72 // The scriptable object for this test.
73 InstanceSO
* instance_so_
;
76 #endif // PPAPI_TESTS_TEST_INSTANCE_H_