1 /*
2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3  *           (C) 1999 Antti Koivisto (koivisto@kde.org)
4  * Copyright (C) 2004, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public License
17  * along with this library; see the file COPYING.LIB.  If not, write to
18  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  * Boston, MA 02110-1301, USA.
20  *
21  */
22 
23 #ifndef HTMLPlugInElement_h
24 #define HTMLPlugInElement_h
25 
26 #include "HTMLFrameOwnerElement.h"
27 #include "ScriptInstance.h"
28 
29 #if ENABLE(NETSCAPE_PLUGIN_API)
30 struct NPObject;
31 #endif
32 
33 namespace WebCore {
34 
35 class RenderEmbeddedObject;
36 class RenderWidget;
37 class Widget;
38 
39 class HTMLPlugInElement : public HTMLFrameOwnerElement {
40 public:
41     virtual ~HTMLPlugInElement();
42 
43     PassScriptInstance getInstance() const;
44 
45     Widget* pluginWidget() const;
46 
47 #if ENABLE(NETSCAPE_PLUGIN_API)
48     NPObject* getNPObject();
49 #endif
50 
isCapturingMouseEvents()51     bool isCapturingMouseEvents() const { return m_isCapturingMouseEvents; }
setIsCapturingMouseEvents(bool capturing)52     void setIsCapturingMouseEvents(bool capturing) { m_isCapturingMouseEvents = capturing; }
53 
54 protected:
55     HTMLPlugInElement(const QualifiedName& tagName, Document*);
56 
57     virtual void detach();
58 
59     virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const;
60     virtual void parseMappedAttribute(Attribute*);
61 
62     bool m_inBeforeLoadEventHandler;
63 
64 private:
65     virtual void defaultEventHandler(Event*);
66 
67     virtual RenderWidget* renderWidgetForJSBindings() const = 0;
68 
69 protected:
70     AtomicString m_name;
71 
72 private:
73     mutable ScriptInstance m_instance;
74 #if ENABLE(NETSCAPE_PLUGIN_API)
75     NPObject* m_NPObject;
76 #endif
77     bool m_isCapturingMouseEvents;
78 };
79 
80 } // namespace WebCore
81 
82 #endif // HTMLPlugInElement_h
83