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

Side by Side Diff: webkit/api/src/WebPluginContainerImpl.cpp

Issue 181014: Eliminate remaining WebCore dependencies from webplugin_impl.cc... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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 | Annotate | Revision Log
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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 65
66 using namespace WebCore; 66 using namespace WebCore;
67 67
68 namespace WebKit { 68 namespace WebKit {
69 69
70 // Public methods -------------------------------------------------------------- 70 // Public methods --------------------------------------------------------------
71 71
72 void WebPluginContainerImpl::setFrameRect(const IntRect& frameRect) 72 void WebPluginContainerImpl::setFrameRect(const IntRect& frameRect)
73 { 73 {
74 Widget::setFrameRect(frameRect); 74 Widget::setFrameRect(frameRect);
75 75 reportGeometry();
76 if (!parent())
77 return;
78
79 IntRect windowRect, clipRect;
80 Vector<IntRect> cutOutRects;
81 calculateGeometry(frameRect, windowRect, clipRect, cutOutRects);
82
83 m_webPlugin->updateGeometry(windowRect, clipRect, cutOutRects, isVisible());
84 } 76 }
85 77
86 void WebPluginContainerImpl::paint(GraphicsContext* gc, const IntRect& damageRect) 78 void WebPluginContainerImpl::paint(GraphicsContext* gc, const IntRect& damageRect)
87 { 79 {
88 if (gc->paintingDisabled()) 80 if (gc->paintingDisabled())
89 return; 81 return;
90 82
91 if (!parent()) 83 if (!parent())
92 return; 84 return;
93 85
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 // where mozilla behaves differently than the spec. 158 // where mozilla behaves differently than the spec.
167 if (event->isMouseEvent()) 159 if (event->isMouseEvent())
168 handleMouseEvent(static_cast<MouseEvent*>(event)); 160 handleMouseEvent(static_cast<MouseEvent*>(event));
169 else if (event->isKeyboardEvent()) 161 else if (event->isKeyboardEvent())
170 handleKeyboardEvent(static_cast<KeyboardEvent*>(event)); 162 handleKeyboardEvent(static_cast<KeyboardEvent*>(event));
171 } 163 }
172 164
173 void WebPluginContainerImpl::frameRectsChanged() 165 void WebPluginContainerImpl::frameRectsChanged()
174 { 166 {
175 Widget::frameRectsChanged(); 167 Widget::frameRectsChanged();
176 168 reportGeometry();
177 // This is a hack to tickle re-positioning of the plugin in the case where
178 // our parent view was scrolled.
179 setFrameRect(frameRect());
180 } 169 }
181 170
182 void WebPluginContainerImpl::setParentVisible(bool parentVisible) 171 void WebPluginContainerImpl::setParentVisible(bool parentVisible)
183 { 172 {
184 // We override this function to make sure that geometry updates are sent 173 // We override this function to make sure that geometry updates are sent
185 // over to the plugin. For e.g. when a plugin is instantiated it does not 174 // over to the plugin. For e.g. when a plugin is instantiated it does not
186 // have a valid parent. As a result the first geometry update from webkit 175 // have a valid parent. As a result the first geometry update from webkit
187 // is ignored. This function is called when the plugin eventually gets a 176 // is ignored. This function is called when the plugin eventually gets a
188 // parent. 177 // parent.
189 178
190 if (isParentVisible() == parentVisible) 179 if (isParentVisible() == parentVisible)
191 return; // No change. 180 return; // No change.
192 181
193 Widget::setParentVisible(parentVisible); 182 Widget::setParentVisible(parentVisible);
194 if (!isSelfVisible()) 183 if (!isSelfVisible())
195 return; // This widget has explicitely been marked as not visible. 184 return; // This widget has explicitely been marked as not visible.
196 185
197 m_webPlugin->updateVisibility(isVisible()); 186 m_webPlugin->updateVisibility(isVisible());
198 } 187 }
199 188
200 void WebPluginContainerImpl::setParent(ScrollView* view) 189 void WebPluginContainerImpl::setParent(ScrollView* view)
201 { 190 {
202 // We override this function so that if the plugin is windowed, we can call 191 // We override this function so that if the plugin is windowed, we can call
203 // NPP_SetWindow at the first possible moment. This ensures that 192 // NPP_SetWindow at the first possible moment. This ensures that
204 // NPP_SetWindow is called before the manual load data is sent to a plugin. 193 // NPP_SetWindow is called before the manual load data is sent to a plugin.
205 // If this order is reversed, Flash won't load videos. 194 // If this order is reversed, Flash won't load videos.
206 195
207 Widget::setParent(view); 196 Widget::setParent(view);
208 if (view) 197 if (view)
209 setFrameRect(frameRect()); 198 reportGeometry();
210 } 199 }
211 200
212 void WebPluginContainerImpl::invalidate() 201 void WebPluginContainerImpl::invalidate()
213 { 202 {
214 Widget::invalidate(); 203 Widget::invalidate();
215 } 204 }
216 205
217 void WebPluginContainerImpl::invalidateRect(const WebRect& rect) 206 void WebPluginContainerImpl::invalidateRect(const WebRect& rect)
218 { 207 {
219 invalidateRect(static_cast<IntRect>(rect)); 208 invalidateRect(static_cast<IntRect>(rect));
220 } 209 }
221 210
211 void WebPluginContainerImpl::reportGeometry()
212 {
213 if (!parent())
214 return;
215
216 IntRect windowRect, clipRect;
217 Vector<IntRect> cutOutRects;
218 calculateGeometry(frameRect(), windowRect, clipRect, cutOutRects);
219
220 m_webPlugin->updateGeometry(windowRect, clipRect, cutOutRects, isVisible());
221 }
222
223 void WebPluginContainerImpl::clearScriptObjects()
224 {
225 Frame* frame = m_element->document()->frame();
226 if (!frame)
227 return;
228 frame->script()->cleanupScriptObjectsForPlugin(this);
229 }
230
222 NPObject* WebPluginContainerImpl::scriptableObjectForElement() 231 NPObject* WebPluginContainerImpl::scriptableObjectForElement()
223 { 232 {
224 return m_element->getNPObject(); 233 return m_element->getNPObject();
225 } 234 }
226 235
227 WebString WebPluginContainerImpl::executeScriptURL(const WebURL& url, bool popupsAllowed) 236 WebString WebPluginContainerImpl::executeScriptURL(const WebURL& url, bool popupsAllowed)
228 { 237 {
229 Frame* frame = m_element->document()->frame(); 238 Frame* frame = m_element->document()->frame();
230 if (!frame) 239 if (!frame)
231 return WebString(); 240 return WebString();
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 roundedIntPoint(iframeRenderer->localToAbsolute()); 524 roundedIntPoint(iframeRenderer->localToAbsolute());
516 RenderBox* rbox = toRenderBox(iframeRenderer); 525 RenderBox* rbox = toRenderBox(iframeRenderer);
517 IntSize size(rbox->width(), rbox->height()); 526 IntSize size(rbox->width(), rbox->height());
518 cutOutRects.append(IntRect(point, size)); 527 cutOutRects.append(IntRect(point, size));
519 } 528 }
520 } 529 }
521 } 530 }
522 } 531 }
523 532
524 } // namespace WebKit 533 } // namespace WebKit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698