| /* |
| * Copyright (C) 2009 Google Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are |
| * met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * Redistributions in binary form must reproduce the above |
| * copyright notice, this list of conditions and the following disclaimer |
| * in the documentation and/or other materials provided with the |
| * distribution. |
| * * Neither the name of Google Inc. nor the names of its |
| * contributors may be used to endorse or promote products derived from |
| * this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #ifndef V8CustomBinding_h |
| #define V8CustomBinding_h |
| |
| #include "V8Index.h" |
| #include <v8.h> |
| |
| struct NPObject; |
| |
| #define CALLBACK_FUNC_DECL(NAME) v8::Handle<v8::Value> V8Custom::v8##NAME##Callback(const v8::Arguments& args) |
| |
| #define ACCESSOR_GETTER(NAME) \ |
| v8::Handle<v8::Value> V8Custom::v8##NAME##AccessorGetter( \ |
| v8::Local<v8::String> name, const v8::AccessorInfo& info) |
| |
| #define ACCESSOR_SETTER(NAME) \ |
| void V8Custom::v8##NAME##AccessorSetter(v8::Local<v8::String> name, \ |
| v8::Local<v8::Value> value, const v8::AccessorInfo& info) |
| |
| #define INDEXED_PROPERTY_GETTER(NAME) \ |
| v8::Handle<v8::Value> V8Custom::v8##NAME##IndexedPropertyGetter( \ |
| uint32_t index, const v8::AccessorInfo& info) |
| |
| #define INDEXED_PROPERTY_SETTER(NAME) \ |
| v8::Handle<v8::Value> V8Custom::v8##NAME##IndexedPropertySetter( \ |
| uint32_t index, v8::Local<v8::Value> value, const v8::AccessorInfo& info) |
| |
| #define INDEXED_PROPERTY_DELETER(NAME) \ |
| v8::Handle<v8::Boolean> V8Custom::v8##NAME##IndexedPropertyDeleter( \ |
| uint32_t index, const v8::AccessorInfo& info) |
| |
| #define NAMED_PROPERTY_GETTER(NAME) \ |
| v8::Handle<v8::Value> V8Custom::v8##NAME##NamedPropertyGetter( \ |
| v8::Local<v8::String> name, const v8::AccessorInfo& info) |
| |
| #define NAMED_PROPERTY_SETTER(NAME) \ |
| v8::Handle<v8::Value> V8Custom::v8##NAME##NamedPropertySetter( \ |
| v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) |
| |
| #define NAMED_PROPERTY_DELETER(NAME) \ |
| v8::Handle<v8::Boolean> V8Custom::v8##NAME##NamedPropertyDeleter( \ |
| v8::Local<v8::String> name, const v8::AccessorInfo& info) |
| |
| #define NAMED_ACCESS_CHECK(NAME) \ |
| bool V8Custom::v8##NAME##NamedSecurityCheck(v8::Local<v8::Object> host, \ |
| v8::Local<v8::Value> key, v8::AccessType type, v8::Local<v8::Value> data) |
| |
| #define INDEXED_ACCESS_CHECK(NAME) \ |
| bool V8Custom::v8##NAME##IndexedSecurityCheck(v8::Local<v8::Object> host, \ |
| uint32_t index, v8::AccessType type, v8::Local<v8::Value> data) |
| |
| namespace WebCore { |
| |
| class DOMWindow; |
| class Element; |
| class Frame; |
| class HTMLCollection; |
| class HTMLFrameElementBase; |
| class String; |
| class V8Proxy; |
| |
| bool allowSettingFrameSrcToJavascriptUrl(HTMLFrameElementBase*, String value); |
| bool allowSettingSrcToJavascriptURL(Element*, String name, String value); |
| |
| class V8Custom { |
| public: |
| // Constants. |
| static const int kDOMWrapperTypeIndex = 0; |
| static const int kDOMWrapperObjectIndex = 1; |
| static const int kDefaultWrapperInternalFieldCount = 2; |
| |
| static const int kNPObjectInternalFieldCount = kDefaultWrapperInternalFieldCount + 0; |
| |
| static const int kNodeEventListenerCacheIndex = kDefaultWrapperInternalFieldCount + 0; |
| static const int kNodeMinimumInternalFieldCount = kDefaultWrapperInternalFieldCount + 1; |
| |
| static const int kDocumentImplementationIndex = kNodeMinimumInternalFieldCount + 0; |
| static const int kDocumentMinimumInternalFieldCount = kNodeMinimumInternalFieldCount + 1; |
| |
| static const int kHTMLDocumentMarkerIndex = kDocumentMinimumInternalFieldCount + 0; |
| static const int kHTMLDocumentShadowIndex = kDocumentMinimumInternalFieldCount + 1; |
| static const int kHTMLDocumentInternalFieldCount = kDocumentMinimumInternalFieldCount + 2; |
| |
| static const int kXMLHttpRequestCacheIndex = kDefaultWrapperInternalFieldCount + 0; |
| static const int kXMLHttpRequestInternalFieldCount = kDefaultWrapperInternalFieldCount + 1; |
| |
| static const int kMessageChannelPort1Index = kDefaultWrapperInternalFieldCount + 0; |
| static const int kMessageChannelPort2Index = kDefaultWrapperInternalFieldCount + 1; |
| static const int kMessageChannelInternalFieldCount = kDefaultWrapperInternalFieldCount + 2; |
| |
| static const int kMessagePortRequestCacheIndex = kDefaultWrapperInternalFieldCount + 0; |
| static const int kMessagePortEntangledPortIndex = kDefaultWrapperInternalFieldCount + 1; |
| static const int kMessagePortInternalFieldCount = kDefaultWrapperInternalFieldCount + 2; |
| |
| #if ENABLE(WORKERS) |
| static const int kWorkerRequestCacheIndex = kDefaultWrapperInternalFieldCount + 0; |
| static const int kWorkerInternalFieldCount = kDefaultWrapperInternalFieldCount + 1; |
| |
| static const int kWorkerContextRequestCacheIndex = kDefaultWrapperInternalFieldCount + 0; |
| static const int kWorkerContextMinimumInternalFieldCount = kDefaultWrapperInternalFieldCount + 1; |
| |
| static const int kDedicatedWorkerContextRequestCacheIndex = kWorkerContextMinimumInternalFieldCount + 0; |
| static const int kDedicatedWorkerContextInternalFieldCount = kWorkerContextMinimumInternalFieldCount + 1; |
| |
| static const int kAbstractWorkerRequestCacheIndex = kDefaultWrapperInternalFieldCount + 0; |
| static const int kAbstractWorkerInternalFieldCount = kDefaultWrapperInternalFieldCount + 1; |
| #endif |
| |
| static const int kDOMWindowConsoleIndex = kDefaultWrapperInternalFieldCount + 0; |
| static const int kDOMWindowHistoryIndex = kDefaultWrapperInternalFieldCount + 1; |
| static const int kDOMWindowLocationbarIndex = kDefaultWrapperInternalFieldCount + 2; |
| static const int kDOMWindowMenubarIndex = kDefaultWrapperInternalFieldCount + 3; |
| static const int kDOMWindowNavigatorIndex = kDefaultWrapperInternalFieldCount + 4; |
| static const int kDOMWindowPersonalbarIndex = kDefaultWrapperInternalFieldCount + 5; |
| static const int kDOMWindowScreenIndex = kDefaultWrapperInternalFieldCount + 6; |
| static const int kDOMWindowScrollbarsIndex = kDefaultWrapperInternalFieldCount + 7; |
| static const int kDOMWindowSelectionIndex = kDefaultWrapperInternalFieldCount + 8; |
| static const int kDOMWindowStatusbarIndex = kDefaultWrapperInternalFieldCount + 9; |
| static const int kDOMWindowToolbarIndex = kDefaultWrapperInternalFieldCount + 10; |
| static const int kDOMWindowLocationIndex = kDefaultWrapperInternalFieldCount + 11; |
| static const int kDOMWindowDOMSelectionIndex = kDefaultWrapperInternalFieldCount + 12; |
| static const int kDOMWindowInternalFieldCount = kDefaultWrapperInternalFieldCount + 13; |
| |
| static const int kStyleSheetOwnerNodeIndex = kDefaultWrapperInternalFieldCount + 0; |
| static const int kStyleSheetInternalFieldCount = kDefaultWrapperInternalFieldCount + 1; |
| |
| #if ENABLE(OFFLINE_WEB_APPLICATIONS) |
| static const int kDOMApplicationCacheCacheIndex = kDefaultWrapperInternalFieldCount + 0; |
| static const int kDOMApplicationCacheFieldCount = kDefaultWrapperInternalFieldCount + 1; |
| #endif |
| |
| #define DECLARE_PROPERTY_ACCESSOR_GETTER(NAME) \ |
| static v8::Handle<v8::Value> v8##NAME##AccessorGetter( \ |
| v8::Local<v8::String> name, const v8::AccessorInfo& info) |
| |
| #define DECLARE_PROPERTY_ACCESSOR_SETTER(NAME) \ |
| static void v8##NAME##AccessorSetter(v8::Local<v8::String> name, \ |
| v8::Local<v8::Value> value, const v8::AccessorInfo& info) |
| |
| #define DECLARE_PROPERTY_ACCESSOR(NAME) DECLARE_PROPERTY_ACCESSOR_GETTER(NAME); DECLARE_PROPERTY_ACCESSOR_SETTER(NAME) |
| |
| #define DECLARE_NAMED_PROPERTY_GETTER(NAME) \ |
| static v8::Handle<v8::Value> v8##NAME##NamedPropertyGetter( \ |
| v8::Local<v8::String> name, const v8::AccessorInfo& info) |
| |
| #define DECLARE_NAMED_PROPERTY_SETTER(NAME) \ |
| static v8::Handle<v8::Value> v8##NAME##NamedPropertySetter( \ |
| v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) |
| |
| #define DECLARE_NAMED_PROPERTY_DELETER(NAME) \ |
| static v8::Handle<v8::Boolean> v8##NAME##NamedPropertyDeleter( \ |
| v8::Local<v8::String> name, const v8::AccessorInfo& info) |
| |
| #define USE_NAMED_PROPERTY_GETTER(NAME) V8Custom::v8##NAME##NamedPropertyGetter |
| |
| #define USE_NAMED_PROPERTY_SETTER(NAME) V8Custom::v8##NAME##NamedPropertySetter |
| |
| #define USE_NAMED_PROPERTY_DELETER(NAME) V8Custom::v8##NAME##NamedPropertyDeleter |
| |
| #define DECLARE_INDEXED_PROPERTY_GETTER(NAME) \ |
| static v8::Handle<v8::Value> v8##NAME##IndexedPropertyGetter( \ |
| uint32_t index, const v8::AccessorInfo& info) |
| |
| #define DECLARE_INDEXED_PROPERTY_SETTER(NAME) \ |
| static v8::Handle<v8::Value> v8##NAME##IndexedPropertySetter( \ |
| uint32_t index, v8::Local<v8::Value> value, const v8::AccessorInfo& info) |
| |
| #define DECLARE_INDEXED_PROPERTY_DELETER(NAME) \ |
| static v8::Handle<v8::Boolean> v8##NAME##IndexedPropertyDeleter( \ |
| uint32_t index, const v8::AccessorInfo& info) |
| |
| #define USE_INDEXED_PROPERTY_GETTER(NAME) V8Custom::v8##NAME##IndexedPropertyGetter |
| |
| #define USE_INDEXED_PROPERTY_SETTER(NAME) V8Custom::v8##NAME##IndexedPropertySetter |
| |
| #define USE_INDEXED_PROPERTY_DELETER(NAME) V8Custom::v8##NAME##IndexedPropertyDeleter |
| |
| #define DECLARE_CALLBACK(NAME) static v8::Handle<v8::Value> v8##NAME##Callback(const v8::Arguments& args) |
| |
| #define USE_CALLBACK(NAME) V8Custom::v8##NAME##Callback |
| |
| #define DECLARE_NAMED_ACCESS_CHECK(NAME) \ |
| static bool v8##NAME##NamedSecurityCheck(v8::Local<v8::Object> host, \ |
| v8::Local<v8::Value> key, v8::AccessType type, v8::Local<v8::Value> data) |
| |
| #define DECLARE_INDEXED_ACCESS_CHECK(NAME) \ |
| static bool v8##NAME##IndexedSecurityCheck(v8::Local<v8::Object> host, \ |
| uint32_t index, v8::AccessType type, v8::Local<v8::Value> data) |
| |
| DECLARE_PROPERTY_ACCESSOR(CanvasRenderingContext2DStrokeStyle); |
| DECLARE_PROPERTY_ACCESSOR(CanvasRenderingContext2DFillStyle); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(DOMWindowEvent); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(DOMWindowCrypto); |
| DECLARE_PROPERTY_ACCESSOR_SETTER(DOMWindowLocation); |
| DECLARE_PROPERTY_ACCESSOR_SETTER(DOMWindowOpener); |
| |
| DECLARE_PROPERTY_ACCESSOR(DocumentLocation); |
| DECLARE_PROPERTY_ACCESSOR(DocumentImplementation); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(EventSrcElement); |
| DECLARE_PROPERTY_ACCESSOR(EventReturnValue); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(EventDataTransfer); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(EventClipboardData); |
| |
| DECLARE_PROPERTY_ACCESSOR(DOMWindowEventHandler); |
| DECLARE_PROPERTY_ACCESSOR(NodeEventHandler); |
| |
| DECLARE_CALLBACK(HTMLCanvasElementGetContext); |
| |
| DECLARE_PROPERTY_ACCESSOR_SETTER(HTMLFrameElementSrc); |
| DECLARE_PROPERTY_ACCESSOR_SETTER(HTMLFrameElementLocation); |
| DECLARE_PROPERTY_ACCESSOR_SETTER(HTMLIFrameElementSrc); |
| |
| DECLARE_PROPERTY_ACCESSOR_SETTER(AttrValue); |
| |
| DECLARE_PROPERTY_ACCESSOR(HTMLOptionsCollectionLength); |
| |
| DECLARE_CALLBACK(HTMLInputElementSetSelectionRange); |
| |
| DECLARE_PROPERTY_ACCESSOR(HTMLInputElementSelectionStart); |
| DECLARE_PROPERTY_ACCESSOR(HTMLInputElementSelectionEnd); |
| |
| DECLARE_NAMED_ACCESS_CHECK(Location); |
| DECLARE_INDEXED_ACCESS_CHECK(History); |
| |
| DECLARE_NAMED_ACCESS_CHECK(History); |
| DECLARE_INDEXED_ACCESS_CHECK(Location); |
| |
| DECLARE_CALLBACK(HTMLCollectionItem); |
| DECLARE_CALLBACK(HTMLCollectionNamedItem); |
| DECLARE_CALLBACK(HTMLCollectionCallAsFunction); |
| |
| DECLARE_CALLBACK(HTMLSelectElementRemove); |
| |
| DECLARE_CALLBACK(HTMLOptionsCollectionRemove); |
| DECLARE_CALLBACK(HTMLOptionsCollectionAdd); |
| |
| DECLARE_CALLBACK(HTMLDocumentWrite); |
| DECLARE_CALLBACK(HTMLDocumentWriteln); |
| DECLARE_CALLBACK(HTMLDocumentOpen); |
| DECLARE_PROPERTY_ACCESSOR(HTMLDocumentAll); |
| DECLARE_NAMED_PROPERTY_GETTER(HTMLDocument); |
| DECLARE_NAMED_PROPERTY_DELETER(HTMLDocument); |
| |
| DECLARE_CALLBACK(DocumentEvaluate); |
| DECLARE_CALLBACK(DocumentGetCSSCanvasContext); |
| |
| DECLARE_CALLBACK(DOMWindowAddEventListener); |
| DECLARE_CALLBACK(DOMWindowRemoveEventListener); |
| DECLARE_CALLBACK(DOMWindowPostMessage); |
| DECLARE_CALLBACK(DOMWindowSetTimeout); |
| DECLARE_CALLBACK(DOMWindowSetInterval); |
| DECLARE_CALLBACK(DOMWindowAtob); |
| DECLARE_CALLBACK(DOMWindowBtoa); |
| DECLARE_CALLBACK(DOMWindowNOP); |
| DECLARE_CALLBACK(DOMWindowToString); |
| DECLARE_CALLBACK(DOMWindowShowModalDialog); |
| DECLARE_CALLBACK(DOMWindowOpen); |
| DECLARE_CALLBACK(DOMWindowClearTimeout); |
| DECLARE_CALLBACK(DOMWindowClearInterval); |
| |
| DECLARE_CALLBACK(DOMParserConstructor); |
| DECLARE_CALLBACK(HTMLAudioElementConstructor); |
| DECLARE_CALLBACK(HTMLImageElementConstructor); |
| DECLARE_CALLBACK(HTMLOptionElementConstructor); |
| DECLARE_CALLBACK(MessageChannelConstructor); |
| DECLARE_CALLBACK(WebKitCSSMatrixConstructor); |
| DECLARE_CALLBACK(WebKitPointConstructor); |
| DECLARE_CALLBACK(XMLHttpRequestConstructor); |
| DECLARE_CALLBACK(XMLSerializerConstructor); |
| DECLARE_CALLBACK(XPathEvaluatorConstructor); |
| DECLARE_CALLBACK(XSLTProcessorConstructor); |
| |
| DECLARE_CALLBACK(XSLTProcessorImportStylesheet); |
| DECLARE_CALLBACK(XSLTProcessorTransformToFragment); |
| DECLARE_CALLBACK(XSLTProcessorTransformToDocument); |
| DECLARE_CALLBACK(XSLTProcessorSetParameter); |
| DECLARE_CALLBACK(XSLTProcessorGetParameter); |
| DECLARE_CALLBACK(XSLTProcessorRemoveParameter); |
| |
| DECLARE_CALLBACK(CSSPrimitiveValueGetRGBColorValue); |
| |
| DECLARE_CALLBACK(CanvasRenderingContext2DSetStrokeColor); |
| DECLARE_CALLBACK(CanvasRenderingContext2DSetFillColor); |
| DECLARE_CALLBACK(CanvasRenderingContext2DStrokeRect); |
| DECLARE_CALLBACK(CanvasRenderingContext2DSetShadow); |
| DECLARE_CALLBACK(CanvasRenderingContext2DDrawImage); |
| DECLARE_CALLBACK(CanvasRenderingContext2DDrawImageFromRect); |
| DECLARE_CALLBACK(CanvasRenderingContext2DCreatePattern); |
| DECLARE_CALLBACK(CanvasRenderingContext2DFillText); |
| DECLARE_CALLBACK(CanvasRenderingContext2DStrokeText); |
| DECLARE_CALLBACK(CanvasRenderingContext2DPutImageData); |
| |
| DECLARE_PROPERTY_ACCESSOR_GETTER(ClipboardTypes); |
| DECLARE_CALLBACK(ClipboardClearData); |
| DECLARE_CALLBACK(ClipboardGetData); |
| DECLARE_CALLBACK(ClipboardSetData); |
| DECLARE_CALLBACK(ClipboardSetDragImage); |
| |
| DECLARE_CALLBACK(ElementQuerySelector); |
| DECLARE_CALLBACK(ElementQuerySelectorAll); |
| DECLARE_CALLBACK(ElementSetAttribute); |
| DECLARE_CALLBACK(ElementSetAttributeNode); |
| DECLARE_CALLBACK(ElementSetAttributeNS); |
| DECLARE_CALLBACK(ElementSetAttributeNodeNS); |
| |
| DECLARE_PROPERTY_ACCESSOR_SETTER(LocationProtocol); |
| DECLARE_PROPERTY_ACCESSOR_SETTER(LocationHost); |
| DECLARE_PROPERTY_ACCESSOR_SETTER(LocationHostname); |
| DECLARE_PROPERTY_ACCESSOR_SETTER(LocationPort); |
| DECLARE_PROPERTY_ACCESSOR_SETTER(LocationPathname); |
| DECLARE_PROPERTY_ACCESSOR_SETTER(LocationSearch); |
| DECLARE_PROPERTY_ACCESSOR_SETTER(LocationHash); |
| DECLARE_PROPERTY_ACCESSOR_SETTER(LocationHref); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(LocationAssign); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(LocationReplace); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(LocationReload); |
| DECLARE_CALLBACK(LocationAssign); |
| DECLARE_CALLBACK(LocationReplace); |
| DECLARE_CALLBACK(LocationReload); |
| DECLARE_CALLBACK(LocationToString); |
| DECLARE_CALLBACK(LocationValueOf); |
| |
| DECLARE_CALLBACK(NodeAddEventListener); |
| DECLARE_CALLBACK(NodeRemoveEventListener); |
| DECLARE_CALLBACK(NodeInsertBefore); |
| DECLARE_CALLBACK(NodeReplaceChild); |
| DECLARE_CALLBACK(NodeRemoveChild); |
| DECLARE_CALLBACK(NodeAppendChild); |
| |
| // We actually only need this because WebKit has |
| // navigator.appVersion as custom. Our version just |
| // passes through. |
| DECLARE_PROPERTY_ACCESSOR(NavigatorAppVersion); |
| |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestOnabort); |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestOnerror); |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestOnload); |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestOnloadstart); |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestOnprogress); |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestOnreadystatechange); |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestResponseText); |
| DECLARE_CALLBACK(XMLHttpRequestAddEventListener); |
| DECLARE_CALLBACK(XMLHttpRequestRemoveEventListener); |
| DECLARE_CALLBACK(XMLHttpRequestOpen); |
| DECLARE_CALLBACK(XMLHttpRequestSend); |
| DECLARE_CALLBACK(XMLHttpRequestSetRequestHeader); |
| DECLARE_CALLBACK(XMLHttpRequestGetResponseHeader); |
| DECLARE_CALLBACK(XMLHttpRequestOverrideMimeType); |
| DECLARE_CALLBACK(XMLHttpRequestDispatchEvent); |
| |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestUploadOnabort); |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestUploadOnerror); |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestUploadOnload); |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestUploadOnloadstart); |
| DECLARE_PROPERTY_ACCESSOR(XMLHttpRequestUploadOnprogress); |
| DECLARE_CALLBACK(XMLHttpRequestUploadAddEventListener); |
| DECLARE_CALLBACK(XMLHttpRequestUploadRemoveEventListener); |
| DECLARE_CALLBACK(XMLHttpRequestUploadDispatchEvent); |
| |
| DECLARE_CALLBACK(TreeWalkerParentNode); |
| DECLARE_CALLBACK(TreeWalkerFirstChild); |
| DECLARE_CALLBACK(TreeWalkerLastChild); |
| DECLARE_CALLBACK(TreeWalkerNextNode); |
| DECLARE_CALLBACK(TreeWalkerPreviousNode); |
| DECLARE_CALLBACK(TreeWalkerNextSibling); |
| DECLARE_CALLBACK(TreeWalkerPreviousSibling); |
| |
| DECLARE_CALLBACK(InspectorBackendProfiles); |
| DECLARE_CALLBACK(InspectorBackendHighlightDOMNode); |
| DECLARE_CALLBACK(InspectorBackendAddResourceSourceToFrame); |
| DECLARE_CALLBACK(InspectorBackendAddSourceToFrame); |
| DECLARE_CALLBACK(InspectorBackendSearch); |
| DECLARE_CALLBACK(InspectorBackendSetting); |
| DECLARE_CALLBACK(InspectorBackendInspectedWindow); |
| DECLARE_CALLBACK(InspectorBackendSetSetting); |
| DECLARE_CALLBACK(InspectorBackendCurrentCallFrame); |
| DECLARE_CALLBACK(InspectorBackendDebuggerEnabled); |
| DECLARE_CALLBACK(InspectorBackendPauseOnExceptions); |
| DECLARE_CALLBACK(InspectorBackendProfilerEnabled); |
| #if ENABLE(DATABASE) |
| DECLARE_CALLBACK(InspectorBackendDatabaseTableNames); |
| #endif |
| DECLARE_CALLBACK(InspectorBackendWrapCallback); |
| |
| DECLARE_CALLBACK(NodeIteratorNextNode); |
| DECLARE_CALLBACK(NodeIteratorPreviousNode); |
| |
| DECLARE_CALLBACK(NodeFilterAcceptNode); |
| |
| DECLARE_CALLBACK(HTMLFormElementSubmit); |
| |
| DECLARE_NAMED_PROPERTY_GETTER(DOMWindow); |
| DECLARE_INDEXED_PROPERTY_GETTER(DOMWindow); |
| DECLARE_NAMED_ACCESS_CHECK(DOMWindow); |
| DECLARE_INDEXED_ACCESS_CHECK(DOMWindow); |
| |
| DECLARE_NAMED_PROPERTY_GETTER(HTMLFrameSetElement); |
| DECLARE_NAMED_PROPERTY_GETTER(HTMLFormElement); |
| DECLARE_NAMED_PROPERTY_GETTER(NodeList); |
| DECLARE_NAMED_PROPERTY_GETTER(NamedNodeMap); |
| DECLARE_NAMED_PROPERTY_GETTER(CSSStyleDeclaration); |
| DECLARE_NAMED_PROPERTY_SETTER(CSSStyleDeclaration); |
| DECLARE_NAMED_PROPERTY_GETTER(HTMLPlugInElement); |
| DECLARE_NAMED_PROPERTY_SETTER(HTMLPlugInElement); |
| DECLARE_INDEXED_PROPERTY_GETTER(HTMLPlugInElement); |
| DECLARE_INDEXED_PROPERTY_SETTER(HTMLPlugInElement); |
| |
| DECLARE_CALLBACK(HTMLPlugInElement); |
| |
| DECLARE_NAMED_PROPERTY_GETTER(StyleSheetList); |
| DECLARE_INDEXED_PROPERTY_GETTER(NamedNodeMap); |
| DECLARE_INDEXED_PROPERTY_GETTER(HTMLFormElement); |
| DECLARE_INDEXED_PROPERTY_GETTER(HTMLOptionsCollection); |
| DECLARE_INDEXED_PROPERTY_SETTER(HTMLOptionsCollection); |
| DECLARE_NAMED_PROPERTY_GETTER(HTMLSelectElementCollection); |
| DECLARE_INDEXED_PROPERTY_SETTER(HTMLSelectElementCollection); |
| DECLARE_NAMED_PROPERTY_GETTER(HTMLCollection); |
| |
| DECLARE_INDEXED_PROPERTY_GETTER(CanvasPixelArray); |
| DECLARE_INDEXED_PROPERTY_SETTER(CanvasPixelArray); |
| |
| DECLARE_PROPERTY_ACCESSOR(MessagePortOnmessage); |
| DECLARE_PROPERTY_ACCESSOR(MessagePortOnclose); |
| DECLARE_CALLBACK(MessagePortStartConversation); |
| DECLARE_CALLBACK(MessagePortAddEventListener); |
| DECLARE_CALLBACK(MessagePortRemoveEventListener); |
| |
| DECLARE_CALLBACK(DatabaseChangeVersion); |
| DECLARE_CALLBACK(DatabaseTransaction); |
| DECLARE_CALLBACK(SQLTransactionExecuteSql); |
| DECLARE_CALLBACK(SQLResultSetRowListItem); |
| |
| DECLARE_INDEXED_PROPERTY_GETTER(ClientRectList); |
| |
| #if ENABLE(DATAGRID) |
| DECLARE_PROPERTY_ACCESSOR(HTMLDataGridElementDataSource); |
| DECLARE_INDEXED_PROPERTY_GETTER(DataGridColumnList); |
| DECLARE_NAMED_PROPERTY_GETTER(DataGridColumnList); |
| #endif |
| |
| #if ENABLE(DOM_STORAGE) |
| DECLARE_INDEXED_PROPERTY_GETTER(Storage); |
| DECLARE_INDEXED_PROPERTY_SETTER(Storage); |
| DECLARE_INDEXED_PROPERTY_DELETER(Storage); |
| DECLARE_NAMED_PROPERTY_GETTER(Storage); |
| DECLARE_NAMED_PROPERTY_SETTER(Storage); |
| DECLARE_NAMED_PROPERTY_DELETER(Storage); |
| static v8::Handle<v8::Array> v8StorageNamedPropertyEnumerator(const v8::AccessorInfo& info); |
| #endif |
| |
| #if ENABLE(SVG) |
| DECLARE_PROPERTY_ACCESSOR_GETTER(SVGLengthValue); |
| DECLARE_CALLBACK(SVGLengthConvertToSpecifiedUnits); |
| DECLARE_CALLBACK(SVGMatrixInverse); |
| DECLARE_CALLBACK(SVGMatrixRotateFromVector); |
| DECLARE_CALLBACK(SVGElementInstanceAddEventListener); |
| DECLARE_CALLBACK(SVGElementInstanceRemoveEventListener); |
| #endif |
| |
| #if ENABLE(TOUCH_EVENTS) |
| DECLARE_INDEXED_PROPERTY_GETTER(TouchList); |
| #endif |
| |
| #if ENABLE(WORKERS) |
| DECLARE_PROPERTY_ACCESSOR(AbstractWorkerOnerror); |
| DECLARE_CALLBACK(AbstractWorkerAddEventListener); |
| DECLARE_CALLBACK(AbstractWorkerRemoveEventListener); |
| |
| DECLARE_PROPERTY_ACCESSOR(DedicatedWorkerContextOnmessage); |
| |
| DECLARE_PROPERTY_ACCESSOR(WorkerOnmessage); |
| DECLARE_CALLBACK(WorkerConstructor); |
| |
| DECLARE_PROPERTY_ACCESSOR_GETTER(WorkerContextSelf); |
| DECLARE_PROPERTY_ACCESSOR(WorkerContextOnerror); |
| DECLARE_CALLBACK(WorkerContextImportScripts); |
| DECLARE_CALLBACK(WorkerContextSetTimeout); |
| DECLARE_CALLBACK(WorkerContextClearTimeout); |
| DECLARE_CALLBACK(WorkerContextSetInterval); |
| DECLARE_CALLBACK(WorkerContextClearInterval); |
| DECLARE_CALLBACK(WorkerContextAddEventListener); |
| DECLARE_CALLBACK(WorkerContextRemoveEventListener); |
| #endif |
| |
| #if ENABLE(OFFLINE_WEB_APPLICATIONS) |
| DECLARE_PROPERTY_ACCESSOR(DOMApplicationCacheEventHandler); |
| DECLARE_CALLBACK(DOMApplicationCacheAddEventListener); |
| DECLARE_CALLBACK(DOMApplicationCacheRemoveEventListener); |
| #endif |
| |
| #if ENABLE(SHARED_WORKERS) |
| DECLARE_CALLBACK(SharedWorkerConstructor); |
| #endif |
| |
| DECLARE_CALLBACK(GeolocationGetCurrentPosition); |
| DECLARE_CALLBACK(GeolocationWatchPosition); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(CoordinatesAltitude); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(CoordinatesAltitudeAccuracy); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(CoordinatesHeading); |
| DECLARE_PROPERTY_ACCESSOR_GETTER(CoordinatesSpeed); |
| |
| #undef DECLARE_INDEXED_ACCESS_CHECK |
| #undef DECLARE_NAMED_ACCESS_CHECK |
| |
| #undef DECLARE_PROPERTY_ACCESSOR_SETTER |
| #undef DECLARE_PROPERTY_ACCESSOR_GETTER |
| #undef DECLARE_PROPERTY_ACCESSOR |
| |
| #undef DECLARE_NAMED_PROPERTY_GETTER |
| #undef DECLARE_NAMED_PROPERTY_SETTER |
| #undef DECLARE_NAMED_PROPERTY_DELETER |
| |
| #undef DECLARE_INDEXED_PROPERTY_GETTER |
| #undef DECLARE_INDEXED_PROPERTY_SETTER |
| #undef DECLARE_INDEXED_PROPERTY_DELETER |
| |
| #undef DECLARE_CALLBACK |
| |
| // Returns the NPObject corresponding to an HTMLElement object. |
| static NPObject* GetHTMLPlugInElementNPObject(v8::Handle<v8::Object>); |
| |
| // Returns the owner frame pointer of a DOM wrapper object. It only works for |
| // these DOM objects requiring cross-domain access check. |
| static Frame* GetTargetFrame(v8::Local<v8::Object> host, v8::Local<v8::Value> data); |
| |
| // Special case for downcasting SVG path segments. |
| #if ENABLE(SVG) |
| static V8ClassIndex::V8WrapperType DowncastSVGPathSeg(void* pathSeg); |
| #endif |
| |
| private: |
| static v8::Handle<v8::Value> WindowSetTimeoutImpl(const v8::Arguments&, bool singleShot); |
| static void ClearTimeoutImpl(const v8::Arguments&); |
| static void WindowSetLocation(DOMWindow*, const String&); |
| }; |
| |
| } // namespace WebCore |
| |
| #endif // V8CustomBinding_h |