1/* 2 * Copyright (C) 2012 Apple 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 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 23 * THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#ifndef WebRenderObject_h 27#define WebRenderObject_h 28 29#include "APIObject.h" 30#include <WebCore/IntRect.h> 31#include <wtf/PassRefPtr.h> 32#include <wtf/text/WTFString.h> 33 34namespace API { 35class Array; 36} 37 38namespace WebCore { 39 class RenderObject; 40} 41 42namespace WebKit { 43 44class WebPage; 45 46class WebRenderObject : public API::ObjectImpl<API::Object::Type::RenderObject> { 47public: 48 static PassRefPtr<WebRenderObject> create(WebPage*); 49 static PassRefPtr<WebRenderObject> create(WebCore::RenderObject* renderer) 50 { 51 return adoptRef(new WebRenderObject(renderer, false)); 52 } 53 54 static PassRefPtr<WebRenderObject> create(const String& name, const String& elementTagName, const String& elementID, PassRefPtr<API::Array> elementClassNames, WebCore::IntPoint absolutePosition, WebCore::IntRect frameRect, PassRefPtr<API::Array> children); 55 56 virtual ~WebRenderObject(); 57 58 API::Array* children() const { return m_children.get(); } 59 60 const String& name() const { return m_name; } 61 const String& elementTagName() const { return m_elementTagName; } 62 const String& elementID() const { return m_elementID; } 63 API::Array* elementClassNames() const { return m_elementClassNames.get(); } 64 WebCore::IntPoint absolutePosition() const { return m_absolutePosition; } 65 WebCore::IntRect frameRect() const { return m_frameRect; } 66 67private: 68 WebRenderObject(WebCore::RenderObject*, bool shouldIncludeDescendants); 69 WebRenderObject(const String& name, const String& elementTagName, const String& elementID, PassRefPtr<API::Array> elementClassNames, WebCore::IntPoint absolutePosition, WebCore::IntRect frameRect, PassRefPtr<API::Array> children); 70 71 RefPtr<API::Array> m_children; 72 73 String m_name; 74 String m_elementTagName; 75 String m_elementID; 76 RefPtr<API::Array> m_elementClassNames; 77 WebCore::IntPoint m_absolutePosition; 78 WebCore::IntRect m_frameRect; 79}; 80 81} // namespace WebKit 82 83#endif // WebRenderObject_h 84