OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2010 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 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 void ImageDocumentParser::appendBytes(const char* data, size_t length) { | 141 void ImageDocumentParser::appendBytes(const char* data, size_t length) { |
142 if (!length) | 142 if (!length) |
143 return; | 143 return; |
144 | 144 |
145 LocalFrame* frame = document()->frame(); | 145 LocalFrame* frame = document()->frame(); |
146 Settings* settings = frame->settings(); | 146 Settings* settings = frame->settings(); |
147 if (!frame->loader().client()->allowImage( | 147 if (!frame->loader().client()->allowImage( |
148 !settings || settings->imagesEnabled(), document()->url())) | 148 !settings || settings->imagesEnabled(), document()->url())) |
149 return; | 149 return; |
150 | 150 |
151 if (document()->cachedImage()) { | 151 if (document()->cachedImageResourceDeprecated()) { |
152 RELEASE_ASSERT(length <= std::numeric_limits<unsigned>::max()); | 152 RELEASE_ASSERT(length <= std::numeric_limits<unsigned>::max()); |
153 // If decoding has already failed, there's no point in sending additional | 153 // If decoding has already failed, there's no point in sending additional |
154 // data to the ImageResource. | 154 // data to the ImageResource. |
155 if (document()->cachedImage()->getStatus() != Resource::DecodeError) | 155 if (document()->cachedImageResourceDeprecated()->getStatus() != |
156 document()->cachedImage()->appendData(data, length); | 156 Resource::DecodeError) |
| 157 document()->cachedImageResourceDeprecated()->appendData(data, length); |
157 } | 158 } |
158 | 159 |
159 if (!isDetached()) | 160 if (!isDetached()) |
160 document()->imageUpdated(); | 161 document()->imageUpdated(); |
161 } | 162 } |
162 | 163 |
163 void ImageDocumentParser::finish() { | 164 void ImageDocumentParser::finish() { |
164 if (!isStopped() && document()->imageElement() && document()->cachedImage()) { | 165 if (!isStopped() && document()->imageElement() && |
165 ImageResource* cachedImage = document()->cachedImage(); | 166 document()->cachedImageResourceDeprecated()) { |
| 167 // TODO(hiroshige): Use ImageResourceContent instead of ImageResource. |
| 168 ImageResource* cachedImage = document()->cachedImageResourceDeprecated(); |
166 DocumentLoader* loader = document()->loader(); | 169 DocumentLoader* loader = document()->loader(); |
167 cachedImage->setResponse(loader->response()); | 170 cachedImage->setResponse(loader->response()); |
168 cachedImage->finish(loader->timing().responseEnd()); | 171 cachedImage->finish(loader->timing().responseEnd()); |
169 | 172 |
170 // Report the natural image size in the page title, regardless of zoom | 173 // Report the natural image size in the page title, regardless of zoom |
171 // level. At a zoom level of 1 the image is guaranteed to have an integer | 174 // level. At a zoom level of 1 the image is guaranteed to have an integer |
172 // size. | 175 // size. |
173 IntSize size = flooredIntSize(cachedImageSize(document()->imageElement())); | 176 IntSize size = flooredIntSize(cachedImageSize(document()->imageElement())); |
174 if (size.width()) { | 177 if (size.width()) { |
175 // Compute the title, we use the decoded filename of the resource, falling | 178 // Compute the title, we use the decoded filename of the resource, falling |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 body->setAttribute(styleAttr, "margin: 0px;"); | 260 body->setAttribute(styleAttr, "margin: 0px;"); |
258 } | 261 } |
259 | 262 |
260 willInsertBody(); | 263 willInsertBody(); |
261 | 264 |
262 m_imageElement = HTMLImageElement::create(*this); | 265 m_imageElement = HTMLImageElement::create(*this); |
263 updateImageStyle(); | 266 updateImageStyle(); |
264 m_imageElement->setLoadingImageDocument(); | 267 m_imageElement->setLoadingImageDocument(); |
265 m_imageElement->setSrc(url().getString()); | 268 m_imageElement->setSrc(url().getString()); |
266 body->appendChild(m_imageElement.get()); | 269 body->appendChild(m_imageElement.get()); |
267 if (loader() && m_imageElement->cachedImage()) | 270 if (loader() && m_imageElement->cachedImageResourceForImageDocument()) { |
268 m_imageElement->cachedImage()->responseReceived(loader()->response(), | 271 m_imageElement->cachedImageResourceForImageDocument()->responseReceived( |
269 nullptr); | 272 loader()->response(), nullptr); |
| 273 } |
270 | 274 |
271 if (shouldShrinkToFit()) { | 275 if (shouldShrinkToFit()) { |
272 // Add event listeners | 276 // Add event listeners |
273 EventListener* listener = ImageEventListener::create(this); | 277 EventListener* listener = ImageEventListener::create(this); |
274 if (LocalDOMWindow* domWindow = this->domWindow()) | 278 if (LocalDOMWindow* domWindow = this->domWindow()) |
275 domWindow->addEventListener(EventTypeNames::resize, listener, false); | 279 domWindow->addEventListener(EventTypeNames::resize, listener, false); |
276 | 280 |
277 if (m_shrinkToFitMode == Desktop) { | 281 if (m_shrinkToFitMode == Desktop) { |
278 m_imageElement->addEventListener(EventTypeNames::click, listener, false); | 282 m_imageElement->addEventListener(EventTypeNames::click, listener, false); |
279 } else if (m_shrinkToFitMode == Viewport) { | 283 } else if (m_shrinkToFitMode == Viewport) { |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
558 resizeImageToFit(); | 562 resizeImageToFit(); |
559 } else { | 563 } else { |
560 // If the image isn't resized but needs to be, then resize it. | 564 // If the image isn't resized but needs to be, then resize it. |
561 if (!fitsInWindow) { | 565 if (!fitsInWindow) { |
562 resizeImageToFit(); | 566 resizeImageToFit(); |
563 m_didShrinkImage = true; | 567 m_didShrinkImage = true; |
564 } | 568 } |
565 } | 569 } |
566 } | 570 } |
567 | 571 |
568 ImageResource* ImageDocument::cachedImage() { | 572 ImageResourceContent* ImageDocument::cachedImage() { |
569 if (!m_imageElement) { | 573 if (!m_imageElement) { |
570 createDocumentStructure(); | 574 createDocumentStructure(); |
571 if (isStopped()) { | 575 if (isStopped()) { |
572 m_imageElement = nullptr; | 576 m_imageElement = nullptr; |
573 return nullptr; | 577 return nullptr; |
574 } | 578 } |
575 } | 579 } |
576 | 580 |
577 return m_imageElement->cachedImage(); | 581 return m_imageElement->cachedImage(); |
578 } | 582 } |
579 | 583 |
| 584 ImageResource* ImageDocument::cachedImageResourceDeprecated() { |
| 585 if (!m_imageElement) { |
| 586 createDocumentStructure(); |
| 587 if (isStopped()) { |
| 588 m_imageElement = nullptr; |
| 589 return nullptr; |
| 590 } |
| 591 } |
| 592 |
| 593 return m_imageElement->cachedImageResourceForImageDocument(); |
| 594 } |
| 595 |
580 bool ImageDocument::shouldShrinkToFit() const { | 596 bool ImageDocument::shouldShrinkToFit() const { |
581 return frame()->isMainFrame(); | 597 return frame()->isMainFrame(); |
582 } | 598 } |
583 | 599 |
584 DEFINE_TRACE(ImageDocument) { | 600 DEFINE_TRACE(ImageDocument) { |
585 visitor->trace(m_divElement); | 601 visitor->trace(m_divElement); |
586 visitor->trace(m_imageElement); | 602 visitor->trace(m_imageElement); |
587 HTMLDocument::trace(visitor); | 603 HTMLDocument::trace(visitor); |
588 } | 604 } |
589 | 605 |
(...skipping 13 matching lines...) Expand all Loading... |
603 } | 619 } |
604 | 620 |
605 bool ImageEventListener::operator==(const EventListener& listener) const { | 621 bool ImageEventListener::operator==(const EventListener& listener) const { |
606 if (const ImageEventListener* imageEventListener = | 622 if (const ImageEventListener* imageEventListener = |
607 ImageEventListener::cast(&listener)) | 623 ImageEventListener::cast(&listener)) |
608 return m_doc == imageEventListener->m_doc; | 624 return m_doc == imageEventListener->m_doc; |
609 return false; | 625 return false; |
610 } | 626 } |
611 | 627 |
612 } // namespace blink | 628 } // namespace blink |
OLD | NEW |