[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

simon.fraser at apple.com simon.fraser at apple.com
Wed Dec 22 11:11:51 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit b73688b74d04edd4a581183311b3f835d405289a
Author: simon.fraser at apple.com <simon.fraser at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Jul 14 23:17:20 2010 +0000

    2010-07-14  Simon Fraser  <simon.fraser at apple.com>
    
            Reviewed by John Sullivan.
    
            <rdar://problem/8186963> Expose information about compositing layers.
    
            Expose information about the types of compositing layers via RenderLayerBacking::compositingLayerType().
    
            * WebCore.exp.in: Export WebCore::SpaceSplitStringData::createVector().
            * WebCore.xcodeproj/project.pbxproj: Make RenderLayerBacking.h a Private header for use by WebKit.
            * platform/graphics/GraphicsLayer.h: Add hasContentsLayer() and usingTiledLayer() methods.
            (WebCore::GraphicsLayer::hasContentsLayer):
            (WebCore::GraphicsLayer::usingTiledLayer):
            * platform/graphics/mac/GraphicsLayerCA.h:
            (WebCore::GraphicsLayerCA::hasContentsLayer): Return true if we have a contents layer.
            * rendering/RenderLayerBacking.cpp:
            (WebCore::RenderLayerBacking::compositingLayerType): Return information about the type of composited layer.
            * rendering/RenderLayerBacking.h:
    
    2010-07-14  Simon Fraser  <simon.fraser at apple.com>
    
            Reviewed by John Sullivan.
    
            <rdar://problem/8186963> Expose information about compositing layers.
    
            Use RenderLayerBacking::compositingLayerType() to add more information about compositing to
            WebRenderLayer, via a compositingInfo property. Also show element classnames.
    
            Also add separator items between the various z-order lists.
    
            * WebView/WebRenderLayer.h:
            * WebView/WebRenderLayer.mm:
            (+[WebRenderLayer nameForLayer:]):
            (+[WebRenderLayer compositingInfoForLayer:]):
            (-[WebRenderLayer initWithRenderLayer:]):
            (-[WebRenderLayer initWithName:]):
            (-[WebRenderLayer initWithWebFrame:]):
            (-[WebRenderLayer dealloc]):
            (-[WebRenderLayer buildDescendantLayers:]):
            (-[WebRenderLayer compositingInfo]):
            (-[WebRenderLayer isComposited]):
            (-[WebRenderLayer isSeparator]):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63368 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index c9f6c31..1a098d0 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2010-07-14  Simon Fraser  <simon.fraser at apple.com>
+
+        Reviewed by John Sullivan.
+
+        <rdar://problem/8186963> Expose information about compositing layers.
+
+        Expose information about the types of compositing layers via RenderLayerBacking::compositingLayerType().
+
+        * WebCore.exp.in: Export WebCore::SpaceSplitStringData::createVector().
+        * WebCore.xcodeproj/project.pbxproj: Make RenderLayerBacking.h a Private header for use by WebKit.
+        * platform/graphics/GraphicsLayer.h: Add hasContentsLayer() and usingTiledLayer() methods.
+        (WebCore::GraphicsLayer::hasContentsLayer):
+        (WebCore::GraphicsLayer::usingTiledLayer):
+        * platform/graphics/mac/GraphicsLayerCA.h:
+        (WebCore::GraphicsLayerCA::hasContentsLayer): Return true if we have a contents layer.
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::compositingLayerType): Return information about the type of composited layer.
+        * rendering/RenderLayerBacking.h:
+
 2010-07-14  Darin Adler  <darin at apple.com>
 
         Reviewed by Sam Weinig.
diff --git a/WebCore/WebCore.exp.in b/WebCore/WebCore.exp.in
index 83e7d1d..3cdfb00 100644
--- a/WebCore/WebCore.exp.in
+++ b/WebCore/WebCore.exp.in
@@ -138,6 +138,7 @@ __ZN7WebCore10MouseEventC1ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindow
 __ZN7WebCore10ScrollView20setCanHaveScrollbarsEb
 __ZN7WebCore10StringImpl14createCFStringEv
 __ZN7WebCore10StringImplcvP8NSStringEv
+__ZN7WebCore20SpaceSplitStringData12createVectorEv
 __ZN7WebCore10handCursorEv
 __ZN7WebCore10setCookiesEPNS_8DocumentERKNS_4KURLERKNS_6StringE
 __ZN7WebCore11BitmapImageC1EP7CGImagePNS_13ImageObserverE
@@ -1071,6 +1072,7 @@ _WebCoreHas3DRendering
 #if USE(ACCELERATED_COMPOSITING)
 __ZN7WebCore13GraphicsLayer17removeAllChildrenEv
 __ZN7WebCore13GraphicsLayer6createEPNS_19GraphicsLayerClientE
