| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 2009 Google Inc. All rights reserved. | 2  * Copyright (C) 2009 Google Inc. All rights reserved. | 
| 3  * Copyright (C) 2014 Opera Software ASA. All rights reserved. | 3  * Copyright (C) 2014 Opera Software ASA. All rights reserved. | 
| 4  * | 4  * | 
| 5  * Redistribution and use in source and binary forms, with or without | 5  * Redistribution and use in source and binary forms, with or without | 
| 6  * modification, are permitted provided that the following conditions are | 6  * modification, are permitted provided that the following conditions are | 
| 7  * met: | 7  * met: | 
| 8  * | 8  * | 
| 9  *     * Redistributions of source code must retain the above copyright | 9  *     * Redistributions of source code must retain the above copyright | 
| 10  * notice, this list of conditions and the following disclaimer. | 10  * notice, this list of conditions and the following disclaimer. | 
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 116 | 116 | 
| 117     LayoutObjectDrawingRecorder drawingRecorder(context, *m_element->layoutObjec
      t(), DisplayItem::Type::WebPlugin, rect); | 117     LayoutObjectDrawingRecorder drawingRecorder(context, *m_element->layoutObjec
      t(), DisplayItem::Type::WebPlugin, rect); | 
| 118     if (drawingRecorder.canUseCachedDrawing()) | 118     if (drawingRecorder.canUseCachedDrawing()) | 
| 119         return; | 119         return; | 
| 120 | 120 | 
| 121     context->save(); | 121     context->save(); | 
| 122 | 122 | 
| 123     ASSERT(parent()->isFrameView()); | 123     ASSERT(parent()->isFrameView()); | 
| 124     FrameView* view =  toFrameView(parent()); | 124     FrameView* view =  toFrameView(parent()); | 
| 125 | 125 | 
| 126     // The plugin is positioned in window coordinates, so it needs to be painted | 126     // The plugin is positioned in the root frame's coordinates, so it needs to | 
| 127     // in window coordinates. | 127     // be painted in them too. | 
| 128     IntPoint origin = view->contentsToWindow(IntPoint(0, 0)); | 128     IntPoint origin = view->contentsToRootFrame(IntPoint(0, 0)); | 
| 129     context->translate(static_cast<float>(-origin.x()), static_cast<float>(-orig
      in.y())); | 129     context->translate(static_cast<float>(-origin.x()), static_cast<float>(-orig
      in.y())); | 
| 130 | 130 | 
| 131     WebCanvas* canvas = context->canvas(); | 131     WebCanvas* canvas = context->canvas(); | 
| 132 | 132 | 
| 133     IntRect windowRect = view->contentsToWindow(rect); | 133     IntRect windowRect = view->contentsToRootFrame(rect); | 
| 134     m_webPlugin->paint(canvas, windowRect); | 134     m_webPlugin->paint(canvas, windowRect); | 
| 135 | 135 | 
| 136     context->restore(); | 136     context->restore(); | 
| 137 } | 137 } | 
| 138 | 138 | 
| 139 void WebPluginContainerImpl::invalidateRect(const IntRect& rect) | 139 void WebPluginContainerImpl::invalidateRect(const IntRect& rect) | 
| 140 { | 140 { | 
| 141     if (!parent()) | 141     if (!parent()) | 
| 142         return; | 142         return; | 
| 143 | 143 | 
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 544         return; | 544         return; | 
| 545     m_wantsWheelEvents = wantsWheelEvents; | 545     m_wantsWheelEvents = wantsWheelEvents; | 
| 546     if (Page* page = m_element->document().page()) { | 546     if (Page* page = m_element->document().page()) { | 
| 547         if (ScrollingCoordinator* scrollingCoordinator = page->scrollingCoordina
      tor()) { | 547         if (ScrollingCoordinator* scrollingCoordinator = page->scrollingCoordina
      tor()) { | 
| 548             if (parent() && parent()->isFrameView()) | 548             if (parent() && parent()->isFrameView()) | 
| 549                 scrollingCoordinator->notifyLayoutUpdated(); | 549                 scrollingCoordinator->notifyLayoutUpdated(); | 
| 550         } | 550         } | 
| 551     } | 551     } | 
| 552 } | 552 } | 
| 553 | 553 | 
| 554 WebPoint WebPluginContainerImpl::windowToLocalPoint(const WebPoint& point) | 554 WebPoint WebPluginContainerImpl::rootFrameToLocalPoint(const WebPoint& pointInRo
      otFrame) | 
