Changeset 108785 in webkit


Ignore:
Timestamp:
Feb 24, 2012 6:31:59 AM (12 years ago)
Author:
reni@webkit.org
Message:

External <use> xlink:href references do not work
https://bugs.webkit.org/show_bug.cgi?id=12499

Reviewed by Nikolas Zimmermann.

Support external references on <use> by introducing CachedSVGDocument.
CachedSVGDocument is a CachedResource specialized for SVGDocuments.
This CachedSVGDocument will be stored for every use element with external reference.
This first patch only contains the new classes to test whether it works on every platform.
So they aren't used anywhere and just a follow-up patch will bind them into the caching system.

No new tests - no change in functionality.

  • CMakeLists.txt:
  • GNUmakefile.list.am:
  • Target.pri:
  • WebCore.gypi:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • loader/cache/CachedResource.cpp:

(WebCore::defaultPriorityForResourceType):
(WebCore::cachedResourceTypeToTargetType):

  • loader/cache/CachedResource.h:
  • loader/cache/CachedResourceClient.h:

(CachedResourceClient):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::createResource):
(WebCore::CachedResourceLoader::checkInsecureContent):
(WebCore::CachedResourceLoader::canRequest):

  • loader/cache/CachedSVGDocument.cpp: Added.

(WebCore):
(WebCore::CachedSVGDocument::CachedSVGDocument):
(WebCore::CachedSVGDocument::~CachedSVGDocument):
(WebCore::CachedSVGDocument::setEncoding):
(WebCore::CachedSVGDocument::encoding):
(WebCore::CachedSVGDocument::data):

  • loader/cache/CachedSVGDocument.h: Added.

(WebCore):
(CachedSVGDocument):
(WebCore::CachedSVGDocument::document):
(WebCore::CachedSVGDocument::schedule):
(CachedSVGDocumentClient):
(WebCore::CachedSVGDocumentClient::~CachedSVGDocumentClient):
(WebCore::CachedSVGDocumentClient::expectedType):
(WebCore::CachedSVGDocumentClient::resourceClientType):

