|  | <!DOCTYPE html> | 
|  | <html> | 
|  | <head> | 
|  | <title>Fetching import</title> | 
|  | <link rel="help" href="http://w3c.github.io/webcomponents/spec/imports/#fetching-import"> | 
|  | <script src="/resources/testharness.js"></script> | 
|  | <script src="/resources/testharnessreport.js"></script> | 
|  | <link rel="stylesheet" href="/resources/testharness.css"> | 
|  |  | 
|  | <script> | 
|  | var onloadWasCalledOnSuccess = false; | 
|  | var onerrorWasCalledOnSuccess = false; | 
|  | function helloLoadHandler() { onloadWasCalledOnSuccess = true; } | 
|  | function helloErrorHandler() { onerrorWasCalledOnSuccess = true; } | 
|  |  | 
|  | var onloadWasCalledOnFail = false; | 
|  | var onerrorWasCalledOnFail = false; | 
|  | function nosuchLoadHandler() { onloadWasCalledOnFail = true; } | 
|  | function nosuchErrorHandler() { onerrorWasCalledOnFail = true; } | 
|  | </script> | 
|  |  | 
|  | <link rel="import" href="resources/hello.html" onload="helloLoadHandler()" onerror="helloLoadHandler()"> | 
|  | <link rel="import" href="resources/no-such.html" onload="nosuchLoadHandler()" onerror="nosuchErrorHandler()"> | 
|  |  | 
|  | <script> | 
|  | test(function() { | 
|  | assert_true(onloadWasCalledOnSuccess); | 
|  | assert_false(onerrorWasCalledOnSuccess); | 
|  | }, 'The loading attempt must be considered successful if IMPORT is not null on the algorithm completion, and failed otherwise. (1)'); | 
|  |  | 
|  | test(function() { | 
|  | assert_false(onloadWasCalledOnFail); | 
|  | assert_true(onerrorWasCalledOnFail); | 
|  | }, 'The loading attempt must be considered successful if IMPORT is not null on the algorithm completion, and failed otherwise. (2)'); | 
|  |  | 
|  | t1 = async_test('The loading attempt must be considered successful if IMPORT is not null on the algorithm completion, and failed otherwise. (3)') | 
|  | t1.step(function() { | 
|  | var importElement = document.createElement('link'); | 
|  | importElement.setAttribute('rel', 'import'); | 
|  | importElement.setAttribute('href', 'resources/dynamic.html'); | 
|  | importElement.addEventListener("error", assert_unreached); | 
|  | importElement.addEventListener("load", function() { | 
|  | t1.done(); | 
|  | }); | 
|  |  | 
|  | document.head.appendChild(importElement); | 
|  | }); | 
|  |  | 
|  | var onloadWasCalledOnAsync = false; | 
|  | var onerrorWasCalledOnAsync = false; | 
|  | var asyncAttemptDone = function() { assert_unreached(); }; | 
|  |  | 
|  | function asyncLoadHandler() { | 
|  | onloadWasCalledOnAsync = true; | 
|  | asyncAttemptDone(); | 
|  | } | 
|  | function asyncErrorHandler() { | 
|  | onerrorWasCalledOnAsync = true; | 
|  | asyncAttemptDone(); | 
|  | } | 
|  |  | 
|  | t2 = async_test('Every import that is not marked as async delays the load event in the Document.'); | 
|  | asyncAttemptDone = function() { | 
|  | t2.step(function() { | 
|  | assert_true(onloadWasCalledOnAsync); | 
|  | assert_false(onerrorWasCalledOnAsync); | 
|  | t2.done(); | 
|  | }); | 
|  | }; | 
|  |  | 
|  | </script> | 
|  | <link rel="import" href="resources/async.html" onload="asyncLoadHandler()" onerror="asyncErrorHandler()" async> | 
|  | </head> | 
|  | <body> | 
|  | <div id="log"></div> | 
|  | </body> | 
|  | </html> |