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 |