Update Chromium DRT to output binary (instead of base64-encoded) data for web audio...
[WebKit-https.git] / Source / WebKit / chromium / public / WebBindings.h
1 /*
2  * Copyright (C) 2009 Google 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 are
6  * met:
7  *
8  *     * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above
11  * copyright notice, this list of conditions and the following disclaimer
12  * in the documentation and/or other materials provided with the
13  * distribution.
14  *     * Neither the name of Google Inc. nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #ifndef WebBindings_h
32 #define WebBindings_h
33
34 #include "WebCommon.h"
35 #include "WebString.h"
36 #include "WebVector.h"
37 #include <bindings/npruntime.h>
38
39 namespace WebKit {
40
41 class WebArrayBufferView;
42 class WebDragData;
43 class WebElement;
44 class WebNode;
45 class WebRange;
46
47 // A haphazard collection of functions for dealing with plugins.
48 class WebBindings {
49 public:
50     // NPN Functions ------------------------------------------------------
51     // These are all defined in npruntime.h and are well documented.
52
53     // NPN_Construct
54     WEBKIT_API static bool construct(NPP, NPObject*, const NPVariant* args, uint32_t argCount, NPVariant* result);
55
56     // NPN_CreateObject
57     WEBKIT_API static NPObject* createObject(NPP, NPClass*);
58
59     // NPN_Enumerate
60     WEBKIT_API static bool enumerate(NPP, NPObject*, NPIdentifier**, uint32_t* identifierCount);
61
62     // NPN_Evaluate
63     WEBKIT_API static bool evaluate(NPP, NPObject*, NPString* script, NPVariant* result);
64
65     // NPN_EvaluateHelper
66     WEBKIT_API static bool evaluateHelper(NPP, bool popupsAllowed, NPObject*, NPString* script, NPVariant* result);
67
68     // NPN_GetIntIdentifier
69     WEBKIT_API static NPIdentifier getIntIdentifier(int32_t number);
70
71     // NPN_GetProperty
72     WEBKIT_API static bool getProperty(NPP, NPObject*, NPIdentifier property, NPVariant *result);
73
74     // NPN_GetStringIdentifier
75     WEBKIT_API static NPIdentifier getStringIdentifier(const NPUTF8* string);
76
77     // NPN_GetStringIdentifiers
78     WEBKIT_API static void getStringIdentifiers(const NPUTF8** names, int32_t nameCount, NPIdentifier*);
79
80     // NPN_HasMethod
81     WEBKIT_API static bool hasMethod(NPP, NPObject*, NPIdentifier method);
82
83     // NPN_HasProperty
84     WEBKIT_API static bool hasProperty(NPP, NPObject*, NPIdentifier property);
85
86     // NPN_IdentifierIsString
87     WEBKIT_API static bool identifierIsString(NPIdentifier);
88
89     // NPN_InitializeVariantWithStringCopy (though sometimes prefixed with an underscore)
90     WEBKIT_API static void initializeVariantWithStringCopy(NPVariant*, const NPString*);
91
92     // NPN_IntFromIdentifier
93     WEBKIT_API static int32_t intFromIdentifier(NPIdentifier);
94
95     // NPN_Invoke
96     WEBKIT_API static bool invoke(NPP, NPObject*, NPIdentifier method, const NPVariant* args, uint32_t argCount, NPVariant* result);
97
98     // NPN_InvokeDefault
99     WEBKIT_API static bool invokeDefault(NPP, NPObject*, const NPVariant* args, uint32_t argCount, NPVariant* result);
100
101     // NPN_ReleaseObject
102     WEBKIT_API static void releaseObject(NPObject*);
103
104     // NPN_ReleaseVariantValue
105     WEBKIT_API static void releaseVariantValue(NPVariant*);
106
107     // NPN_RemoveProperty
108     WEBKIT_API static bool removeProperty(NPP, NPObject*, NPIdentifier);
109
110     // NPN_RetainObject
111     WEBKIT_API static NPObject* retainObject(NPObject*);
112
113     // NPN_SetException
114     WEBKIT_API static void setException(NPObject*, const NPUTF8* message);
115
116     // NPN_SetProperty
117     WEBKIT_API static bool setProperty(NPP, NPObject*, NPIdentifier, const NPVariant*);
118
119     // _NPN_UnregisterObject
120     WEBKIT_API static void unregisterObject(NPObject*);
121
122     // NPN_UTF8FromIdentifier
123     WEBKIT_API static NPUTF8* utf8FromIdentifier(NPIdentifier);
124
125     // Miscellaneous utility functions ----------------------------------------
126
127     // Complement to NPN_Get___Identifier functions.  Extracts data from the NPIdentifier data
128     // structure.  If isString is true upon return, string will be set but number's value is
129     // undefined.  If iString is false, the opposite is true.
130     WEBKIT_API static void extractIdentifierData(const NPIdentifier&, const NPUTF8*& string, int32_t& number, bool& isString);
131
132     // DumpRenderTree support -------------------------------------------------
133
134     // Return true (success) if the given npobj is a range object.
135     // If so, return that range as a WebRange object.
136     WEBKIT_API static bool getRange(NPObject* range, WebRange*);
137
138     // Return true (success) if the given npobj is an ArrayBufferView object.
139     // If so, return it as a WebArrayBufferView object.
140     WEBKIT_API static bool getArrayBufferView(NPObject* arrayBufferView, WebArrayBufferView*);
141
142     // Return true (success) if the given npobj is an element.
143     // If so, return that element as a WebElement object.
144     WEBKIT_API static bool getElement(NPObject* element, WebElement*);
145
146     WEBKIT_API static NPObject* makeIntArray(const WebVector<int>&);
147     WEBKIT_API static NPObject* makeStringArray(const WebVector<WebString>&);
148
149     // Exceptions -------------------------------------------------------------
150
151     typedef void (ExceptionHandler)(void* data, const NPUTF8* message);
152
153     // The exception handler will be notified of any exceptions thrown while
154     // operating on a NPObject.
155     WEBKIT_API static void pushExceptionHandler(ExceptionHandler, void* data);
156     WEBKIT_API static void popExceptionHandler();
157 };
158
159 } // namespace WebKit
160
161 #endif