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

Unified Diff: third_party/WebKit/Source/core/layout/LayoutListMarker.cpp

Issue 1433503003: Avoid using ImageResource->imageSize() to get the marker size (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Let imageBulletSize return IntSize Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutListMarker.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/layout/LayoutListMarker.cpp
diff --git a/third_party/WebKit/Source/core/layout/LayoutListMarker.cpp b/third_party/WebKit/Source/core/layout/LayoutListMarker.cpp
index f242a0bca24eba471980e726859704cb10244b20..f36302249cc85002fe72aa753044fa823212404a 100644
--- a/third_party/WebKit/Source/core/layout/LayoutListMarker.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutListMarker.cpp
@@ -65,6 +65,18 @@ LayoutListMarker* LayoutListMarker::createAnonymous(LayoutListItem* item)
return layoutObject;
}
+IntSize LayoutListMarker::imageBulletSize() const
+{
+ ASSERT(isImage());
+
+ // FIXME: This is a somewhat arbitrary default width. Generated images for markers really won't
+ // become particularly useful until we support the CSS3 marker pseudoclass to allow control over
+ // the width and height of the marker box.
+ int bulletWidth = style()->fontMetrics().ascent() / 2;
+ IntSize defaultBulletSize(bulletWidth, bulletWidth);
+ return calculateImageIntrinsicDimensions(m_image.get(), defaultBulletSize, DoNotScaleByEffectiveZoom);
+}
+
void LayoutListMarker::styleWillChange(StyleDifference diff, const ComputedStyle& newStyle)
{
if (style() && (newStyle.listStylePosition() != style()->listStylePosition() || newStyle.listStyleType() != style()->listStyleType()))
@@ -125,8 +137,9 @@ void LayoutListMarker::layout()
if (isImage()) {
updateMarginsAndContent();
- setWidth(m_image->imageSize(this, style()->effectiveZoom()).width());
- setHeight(m_image->imageSize(this, style()->effectiveZoom()).height());
+ LayoutSize imageSize(imageBulletSize());
+ setWidth(imageSize.width());
+ setHeight(imageSize.height());
} else {
setLogicalWidth(minPreferredLogicalWidth());
setLogicalHeight(style()->fontMetrics().height());
@@ -151,7 +164,8 @@ void LayoutListMarker::imageChanged(WrappedImagePtr o, const IntRect*)
if (o != m_image->data())
return;
- if (size() != m_image->imageSize(this, style()->effectiveZoom()) || m_image->errorOccurred())
+ LayoutSize imageSize = isImage() ? LayoutSize(imageBulletSize()) : LayoutSize();
+ if (size() != imageSize || m_image->errorOccurred())
setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(LayoutInvalidationReason::ImageChanged);
else
setShouldDoFullPaintInvalidation();
@@ -172,15 +186,8 @@ void LayoutListMarker::updateContent()
m_text = "";
- if (isImage()) {
- // FIXME: This is a somewhat arbitrary width. Generated images for markers really won't become particularly useful
- // until we support the CSS3 marker pseudoclass to allow control over the width and height of the marker box.
- int bulletWidth = style()->fontMetrics().ascent() / 2;
- IntSize defaultBulletSize(bulletWidth, bulletWidth);
- IntSize imageSize = calculateImageIntrinsicDimensions(m_image.get(), defaultBulletSize, DoNotScaleByEffectiveZoom);
- m_image->setContainerSizeForLayoutObject(this, imageSize, style()->effectiveZoom());
+ if (isImage())
return;
- }
switch (listStyleCategory()) {
case ListStyleCategory::None:
@@ -214,7 +221,7 @@ void LayoutListMarker::computePreferredLogicalWidths()
updateContent();
if (isImage()) {
- LayoutSize imageSize = m_image->imageSize(this, style()->effectiveZoom());
+ LayoutSize imageSize(imageBulletSize());
m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = style()->isHorizontalWritingMode() ? imageSize.width() : imageSize.height();
clearPreferredLogicalWidthsDirty();
updateMargins();
@@ -394,8 +401,10 @@ bool LayoutListMarker::isInside() const
IntRect LayoutListMarker::getRelativeMarkerRect() const
{
- if (isImage())
- return IntRect(0, 0, m_image->imageSize(this, style()->effectiveZoom()).width(), m_image->imageSize(this, style()->effectiveZoom()).height());
+ if (isImage()) {
+ IntSize imageSize = imageBulletSize();
+ return IntRect(0, 0, imageSize.width(), imageSize.height());
+ }
IntRect relativeRect;
switch (listStyleCategory()) {
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutListMarker.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698