1563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/*
2563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
3563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
4563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Redistribution and use in source and binary forms, with or without
5563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * modification, are permitted provided that the following conditions
6563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * are met:
7563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 1. Redistributions of source code must retain the above copyright
8563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *    notice, this list of conditions and the following disclaimer.
9563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 2. Redistributions in binary form must reproduce the above copyright
10563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *    notice, this list of conditions and the following disclaimer in the
11563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *    documentation and/or other materials provided with the distribution.
12563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
13563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */
25563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
2628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#ifndef PluginObject_h
2728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#define PluginObject_h
2828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu
29563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <WebKit/npfunctions.h>
302daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include <stdarg.h>
31563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
32db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#if defined(XP_MACOSX)
33e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#if !defined(MAC_OS_X_VERSION_10_5) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
34e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#define BUILDING_ON_TIGER 1
35e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#elif !defined(MAC_OS_X_VERSION_10_6) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6
36e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#define BUILDING_ON_LEOPARD 1
37e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#elif !defined(MAC_OS_X_VERSION_10_7) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
38e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#define BUILDING_ON_SNOW_LEOPARD 1
39e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#endif
40e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#endif // XP_MACOSX
41e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
42db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockclass PluginTest;
43db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
44563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkextern NPNetscapeFuncs *browser;
45e14391e94c850b8bd03680c23b38978db68687a8John Reckextern NPPluginFuncs* pluginFunctions;
46563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
47563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarktypedef struct {
48563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    NPObject header;
49563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
50db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    PluginTest* pluginTest;
51db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
52563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    NPP npp;
53563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    NPBool eventLogging;
54563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    NPBool logSetWindow;
55563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    NPBool logDestroy;
56e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    NPBool returnNegativeOneFromWrite;
57563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    NPBool returnErrorFromNewStream;
58cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    NPBool cachedPrivateBrowsingMode;
59563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    NPObject* testObject;
60dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    NPObject* rememberedObject;
61563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    NPStream* stream;
626c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    NPBool testGetURLOnDestroy;
63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    NPBool testWindowOpen;
64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    NPBool testKeyboardFocusForPlugins;
65bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    NPBool mouseDownForEvaluateScript;
66563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    char* onStreamLoad;
67563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    char* onStreamDestroy;
68643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    char* onDestroy;
69563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    char* onURLNotify;
70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    char* onSetWindow;
71f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    char* onPaintEvent;
72563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    char* firstUrl;
73563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    char* firstHeaders;
74563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    char* lastUrl;
75563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    char* lastHeaders;
76bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    char* evaluateScriptOnMouseDownOrKeyDown;
77563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#ifdef XP_MACOSX
78563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    NPEventModel eventModel;
79563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#endif
80db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#if defined(XP_MACOSX) && !defined(BUILDING_ON_TIGER)
81e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    void* coreAnimationLayer;
82e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#endif
83dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    NPWindow lastWindow;
84563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} PluginObject;
85563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
86563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkextern NPClass *getPluginClass(void);
87563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkextern void handleCallback(PluginObject* object, const char *url, NPReason reason, void *notifyData);
88563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkextern void notifyStream(PluginObject* object, const char *url, const char *headers);
89563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkextern void testNPRuntime(NPP npp);
900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochextern void pluginLog(NPP instance, const char* format, ...);
912daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochextern void pluginLogWithArguments(NPP instance, const char* format, va_list args);
92643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockextern bool testDocumentOpen(NPP npp);
93643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockextern bool testWindowOpen(NPP npp);
94e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
95db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#if defined(XP_MACOSX) && !defined(BUILDING_ON_TIGER)
96e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkeextern void* createCoreAnimationLayer();
97e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#endif
98e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
9928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#endif // PluginObject_h
100