+__ZNK7WebCore18RenderLayerBacking20compositingLayerTypeEv
 #endif
 
 #if ENABLE(CONTEXT_MENUS)
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index cadf3cc..e4b3018 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -223,7 +223,7 @@
 		0F580B0E0F12A2690051D689 /* GraphicsLayerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F580B0B0F12A2690051D689 /* GraphicsLayerClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		0F580CFD0F12DE9B0051D689 /* RenderLayerCompositor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F580CF90F12DE9B0051D689 /* RenderLayerCompositor.h */; };
 		0F580CFE0F12DE9B0051D689 /* RenderLayerCompositor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F580CFA0F12DE9B0051D689 /* RenderLayerCompositor.cpp */; };
-		0F580CFF0F12DE9B0051D689 /* RenderLayerBacking.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F580CFB0F12DE9B0051D689 /* RenderLayerBacking.h */; };
+		0F580CFF0F12DE9B0051D689 /* RenderLayerBacking.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F580CFB0F12DE9B0051D689 /* RenderLayerBacking.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		0F580D000F12DE9B0051D689 /* RenderLayerBacking.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F580CFC0F12DE9B0051D689 /* RenderLayerBacking.cpp */; };
 		0F5B7A5410F65D7A00376302 /* RenderEmbeddedObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F5B7A5210F65D7A00376302 /* RenderEmbeddedObject.cpp */; };
 		0F5B7A5510F65D7A00376302 /* RenderEmbeddedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5B7A5310F65D7A00376302 /* RenderEmbeddedObject.h */; settings = {ATTRIBUTES = (Private, ); }; };
diff --git a/WebCore/platform/graphics/GraphicsLayer.h b/WebCore/platform/graphics/GraphicsLayer.h
index 8fcebce..a5819f4 100644
--- a/WebCore/platform/graphics/GraphicsLayer.h
+++ b/WebCore/platform/graphics/GraphicsLayer.h
@@ -298,10 +298,11 @@ public:
     virtual void setContentsToImage(Image*) { }
     virtual void setContentsToMedia(PlatformLayer*) { } // video or plug-in
     virtual void setContentsBackgroundColor(const Color&) { }
-    
 #if ENABLE(3D_CANVAS)
     virtual void setContentsToWebGL(PlatformLayer*) { }
 #endif
+    virtual bool hasContentsLayer() const { return false; }
+
     // Callback from the underlying graphics system to draw layer contents.
     void paintGraphicsLayerContents(GraphicsContext&, const IntRect& clip);
     // Callback from the underlying graphics system when the layer has been displayed
@@ -351,6 +352,8 @@ public:
     // pointers for the layers and timing data will be included in the returned string.
     String layerTreeAsText(LayerTreeAsTextBehavior = LayerTreeAsTextBehaviorNormal) const;
 
+    bool usingTiledLayer() const { return m_usingTiledLayer; }
+
 protected:
 
     typedef Vector<TransformOperation::OperationType> TransformOperationList;
diff --git a/WebCore/platform/graphics/mac/GraphicsLayerCA.h b/WebCore/platform/graphics/mac/GraphicsLayerCA.h
index 7d78dee..80c822c 100644
--- a/WebCore/platform/graphics/mac/GraphicsLayerCA.h
+++ b/WebCore/platform/graphics/mac/GraphicsLayerCA.h
@@ -106,6 +106,7 @@ public:
 #if ENABLE(3D_CANVAS)
     virtual void setContentsToWebGL(PlatformLayer*);
 #endif
+    virtual bool hasContentsLayer() const { return m_contentsLayer; }
     
     virtual PlatformLayer* platformLayer() const;
 
diff --git a/WebCore/rendering/RenderLayerBacking.cpp b/WebCore/rendering/RenderLayerBacking.cpp
index ae01799..e8b3cee 100644
--- a/WebCore/rendering/RenderLayerBacking.cpp
+++ b/WebCore/rendering/RenderLayerBacking.cpp
@@ -1267,6 +1267,17 @@ String RenderLayerBacking::nameForLayer() const
 }
 #endif
 
+CompositingLayerType RenderLayerBacking::compositingLayerType() const
+{
+    if (m_graphicsLayer->hasContentsLayer())
+        return MediaCompositingLayer;
+
+    if (m_graphicsLayer->drawsContent())
+        return m_graphicsLayer->usingTiledLayer() ? TiledCompositingLayer : NormalCompositingLayer;
+    
+    return ContainerCompositingLayer;
+}
+
 } // namespace WebCore
 
 #endif // USE(ACCELERATED_COMPOSITING)
