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.
5 #ifndef CONTENT_TEST_PLUGIN_PLUGIN_TEST_H_
6 #define CONTENT_TEST_PLUGIN_PLUGIN_TEST_H_
10 #include "third_party/npapi/bindings/npapi.h"
11 #include "third_party/npapi/bindings/nphostapi.h"
13 namespace NPAPIClient
{
15 // A PluginTest represents an instance of the plugin, which in
16 // our case is a test case.
20 PluginTest(NPP id
, NPNetscapeFuncs
*host_functions
);
23 virtual ~PluginTest();
25 // Returns true if the test runs in windowless plugin mode.
26 virtual bool IsWindowless() const;
31 virtual NPError
New(uint16 mode
, int16 argc
, const char* argn
[],
32 const char* argv
[], NPSavedData
* saved
);
33 virtual NPError
Destroy();
34 virtual NPError
SetWindow(NPWindow
* pNPWindow
);
35 virtual NPError
NewStream(NPMIMEType type
, NPStream
* stream
,
36 NPBool seekable
, uint16
* stype
);
37 virtual int32
WriteReady(NPStream
*stream
);
38 virtual int32
Write(NPStream
*stream
, int32 offset
, int32 len
,
40 virtual NPError
DestroyStream(NPStream
*stream
, NPError reason
);
41 virtual void StreamAsFile(NPStream
* stream
, const char* fname
);
42 virtual void URLNotify(const char* url
, NPReason reason
, void* data
);
43 virtual int16
HandleEvent(void* event
);
44 virtual void URLRedirectNotify(const char* url
, int32_t status
,
47 // Returns true if the test has not had any errors.
48 bool Succeeded() { return test_status_
.length() == 0; }
50 // Sets an error for the test case. Appends the msg to the
51 // error that will be returned from the test.
52 void SetError(const std::string
&msg
);
54 // Expect two string values are equal, and if not, logs an
55 // appropriate error about it.
56 void ExpectStringLowerCaseEqual(const std::string
&val1
,
57 const std::string
&val2
);
59 // Expect two values to not be equal, and if they are
60 // logs an appropriate error about it.
61 void ExpectAsciiStringNotEqual(const char *val1
, const char *val2
);
63 // Expect two integer values are equal, and if not, logs an
64 // appropriate error about it.
65 void ExpectIntegerEqual(int val1
, int val2
);
67 // Signals to the Test that invoked us that the test is
68 // completed. This is done by forcing the plugin to
69 // set a cookie in the browser window, which the test program
70 // is waiting for. Note - because this is done by
71 // using javascript, the browser must have the frame
72 // setup before the plugin calls this function. So plugin
73 // tests MUST NOT call this function prior to having
74 // received the SetWindow() callback from the browser.
75 void SignalTestCompleted();
78 // Helper function to lookup names in the input array.
79 // If the name is found, returns the value, otherwise
81 const char *GetArgValue(const char *name
, const int16 argc
,
82 const char *argn
[], const char *argv
[]);
84 // Access to the list of functions provided
86 NPNetscapeFuncs
*HostFunctions() { return host_functions_
; }
88 // The NPP Identifier for this plugin instance.
89 NPP
id() { return id_
; }
90 std::string
test_id() const { return test_id_
; }
91 std::string
test_name() const { return test_name_
; }
92 bool test_completed() const { return test_completed_
; }
95 NPNetscapeFuncs
* host_functions_
;
96 std::string test_name_
;
98 std::string test_status_
;
102 } // namespace NPAPIClient
104 #endif // CONTENT_TEST_PLUGIN_PLUGIN_TEST_H_