| 555 { | 555 { | 
| 556     FrameView* view = toFrameView(parent()); | 556     FrameView* view = toFrameView(parent()); | 
| 557     if (!view) | 557     if (!view) | 
| 558         return point; | 558         return pointInRootFrame; | 
| 559     WebPoint windowPoint = view->windowToContents(point); | 559     WebPoint pointInContent = view->rootFrameToContents(pointInRootFrame); | 
| 560     return roundedIntPoint(m_element->layoutObject()->absoluteToLocal(FloatPoint
      (windowPoint), UseTransforms)); | 560     return roundedIntPoint(m_element->layoutObject()->absoluteToLocal(FloatPoint
      (pointInContent), UseTransforms)); | 
| 561 } | 561 } | 
| 562 | 562 | 
| 563 WebPoint WebPluginContainerImpl::localToWindowPoint(const WebPoint& point) | 563 WebPoint WebPluginContainerImpl::localToRootFramePoint(const WebPoint& pointInLo
      cal) | 
| 564 { | 564 { | 
| 565     FrameView* view = toFrameView(parent()); | 565     FrameView* view = toFrameView(parent()); | 
| 566     if (!view) | 566     if (!view) | 
| 567         return point; | 567         return pointInLocal; | 
| 568     IntPoint absolutePoint = roundedIntPoint(m_element->layoutObject()->localToA
      bsolute(FloatPoint(point), UseTransforms)); | 568     IntPoint absolutePoint = roundedIntPoint(m_element->layoutObject()->localToA
      bsolute(FloatPoint(pointInLocal), UseTransforms)); | 
| 569     return view->contentsToWindow(absolutePoint); | 569     return view->contentsToRootFrame(absolutePoint); | 
| 570 } | 570 } | 
| 571 | 571 | 
| 572 void WebPluginContainerImpl::didReceiveResponse(const ResourceResponse& response
      ) | 572 void WebPluginContainerImpl::didReceiveResponse(const ResourceResponse& response
      ) | 
| 573 { | 573 { | 
| 574     // Make sure that the plugin receives window geometry before data, or else | 574     // Make sure that the plugin receives window geometry before data, or else | 
| 575     // plugins misbehave. | 575     // plugins misbehave. | 
| 576     frameRectsChanged(); | 576     frameRectsChanged(); | 
| 577 | 577 | 
| 578     WrappedResourceResponse urlResponse(response); | 578     WrappedResourceResponse urlResponse(response); | 
| 579     m_webPlugin->didReceiveResponse(urlResponse); | 579     m_webPlugin->didReceiveResponse(urlResponse); | 
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 963         currentPage->focusController().setFocusedElement(m_element, &containingF
      rame); | 963         currentPage->focusController().setFocusedElement(m_element, &containingF
      rame); | 
| 964     else | 964     else | 
| 965         containingFrame.document()->setFocusedElement(m_element); | 965         containingFrame.document()->setFocusedElement(m_element); | 
| 966 } | 966 } | 
| 967 | 967 | 
| 968 void WebPluginContainerImpl::calculateGeometry(const IntRect& frameRect, | 968 void WebPluginContainerImpl::calculateGeometry(const IntRect& frameRect, | 
| 969                                                IntRect& windowRect, | 969                                                IntRect& windowRect, | 
| 970                                                IntRect& clipRect, | 970                                                IntRect& clipRect, | 
| 971                                                Vector<IntRect>& cutOutRects) | 971                                                Vector<IntRect>& cutOutRects) | 
| 972 { | 972 { | 
| 973     windowRect = toFrameView(parent())->contentsToWindow(frameRect); | 973     windowRect = toFrameView(parent())->contentsToRootFrame(frameRect); | 
| 974 | 974 | 
| 975     // Calculate a clip-rect so that we don't overlap the scrollbars, etc. | 975     // Calculate a clip-rect so that we don't overlap the scrollbars, etc. | 
| 976     clipRect = windowClipRect(); | 976     clipRect = windowClipRect(); | 
| 977     clipRect.move(-windowRect.x(), -windowRect.y()); | 977     clipRect.move(-windowRect.x(), -windowRect.y()); | 
| 978 | 978 | 
| 979     getPluginOcclusions(m_element, this->parent(), frameRect, cutOutRects); | 979     getPluginOcclusions(m_element, this->parent(), frameRect, cutOutRects); | 
| 980     // Convert to the plugin position. | 980     // Convert to the plugin position. | 
| 981     for (size_t i = 0; i < cutOutRects.size(); i++) | 981     for (size_t i = 0; i < cutOutRects.size(); i++) | 
| 982         cutOutRects[i].move(-frameRect.x(), -frameRect.y()); | 982         cutOutRects[i].move(-frameRect.x(), -frameRect.y()); | 
| 983 } | 983 } | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 1000 | 1000 | 
| 1001     return clipRect; | 1001     return clipRect; | 
| 1002 } | 1002 } | 
| 1003 | 1003 | 
| 1004 bool WebPluginContainerImpl::pluginShouldPersist() const | 1004 bool WebPluginContainerImpl::pluginShouldPersist() const | 
| 1005 { | 1005 { | 
| 1006     return m_webPlugin->shouldPersist(); | 1006     return m_webPlugin->shouldPersist(); | 
| 1007 } | 1007 } | 
| 1008 | 1008 | 
| 1009 } // namespace blink | 1009 } // namespace blink | 
| OLD | NEW | 
|---|