diff --git a/WebCore/rendering/RenderLayerBacking.h b/WebCore/rendering/RenderLayerBacking.h
index 16c39da..852fc04 100644
--- a/WebCore/rendering/RenderLayerBacking.h
+++ b/WebCore/rendering/RenderLayerBacking.h
@@ -40,6 +40,13 @@ namespace WebCore {
 class KeyframeList;
 class RenderLayerCompositor;
 
+enum CompositingLayerType {
+    NormalCompositingLayer, // non-tiled layer with backing store
+    TiledCompositingLayer, // tiled layer (always has backing store)
+    MediaCompositingLayer, // layer that contains an image, video, webGL or plugin
+    ContainerCompositingLayer // layer with no backing store
+};
+
 // RenderLayerBacking controls the compositing behavior for a single RenderLayer.
 // It holds the various GraphicsLayers, and makes decisions about intra-layer rendering
 // optimizations.
@@ -127,6 +134,9 @@ public:
 
     IntRect contentsBox() const;
     
+    // For informative purposes only.
+    CompositingLayerType compositingLayerType() const;
+    
 private:
     void createGraphicsLayer();
     void destroyGraphicsLayer();
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index dcf8485..dd34e58 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,27 @@
+2010-07-14  Simon Fraser  <simon.fraser at apple.com>
+
+        Reviewed by John Sullivan.
+
+        <rdar://problem/8186963> Expose information about compositing layers.
+
+        Use RenderLayerBacking::compositingLayerType() to add more information about compositing to
+        WebRenderLayer, via a compositingInfo property. Also show element classnames.
+        
+        Also add separator items between the various z-order lists.
+        
+        * WebView/WebRenderLayer.h:
+        * WebView/WebRenderLayer.mm:
+        (+[WebRenderLayer nameForLayer:]):
+        (+[WebRenderLayer compositingInfoForLayer:]):
+        (-[WebRenderLayer initWithRenderLayer:]):
+        (-[WebRenderLayer initWithName:]):
+        (-[WebRenderLayer initWithWebFrame:]):
+        (-[WebRenderLayer dealloc]):
+        (-[WebRenderLayer buildDescendantLayers:]):
+        (-[WebRenderLayer compositingInfo]):
+        (-[WebRenderLayer isComposited]):
+        (-[WebRenderLayer isSeparator]):
+
 2010-07-14  Darin Adler  <darin at apple.com>
 
         Another try at fixing the Tiger build.
diff --git a/WebKit/mac/WebView/WebRenderLayer.h b/WebKit/mac/WebView/WebRenderLayer.h
index 10d38df..e09983d 100644
--- a/WebKit/mac/WebView/WebRenderLayer.h
+++ b/WebKit/mac/WebView/WebRenderLayer.h
@@ -31,8 +31,10 @@
 {
     NSArray *children;
     NSString *name;
+    NSString *compositingInfo;
     NSRect bounds;
     BOOL composited;
+    BOOL separator;
 }
 
 - (id)initWithWebFrame:(WebFrame *)frame;
@@ -43,6 +45,9 @@
 - (NSString *)positionString;
 - (NSString *)widthString;
 - (NSString *)heightString;
-- (BOOL)composited;
+- (NSString *)compositingInfo;
+
+- (BOOL)isComposited;
+- (BOOL)isSeparator;
 
 @end
diff --git a/WebKit/mac/WebView/WebRenderLayer.mm b/WebKit/mac/WebView/WebRenderLayer.mm
index 31fd6d5..444c672 100644
--- a/WebKit/mac/WebView/WebRenderLayer.mm
+++ b/WebKit/mac/WebView/WebRenderLayer.mm
@@ -30,7 +30,7 @@
 #import <WebCore/FrameLoaderClient.h>
 #import <WebCore/PlatformString.h>
 #import <WebCore/RenderLayer.h>
-#import <WebCore/RenderView.h>
+#import <WebCore/RenderLayerBacking.h>
 #import <WebCore/RenderView.h>
 
 using namespace WebCore;
@@ -54,7 +54,18 @@ using namespace WebCore;
         if (node->isElementNode())
             name = [name stringByAppendingFormat:@" %@", (NSString *)static_cast<Element*>(node)->tagName()];
         if (node->hasID())
-            name = [name stringByAppendingFormat:@" %C%@%C", 0x2018, (NSString *)static_cast<Element*>(node)->getIdAttribute(), 0x2019];
+            name = [name stringByAppendingFormat:@" id=\"%@\"", (NSString *)static_cast<Element*>(node)->getIdAttribute()];
+
+        if (node->hasClass()) {
+            StyledElement* styledElement = static_cast<StyledElement*>(node);
+            String classes;
+            for (size_t i = 0; i < styledElement->classNames().size(); ++i) {
+                if (i > 0)
+                    classes += " ";
+                classes += styledElement->classNames()[i];
+            }
+            name = [name stringByAppendingFormat:@" class=\"%@\"", (NSString *)classes];
+        }
     }
 
     if (layer->isReflection())
