Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(225)

Side by Side Diff: Source/core/rendering/RenderImage.cpp

Issue 131233003: Refactor ResourceLoadPriorityOptimizer to avoid walking render tree (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Changes from review. Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2006 Allan Sandfeld Jensen (kde@carewolf.com)
6 * (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 6 * (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
7 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. 7 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
8 * Copyright (C) 2010 Google Inc. All rights reserved. 8 * Copyright (C) 2010 Google Inc. All rights reserved.
9 * Copyright (C) Research In Motion Limited 2011-2012. All rights reserved. 9 * Copyright (C) Research In Motion Limited 2011-2012. All rights reserved.
10 * 10 *
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 using namespace HTMLNames; 56 using namespace HTMLNames;
57 57
58 RenderImage::RenderImage(Element* element) 58 RenderImage::RenderImage(Element* element)
59 : RenderReplaced(element, IntSize()) 59 : RenderReplaced(element, IntSize())
60 , m_needsToSetSizeForAltText(false) 60 , m_needsToSetSizeForAltText(false)
61 , m_didIncrementVisuallyNonEmptyPixelCount(false) 61 , m_didIncrementVisuallyNonEmptyPixelCount(false)
62 , m_isGeneratedContent(false) 62 , m_isGeneratedContent(false)
63 , m_imageDevicePixelRatio(1.0f) 63 , m_imageDevicePixelRatio(1.0f)
64 { 64 {
65 updateAltText(); 65 updateAltText();
66 ResourceLoadPriorityOptimizer::resourceLoadPriorityOptimizer()->addRenderObj ect(this);
66 } 67 }
67 68
68 RenderImage* RenderImage::createAnonymous(Document* document) 69 RenderImage* RenderImage::createAnonymous(Document* document)
69 { 70 {
70 RenderImage* image = new RenderImage(0); 71 RenderImage* image = new RenderImage(0);
71 image->setDocumentForAnonymous(document); 72 image->setDocumentForAnonymous(document);
72 return image; 73 return image;
73 } 74 }
74 75
75 RenderImage::~RenderImage() 76 RenderImage::~RenderImage()
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 m_altText = toHTMLImageElement(node())->altText(); 572 m_altText = toHTMLImageElement(node())->altText();
572 } 573 }
573 574
574 void RenderImage::layout() 575 void RenderImage::layout()
575 { 576 {
576 LayoutRectRecorder recorder(*this); 577 LayoutRectRecorder recorder(*this);
577 RenderReplaced::layout(); 578 RenderReplaced::layout();
578 updateInnerContentRect(); 579 updateInnerContentRect();
579 } 580 }
580 581
581 void RenderImage::didLayout(ResourceLoadPriorityOptimizer& optimizer) 582 bool RenderImage::updateImageLoadingPriorities()
582 {
583 RenderReplaced::didLayout(optimizer);
584 updateImageLoadingPriority(optimizer);
585 }
586
587 void RenderImage::didScroll(ResourceLoadPriorityOptimizer& optimizer)
588 {
589 RenderReplaced::didScroll(optimizer);
590 updateImageLoadingPriority(optimizer);
591 }
592
593 void RenderImage::updateImageLoadingPriority(ResourceLoadPriorityOptimizer& opti mizer)
594 { 583 {
595 if (!m_imageResource || !m_imageResource->cachedImage() || m_imageResource-> cachedImage()->isLoaded()) 584 if (!m_imageResource || !m_imageResource->cachedImage() || m_imageResource-> cachedImage()->isLoaded())
596 return; 585 return false;
597 586
598 LayoutRect viewBounds = viewRect(); 587 LayoutRect viewBounds = viewRect();
599 LayoutRect objectBounds = absoluteContentBox(); 588 LayoutRect objectBounds = absoluteContentBox();
600 589
601 // The object bounds might be empty right now, so intersects will fail since it doesn't deal 590 // The object bounds might be empty right now, so intersects will fail since it doesn't deal
602 // with empty rects. Use LayoutRect::contains in that case. 591 // with empty rects. Use LayoutRect::contains in that case.
603 bool isVisible; 592 bool isVisible;
604 if (!objectBounds.isEmpty()) 593 if (!objectBounds.isEmpty())
605 isVisible = viewBounds.intersects(objectBounds); 594 isVisible = viewBounds.intersects(objectBounds);
606 else 595 else
607 isVisible = viewBounds.contains(objectBounds); 596 isVisible = viewBounds.contains(objectBounds);
608 597
609 ResourceLoadPriorityOptimizer::VisibilityStatus status = isVisible ? 598 ResourceLoadPriorityOptimizer::VisibilityStatus status = isVisible ?
610 ResourceLoadPriorityOptimizer::Visible : ResourceLoadPriorityOptimizer:: NotVisible; 599 ResourceLoadPriorityOptimizer::Visible : ResourceLoadPriorityOptimizer:: NotVisible;
611 600
612 optimizer.notifyImageResourceVisibility(m_imageResource->cachedImage(), stat us); 601 ResourceLoadPriorityOptimizer::resourceLoadPriorityOptimizer()->notifyImageR esourceVisibility(m_imageResource->cachedImage(), status);
602
603 return true;
613 } 604 }
614 605
615 void RenderImage::computeIntrinsicRatioInformation(FloatSize& intrinsicSize, dou ble& intrinsicRatio, bool& isPercentageIntrinsicSize) const 606 void RenderImage::computeIntrinsicRatioInformation(FloatSize& intrinsicSize, dou ble& intrinsicRatio, bool& isPercentageIntrinsicSize) const
616 { 607 {
617 RenderReplaced::computeIntrinsicRatioInformation(intrinsicSize, intrinsicRat io, isPercentageIntrinsicSize); 608 RenderReplaced::computeIntrinsicRatioInformation(intrinsicSize, intrinsicRat io, isPercentageIntrinsicSize);
618 609
619 // Our intrinsicSize is empty if we're rendering generated images with relat ive width/height. Figure out the right intrinsic size to use. 610 // Our intrinsicSize is empty if we're rendering generated images with relat ive width/height. Figure out the right intrinsic size to use.
620 if (intrinsicSize.isEmpty() && (m_imageResource->imageHasRelativeWidth() || m_imageResource->imageHasRelativeHeight())) { 611 if (intrinsicSize.isEmpty() && (m_imageResource->imageHasRelativeWidth() || m_imageResource->imageHasRelativeHeight())) {
621 RenderObject* containingBlock = isOutOfFlowPositioned() ? container() : this->containingBlock(); 612 RenderObject* containingBlock = isOutOfFlowPositioned() ? container() : this->containingBlock();
622 if (containingBlock->isBox()) { 613 if (containingBlock->isBox()) {
(...skipping 23 matching lines...) Expand all
646 return 0; 637 return 0;
647 638
648 ImageResource* cachedImage = m_imageResource->cachedImage(); 639 ImageResource* cachedImage = m_imageResource->cachedImage();
649 if (cachedImage && cachedImage->image() && cachedImage->image()->isSVGImage( )) 640 if (cachedImage && cachedImage->image() && cachedImage->image()->isSVGImage( ))
650 return toSVGImage(cachedImage->image())->embeddedContentBox(); 641 return toSVGImage(cachedImage->image())->embeddedContentBox();
651 642
652 return 0; 643 return 0;
653 } 644 }
654 645
655 } // namespace WebCore 646 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698