|  | <!DOCTYPE html> | 
|  | <html> | 
|  | <head> | 
|  | <meta charset="utf-8" /> | 
|  | <title>window.performance.now exists</title> | 
|  | <link rel="author" title="W3C" href="http://www.w3.org/" /> | 
|  | <link rel="help" href="http://www.w3.org/TR/hr-time/#sec-extenstions-performance-interface"/> | 
|  | <script src="/resources/testharness.js"></script> | 
|  | <script src="/resources/testharnessreport.js"></script> | 
|  | <link rel="stylesheet" href="/resources/testharness.css" /> | 
|  | <script> | 
|  | test(function() { | 
|  | assert_equals(typeof window.performance, "object"); | 
|  | }, "window.performance is defined", {assert: "The window.performance attribute provides a hosting area for performance related attributes."}); | 
|  |  | 
|  | test(function() { | 
|  | assert_not_equals(window.performance.now, undefined, 'window.performance.now is defined'); | 
|  | }, "High Resolution Time extension to the Performance interface", {assert: "window.performance.now exists"}); | 
|  |  | 
|  | test(function() { | 
|  | assert_equals(typeof window.performance.now, "function", "window.performance.now is a function"); | 
|  | }, "window.performance.now() function", {assert: "window.performance.now is a function"}); | 
|  |  | 
|  | test(function() { | 
|  | assert_equals(typeof window.performance.now(), "number", "window.performance.now() returns a number"); | 
|  | }, "window.performance.now() returns a number", {assert: "The now method MUST return a DOMHighResTimeStamp"}); | 
|  |  | 
|  | async_test(function() { | 
|  | // Check whether the performance.now() method is close to Date() within 30ms (due to inaccuracies) | 
|  | var initial_hrt = performance.now(); | 
|  | var initial_date = Date.now(); | 
|  | setTimeout(this.step_func(function() { | 
|  | var final_hrt = performance.now(); | 
|  | var final_date = Date.now(); | 
|  | assert_approx_equals(final_hrt - initial_hrt, final_date - initial_date, 30, 'High resolution time value increased by approximately the same amount as time from date object'); | 
|  | this.done(); | 
|  | }), 2000); | 
|  | }, 'High resolution time has approximately the right relative magnitude'); | 
|  | </script> | 
|  | </head> | 
|  | <body> | 
|  | <h1>Description</h1> | 
|  | <p>This test validates that window.performance.now() exist and is a function.</p> | 
|  |  | 
|  | <div id="log"></div> | 
|  |  | 
|  | </body> | 
|  | </html> |