@@ -63,12 +74,54 @@ using namespace WebCore;
     return name;
 }
 
++ (NSString *)compositingInfoForLayer:(RenderLayer*)layer;
+{
+    if (!layer->isComposited())
+        return @"";
+
+    NSString *layerType = @"";
+    RenderLayerBacking* backing = layer->backing();
+    switch (backing->compositingLayerType()) {
+        case NormalCompositingLayer:
+            layerType = @"composited";
+            break;
+        case TiledCompositingLayer:
+            layerType = @"composited: tiled layer";
+            break;
+        case MediaCompositingLayer:
+            layerType = @"composited for plug-in, video or WebGL";
+            break;
+        case ContainerCompositingLayer:
+            layerType = @"composited: container layer";
+            break;
+    }
+    
+    if (backing->hasClippingLayer())
+        layerType = [layerType stringByAppendingString:@" (clipping)"];
+
+    if (backing->hasAncestorClippingLayer())
+        layerType = [layerType stringByAppendingString:@" (clipped)"];
+
+    return layerType;
+}
+
 - (id)initWithRenderLayer:(RenderLayer*)layer
 {
     if ((self = [super init])) {
         name = [[WebRenderLayer nameForLayer:layer] retain];
         bounds = layer->absoluteBoundingBox();
         composited = layer->isComposited();
+        compositingInfo = [[WebRenderLayer compositingInfoForLayer:layer] retain];
+    }
+
+    return self;
+}
+
+- (id)initWithName:(NSString*)layerName
+{
+    if ((self = [super init])) {
+        name = [layerName copy];
+        separator = YES;
     }
 
     return self;
@@ -97,6 +150,7 @@ using namespace WebCore;
         name = [[WebRenderLayer nameForLayer:layer] retain];
         bounds = layer->absoluteBoundingBox();
         composited = layer->isComposited();
+        compositingInfo = [[WebRenderLayer compositingInfoForLayer:layer] retain];
     
         [self buildDescendantLayers:layer];
     }
@@ -108,6 +162,7 @@ using namespace WebCore;
 {
     [children release];
     [name release];
+    [compositingInfo release];
     [super dealloc];
 }
 
@@ -119,6 +174,13 @@ using namespace WebCore;
     
     if (Vector<RenderLayer*>* negZOrderList = layer->negZOrderList()) {
         size_t listSize = negZOrderList->size();
+
+        if (listSize) {
+            WebRenderLayer* newLayer = [[WebRenderLayer alloc] initWithName:@"-ve z-order list"];
+            [childWebLayers addObject:newLayer];
+            [newLayer release];
+        }
+
         for (size_t i = 0; i < listSize; ++i) {
             RenderLayer* curLayer = negZOrderList->at(i);
 
@@ -132,6 +194,13 @@ using namespace WebCore;
 
     if (Vector<RenderLayer*>* normalFlowList = layer->normalFlowList()) {
         size_t listSize = normalFlowList->size();
+
+        if (listSize) {
+            WebRenderLayer* newLayer = [[WebRenderLayer alloc] initWithName:@"normal flow list"];
+            [childWebLayers addObject:newLayer];
+            [newLayer release];
+        }
+        
         for (size_t i = 0; i < listSize; ++i) {
             RenderLayer* curLayer = normalFlowList->at(i);
 
@@ -145,6 +214,13 @@ using namespace WebCore;
 
     if (Vector<RenderLayer*>* posZOrderList = layer->posZOrderList()) {
         size_t listSize = posZOrderList->size();
+
+        if (listSize) {
+            WebRenderLayer* newLayer = [[WebRenderLayer alloc] initWithName:@"+ve z-order list"];
+            [childWebLayers addObject:newLayer];
+            [newLayer release];
+        }
+
         for (size_t i = 0; i < listSize; ++i) {
             RenderLayer* curLayer = posZOrderList->at(i);
 
@@ -184,9 +260,19 @@ using namespace WebCore;
     return [NSString stringWithFormat:@"%.0f", bounds.size.height];
 }
 
-- (BOOL)composited
+- (NSString *)compositingInfo
+{
+    return compositingInfo;
+}
+
+- (BOOL)isComposited
 {
     return composited;
 }
 
+- (BOOL)isSeparator
+{
+    return separator;
+}
+
 @end

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list