Changeset 176568 in webkit
- Timestamp:
- Nov 28, 2014, 10:39:13 AM (12 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 6 edited
-
ChangeLog (modified) (1 diff)
-
Shared/API/c/WKRenderLayer.cpp (modified) (1 diff)
-
Shared/API/c/WKRenderLayer.h (modified) (2 diffs)
-
Shared/UserMessageCoders.h (modified) (3 diffs)
-
Shared/WebRenderLayer.cpp (modified) (4 diffs)
-
Shared/WebRenderLayer.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r176559 r176568 1 2014-11-28 Simon Fraser <simon.fraser@apple.com> 2 3 Allow clients of the WKRenderLayerRef C SPI to connect layer trees across frame boundaries 4 https://bugs.webkit.org/show_bug.cgi?id=139021 5 6 Reviewed by Dan Bernstein. 7 8 Add WKRenderLayerGetFrameContentsLayer which returns a WKRenderLayerRef for 9 the content document of a RenderWidget, if its has one (e.g. frames, iframes 10 and <object> with document contents). 11 12 * Shared/API/c/WKRenderLayer.cpp: 13 (WKRenderLayerGetFrameContentsLayer): 14 * Shared/API/c/WKRenderLayer.h: 15 * Shared/UserMessageCoders.h: 16 (WebKit::UserMessageEncoder::baseEncode): 17 (WebKit::UserMessageDecoder::baseDecode): 18 * Shared/WebRenderLayer.cpp: 19 (WebKit::WebRenderLayer::create): 20 (WebKit::WebRenderLayer::WebRenderLayer): 21 * Shared/WebRenderLayer.h: 22 (WebKit::WebRenderLayer::frameContentsLayer): 23 1 24 2014-11-28 Csaba Osztrogonác <ossy@webkit.org> 2 25 -
trunk/Source/WebKit2/Shared/API/c/WKRenderLayer.cpp
r176509 r176568 130 130 return toAPI(toImpl(renderLayerRef)->positiveZOrderList()); 131 131 } 132 133 WKRenderLayerRef WKRenderLayerGetFrameContentsLayer(WKRenderLayerRef renderLayerRef) 134 { 135 return toAPI(toImpl(renderLayerRef)->frameContentsLayer()); 136 } -
trunk/Source/WebKit2/Shared/API/c/WKRenderLayer.h
r176509 r176568 39 39 WK_EXPORT WKRenderObjectRef WKRenderLayerGetRenderer(WKRenderLayerRef renderLayer); 40 40 41 // FIXME: Remove this function once Safari does not require it. 41 // FIXME: Remove this function once Safari does not require it. Clients can access this data via the renderer. 42 42 WK_EXPORT WKStringRef WKRenderLayerCopyRendererName(WKRenderLayerRef renderLayer); 43 43 … … 69 69 WK_EXPORT WKArrayRef WKRenderLayerGetPositiveZOrderList(WKRenderLayerRef renderLayer); 70 70 71 WK_EXPORT WKRenderLayerRef WKRenderLayerGetFrameContentsLayer(WKRenderLayerRef renderLayer); 72 71 73 #ifdef __cplusplus 72 74 } -
trunk/Source/WebKit2/Shared/UserMessageCoders.h
r176509 r176568 160 160 encoder << Owner(coder, renderLayer->normalFlowList()); 161 161 encoder << Owner(coder, renderLayer->positiveZOrderList()); 162 encoder << Owner(coder, renderLayer->frameContentsLayer()); 162 163 return true; 163 164 } … … 398 399 RefPtr<API::Object> normalFlowList; 399 400 RefPtr<API::Object> positiveZOrderList; 401 RefPtr<API::Object> frameContentsLayer; 400 402 401 403 Owner rendererCoder(coder, renderer); … … 425 427 if (!decoder.decode(positiveZOrderListCoder)) 426 428 return false; 429 430 Owner frameContentsLayerCoder(coder, frameContentsLayer); 431 if (!decoder.decode(frameContentsLayerCoder)) 432 return false; 433 427 434 coder.m_root = WebRenderLayer::create(static_pointer_cast<WebRenderObject>(renderer), isReflection, isClipping, isClipped, static_cast<WebRenderLayer::CompositingLayerType>(compositingLayerTypeAsUInt32), 428 435 absoluteBoundingBox, backingStoreMemoryEstimate, static_pointer_cast<API::Array>(negativeZOrderList), static_pointer_cast<API::Array>(normalFlowList), 429 static_pointer_cast<API::Array>(positiveZOrderList) );436 static_pointer_cast<API::Array>(positiveZOrderList), static_pointer_cast<WebRenderLayer>(frameContentsLayer)); 430 437 break; 431 438 } -
trunk/Source/WebKit2/Shared/WebRenderLayer.cpp
r176509 r176568 37 37 #include <WebCore/RenderLayerBacking.h> 38 38 #include <WebCore/RenderView.h> 39 #include <WebCore/RenderWidget.h> 39 40 #include <WebCore/StyledElement.h> 40 41 … … 47 48 Frame* mainFrame = page->mainFrame(); 48 49 if (!mainFrame) 49 return 0;50 return nullptr; 50 51 51 52 if (!mainFrame->loader().client().hasHTMLView()) 52 return 0;53 return nullptr; 53 54 54 55 RenderView* contentRenderer = mainFrame->contentRenderer(); 55 56 if (!contentRenderer) 56 return 0;57 return nullptr; 57 58 58 59 RenderLayer* rootLayer = contentRenderer->layer(); 59 60 if (!rootLayer) 60 return 0;61 return nullptr; 61 62 62 63 return adoptRef(new WebRenderLayer(rootLayer)); 63 64 } 64 65 65 PassRefPtr<WebRenderLayer> WebRenderLayer::create(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList )66 PassRefPtr<WebRenderLayer> WebRenderLayer::create(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList, PassRefPtr<WebRenderLayer> frameContentsLayer) 66 67 { 67 return adoptRef(new WebRenderLayer(renderer, isReflection, isClipping, isClipped, type, absoluteBoundingBox, backingStoreMemoryEstimate, negativeZOrderList, normalFlowList, positiveZOrderList ));68 return adoptRef(new WebRenderLayer(renderer, isReflection, isClipping, isClipped, type, absoluteBoundingBox, backingStoreMemoryEstimate, negativeZOrderList, normalFlowList, positiveZOrderList, frameContentsLayer)); 68 69 } 69 70 … … 119 120 m_normalFlowList = createArrayFromLayerList(layer->normalFlowList()); 120 121 m_positiveZOrderList = createArrayFromLayerList(layer->posZOrderList()); 122 123 if (is<RenderWidget>(layer->renderer())) { 124 if (Document* contentDocument = downcast<RenderWidget>(layer->renderer()).frameOwnerElement().contentDocument()) { 125 if (RenderView* view = contentDocument->renderView()) 126 m_frameContentsLayer = adoptRef(new WebRenderLayer(view->layer())); 127 } 128 } 121 129 } 122 130 123 WebRenderLayer::WebRenderLayer(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList )131 WebRenderLayer::WebRenderLayer(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList, PassRefPtr<WebRenderLayer> frameContentsLayer) 124 132 : m_renderer(renderer) 125 133 , m_isReflection(isReflection) … … 132 140 , m_normalFlowList(normalFlowList) 133 141 , m_positiveZOrderList(positiveZOrderList) 142 , m_frameContentsLayer(frameContentsLayer) 134 143 { 135 144 } -
trunk/Source/WebKit2/Shared/WebRenderLayer.h
r176509 r176568 42 42 43 43 static PassRefPtr<WebRenderLayer> create(WebPage*); 44 static PassRefPtr<WebRenderLayer> create(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList );44 static PassRefPtr<WebRenderLayer> create(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList, PassRefPtr<WebRenderLayer> frameContentsLayer); 45 45 46 46 API::Array* negativeZOrderList() const { return m_negativeZOrderList.get(); } 47 47 API::Array* normalFlowList() const { return m_normalFlowList.get(); } 48 48 API::Array* positiveZOrderList() const { return m_positiveZOrderList.get(); } 49 WebRenderLayer* frameContentsLayer() const { return m_frameContentsLayer.get(); } 49 50 50 51 WebRenderObject* renderer() const { return m_renderer.get(); } … … 58 59 private: 59 60 explicit WebRenderLayer(WebCore::RenderLayer*); 60 WebRenderLayer(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList );61 WebRenderLayer(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList, PassRefPtr<WebRenderLayer> frameContentsLayer); 61 62 62 63 static PassRefPtr<API::Array> createArrayFromLayerList(Vector<WebCore::RenderLayer*>*); … … 73 74 RefPtr<API::Array> m_normalFlowList; 74 75 RefPtr<API::Array> m_positiveZOrderList; 76 77 RefPtr<WebRenderLayer> m_frameContentsLayer; 75 78 }; 76 79
Note:
See TracChangeset
for help on using the changeset viewer.