Chromium Code Reviews| Index: Source/web/WebPluginContainerImpl.cpp |
| diff --git a/Source/web/WebPluginContainerImpl.cpp b/Source/web/WebPluginContainerImpl.cpp |
| index 87d1b1307076c89a9763040033ca8744915063c9..e15fc8393f20f0b5f2f072f5f0edbeeb6f70a6e8 100644 |
| --- a/Source/web/WebPluginContainerImpl.cpp |
| +++ b/Source/web/WebPluginContainerImpl.cpp |
| @@ -407,11 +407,11 @@ void WebPluginContainerImpl::reportGeometry() |
| if (!parent() || !m_element->layoutObject()) |
| return; |
| - IntRect windowRect, clipRect; |
| + IntRect windowRect, clipRect, unobscuredRect; |
| Vector<IntRect> cutOutRects; |
| - calculateGeometry(frameRect(), windowRect, clipRect, cutOutRects); |
| + calculateGeometry(windowRect, clipRect, unobscuredRect, cutOutRects); |
| - m_webPlugin->updateGeometry(windowRect, clipRect, cutOutRects, isVisible()); |
| + m_webPlugin->updateGeometry(windowRect, clipRect, unobscuredRect, cutOutRects, isVisible()); |
| if (m_scrollbarGroup) { |
| m_scrollbarGroup->scrollAnimator()->contentsResized(); |
| @@ -965,28 +965,13 @@ void WebPluginContainerImpl::focusPlugin() |
| containingFrame.document()->setFocusedElement(m_element); |
| } |
| -void WebPluginContainerImpl::calculateGeometry(const IntRect& frameRect, |
| - IntRect& windowRect, |
| - IntRect& clipRect, |
| - Vector<IntRect>& cutOutRects) |
| +void WebPluginContainerImpl::calculateGeometry(IntRect& windowRect, IntRect& clipRect, IntRect& unobscuredRect, Vector<IntRect>& cutOutRects) |
| { |
| - windowRect = toFrameView(parent())->contentsToRootFrame(frameRect); |
| + windowRect = toFrameView(parent())->contentsToRootFrame(frameRect()); |
| // Calculate a clip-rect so that we don't overlap the scrollbars, etc. |
| - clipRect = windowClipRect(); |
| - clipRect.move(-windowRect.x(), -windowRect.y()); |
| - |
| - getPluginOcclusions(m_element, this->parent(), frameRect, cutOutRects); |
| - // Convert to the plugin position. |
| - for (size_t i = 0; i < cutOutRects.size(); i++) |
| - cutOutRects[i].move(-frameRect.x(), -frameRect.y()); |
| -} |
| - |
| -IntRect WebPluginContainerImpl::windowClipRect() const |
| -{ |
| - // Start by clipping to our bounds. |
| - IntRect clipRect = |
| - convertToContainingWindow(IntRect(0, 0, width(), height())); |
| + clipRect = convertToContainingWindow(IntRect(0, 0, width(), height())); |
| + unobscuredRect = clipRect; |
| // document().layoutView() can be 0 when we receive messages from the |
| // plugins while we are destroying a frame. |
| @@ -994,11 +979,19 @@ IntRect WebPluginContainerImpl::windowClipRect() const |
| if (m_element->layoutObject()->document().layoutView()) { |
| // Take our element and get the clip rect from the enclosing layer and |
| // frame view. |
| - clipRect.intersect( |
| - m_element->document().view()->windowClipRectForFrameOwner(m_element)); |
| + IntRect elementWindowClipRect, elementUnobscuredRect; |
|
Julien - ping for review
2015/03/27 21:26:07
We prefer to split these 2 into their own lines in
tommycli
2015/03/27 22:42:51
Done.
|
| + m_element->document().view()->getClipRectsForFrameOwner(m_element, &elementWindowClipRect, &elementUnobscuredRect); |
| + clipRect.intersect(elementWindowClipRect); |
| + unobscuredRect.intersect(elementUnobscuredRect); |
| } |
| - return clipRect; |
| + clipRect.move(-windowRect.x(), -windowRect.y()); |
| + unobscuredRect.move(-windowRect.x(), -windowRect.y()); |
| + |
| + getPluginOcclusions(m_element, this->parent(), frameRect(), cutOutRects); |
| + // Convert to the plugin position. |
| + for (size_t i = 0; i < cutOutRects.size(); i++) |
| + cutOutRects[i].move(-frameRect().x(), -frameRect().y()); |
| } |
| bool WebPluginContainerImpl::pluginShouldPersist() const |