| <!DOCTYPE HTML> | 
 | <meta charset=utf-8> | 
 | <title>Largest Contentful Paint: observe image.</title> | 
 | <style> | 
 |  #target { | 
 |  background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="50"><rect fill="lime" width="100" height="50"/></svg>'); | 
 |  width: 100px; | 
 |  height: 50px; | 
 |  } | 
 | </style> | 
 | <body> | 
 | <script src="/resources/testharness.js"></script> | 
 | <script src="/resources/testharnessreport.js"></script> | 
 | <script src="resources/largest-contentful-paint-helpers.js"></script> | 
 | <script> | 
 |  async_test(function (t) { | 
 |  assert_implements(window.LargestContentfulPaint, "LargestContentfulPaint is not implemented"); | 
 |  const beforeLoad = performance.now(); | 
 |  const observer = new PerformanceObserver( | 
 |  t.step_func_done(function(entryList) { | 
 |  assert_equals(entryList.getEntries().length, 1); | 
 |  const entry = entryList.getEntries()[0]; | 
 |  let url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"'; | 
 |  url += ' width="100" height="50"><rect fill="lime" width="100"'; | 
 |  url += ' height="50"/></svg>'; | 
 |  // green.svg is 100 by 50 | 
 |  const size = 100 * 50; | 
 |  checkImage(entry, url, 'target', size, beforeLoad); | 
 |  }) | 
 |  ); | 
 |  observer.observe({type: 'largest-contentful-paint', buffered: true}); | 
 |  t.step_timeout(() => { | 
 |  assert_unreached("The image should have triggered an LCP entry."); | 
 |  t.done(); | 
 |  }, 1000); | 
 |  }, 'Data-URI background SVG image is observable.'); | 
 | </script> | 
 |  | 
 | <div id="target" width="100" height="50"></div> | 
 | </body> | 
 |  |