18f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian/* 28f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Copyright (C) 2007-2009 Google Inc. All rights reserved. 38f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 48f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Redistribution and use in source and binary forms, with or without 58f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * modification, are permitted provided that the following conditions are 68f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * met: 78f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 88f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * * Redistributions of source code must retain the above copyright 98f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * notice, this list of conditions and the following disclaimer. 108f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * * Redistributions in binary form must reproduce the above 118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * copyright notice, this list of conditions and the following disclaimer 128f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * in the documentation and/or other materials provided with the 138f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * distribution. 148f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * * Neither the name of Google Inc. nor the names of its 158f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * contributors may be used to endorse or promote products derived from 168f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * this software without specific prior written permission. 178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 188f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 198f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 208f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 218f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 228f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 238f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 248f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 258f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 268f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 278f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 288f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 298f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian */ 308f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 318f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "config.h" 32d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "V8Element.h" 338f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 348f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "Attr.h" 358f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "Document.h" 36d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "Element.h" 378f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "ExceptionCode.h" 388f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "HTMLFrameElementBase.h" 398f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "HTMLNames.h" 408f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "Node.h" 418f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 428f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "V8Attr.h" 438f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "V8Binding.h" 44d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "V8BindingState.h" 455e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#include "V8HTMLElement.h" 468f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "V8Proxy.h" 47dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 48dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(SVG) 495e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#include "V8SVGElement.h" 50dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 518f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 528f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include <wtf/RefPtr.h> 538f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 548f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qiannamespace WebCore { 558f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 565e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockv8::Handle<v8::Value> toV8(Element* impl, bool forceNewObject) 575e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block{ 585e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block if (!impl) 595e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return v8::Null(); 605e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block if (impl->isHTMLElement()) 612fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return toV8(toHTMLElement(impl), forceNewObject); 623f39cd7259f17012f847c211fd7a1d6b5fef6309Steve Block#if ENABLE(SVG) 635e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block if (impl->isSVGElement()) 645e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return toV8(static_cast<SVGElement*>(impl), forceNewObject); 653f39cd7259f17012f847c211fd7a1d6b5fef6309Steve Block#endif 665e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return V8Element::wrap(impl, forceNewObject); 675e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block} 688f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian} // namespace WebCore 69