| 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 #include "core/paint/LayoutObjectDrawingRecorder.h" | 62 #include "core/paint/LayoutObjectDrawingRecorder.h" |
| 63 #include "core/paint/PaintLayer.h" | 63 #include "core/paint/PaintLayer.h" |
| 64 #include "modules/plugins/PluginOcclusionSupport.h" | 64 #include "modules/plugins/PluginOcclusionSupport.h" |
| 65 #include "platform/HostWindow.h" | 65 #include "platform/HostWindow.h" |
| 66 #include "platform/KeyboardCodes.h" | 66 #include "platform/KeyboardCodes.h" |
| 67 #include "platform/PlatformGestureEvent.h" | 67 #include "platform/PlatformGestureEvent.h" |
| 68 #include "platform/UserGestureIndicator.h" | 68 #include "platform/UserGestureIndicator.h" |
| 69 #include "platform/exported/WrappedResourceResponse.h" | 69 #include "platform/exported/WrappedResourceResponse.h" |
| 70 #include "platform/graphics/GraphicsContext.h" | 70 #include "platform/graphics/GraphicsContext.h" |
| 71 #include "platform/graphics/GraphicsLayer.h" | 71 #include "platform/graphics/GraphicsLayer.h" |
| 72 #include "platform/graphics/paint/CullRect.h" |
| 72 #include "platform/scroll/ScrollAnimator.h" | 73 #include "platform/scroll/ScrollAnimator.h" |
| 73 #include "platform/scroll/ScrollbarTheme.h" | 74 #include "platform/scroll/ScrollbarTheme.h" |
| 74 #include "public/platform/Platform.h" | 75 #include "public/platform/Platform.h" |
| 75 #include "public/platform/WebClipboard.h" | 76 #include "public/platform/WebClipboard.h" |
| 76 #include "public/platform/WebCompositorSupport.h" | 77 #include "public/platform/WebCompositorSupport.h" |
| 77 #include "public/platform/WebCursorInfo.h" | 78 #include "public/platform/WebCursorInfo.h" |
| 78 #include "public/platform/WebDragData.h" | 79 #include "public/platform/WebDragData.h" |
| 79 #include "public/platform/WebExternalTextureLayer.h" | 80 #include "public/platform/WebExternalTextureLayer.h" |
| 80 #include "public/platform/WebRect.h" | 81 #include "public/platform/WebRect.h" |
| 81 #include "public/platform/WebString.h" | 82 #include "public/platform/WebString.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 103 Widget::setFrameRect(frameRect); | 104 Widget::setFrameRect(frameRect); |
| 104 reportGeometry(); | 105 reportGeometry(); |
| 105 } | 106 } |
| 106 | 107 |
| 107 void WebPluginContainerImpl::layoutIfNeeded() | 108 void WebPluginContainerImpl::layoutIfNeeded() |
| 108 { | 109 { |
| 109 RELEASE_ASSERT(m_webPlugin); | 110 RELEASE_ASSERT(m_webPlugin); |
| 110 m_webPlugin->layoutIfNeeded(); | 111 m_webPlugin->layoutIfNeeded(); |
| 111 } | 112 } |
| 112 | 113 |
| 113 void WebPluginContainerImpl::paint(GraphicsContext* context, const IntRect& rect
) const | 114 void WebPluginContainerImpl::paint(GraphicsContext* context, const CullRect& cul
lRect) const |
| 114 { | 115 { |
| 115 if (!parent()) | 116 if (!parent()) |
| 116 return; | 117 return; |
| 117 | 118 |
| 118 // Don't paint anything if the plugin doesn't intersect. | 119 // Don't paint anything if the plugin doesn't intersect. |
| 119 if (!frameRect().intersects(rect)) | 120 if (!cullRect.intersectsCullRect(frameRect())) |
| 120 return; | 121 return; |
| 121 | 122 |
| 122 if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(*context, *m_ele
ment->layoutObject(), DisplayItem::Type::WebPlugin, LayoutPoint())) | 123 if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(*context, *m_ele
ment->layoutObject(), DisplayItem::Type::WebPlugin, LayoutPoint())) |
| 123 return; | 124 return; |
| 124 | 125 |
| 125 LayoutObjectDrawingRecorder drawingRecorder(*context, *m_element->layoutObje
ct(), DisplayItem::Type::WebPlugin, rect, LayoutPoint()); | 126 LayoutObjectDrawingRecorder drawingRecorder(*context, *m_element->layoutObje
ct(), DisplayItem::Type::WebPlugin, cullRect.m_rect, LayoutPoint()); |
| 126 context->save(); | 127 context->save(); |
| 127 | 128 |
| 128 ASSERT(parent()->isFrameView()); | 129 ASSERT(parent()->isFrameView()); |
| 129 FrameView* view = toFrameView(parent()); | 130 FrameView* view = toFrameView(parent()); |
| 130 | 131 |
| 131 // The plugin is positioned in the root frame's coordinates, so it needs to | 132 // The plugin is positioned in the root frame's coordinates, so it needs to |
| 132 // be painted in them too. | 133 // be painted in them too. |
| 133 IntPoint origin = view->contentsToRootFrame(IntPoint(0, 0)); | 134 IntPoint origin = view->contentsToRootFrame(IntPoint(0, 0)); |
| 134 context->translate(static_cast<float>(-origin.x()), static_cast<float>(-orig
in.y())); | 135 context->translate(static_cast<float>(-origin.x()), static_cast<float>(-orig
in.y())); |
| 135 | 136 |
| 136 WebCanvas* canvas = context->canvas(); | 137 WebCanvas* canvas = context->canvas(); |
| 137 | 138 |
| 138 IntRect windowRect = view->contentsToRootFrame(rect); | 139 IntRect windowRect = view->contentsToRootFrame(cullRect.m_rect); |
| 139 m_webPlugin->paint(canvas, windowRect); | 140 m_webPlugin->paint(canvas, windowRect); |
| 140 | 141 |
| 141 context->restore(); | 142 context->restore(); |
| 142 } | 143 } |
| 143 | 144 |
| 144 void WebPluginContainerImpl::invalidateRect(const IntRect& rect) | 145 void WebPluginContainerImpl::invalidateRect(const IntRect& rect) |
| 145 { | 146 { |
| 146 if (!parent()) | 147 if (!parent()) |
| 147 return; | 148 return; |
| 148 | 149 |
| (...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 966 clipRect.move(-windowRect.x(), -windowRect.y()); | 967 clipRect.move(-windowRect.x(), -windowRect.y()); |
| 967 unobscuredRect.move(-windowRect.x(), -windowRect.y()); | 968 unobscuredRect.move(-windowRect.x(), -windowRect.y()); |
| 968 | 969 |
| 969 getPluginOcclusions(m_element, this->parent(), frameRect(), cutOutRects); | 970 getPluginOcclusions(m_element, this->parent(), frameRect(), cutOutRects); |
| 970 // Convert to the plugin position. | 971 // Convert to the plugin position. |
| 971 for (size_t i = 0; i < cutOutRects.size(); i++) | 972 for (size_t i = 0; i < cutOutRects.size(); i++) |
| 972 cutOutRects[i].move(-frameRect().x(), -frameRect().y()); | 973 cutOutRects[i].move(-frameRect().x(), -frameRect().y()); |
| 973 } | 974 } |
| 974 | 975 |
| 975 } // namespace blink | 976 } // namespace blink |
| OLD | NEW |