| 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 ImageWithScale image; | 62 ImageWithScale image; |
| 63 image.imageURL = imageURL; | 63 image.imageURL = imageURL; |
| 64 image.referrer = SecurityPolicy::generateReferrer( | 64 image.referrer = SecurityPolicy::generateReferrer( |
| 65 imageValue.referrer().referrerPolicy, KURL(ParsedURLString, imageURL), | 65 imageValue.referrer().referrerPolicy, KURL(ParsedURLString, imageURL), |
| 66 imageValue.referrer().referrer); | 66 imageValue.referrer().referrer); |
| 67 image.scaleFactor = scaleFactor; | 67 image.scaleFactor = scaleFactor; |
| 68 m_imagesInSet.append(image); | 68 m_imagesInSet.append(image); |
| 69 ++i; | 69 ++i; |
| 70 } | 70 } |
| 71 | 71 |
| 72 // Sort the images so that they are stored in order from lowest resolution to
highest. | 72 // Sort the images so that they are stored in order from lowest resolution to |
| 73 // highest. |
| 73 std::sort(m_imagesInSet.begin(), m_imagesInSet.end(), | 74 std::sort(m_imagesInSet.begin(), m_imagesInSet.end(), |
| 74 CSSImageSetValue::compareByScaleFactor); | 75 CSSImageSetValue::compareByScaleFactor); |
| 75 } | 76 } |
| 76 | 77 |
| 77 CSSImageSetValue::ImageWithScale CSSImageSetValue::bestImageForScaleFactor( | 78 CSSImageSetValue::ImageWithScale CSSImageSetValue::bestImageForScaleFactor( |
| 78 float scaleFactor) { | 79 float scaleFactor) { |
| 79 ImageWithScale image; | 80 ImageWithScale image; |
| 80 size_t numberOfImages = m_imagesInSet.size(); | 81 size_t numberOfImages = m_imagesInSet.size(); |
| 81 for (size_t i = 0; i < numberOfImages; ++i) { | 82 for (size_t i = 0; i < numberOfImages; ++i) { |
| 82 image = m_imagesInSet.at(i); | 83 image = m_imagesInSet.at(i); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 96 } | 97 } |
| 97 | 98 |
| 98 StyleImage* CSSImageSetValue::cacheImage( | 99 StyleImage* CSSImageSetValue::cacheImage( |
| 99 const Document& document, | 100 const Document& document, |
| 100 float deviceScaleFactor, | 101 float deviceScaleFactor, |
| 101 CrossOriginAttributeValue crossOrigin) { | 102 CrossOriginAttributeValue crossOrigin) { |
| 102 if (!m_imagesInSet.size()) | 103 if (!m_imagesInSet.size()) |
| 103 fillImageSet(); | 104 fillImageSet(); |
| 104 | 105 |
| 105 if (isCachePending(deviceScaleFactor)) { | 106 if (isCachePending(deviceScaleFactor)) { |
| 106 // FIXME: In the future, we want to take much more than deviceScaleFactor in
to acount here. | 107 // FIXME: In the future, we want to take much more than deviceScaleFactor |
| 107 // All forms of scale should be included: Page::pageScaleFactor(), LocalFram
e::pageZoomFactor(), | 108 // into acount here. All forms of scale should be included: |
| 108 // and any CSS transforms. https://bugs.webkit.org/show_bug.cgi?id=81698 | 109 // Page::pageScaleFactor(), LocalFrame::pageZoomFactor(), and any CSS |
| 110 // transforms. https://bugs.webkit.org/show_bug.cgi?id=81698 |
| 109 ImageWithScale image = bestImageForScaleFactor(deviceScaleFactor); | 111 ImageWithScale image = bestImageForScaleFactor(deviceScaleFactor); |
| 110 FetchRequest request(ResourceRequest(document.completeURL(image.imageURL)), | 112 FetchRequest request(ResourceRequest(document.completeURL(image.imageURL)), |
| 111 FetchInitiatorTypeNames::css); | 113 FetchInitiatorTypeNames::css); |
| 112 request.mutableResourceRequest().setHTTPReferrer(image.referrer); | 114 request.mutableResourceRequest().setHTTPReferrer(image.referrer); |
| 113 | 115 |
| 114 if (crossOrigin != CrossOriginAttributeNotSet) | 116 if (crossOrigin != CrossOriginAttributeNotSet) |
| 115 request.setCrossOriginAccessControl(document.getSecurityOrigin(), | 117 request.setCrossOriginAccessControl(document.getSecurityOrigin(), |
| 116 crossOrigin); | 118 crossOrigin); |
| 117 | 119 |
| 118 if (ImageResource* cachedImage = | 120 if (ImageResource* cachedImage = |
| (...skipping 19 matching lines...) Expand all Loading... |
| 138 result.append(", "); | 140 result.append(", "); |
| 139 | 141 |
| 140 const CSSValue& imageValue = item(i); | 142 const CSSValue& imageValue = item(i); |
| 141 result.append(imageValue.cssText()); | 143 result.append(imageValue.cssText()); |
| 142 result.append(' '); | 144 result.append(' '); |
| 143 | 145 |
| 144 ++i; | 146 ++i; |
| 145 ASSERT_WITH_SECURITY_IMPLICATION(i < length); | 147 ASSERT_WITH_SECURITY_IMPLICATION(i < length); |
| 146 const CSSValue& scaleFactorValue = item(i); | 148 const CSSValue& scaleFactorValue = item(i); |
| 147 result.append(scaleFactorValue.cssText()); | 149 result.append(scaleFactorValue.cssText()); |
| 148 // FIXME: Eventually the scale factor should contain it's own unit http://wk
b.ug/100120. | 150 // FIXME: Eventually the scale factor should contain it's own unit |
| 151 // http://wkb.ug/100120. |
| 149 // For now 'x' is hard-coded in the parser, so we hard-code it here too. | 152 // For now 'x' is hard-coded in the parser, so we hard-code it here too. |
| 150 result.append('x'); | 153 result.append('x'); |
| 151 | 154 |
| 152 ++i; | 155 ++i; |
| 153 } | 156 } |
| 154 | 157 |
| 155 result.append(')'); | 158 result.append(')'); |
| 156 return result.toString(); | 159 return result.toString(); |
| 157 } | 160 } |
| 158 | 161 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 172 CSSImageSetValue* CSSImageSetValue::valueWithURLsMadeAbsolute() { | 175 CSSImageSetValue* CSSImageSetValue::valueWithURLsMadeAbsolute() { |
| 173 CSSImageSetValue* value = CSSImageSetValue::create(); | 176 CSSImageSetValue* value = CSSImageSetValue::create(); |
| 174 for (auto& item : *this) | 177 for (auto& item : *this) |
| 175 item->isImageValue() | 178 item->isImageValue() |
| 176 ? value->append(*toCSSImageValue(*item).valueWithURLMadeAbsolute()) | 179 ? value->append(*toCSSImageValue(*item).valueWithURLMadeAbsolute()) |
| 177 : value->append(*item); | 180 : value->append(*item); |
| 178 return value; | 181 return value; |
| 179 } | 182 } |
| 180 | 183 |
| 181 } // namespace blink | 184 } // namespace blink |
| OLD | NEW |