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

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

Issue 2624953002: Set width and height attributes for <img> if image is loaded from srcset (Closed)
Patch Set: Fix another typo Created 3 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 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Apple Inc. All rights 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Apple Inc. All rights
5 * reserved. 5 * reserved.
6 * Copyright (C) 2010 Google Inc. All rights reserved. 6 * Copyright (C) 2010 Google Inc. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 if (imageLoader().image()) { 444 if (imageLoader().image()) {
445 return imageLoader() 445 return imageLoader()
446 .image() 446 .image()
447 ->imageSize(LayoutObject::shouldRespectImageOrientation(nullptr), 447 ->imageSize(LayoutObject::shouldRespectImageOrientation(nullptr),
448 1.0f) 448 1.0f)
449 .width() 449 .width()
450 .toUnsigned(); 450 .toUnsigned();
451 } 451 }
452 } 452 }
453 453
454 LayoutBox* box = layoutBox(); 454 return layoutBoxWidth();
455 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedWidth(),
456 box)
457 : 0;
458 } 455 }
459 456
460 unsigned HTMLImageElement::height() { 457 unsigned HTMLImageElement::height() {
461 if (inActiveDocument()) 458 if (inActiveDocument())
462 document().updateStyleAndLayoutIgnorePendingStylesheets(); 459 document().updateStyleAndLayoutIgnorePendingStylesheets();
463 460
464 if (!layoutObject()) { 461 if (!layoutObject()) {
465 // check the attribute first for an explicit pixel value 462 // check the attribute first for an explicit pixel value
466 unsigned height = 0; 463 unsigned height = 0;
467 if (parseHTMLNonNegativeInteger(getAttribute(heightAttr), height)) 464 if (parseHTMLNonNegativeInteger(getAttribute(heightAttr), height))
468 return height; 465 return height;
469 466
470 // if the image is available, use its height 467 // if the image is available, use its height
471 if (imageLoader().image()) { 468 if (imageLoader().image()) {
472 return imageLoader() 469 return imageLoader()
473 .image() 470 .image()
474 ->imageSize(LayoutObject::shouldRespectImageOrientation(nullptr), 471 ->imageSize(LayoutObject::shouldRespectImageOrientation(nullptr),
475 1.0f) 472 1.0f)
476 .height() 473 .height()
477 .toUnsigned(); 474 .toUnsigned();
478 } 475 }
479 } 476 }
480 477
481 LayoutBox* box = layoutBox(); 478 return layoutBoxHeight();
482 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedHeight(),
483 box)
484 : 0;
485 } 479 }
486 480
487 unsigned HTMLImageElement::naturalWidth() const { 481 unsigned HTMLImageElement::naturalWidth() const {
488 if (!imageLoader().image()) 482 if (!imageLoader().image())
489 return 0; 483 return 0;
490 484
491 return imageLoader() 485 return imageLoader()
492 .image() 486 .image()
493 ->imageSize(LayoutObject::shouldRespectImageOrientation(layoutObject()), 487 ->imageSize(LayoutObject::shouldRespectImageOrientation(layoutObject()),
494 m_imageDevicePixelRatio, 488 m_imageDevicePixelRatio,
495 ImageResourceContent::IntrinsicCorrectedToDPR) 489 ImageResourceContent::IntrinsicCorrectedToDPR)
496 .width() 490 .width()
497 .toUnsigned(); 491 .toUnsigned();
498 } 492 }
499 493
500 unsigned HTMLImageElement::naturalHeight() const { 494 unsigned HTMLImageElement::naturalHeight() const {
501 if (!imageLoader().image()) 495 if (!imageLoader().image())
502 return 0; 496 return 0;
503 497
504 return imageLoader() 498 return imageLoader()
505 .image() 499 .image()
506 ->imageSize(LayoutObject::shouldRespectImageOrientation(layoutObject()), 500 ->imageSize(LayoutObject::shouldRespectImageOrientation(layoutObject()),
507 m_imageDevicePixelRatio, 501 m_imageDevicePixelRatio,
508 ImageResourceContent::IntrinsicCorrectedToDPR) 502 ImageResourceContent::IntrinsicCorrectedToDPR)
509 .height() 503 .height()
510 .toUnsigned(); 504 .toUnsigned();
511 } 505 }
512 506
507 unsigned HTMLImageElement::layoutBoxWidth() const {
508 LayoutBox* box = layoutBox();
509 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedWidth(),
510 box)
511 : 0;
512 }
513
514 unsigned HTMLImageElement::layoutBoxHeight() const {
515 LayoutBox* box = layoutBox();
516 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedHeight(),
517 box)
518 : 0;
519 }
520
513 const String& HTMLImageElement::currentSrc() const { 521 const String& HTMLImageElement::currentSrc() const {
514 // http://www.whatwg.org/specs/web-apps/current-work/multipage/edits.html#dom- img-currentsrc 522 // http://www.whatwg.org/specs/web-apps/current-work/multipage/edits.html#dom- img-currentsrc
515 // The currentSrc IDL attribute must return the img element's current 523 // The currentSrc IDL attribute must return the img element's current
516 // request's current URL. 524 // request's current URL.
517 525
518 // Return the picked URL string in case of load error. 526 // Return the picked URL string in case of load error.
519 if (imageLoader().hadError()) 527 if (imageLoader().hadError())
520 return m_bestFitImageURL; 528 return m_bestFitImageURL;
521 // Initially, the pending request turns into current request when it is either 529 // Initially, the pending request turns into current request when it is either
522 // available or broken. We use the image's dimensions as a proxy to it being 530 // available or broken. We use the image's dimensions as a proxy to it being
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 void HTMLImageElement::associateWith(HTMLFormElement* form) { 918 void HTMLImageElement::associateWith(HTMLFormElement* form) {
911 if (form && form->isConnected()) { 919 if (form && form->isConnected()) {
912 m_form = form; 920 m_form = form;
913 m_formWasSetByParser = true; 921 m_formWasSetByParser = true;
914 m_form->associate(*this); 922 m_form->associate(*this);
915 m_form->didAssociateByParser(); 923 m_form->didAssociateByParser();
916 } 924 }
917 }; 925 };
918 926
919 } // namespace blink 927 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/html/HTMLImageElement.h ('k') | third_party/WebKit/Source/web/WebFrameSerializer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698