1/*
2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#ifndef PluginObject_h
27#define PluginObject_h
28
29#include <WebKit/npfunctions.h>
30#include <stdarg.h>
31#include <wtf/Assertions.h>
32
33class PluginTest;
34
35extern NPNetscapeFuncs *browser;
36extern NPPluginFuncs* pluginFunctions;
37
38typedef struct {
39 NPObject header;
40
41 PluginTest* pluginTest;
42
43 NPP npp;
44 NPBool eventLogging;
45 NPBool logSetWindow;
46 NPBool logDestroy;
47 NPBool returnNegativeOneFromWrite;
48 NPBool returnErrorFromNewStream;
49 NPObject* testObject;
50 NPObject* rememberedObject;
51 NPStream* stream;
52 NPBool testGetURLOnDestroy;
53 NPBool testWindowOpen;
54 NPBool testKeyboardFocusForPlugins;
55 NPBool mouseDownForEvaluateScript;
56 char* onStreamLoad;
57 char* onStreamDestroy;
58 char* onDestroy;
59 char* onURLNotify;
60 char* onSetWindow;
61 char* onPaintEvent;
62 char* firstUrl;
63 char* firstHeaders;
64 char* lastUrl;
65 char* lastHeaders;
66 char* evaluateScriptOnMouseDownOrKeyDown;
67#ifdef XP_MACOSX
68 NPEventModel eventModel;
69#endif
70#ifdef XP_MACOSX
71 const void* coreAnimationLayer;
72#endif
73 NPWindow lastWindow;
74} PluginObject;
75
76extern NPClass *getPluginClass(void);
77extern void handleCallback(PluginObject* object, const char *url, NPReason reason, void *notifyData);
78extern void notifyStream(PluginObject* object, const char *url, const char *headers);
79extern void testNPRuntime(NPP npp);
80extern void pluginLog(NPP instance, const char* format, ...) WTF_ATTRIBUTE_PRINTF(2, 3);
81extern void pluginLogWithArguments(NPP instance, const char* format, va_list args) WTF_ATTRIBUTE_PRINTF(2, 0);
82extern bool testDocumentOpen(NPP npp);
83extern bool testWindowOpen(NPP npp);
84
85#ifdef XP_MACOSX
86extern const void* createCoreAnimationLayer();
87#endif
88
89#endif
90