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

Side by Side Diff: Source/core/html/HTMLImageElement.cpp

Issue 1299563002: HTMLImageElement width/height should updateLayout first. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Check if we're in the document. Created 5 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/html/HTMLImageElement.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Apple Inc. All rights reserv ed. 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Apple Inc. All rights reserv ed.
5 * Copyright (C) 2010 Google Inc. All rights reserved. 5 * Copyright (C) 2010 Google Inc. All rights reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 392
393 void HTMLImageElement::removedFrom(ContainerNode* insertionPoint) 393 void HTMLImageElement::removedFrom(ContainerNode* insertionPoint)
394 { 394 {
395 if (!m_form || NodeTraversal::highestAncestorOrSelf(*m_form.get()) != NodeTr aversal::highestAncestorOrSelf(*this)) 395 if (!m_form || NodeTraversal::highestAncestorOrSelf(*m_form.get()) != NodeTr aversal::highestAncestorOrSelf(*this))
396 resetFormOwner(); 396 resetFormOwner();
397 if (m_listener) 397 if (m_listener)
398 document().mediaQueryMatcher().removeViewportListener(m_listener); 398 document().mediaQueryMatcher().removeViewportListener(m_listener);
399 HTMLElement::removedFrom(insertionPoint); 399 HTMLElement::removedFrom(insertionPoint);
400 } 400 }
401 401
402 int HTMLImageElement::width(bool ignorePendingStylesheets) 402 int HTMLImageElement::width()
403 { 403 {
404 if (inActiveDocument())
405 document().updateLayoutIgnorePendingStylesheets();
406
404 if (!layoutObject()) { 407 if (!layoutObject()) {
405 // check the attribute first for an explicit pixel value 408 // check the attribute first for an explicit pixel value
406 bool ok; 409 bool ok;
407 int width = getAttribute(widthAttr).toInt(&ok); 410 int width = getAttribute(widthAttr).toInt(&ok);
408 if (ok) 411 if (ok)
409 return width; 412 return width;
410 413
411 // if the image is available, use its width 414 // if the image is available, use its width
412 if (imageLoader().image()) 415 if (imageLoader().image())
413 return imageLoader().image()->imageSizeForLayoutObject(layoutObject( ), 1.0f).width(); 416 return imageLoader().image()->imageSizeForLayoutObject(layoutObject( ), 1.0f).width();
414 } 417 }
415 418
416 if (ignorePendingStylesheets)
417 document().updateLayoutIgnorePendingStylesheets();
418 else
419 document().updateLayout();
420
421 LayoutBox* box = layoutBox(); 419 LayoutBox* box = layoutBox();
422 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedWidth() , box) : 0; 420 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedWidth() , box) : 0;
423 } 421 }
424 422
425 int HTMLImageElement::height(bool ignorePendingStylesheets) 423 int HTMLImageElement::height()
426 { 424 {
425 if (inActiveDocument())
pdr. 2015/08/15 02:09:26 The inActiveDocument check seems like a good idea.
426 document().updateLayoutIgnorePendingStylesheets();
427
427 if (!layoutObject()) { 428 if (!layoutObject()) {
428 // check the attribute first for an explicit pixel value 429 // check the attribute first for an explicit pixel value
429 bool ok; 430 bool ok;
430 int height = getAttribute(heightAttr).toInt(&ok); 431 int height = getAttribute(heightAttr).toInt(&ok);
431 if (ok) 432 if (ok)
432 return height; 433 return height;
433 434
434 // if the image is available, use its height 435 // if the image is available, use its height
435 if (imageLoader().image()) 436 if (imageLoader().image())
436 return imageLoader().image()->imageSizeForLayoutObject(layoutObject( ), 1.0f).height(); 437 return imageLoader().image()->imageSizeForLayoutObject(layoutObject( ), 1.0f).height();
437 } 438 }
438 439
439 if (ignorePendingStylesheets)
440 document().updateLayoutIgnorePendingStylesheets();
441 else
442 document().updateLayout();
443
444 LayoutBox* box = layoutBox(); 440 LayoutBox* box = layoutBox();
445 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedHeight( ), box) : 0; 441 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedHeight( ), box) : 0;
446 } 442 }
447 443
448 int HTMLImageElement::naturalWidth() const 444 int HTMLImageElement::naturalWidth() const
449 { 445 {
450 if (!imageLoader().image()) 446 if (!imageLoader().image())
451 return 0; 447 return 0;
452 448
453 return imageLoader().image()->imageSizeForLayoutObject(layoutObject(), m_ima geDevicePixelRatio, ImageResource::IntrinsicCorrectedToDPR).width(); 449 return imageLoader().image()->imageSizeForLayoutObject(layoutObject(), m_ima geDevicePixelRatio, ImageResource::IntrinsicCorrectedToDPR).width();
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 ensureUserAgentShadowRoot(); 749 ensureUserAgentShadowRoot();
754 } 750 }
755 751
756 bool HTMLImageElement::isOpaque() const 752 bool HTMLImageElement::isOpaque() const
757 { 753 {
758 Image* image = const_cast<HTMLImageElement*>(this)->imageContents(); 754 Image* image = const_cast<HTMLImageElement*>(this)->imageContents();
759 return image && image->currentFrameKnownToBeOpaque(); 755 return image && image->currentFrameKnownToBeOpaque();
760 } 756 }
761 757
762 } 758 }
OLDNEW
« no previous file with comments | « Source/core/html/HTMLImageElement.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698