Changeset 163148 in webkit


Ignore:
Timestamp:
Jan 30, 2014 6:02:05 PM (10 years ago)
Author:
ddkilzer@apple.com
Message:

Add security-checked cast for WebCore::CachedImage
<http://webkit.org/b/127967>

Reviewed by Darin Adler.

Source/WebCore:

  • loader/cache/CachedImage.h:

(WebCore::toCachedImage): Add.
(WebCore::toCachedImageManual): Add.

  • loader/cache/CachedResource.h:

(CACHED_RESOURCE_TYPE_CASTS): Add macro.

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::switchClientsToRevalidatedResource):
(WebCore::CachedImage::resumeAnimatingImagesForLoader):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestImage):

  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::removeImageFromCache):

  • Use toCachedImage() and toCachedImageManual().

Source/WebKit/mac:

  • Misc/WebCache.mm:

(+[WebCache imageForURL:]):

  • Use WebCore::toCachedImage().
Location:
trunk/Source
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r163146 r163148  
     12014-01-30  David Kilzer  <ddkilzer@apple.com>
     2
     3        Add security-checked cast for WebCore::CachedImage
     4        <http://webkit.org/b/127967>
     5
     6        Reviewed by Darin Adler.
     7
     8        * loader/cache/CachedImage.h:
     9        (WebCore::toCachedImage): Add.
     10        (WebCore::toCachedImageManual): Add.
     11        * loader/cache/CachedResource.h:
     12        (CACHED_RESOURCE_TYPE_CASTS): Add macro.
     13
     14        * loader/cache/CachedImage.cpp:
     15        (WebCore::CachedImage::switchClientsToRevalidatedResource):
     16        (WebCore::CachedImage::resumeAnimatingImagesForLoader):
     17        * loader/cache/CachedResourceLoader.cpp:
     18        (WebCore::CachedResourceLoader::requestImage):
     19        * loader/cache/MemoryCache.cpp:
     20        (WebCore::MemoryCache::removeImageFromCache):
     21        - Use toCachedImage() and toCachedImageManual().
     22
    1232014-01-30  Simon Fraser  <simon.fraser@apple.com>
    224
  • trunk/Source/WebCore/loader/cache/CachedImage.cpp

    r161309 r163148  
    142142            switchContainerSizeRequests.set(it->key, it->value);
    143143        CachedResource::switchClientsToRevalidatedResource();
    144         CachedImage* revalidatedCachedImage = static_cast<CachedImage*>(resourceToRevalidate());
     144        CachedImage* revalidatedCachedImage = toCachedImage(resourceToRevalidate());
    145145        for (ContainerSizeRequests::iterator it = switchContainerSizeRequests.begin(); it != switchContainerSizeRequests.end(); ++it)
    146146            revalidatedCachedImage->setContainerSizeForRenderer(it->key, it->value.first, it->value.second);
     
    546546        if (!resource || !resource->isImage())
    547547            continue;
    548         CachedImage* cachedImage = static_cast<CachedImage*>(resource.get());
     548        CachedImage* cachedImage = toCachedImage(resource.get());
    549549        if (!cachedImage->hasImage())
    550550            continue;
  • trunk/Source/WebCore/loader/cache/CachedImage.h

    r163111 r163148  
    162162#endif
    163163
     164CACHED_RESOURCE_TYPE_CASTS(CachedImage, CachedResource, CachedResource::ImageResource)
     165#if USE(CF)
     166TYPE_CASTS_BASE(CachedImageManual, CachedImage, resource, resource->isManual(), resource.isManual())
     167#endif
     168
    164169}
    165170
  • trunk/Source/WebCore/loader/cache/CachedResource.h

    r163111 r163148  
    369369};
    370370
     371#define CACHED_RESOURCE_TYPE_CASTS(ToClassName, FromClassName, CachedResourceType) \
     372    TYPE_CASTS_BASE(ToClassName, FromClassName, resource, resource->type() == CachedResourceType, resource.type() == CachedResourceType)
     373
    371374}
    372375
  • trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp

    r163111 r163148  
    161161    }
    162162    request.setDefer(clientDefersImage(request.resourceRequest().url()) ? CachedResourceRequest::DeferredByClient : CachedResourceRequest::NoDefer);
    163     return static_cast<CachedImage*>(requestResource(CachedResource::ImageResource, request).get());
     163    return toCachedImage(requestResource(CachedResource::ImageResource, request).get());
    164164}
    165165
  • trunk/Source/WebCore/loader/cache/MemoryCache.cpp

    r161264 r163148  
    256256
    257257    // A resource exists and is not a manually cached image, so just remove it.
    258     if (!resource->isImage() || !static_cast<CachedImage*>(resource)->isManual()) {
     258    if (!resource->isImage() || !toCachedImage(resource)->isManual()) {
    259259        evict(resource);
    260260        return;
     
    266266    // removing the last client triggers a MemoryCache::prune, so the
    267267    // resource may be deleted after this call.
    268     static_cast<CachedImageManual*>(resource)->removeFakeClient();
     268    toCachedImageManual(toCachedImage(resource))->removeFakeClient();
    269269}
    270270#endif
  • trunk/Source/WebKit/mac/ChangeLog

    r163111 r163148  
     12014-01-30  David Kilzer  <ddkilzer@apple.com>
     2
     3        Add security-checked cast for WebCore::CachedImage
     4        <http://webkit.org/b/127967>
     5
     6        Reviewed by Darin Adler.
     7
     8        * Misc/WebCache.mm:
     9        (+[WebCache imageForURL:]):
     10        - Use WebCore::toCachedImage().
     11
    1122014-01-30  David Kilzer  <ddkilzer@apple.com>
    213
  • trunk/Source/WebKit/mac/Misc/WebCache.mm

    r163111 r163148  
    237237    if (!cachedResource || !cachedResource->isImage())
    238238        return nullptr;
    239     WebCore::CachedImage* cachedImage = static_cast<WebCore::CachedImage*>(cachedResource);
     239    WebCore::CachedImage* cachedImage = WebCore::toCachedImage(cachedResource);
    240240    if (!cachedImage || !cachedImage->hasImage())
    241241        return nullptr;
Note: See TracChangeset for help on using the changeset viewer.