| <!DOCTYPE HTML> |
| <meta charset=utf-8> |
| <title>Largest Contentful Paint:dynamically appended image with different |
| dimensions but same src triggers new entry.</title> |
| <body> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="resources/largest-contentful-paint-helpers.js"></script> |
| <img src='/images/black-rectangle.png' id='image_id' width="50" /> |
| <script> |
| async_test(function (t) { |
| assert_implements(window.LargestContentfulPaint, "LargestContentfulPaint is not implemented"); |
| let beforeLoad = performance.now(); |
| let beforeSecondImageLoad = performance.now(); |
| let firstCallback = true; |
| // black-rectangle.png is 50 x 25. |
| const original_rect_size = 50 * 25; |
| // The bigger black rectangle is 100 x 50, but defined with width="50". |
| const bigger_rect_size = 100 * 50; |
| const observer = new PerformanceObserver( |
| t.step_func(function (entryList) { |
| assert_equals(entryList.getEntries().length, 1); |
| const entry = entryList.getEntries()[0]; |
| const url = window.location.origin + '/images/black-rectangle.png'; |
| if (firstCallback) { |
| // Checks the original black rectangle. |
| // TODO(https://crbug.com/1411616): we're testing approximated values. |
| checkImage(entry, url, 'image_id', original_rect_size, |
| beforeLoad, ["approximateSize"]); |
| // Creates a new bigger black rectangle. |
| const img = document.createElement('img'); |
| img.id = 'new_image_id'; |
| img.src = url; |
| img.width = 100; |
| beforeSecondImageLoad = performance.now(); |
| firstCallback = false; |
| document.body.appendChild(img); |
| } else { |
| // Checks the new black rectangle. |
| checkImage(entry, url, 'new_image_id', bigger_rect_size, beforeSecondImageLoad); |
| t.done(); |
| } |
| }) |
| ); |
| observer.observe({ type: 'largest-contentful-paint', buffered: true }); |
| }, 'Largest Contentful Paint:dynamically appended image with different ' + |
| 'dimensions but same src triggers new entry.'); |
| </script> |
| </body> |