Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: Source/web/WebPluginContainerImpl.h

Issue 357443005: Oilpan: make shutdown of plugin container objects work better. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Have WebPluginContainerImpl be a FrameDestructionObserver Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/platform/Widget.h ('k') | Source/web/WebPluginContainerImpl.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 13 matching lines...) Expand all
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #ifndef WebPluginContainerImpl_h 31 #ifndef WebPluginContainerImpl_h
32 #define WebPluginContainerImpl_h 32 #define WebPluginContainerImpl_h
33 33
34 #include "core/frame/FrameDestructionObserver.h"
34 #include "core/plugins/PluginView.h" 35 #include "core/plugins/PluginView.h"
35 #include "platform/Widget.h" 36 #include "platform/Widget.h"
36 #include "public/web/WebPluginContainer.h" 37 #include "public/web/WebPluginContainer.h"
37 38
38 #include "wtf/OwnPtr.h" 39 #include "wtf/OwnPtr.h"
39 #include "wtf/PassRefPtr.h" 40 #include "wtf/PassRefPtr.h"
40 #include "wtf/Vector.h" 41 #include "wtf/Vector.h"
41 #include "wtf/text/WTFString.h" 42 #include "wtf/text/WTFString.h"
42 43
43 struct NPObject; 44 struct NPObject;
(...skipping 14 matching lines...) Expand all
58 59
59 namespace blink { 60 namespace blink {
60 61
61 struct WebPrintParams; 62 struct WebPrintParams;
62 63
63 class ScrollbarGroup; 64 class ScrollbarGroup;
64 class WebPlugin; 65 class WebPlugin;
65 class WebPluginLoadObserver; 66 class WebPluginLoadObserver;
66 class WebExternalTextureLayer; 67 class WebExternalTextureLayer;
67 68
68 class WebPluginContainerImpl FINAL : public WebCore::PluginView, public WebPlugi nContainer { 69 class WebPluginContainerImpl FINAL : public WebCore::PluginView, public WebPlugi nContainer, public WebCore::FrameDestructionObserver {
69 public: 70 public:
70 static PassRefPtr<WebPluginContainerImpl> create(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin) 71 static PassRefPtr<WebPluginContainerImpl> create(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin)
71 { 72 {
72 return adoptRef(new WebPluginContainerImpl(element, webPlugin)); 73 return adoptRef(new WebPluginContainerImpl(element, webPlugin));
73 } 74 }
74 75
75 // PluginView methods 76 // PluginView methods
76 virtual WebLayer* platformLayer() const OVERRIDE; 77 virtual WebLayer* platformLayer() const OVERRIDE;
77 virtual NPObject* scriptableObject() OVERRIDE; 78 virtual NPObject* scriptableObject() OVERRIDE;
78 virtual bool getFormValue(String&) OVERRIDE; 79 virtual bool getFormValue(String&) OVERRIDE;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 156
156 void willDestroyPluginLoadObserver(WebPluginLoadObserver*); 157 void willDestroyPluginLoadObserver(WebPluginLoadObserver*);
157 158
158 ScrollbarGroup* scrollbarGroup(); 159 ScrollbarGroup* scrollbarGroup();
159 160
160 void willStartLiveResize(); 161 void willStartLiveResize();
161 void willEndLiveResize(); 162 void willEndLiveResize();
162 163
163 bool paintCustomOverhangArea(WebCore::GraphicsContext*, const WebCore::IntRe ct&, const WebCore::IntRect&, const WebCore::IntRect&); 164 bool paintCustomOverhangArea(WebCore::GraphicsContext*, const WebCore::IntRe ct&, const WebCore::IntRect&, const WebCore::IntRect&);
164 165
166 #if ENABLE(OILPAN)
167 virtual void detach() OVERRIDE;
168 #endif
169
165 private: 170 private:
166 WebPluginContainerImpl(WebCore::HTMLPlugInElement* element, WebPlugin* webPl ugin); 171 WebPluginContainerImpl(WebCore::HTMLPlugInElement* element, WebPlugin* webPl ugin);
167 virtual ~WebPluginContainerImpl(); 172 virtual ~WebPluginContainerImpl();
168 173
169 void handleMouseEvent(WebCore::MouseEvent*); 174 void handleMouseEvent(WebCore::MouseEvent*);
170 void handleDragEvent(WebCore::MouseEvent*); 175 void handleDragEvent(WebCore::MouseEvent*);
171 void handleWheelEvent(WebCore::WheelEvent*); 176 void handleWheelEvent(WebCore::WheelEvent*);
172 void handleKeyboardEvent(WebCore::KeyboardEvent*); 177 void handleKeyboardEvent(WebCore::KeyboardEvent*);
173 void handleTouchEvent(WebCore::TouchEvent*); 178 void handleTouchEvent(WebCore::TouchEvent*);
174 void handleGestureEvent(WebCore::GestureEvent*); 179 void handleGestureEvent(WebCore::GestureEvent*);
175 180
176 void synthesizeMouseEventIfPossible(WebCore::TouchEvent*); 181 void synthesizeMouseEventIfPossible(WebCore::TouchEvent*);
177 182
178 void focusPlugin(); 183 void focusPlugin();
179 184
180 void calculateGeometry(const WebCore::IntRect& frameRect, 185 void calculateGeometry(const WebCore::IntRect& frameRect,
181 WebCore::IntRect& windowRect, 186 WebCore::IntRect& windowRect,
182 WebCore::IntRect& clipRect, 187 WebCore::IntRect& clipRect,
183 Vector<WebCore::IntRect>& cutOutRects); 188 Vector<WebCore::IntRect>& cutOutRects);
184 WebCore::IntRect windowClipRect() const; 189 WebCore::IntRect windowClipRect() const;
185 void windowCutOutRects(const WebCore::IntRect& frameRect, 190 void windowCutOutRects(const WebCore::IntRect& frameRect,
186 Vector<WebCore::IntRect>& cutOutRects); 191 Vector<WebCore::IntRect>& cutOutRects);
187 192
193 // FIXME: Oilpan: consider moving Widget to the heap and turn this
194 // into a traced member. For the time being, it is a bare pointer
195 // of its owning PlugInElement and managed as such.
188 WebCore::HTMLPlugInElement* m_element; 196 WebCore::HTMLPlugInElement* m_element;
189 WebPlugin* m_webPlugin; 197 WebPlugin* m_webPlugin;
190 Vector<WebPluginLoadObserver*> m_pluginLoadObservers; 198 Vector<WebPluginLoadObserver*> m_pluginLoadObservers;
191 199
192 WebLayer* m_webLayer; 200 WebLayer* m_webLayer;
193 201
194 // The associated scrollbar group object, created lazily. Used for Pepper 202 // The associated scrollbar group object, created lazily. Used for Pepper
195 // scrollbars. 203 // scrollbars.
196 OwnPtr<ScrollbarGroup> m_scrollbarGroup; 204 OwnPtr<ScrollbarGroup> m_scrollbarGroup;
197 205
198 TouchEventRequestType m_touchEventRequestType; 206 TouchEventRequestType m_touchEventRequestType;
199 bool m_wantsWheelEvents; 207 bool m_wantsWheelEvents;
200 }; 208 };
201 209
202 DEFINE_TYPE_CASTS(WebPluginContainerImpl, WebCore::Widget, widget, widget->isPlu ginContainer(), widget.isPluginContainer()); 210 DEFINE_TYPE_CASTS(WebPluginContainerImpl, WebCore::Widget, widget, widget->isPlu ginContainer(), widget.isPluginContainer());
203 // Unlike Widget, we need not worry about object type for container. 211 // Unlike Widget, we need not worry about object type for container.
204 // WebPluginContainerImpl is the only subclass of WebPluginContainer. 212 // WebPluginContainerImpl is the only subclass of WebPluginContainer.
205 DEFINE_TYPE_CASTS(WebPluginContainerImpl, WebPluginContainer, container, true, t rue); 213 DEFINE_TYPE_CASTS(WebPluginContainerImpl, WebPluginContainer, container, true, t rue);
206 214
207 } // namespace blink 215 } // namespace blink
208 216
209 #endif 217 #endif
OLDNEW
« no previous file with comments | « Source/platform/Widget.h ('k') | Source/web/WebPluginContainerImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698