18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Apple Inc. All Rights Reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "JSEventTarget.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 295f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "DOMWindow.h" 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Document.h" 315f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "JSDOMWindow.h" 325f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "JSDOMWindowShell.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "JSEventListener.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "JSMessagePort.h" 358f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "JSNode.h" 36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(SHARED_WORKERS) 37231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "JSSharedWorker.h" 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "JSSharedWorkerContext.h" 40231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 41231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 428f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "JSXMLHttpRequest.h" 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "JSXMLHttpRequestUpload.h" 448f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "MessagePort.h" 45231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 46231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(SHARED_WORKERS) 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "SharedWorker.h" 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "SharedWorkerContext.h" 49231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 50231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 518f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "XMLHttpRequest.h" 528f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "XMLHttpRequestUpload.h" 538f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 54231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(EVENTSOURCE) 55231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "EventSource.h" 56231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "JSEventSource.h" 57231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 58231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 598f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if ENABLE(OFFLINE_WEB_APPLICATIONS) 608f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "DOMApplicationCache.h" 618f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "JSDOMApplicationCache.h" 628f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGElementInstance.h" 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "JSSVGElementInstance.h" 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 698f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if ENABLE(WORKERS) 700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "DedicatedWorkerContext.h" 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "JSDedicatedWorkerContext.h" 728f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "JSWorker.h" 738f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "Worker.h" 748f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 758f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 76231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(NOTIFICATIONS) 77231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "JSNotification.h" 78231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "Notification.h" 79231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 80231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 816c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#if ENABLE(INDEXED_DATABASE) 826c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "IDBRequest.h" 836c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "JSIDBRequest.h" 846c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif 856c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 866b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner#if ENABLE(WEB_AUDIO) 872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "AudioContext.h" 882daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "JSAudioContext.h" 896b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner#include "JSJavaScriptAudioNode.h" 906b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner#include "JavaScriptAudioNode.h" 916b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner#endif 926b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner 93231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(WEB_SOCKETS) 94231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "JSWebSocket.h" 95231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "WebSocket.h" 96231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 97231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 98dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#if ENABLE(BLOB) 996c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "JSFileReader.h" 1006c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "FileReader.h" 1016c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif 1026c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace JSC; 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochJSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, EventTarget* target) 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!target) 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return jsNull(); 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 112231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(EVENTSOURCE) 113231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (EventSource* eventSource = target->toEventSource()) 114231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return toJS(exec, globalObject, eventSource); 115231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 116231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // SVGElementInstance supports both toSVGElementInstance and toNode since so much mouse handling code depends on toNode returning a valid node. 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (SVGElementInstance* instance = target->toSVGElementInstance()) 1200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return toJS(exec, globalObject, instance); 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (Node* node = target->toNode()) 1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return toJS(exec, globalObject, node); 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1265f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (DOMWindow* domWindow = target->toDOMWindow()) 1270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return toJS(exec, globalObject, domWindow); 1285f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (XMLHttpRequest* xhr = target->toXMLHttpRequest()) 1300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return toJS(exec, globalObject, xhr); 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (XMLHttpRequestUpload* upload = target->toXMLHttpRequestUpload()) 1330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return toJS(exec, globalObject, upload); 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(OFFLINE_WEB_APPLICATIONS) 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (DOMApplicationCache* cache = target->toDOMApplicationCache()) 1370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return toJS(exec, globalObject, cache); 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (MessagePort* messagePort = target->toMessagePort()) 1410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return toJS(exec, globalObject, messagePort); 142635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 143635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if ENABLE(WORKERS) 144635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (Worker* worker = target->toWorker()) 1450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return toJS(exec, globalObject, worker); 146635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (DedicatedWorkerContext* workerContext = target->toDedicatedWorkerContext()) 148cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return toJSDOMGlobalObject(workerContext, exec); 1490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif 1500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#if ENABLE(SHARED_WORKERS) 1520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (SharedWorker* sharedWorker = target->toSharedWorker()) 1530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return toJS(exec, globalObject, sharedWorker); 1540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (SharedWorkerContext* workerContext = target->toSharedWorkerContext()) 156cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return toJSDOMGlobalObject(workerContext, exec); 157635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 158635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 159231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(NOTIFICATIONS) 160231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (Notification* notification = target->toNotification()) 161231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return toJS(exec, notification); 162231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 163231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 1646c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#if ENABLE(INDEXED_DATABASE) 16581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (IDBDatabase* idbDatabase = target->toIDBDatabase()) 16681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return toJS(exec, idbDatabase); 16781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 1686c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen if (IDBRequest* idbRequest = target->toIDBRequest()) 1696c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen return toJS(exec, idbRequest); 17081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 17181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (IDBTransaction* idbTransaction = target->toIDBTransaction()) 17281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return toJS(exec, idbTransaction); 1736c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif 1746c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 1756b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner#if ENABLE(WEB_AUDIO) 1766b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner if (JavaScriptAudioNode* jsAudioNode = target->toJavaScriptAudioNode()) 1776b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner return toJS(exec, globalObject, jsAudioNode); 1782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (AudioContext* audioContext = target->toAudioContext()) 1792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return toJS(exec, globalObject, audioContext); 1806b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner#endif 1816b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner 182231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(WEB_SOCKETS) 183231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (WebSocket* webSocket = target->toWebSocket()) 184231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return toJS(exec, webSocket); 185231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 186231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 187dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#if ENABLE(BLOB) 1886c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen if (FileReader* fileReader = target->toFileReader()) 1896c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen return toJS(exec, globalObject, fileReader); 1906c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif 1916c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_NOT_REACHED(); 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return jsNull(); 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1965f1ab04193ad0130ca8204aadaceae083aca9881Feng QianEventTarget* toEventTarget(JSC::JSValue value) 1978f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian{ 1988f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian #define CONVERT_TO_EVENT_TARGET(type) \ 199231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (value.inherits(&JS##type::s_info)) \ 2008f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian return static_cast<JS##type*>(asObject(value))->impl(); 2018f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 2028f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian CONVERT_TO_EVENT_TARGET(Node) 2038f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian CONVERT_TO_EVENT_TARGET(XMLHttpRequest) 2048f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian CONVERT_TO_EVENT_TARGET(XMLHttpRequestUpload) 2058f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian CONVERT_TO_EVENT_TARGET(MessagePort) 2068f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 207231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (value.inherits(&JSDOMWindowShell::s_info)) 2085f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian return static_cast<JSDOMWindowShell*>(asObject(value))->impl(); 2095f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 210231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(EVENTSOURCE) 211231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block CONVERT_TO_EVENT_TARGET(EventSource) 212231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 213231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 2148f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if ENABLE(OFFLINE_WEB_APPLICATIONS) 2158f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian CONVERT_TO_EVENT_TARGET(DOMApplicationCache) 2168f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 2178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 2188f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if ENABLE(SVG) 2198f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian CONVERT_TO_EVENT_TARGET(SVGElementInstance) 2208f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 2218f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 2228f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if ENABLE(WORKERS) 2238f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian CONVERT_TO_EVENT_TARGET(Worker) 2240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CONVERT_TO_EVENT_TARGET(DedicatedWorkerContext) 2250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif 2260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#if ENABLE(SHARED_WORKERS) 2280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CONVERT_TO_EVENT_TARGET(SharedWorker) 2290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CONVERT_TO_EVENT_TARGET(SharedWorkerContext) 2308f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 2318f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 232231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(NOTIFICATIONS) 233231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block CONVERT_TO_EVENT_TARGET(Notification) 234231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 235231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 236231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(WEB_SOCKETS) 237231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block CONVERT_TO_EVENT_TARGET(WebSocket) 238231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 239231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 2408f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian return 0; 2418f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian} 2428f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 244