OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2012 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 ImageWithScale image; | 81 ImageWithScale image; |
82 size_t numberOfImages = m_imagesInSet.size(); | 82 size_t numberOfImages = m_imagesInSet.size(); |
83 for (size_t i = 0; i < numberOfImages; ++i) { | 83 for (size_t i = 0; i < numberOfImages; ++i) { |
84 image = m_imagesInSet.at(i); | 84 image = m_imagesInSet.at(i); |
85 if (image.scaleFactor >= m_scaleFactor) | 85 if (image.scaleFactor >= m_scaleFactor) |
86 return image; | 86 return image; |
87 } | 87 } |
88 return image; | 88 return image; |
89 } | 89 } |
90 | 90 |
91 StyleFetchedImageSet* CSSImageSetValue::cachedImageSet(ResourceFetcher* loader,
float deviceScaleFactor, const ResourceLoaderOptions& options, CORSEnabled corsE
nabled) | 91 StyleFetchedImageSet* CSSImageSetValue::cachedImageSet(ResourceFetcher* loader,
float deviceScaleFactor, const ResourceLoaderOptions& options) |
92 { | 92 { |
93 ASSERT(loader); | 93 ASSERT(loader); |
94 | 94 |
95 m_scaleFactor = deviceScaleFactor; | 95 m_scaleFactor = deviceScaleFactor; |
96 | 96 |
97 if (!m_imagesInSet.size()) | 97 if (!m_imagesInSet.size()) |
98 fillImageSet(); | 98 fillImageSet(); |
99 | 99 |
100 if (!m_accessedBestFitImage) { | 100 if (!m_accessedBestFitImage) { |
101 // FIXME: In the future, we want to take much more than deviceScaleFacto
r into acount here. | 101 // FIXME: In the future, we want to take much more than deviceScaleFacto
r into acount here. |
102 // All forms of scale should be included: Page::pageScaleFactor(), Frame
::pageZoomFactor(), | 102 // All forms of scale should be included: Page::pageScaleFactor(), Frame
::pageZoomFactor(), |
103 // and any CSS transforms. https://bugs.webkit.org/show_bug.cgi?id=81698 | 103 // and any CSS transforms. https://bugs.webkit.org/show_bug.cgi?id=81698 |
104 ImageWithScale image = bestImageForScaleFactor(); | 104 ImageWithScale image = bestImageForScaleFactor(); |
105 if (Document* document = loader->document()) { | 105 if (Document* document = loader->document()) { |
106 FetchRequest request(ResourceRequest(document->completeURL(image.ima
geURL)), FetchInitiatorTypeNames::css, options); | 106 FetchRequest request(ResourceRequest(document->completeURL(image.ima
geURL)), FetchInitiatorTypeNames::css, options); |
107 | 107 |
108 if (corsEnabled == PotentiallyCORSEnabled) | 108 if (options.corsEnabled == IsCORSEnabled) |
109 updateRequestForAccessControl(request.mutableResourceRequest(),
loader->document()->securityOrigin(), options.allowCredentials); | 109 request.setCrossOriginAccessControl(loader->document()->security
Origin(), options.allowCredentials); |
110 | 110 |
111 if (ResourcePtr<ImageResource> cachedImage = loader->fetchImage(requ
est)) { | 111 if (ResourcePtr<ImageResource> cachedImage = loader->fetchImage(requ
est)) { |
112 m_imageSet = StyleFetchedImageSet::create(cachedImage.get(), ima
ge.scaleFactor, this); | 112 m_imageSet = StyleFetchedImageSet::create(cachedImage.get(), ima
ge.scaleFactor, this); |
113 m_accessedBestFitImage = true; | 113 m_accessedBestFitImage = true; |
114 } | 114 } |
115 } | 115 } |
116 } | 116 } |
117 | 117 |
118 return (m_imageSet && m_imageSet->isImageResourceSet()) ? toStyleFetchedImag
eSet(m_imageSet) : 0; | 118 return (m_imageSet && m_imageSet->isImageResourceSet()) ? toStyleFetchedImag
eSet(m_imageSet) : 0; |
119 } | 119 } |
120 | 120 |
121 StyleFetchedImageSet* CSSImageSetValue::cachedImageSet(ResourceFetcher* fetcher,
float deviceScaleFactor) | 121 StyleFetchedImageSet* CSSImageSetValue::cachedImageSet(ResourceFetcher* fetcher,
float deviceScaleFactor) |
122 { | 122 { |
123 return cachedImageSet(fetcher, deviceScaleFactor, ResourceFetcher::defaultRe
sourceOptions(), NotCORSEnabled); | 123 return cachedImageSet(fetcher, deviceScaleFactor, ResourceFetcher::defaultRe
sourceOptions()); |
124 } | 124 } |
125 | 125 |
126 StyleImage* CSSImageSetValue::cachedOrPendingImageSet(float deviceScaleFactor) | 126 StyleImage* CSSImageSetValue::cachedOrPendingImageSet(float deviceScaleFactor) |
127 { | 127 { |
128 if (!m_imageSet) { | 128 if (!m_imageSet) { |
129 m_imageSet = StylePendingImage::create(this); | 129 m_imageSet = StylePendingImage::create(this); |
130 } else if (!m_imageSet->isPendingImage()) { | 130 } else if (!m_imageSet->isPendingImage()) { |
131 // If the deviceScaleFactor has changed, we may not have the best image
loaded, so we have to re-assess. | 131 // If the deviceScaleFactor has changed, we may not have the best image
loaded, so we have to re-assess. |
132 if (deviceScaleFactor != m_scaleFactor) { | 132 if (deviceScaleFactor != m_scaleFactor) { |
133 m_accessedBestFitImage = false; | 133 m_accessedBestFitImage = false; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 { | 184 { |
185 // Non-CSSValueList data is not accessible through CSS OM, no need to clone. | 185 // Non-CSSValueList data is not accessible through CSS OM, no need to clone. |
186 } | 186 } |
187 | 187 |
188 PassRefPtr<CSSImageSetValue> CSSImageSetValue::cloneForCSSOM() const | 188 PassRefPtr<CSSImageSetValue> CSSImageSetValue::cloneForCSSOM() const |
189 { | 189 { |
190 return adoptRef(new CSSImageSetValue(*this)); | 190 return adoptRef(new CSSImageSetValue(*this)); |
191 } | 191 } |
192 | 192 |
193 } // namespace WebCore | 193 } // namespace WebCore |
OLD | NEW |