Changeset 53110 in webkit
- Timestamp:
- Jan 11, 2010 4:15:06 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r53106 r53110 1 2010-01-11 Simon Fraser <simon.fraser@apple.com> 2 3 Reviewed by Kevin Decker. 4 5 https://bugs.webkit.org/show_bug.cgi?id=33455 6 Allows plugins to participate in accelerated compositing 7 8 Change the testcase to make the embeds position: relative so that the behavior 9 of the test is not affected by whether WebCore decides to put plugins into 10 RenderLayers. 11 12 * platform/mac/plugins/embed-attributes-style-expected.checksum: 13 * platform/mac/plugins/embed-attributes-style-expected.png: 14 * platform/mac/plugins/embed-attributes-style-expected.txt: 15 * plugins/embed-attributes-style.html: 16 1 17 2010-01-11 Dirk Schulze <krit@webkit.org> 2 18 -
trunk/LayoutTests/platform/mac/plugins/embed-attributes-style-expected.checksum
r38297 r53110 1 ced4b519232c0abe24f14dbc8db59581 1 12f0362bcaeb2802b17760d15307b87e -
trunk/LayoutTests/platform/mac/plugins/embed-attributes-style-expected.txt
r52947 r53110 13 13 RenderBlock {DIV} at (0,62) size 784x0 14 14 RenderBlock {DIV} at (0,62) size 784x104 15 RenderEmbeddedObject {EMBED} at (0,0) size 50x10016 15 RenderText {#text} at (50,86) size 122x18 17 16 text run at (50,86) width 4: " " 18 17 text run at (54,86) width 118: "valign top attribute" 19 18 RenderBlock {DIV} at (0,166) size 784x104 20 RenderEmbeddedObject {EMBED} at (0,0) size 50x10021 19 RenderText {#text} at (50,86) size 128x18 22 20 text run at (50,86) width 4: " " 23 21 text run at (54,86) width 124: "border 5px attribute" 24 22 RenderBlock {DIV} at (0,270) size 784x106 25 RenderEmbeddedObject {EMBED} at (0,0) size 52x102 [border: (1px dashed #000000)]26 23 RenderText {#text} at (52,88) size 102x18 27 24 text run at (52,88) width 4: " " 28 25 text run at (56,88) width 98: "hidden attribute" 26 layer at (8,70) size 50x100 27 RenderEmbeddedObject {EMBED} at (0,0) size 50x100 28 layer at (8,174) size 50x100 29 RenderEmbeddedObject {EMBED} at (0,0) size 50x100 30 layer at (8,278) size 52x102 31 RenderEmbeddedObject {EMBED} at (0,0) size 52x102 [border: (1px dashed #000000)] -
trunk/LayoutTests/plugins/embed-attributes-style.html
r14069 r53110 3 3 <style> 4 4 embed { 5 position: relative; 5 6 width: 50px; 6 7 height: 100px; -
trunk/WebCore/ChangeLog
r53109 r53110 1 2010-01-11 Simon Fraser <simon.fraser@apple.com> 2 3 Reviewed by Kevin Decker. 4 5 https://bugs.webkit.org/show_bug.cgi?id=33455 6 Allows plugins to participate in accelerated compositing 7 8 For plugins using the CoreAnimation rendering mode, host their CALayers in the 9 accelerated compositing layer tree. 10 11 This requires making normal flow RenderLayers for RenderEmbeddedObjects when they represent 12 a plugin using this mode. 13 14 * WebCore.base.exp: Export Node::setNeedsStyleRecalc() for use by WebKit. 15 * WebCore.xcodeproj/project.pbxproj: Re-order files for sorting. 16 17 * rendering/RenderEmbeddedObject.h: 18 * rendering/RenderEmbeddedObject.cpp: 19 (WebCore::RenderEmbeddedObject::requiresLayer): Make a layer if the plugin is using 20 accelerated compositing mode. 21 (WebCore::RenderEmbeddedObject::allowsAcceleratedCompositing): Asks whether the plugin has 22 a layer, via PluginWidget. 23 24 * rendering/RenderLayer.cpp: 25 (WebCore::RenderLayer::shouldBeNormalFlowOnly): 26 (WebCore::RenderLayer::isSelfPaintingLayer): 27 RenderEmbeddedObjects should be normal flow layers, and self-painting layers. 28 29 * rendering/RenderLayerBacking.cpp: 30 (WebCore::RenderLayerBacking::updateGraphicsLayerConfiguration): 31 Parent the plugin's layer in the GraphicsLayer when updating the layer configuration. 32 33 * rendering/RenderLayerCompositor.h: 34 * rendering/RenderLayerCompositor.cpp: 35 (WebCore::RenderLayerCompositor::requiresCompositingLayer): 36 (WebCore::RenderLayerCompositor::requiresCompositingForPlugin): 37 RenderEmbeddedObjects that allow accelerated compositing trip accelerated compositing mode 38 for the page. 39 1 40 2010-01-11 Andreas Kling <andreas.kling@nokia.com> 2 41 -
trunk/WebCore/WebCore.base.exp
r53056 r53110 884 884 __ZNK7WebCore4Node18getSubresourceURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE 885 885 __ZNK7WebCore4Node9nodeIndexEv 886 __ZN7WebCore4Node19setNeedsStyleRecalcENS_15StyleChangeTypeE 886 887 __ZNK7WebCore4Page10pluginDataEv 887 888 __ZNK7WebCore4Page34inLowQualityImageInterpolationModeEv -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r53086 r53110 15462 15462 BC77CEC70FF01CBE0070887B /* RenderDataGrid.cpp */, 15463 15463 BC77CEB20FF017F20070887B /* RenderDataGrid.h */, 15464 0F5B7A5210F65D7A00376302 /* RenderEmbeddedObject.cpp */, 15465 0F5B7A5310F65D7A00376302 /* RenderEmbeddedObject.h */, 15464 15466 A8EA73AF0A1900E300A8EF5F /* RenderFieldset.cpp */, 15465 15467 A8EA73B00A1900E300A8EF5F /* RenderFieldset.h */, … … 15513 15515 853CA9EE0AEEC657002372DC /* RenderPath.cpp */, 15514 15516 853CA9EF0AEEC657002372DC /* RenderPath.h */, 15515 0F5B7A5210F65D7A00376302 /* RenderEmbeddedObject.cpp */,15516 0F5B7A5310F65D7A00376302 /* RenderEmbeddedObject.h */,15517 15517 A871DFDE0A15376B00B12A68 /* RenderReplaced.cpp */, 15518 15518 A871DFDF0A15376B00B12A68 /* RenderReplaced.h */, -
trunk/WebCore/rendering/RenderEmbeddedObject.cpp
r52947 r53110 34 34 #include "MIMETypeRegistry.h" 35 35 #include "Page.h" 36 #include "PluginWidget.h" 36 37 #include "RenderView.h" 37 38 #include "RenderWidgetProtector.h" … … 42 43 #endif 43 44 45 #if USE(ACCELERATED_COMPOSITING) 46 #include "PluginWidget.h" 47 #endif 48 44 49 namespace WebCore { 45 50 … … 57 62 frameView()->removeWidgetToUpdate(this); 58 63 } 64 65 #if USE(ACCELERATED_COMPOSITING) 66 bool RenderEmbeddedObject::requiresLayer() const 67 { 68 if (RenderPartObject::requiresLayer()) 69 return true; 70 71 return allowsAcceleratedCompositing(); 72 } 73 74 bool RenderEmbeddedObject::allowsAcceleratedCompositing() const 75 { 76 return widget() && widget()->isPluginWidget() && static_cast<PluginWidget*>(widget())->platformLayer(); 77 } 78 #endif 59 79 60 80 static bool isURLAllowed(Document* doc, const String& url) -
trunk/WebCore/rendering/RenderEmbeddedObject.h
r52947 r53110 36 36 void updateWidget(bool onlyCreateNonNetscapePlugins); 37 37 38 #if USE(ACCELERATED_COMPOSITING) 39 virtual bool allowsAcceleratedCompositing() const; 40 #endif 41 38 42 private: 39 43 virtual const char* renderName() const { return "RenderEmbeddedObject"; } 40 44 virtual bool isEmbeddedObject() const { return true; } 45 46 #if USE(ACCELERATED_COMPOSITING) 47 virtual bool requiresLayer() const; 48 #endif 41 49 42 50 virtual void layout(); -
trunk/WebCore/rendering/RenderLayer.cpp
r52995 r53110 3303 3303 bool RenderLayer::shouldBeNormalFlowOnly() const 3304 3304 { 3305 return (renderer()->hasOverflowClip() || renderer()->hasReflection() || renderer()->hasMask() || renderer()->isVideo() ) &&3305 return (renderer()->hasOverflowClip() || renderer()->hasReflection() || renderer()->hasMask() || renderer()->isVideo() || renderer()->isEmbeddedObject()) && 3306 3306 !renderer()->isPositioned() && 3307 3307 !renderer()->isRelPositioned() && … … 3312 3312 bool RenderLayer::isSelfPaintingLayer() const 3313 3313 { 3314 return !isNormalFlowOnly() || renderer()->hasReflection() || renderer()->hasMask() || renderer()->isTableRow() || renderer()->isVideo() ;3314 return !isNormalFlowOnly() || renderer()->hasReflection() || renderer()->hasMask() || renderer()->isTableRow() || renderer()->isVideo() || renderer()->isEmbeddedObject(); 3315 3315 } 3316 3316 -
trunk/WebCore/rendering/RenderLayerBacking.cpp
r53034 r53110 42 42 #include "InspectorTimelineAgent.h" 43 43 #include "KeyframeList.h" 44 #include "PluginWidget.h" 44 45 #include "RenderBox.h" 45 46 #include "RenderImage.h" 46 47 #include "RenderLayerCompositor.h" 48 #include "RenderEmbeddedObject.h" 47 49 #include "RenderVideo.h" 48 50 #include "RenderView.h" … … 197 199 if (isDirectlyCompositedImage()) 198 200 updateImageContents(); 201 202 if (renderer()->isEmbeddedObject() && toRenderEmbeddedObject(renderer())->allowsAcceleratedCompositing()) { 203 PluginWidget* pluginWidget = static_cast<PluginWidget*>(toRenderEmbeddedObject(renderer())->widget()); 204 m_graphicsLayer->setContentsToMedia(pluginWidget->platformLayer()); 205 } 199 206 200 207 #if ENABLE(3D_CANVAS) -
trunk/WebCore/rendering/RenderLayerCompositor.cpp
r52314 r53110 40 40 #include "Page.h" 41 41 #include "RenderLayerBacking.h" 42 #include "RenderEmbeddedObject.h" 42 43 #include "RenderVideo.h" 43 44 #include "RenderView.h" … … 59 60 60 61 namespace WebCore { 62 63 using namespace HTMLNames; 61 64 62 65 struct CompositingState { … … 886 889 // static 887 890 bool RenderLayerCompositor::requiresCompositingLayer(const RenderLayer* layer) const 888 { 891 { 892 RenderObject* renderer = layer->renderer(); 889 893 // The root layer always has a compositing layer, but it may not have backing. 890 894 return (inCompositingMode() && layer->isRootLayer()) || 891 requiresCompositingForTransform(layer->renderer()) || 892 requiresCompositingForVideo(layer->renderer()) || 893 requiresCompositingForCanvas(layer->renderer()) || 894 layer->renderer()->style()->backfaceVisibility() == BackfaceVisibilityHidden || 895 requiresCompositingForTransform(renderer) || 896 requiresCompositingForVideo(renderer) || 897 requiresCompositingForCanvas(renderer) || 898 requiresCompositingForPlugin(renderer) || 899 renderer->style()->backfaceVisibility() == BackfaceVisibilityHidden || 895 900 clipsCompositingDescendants(layer) || 896 requiresCompositingForAnimation( layer->renderer());901 requiresCompositingForAnimation(renderer); 897 902 } 898 903 … … 976 981 } 977 982 983 bool RenderLayerCompositor::requiresCompositingForPlugin(RenderObject* renderer) const 984 { 985 return renderer->isEmbeddedObject() && toRenderEmbeddedObject(renderer)->allowsAcceleratedCompositing(); 986 } 987 978 988 bool RenderLayerCompositor::requiresCompositingForAnimation(RenderObject* renderer) const 979 989 { -
trunk/WebCore/rendering/RenderLayerCompositor.h
r51476 r53110 174 174 bool requiresCompositingForVideo(RenderObject*) const; 175 175 bool requiresCompositingForCanvas(RenderObject*) const; 176 bool requiresCompositingForPlugin(RenderObject*) const; 176 177 bool requiresCompositingWhenDescendantsAreCompositing(RenderObject*) const; 177 178 -
trunk/WebKit/mac/ChangeLog
r53046 r53110 1 2010-01-11 Simon Fraser <simon.fraser@apple.com> 2 3 Reviewed by Kevin Decker. 4 5 https://bugs.webkit.org/show_bug.cgi?id=33455 6 Allows plugins to participate in accelerated compositing 7 8 * Plugins/Hosted/WebHostedNetscapePluginView.mm: 9 (-[WebHostedNetscapePluginView createPlugin]): 10 * Plugins/WebNetscapePluginView.mm: 11 (-[WebNetscapePluginView createPlugin]): If accelerated compositing is 12 available, don't use a layer-backed NSView for plugins. Instead, tickle the 13 accelerated compositing code via setNeedsStyleRecalc(SyntheticStyleChange), 14 which will parent the plugin's layer in the accelerated compositing layer 15 tree. 16 1 17 2010-01-09 Adam Barth <abarth@webkit.org> 2 18 -
trunk/WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm
r52942 r53110 117 117 else { 118 118 _pluginLayer = WKMakeRenderLayer(_proxy->renderContextID()); 119 self.wantsLayer = YES; 119 120 if (accleratedCompositingEnabled) 121 [self element]->setNeedsStyleRecalc(SyntheticStyleChange); 122 else 123 self.wantsLayer = YES; 120 124 } 121 125 -
trunk/WebKit/mac/Plugins/WebNetscapePluginView.mm
r52887 r53110 1090 1090 void *value = 0; 1091 1091 if ([_pluginPackage.get() pluginFuncs]->getvalue(plugin, NPPVpluginCoreAnimationLayer, &value) == NPERR_NO_ERROR && value) { 1092 1092 1093 1093 // The plug-in gives us a retained layer. 1094 1094 _pluginLayer.adoptNS((CALayer *)value); 1095 [self setWantsLayer:YES]; 1095 1096 BOOL accleratedCompositingEnabled = false; 1097 #if USE(ACCELERATED_COMPOSITING) 1098 accleratedCompositingEnabled = [[[self webView] preferences] acceleratedCompositingEnabled]; 1099 #endif 1100 if (accleratedCompositingEnabled) 1101 [self element]->setNeedsStyleRecalc(SyntheticStyleChange); 1102 else 1103 [self setWantsLayer:YES]; 1096 1104 LOG(Plugins, "%@ is using Core Animation drawing model with layer %@", _pluginPackage.get(), _pluginLayer.get()); 1097 1105 }
Note: See TracChangeset
for help on using the changeset viewer.