Location:
trunk/Source/WebCore
Files:
2 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/CMakeLists.txt

    r108778 r108785  
    996996    loader/cache/CachedResourceLoader.cpp
    997997    loader/cache/CachedScript.cpp
     998    loader/cache/CachedSVGDocument.cpp
    998999    loader/cache/CachedXSLStyleSheet.cpp
    9991000    loader/cache/MemoryCache.cpp
  • trunk/Source/WebCore/ChangeLog

    r108784 r108785  
     12012-02-24  Renata Hodovan  <reni@webkit.org>
     2
     3        External <use> xlink:href references do not work
     4        https://bugs.webkit.org/show_bug.cgi?id=12499
     5
     6        Reviewed by Nikolas Zimmermann.
     7
     8        Support external references on <use> by introducing CachedSVGDocument.
     9        CachedSVGDocument is a CachedResource specialized for SVGDocuments.
     10        This CachedSVGDocument will be stored for every use element with external reference.
     11        This first patch only contains the new classes to test whether it works on every platform.
     12        So they aren't used anywhere and just a follow-up patch will bind them into the caching system.
     13
     14        No new tests - no change in functionality.
     15
     16        * CMakeLists.txt:
     17        * GNUmakefile.list.am:
     18        * Target.pri:
     19        * WebCore.gypi:
     20        * WebCore.vcproj/WebCore.vcproj:
     21        * WebCore.xcodeproj/project.pbxproj:
     22        * loader/cache/CachedResource.cpp:
     23        (WebCore::defaultPriorityForResourceType):
     24        (WebCore::cachedResourceTypeToTargetType):
     25        * loader/cache/CachedResource.h:
     26        * loader/cache/CachedResourceClient.h:
     27        (CachedResourceClient):
     28        * loader/cache/CachedResourceLoader.cpp:
     29        (WebCore::createResource):
     30        (WebCore::CachedResourceLoader::checkInsecureContent):
     31        (WebCore::CachedResourceLoader::canRequest):
     32        * loader/cache/CachedSVGDocument.cpp: Added.
     33        (WebCore):
     34        (WebCore::CachedSVGDocument::CachedSVGDocument):
     35        (WebCore::CachedSVGDocument::~CachedSVGDocument):
     36        (WebCore::CachedSVGDocument::setEncoding):
     37        (WebCore::CachedSVGDocument::encoding):
     38        (WebCore::CachedSVGDocument::data):
     39        * loader/cache/CachedSVGDocument.h: Added.
     40        (WebCore):
     41        (CachedSVGDocument):
     42        (WebCore::CachedSVGDocument::document):
     43        (WebCore::CachedSVGDocument::schedule):
     44        (CachedSVGDocumentClient):
     45        (WebCore::CachedSVGDocumentClient::~CachedSVGDocumentClient):
     46        (WebCore::CachedSVGDocumentClient::expectedType):
     47        (WebCore::CachedSVGDocumentClient::resourceClientType):
     48
    1492012-02-24  Alexis Menard  <alexis.menard@openbossa.org>
    250
  • trunk/Source/WebCore/GNUmakefile.list.am

    r108778 r108785  
    25322532        Source/WebCore/loader/cache/CachedShader.h \
    25332533        Source/WebCore/loader/cache/CachedStyleSheetClient.h \
     2534        Source/WebCore/loader/cache/CachedSVGDocument.cpp \
     2535        Source/WebCore/loader/cache/CachedSVGDocument.h \
    25342536        Source/WebCore/loader/cache/CachedTextTrack.cpp \
    25352537        Source/WebCore/loader/cache/CachedTextTrack.h \
  • trunk/Source/WebCore/Target.pri

    r108752 r108785  
    930930    loader/cache/CachedScript.cpp \
    931931    loader/cache/CachedShader.cpp \
     932    loader/cache/CachedSVGDocument.cpp \
     933    loader/cache/CachedSVGDocument.h \
    932934    loader/cache/CachedXSLStyleSheet.cpp \
    933935    loader/CrossOriginAccessControl.cpp \
     
    20072009    loader/cache/CachedScript.h \
    20082010    loader/cache/CachedShader.h \
     2011    loader/cache/CachedSVGDocument.h \
    20092012    loader/cache/CachedXSLStyleSheet.h \
    20102013    loader/cache/MemoryCache.h \
  • trunk/Source/WebCore/WebCore.gypi

    r108778 r108785  
    25452545            'loader/cache/CachedShader.cpp',
    25462546            'loader/cache/CachedShader.h',
     2547            'loader/cache/CachedSVGDocument.cpp',
     2548            'loader/cache/CachedSVGDocument.h',
    25472549            'loader/cache/CachedTextTrack.cpp',
    25482550            'loader/cache/CachedTextTrack.h',
  • trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj

    r108752 r108785  
    2651026510                                </File>
    2651126511                                <File
     26512                                        RelativePath="..\loader\cache\CachedSVGDocument.cpp"
     26513                                        >
     26514                                </File>
     26515                                <File
     26516                                        RelativePath="..\loader\cache\CachedSVGDocument.h"
     26517                                        >
     26518                                </File>
     26519                                <File
    2651226520                                        RelativePath="..\loader\cache\CachedXSLStyleSheet.cpp"
    2651326521                                        >
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r108768 r108785  
    35223522                A0EE0DF7144F825500F80B0D /* WebGLDebugShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0EE0DF3144F825500F80B0D /* WebGLDebugShaders.cpp */; };
    35233523                A0EE0DF8144F825500F80B0D /* WebGLDebugShaders.h in Headers */ = {isa = PBXBuildFile; fileRef = A0EE0DF4144F825500F80B0D /* WebGLDebugShaders.h */; };
     3524                A104F24314C71F7A009E2C23 /* CachedSVGDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A104F24114C71F7A009E2C23 /* CachedSVGDocument.cpp */; };
     3525                A104F24414C71F7A009E2C23 /* CachedSVGDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = A104F24214C71F7A009E2C23 /* CachedSVGDocument.h */; };
    35243526                A10BB5851484E3A700B2E87A /* RenderSVGRect.h in Headers */ = {isa = PBXBuildFile; fileRef = A10BB5831484E3A700B2E87A /* RenderSVGRect.h */; };
    35253527                A10BB58B1484E3B300B2E87A /* RenderSVGShape.h in Headers */ = {isa = PBXBuildFile; fileRef = A10BB5891484E3B300B2E87A /* RenderSVGShape.h */; };
     
    1040710409                A0EE0DF3144F825500F80B0D /* WebGLDebugShaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLDebugShaders.cpp; path = canvas/WebGLDebugShaders.cpp; sourceTree = "<group>"; };
    1040810410                A0EE0DF4144F825500F80B0D /* WebGLDebugShaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLDebugShaders.h; path = canvas/WebGLDebugShaders.h; sourceTree = "<group>"; };
     10411                A104F24114C71F7A009E2C23 /* CachedSVGDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedSVGDocument.cpp; sourceTree = "<group>"; };
     10412                A104F24214C71F7A009E2C23 /* CachedSVGDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedSVGDocument.h; sourceTree = "<group>"; };
    1040910413                A10BB5821484E3A700B2E87A /* RenderSVGRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGRect.cpp; sourceTree = "<group>"; };
    1041010414                A10BB5831484E3A700B2E87A /* RenderSVGRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGRect.h; sourceTree = "<group>"; };
     
    1824518249                        isa = PBXGroup;
    1824618250                        children = (
     18251                                A104F24114C71F7A009E2C23 /* CachedSVGDocument.cpp */,
     18252                                A104F24214C71F7A009E2C23 /* CachedSVGDocument.h */,
    1824718253                                BCB16C000979C3BD00467741 /* CachedCSSStyleSheet.cpp */,
    1824818254                                BCB16C010979C3BD00467741 /* CachedCSSStyleSheet.h */,
     
    2137421380                                5038BE411472AD980095E0D1 /* CachedShader.h in Headers */,
    2137521381                                D0BC54491443AC4A00E105DA /* CachedStyleSheetClient.h in Headers */,
     21382                                A104F24414C71F7A009E2C23 /* CachedSVGDocument.h in Headers */,
    2137621383                                0753860314489E9800B78452 /* CachedTextTrack.h in Headers */,
    2137721384                                BCB16C280979C3BD00467741 /* CachedXSLStyleSheet.h in Headers */,
     
    2481224819                                BCB16C230979C3BD00467741 /* CachedScript.cpp in Sources */,
    2481324820                                5038BE401472AD980095E0D1 /* CachedShader.cpp in Sources */,
     24821                                A104F24314C71F7A009E2C23 /* CachedSVGDocument.cpp in Sources */,
    2481424822                                0753860214489E9800B78452 /* CachedTextTrack.cpp in Sources */,
    2481524823                                BCB16C270979C3BD00467741 /* CachedXSLStyleSheet.cpp in Sources */,
  • trunk/Source/WebCore/loader/cache/CachedResource.cpp

    • Property svn:executable set to *
    r108573 r108785  
    6262            return ResourceLoadPriorityHigh;
    6363        case CachedResource::Script:
     64#if ENABLE(SVG)
     65        case CachedResource::SVGDocumentResource:
     66            return ResourceLoadPriorityLow;
     67#endif
    6468        case CachedResource::FontResource:
    6569        case CachedResource::RawResource:
     
    116120    case CachedResource::TextTrackResource:
    117121        return ResourceRequest::TargetIsTextTrack;
     122#endif
     123#if ENABLE(SVG)
     124    case CachedResource::SVGDocumentResource:
     125        return ResourceRequest::TargetIsImage;
    118126#endif
    119127    }
  • trunk/Source/WebCore/loader/cache/CachedResource.h

    r108573 r108785  
    6767        FontResource,
    6868        RawResource
     69#if ENABLE(SVG)
     70        , SVGDocumentResource
     71#endif
    6972#if ENABLE(XSLT)
    7073        , XSLStyleSheet
  • trunk/Source/WebCore/loader/cache/CachedResourceClient.h

    r98380 r108785  
    4040        FontType,
    4141        StyleSheetType,
     42#if ENABLE(SVG)
     43        SVGDocumentType,
     44#endif
    4245        RawResourceType
    4346    };
  • trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp

    r108576 r108785  
    2929
    3030#include "CachedCSSStyleSheet.h"
     31#include "CachedSVGDocument.h"
    3132#include "CachedFont.h"
    3233#include "CachedImage.h"
     
    7374    case CachedResource::Script:
    7475        return new CachedScript(request, charset);
     76#if ENABLE(SVG)
     77    case CachedResource::SVGDocumentResource:
     78        return new CachedSVGDocument(request);
     79#endif
    7580    case CachedResource::FontResource:
    7681        return new CachedFont(request);
     
    246251#if ENABLE(XSLT)
    247252    case CachedResource::XSLStyleSheet:
     253#endif
     254#if ENABLE(SVG)
     255    case CachedResource::SVGDocumentResource:
    248256#endif
    249257    case CachedResource::CSSStyleSheet:
     
    314322        // FIXME: Are we sure about CachedResource::FontResource?
    315323        break;
     324#if ENABLE(SVG)
     325    case CachedResource::SVGDocumentResource:
     326#endif
    316327#if ENABLE(XSLT)
    317328    case CachedResource::XSLStyleSheet:
     
    348359            return false;
    349360        break;
     361#if ENABLE(SVG)
     362    case CachedResource::SVGDocumentResource:
     363#endif
    350364    case CachedResource::ImageResource:
    351365        if (!m_document->contentSecurityPolicy()->allowImageFromSource(url))
Note: See TracChangeset for help on using the changeset viewer.