Index: polymer_1.2.3/bower_components/iron-page-url/test/initialization-tests.html |
diff --git a/polymer_1.2.3/bower_components/iron-page-url/test/initialization-tests.html b/polymer_1.2.3/bower_components/iron-page-url/test/initialization-tests.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e9a2bc7b90fdf9c59c49c27a6c17010626dee288 |
--- /dev/null |
+++ b/polymer_1.2.3/bower_components/iron-page-url/test/initialization-tests.html |
@@ -0,0 +1,135 @@ |
+<!DOCTYPE html> |
+<html> |
+ <head> |
+ <meta charset="utf-8"> |
+ <title></title> |
+ <script src="../../webcomponentsjs/webcomponents.js"></script> |
+ <script src="../../web-component-tester/browser.js"></script> |
+ <script src="../../test-fixture/test-fixture-mocha.js"></script> |
+ |
+ <link rel="import" href="../../polymer/polymer.html"> |
+ <link rel="import" href="../../promise-polyfill/promise-polyfill.html"> |
+ <link rel="import" href="../../test-fixture/test-fixture.html"> |
+ <link rel="import" href="../iron-page-url.html"> |
+ </head> |
+ |
+ <body> |
+ <script> |
+ 'use strict'; |
+ |
+ function getIframe() { |
+ return new Promise(function(resolve, reject) { |
+ var iframe = document.createElement('iframe'); |
+ var result = getMessageMatching(iframe, function(message) { |
+ return message.type === 'ready'; |
+ }); |
+ iframe.src = './initialization-iframe.html'; |
+ document.body.appendChild(iframe); |
+ iframe.addEventListener('error', reject); |
+ result.then(function() {resolve(iframe)}, reject); |
+ }); |
+ } |
+ |
+ function onMessage(iframe, callback) { |
+ var f = function(event) { |
+ if (event.source === iframe.contentWindow) { |
+ callback(event.data); |
+ } |
+ }; |
+ window.addEventListener('message', f, false); |
+ return function() { |
+ window.removeEventListener('message', f); |
+ } |
+ } |
+ |
+ function getMessageMatching(iframe, predicate) { |
+ var revoke = function() {}; |
+ var result = new Promise(function(resolve, reject) { |
+ revoke = onMessage(iframe, function(message) { |
+ if (predicate(message)) { |
+ resolve(message); |
+ } |
+ }); |
+ }); |
+ result.then(revoke, revoke); |
+ return result; |
+ } |
+ |
+ function getUrl(iframe) { |
+ var result = getMessageMatching(iframe, function(message) { |
+ return message.type === 'urlQueryResponse'; |
+ }) |
+ var revoke = function() {}; |
+ var result = new Promise(function(resolve, reject) { |
+ revoke = onMessage(iframe, resolve); |
+ }); |
+ result.then(revoke, revoke); |
+ iframe.contentWindow.postMessage({type: 'urlQuery'}, '*'); |
+ return result; |
+ } |
+ |
+ function timePasses(ms) { |
+ return new Promise(function(resolve) { |
+ window.setTimeout(function() { |
+ resolve(); |
+ }, ms); |
+ }); |
+ } |
+ |
+ suite('<iron-page-url>\'s initialization', function() { |
+ var iframe; |
+ var error; |
+ setup(function() { |
+ return getIframe().then(function(i) { |
+ iframe = i; |
+ function isError(m) {return m.type === 'error'} |
+ getMessageMatching(iframe, isError).then(function(m) { |
+ error = m.error; |
+ }); |
+ }); |
+ }); |
+ teardown(function() { |
+ if (iframe) { |
+ document.body.removeChild(iframe); |
+ } |
+ var e = error; |
+ iframe = null; |
+ error = null; |
+ if (e) { |
+ throw new Error('Error message from contained iframe: ' + e); |
+ } |
+ }); |
+ var cases = [ |
+ 'default-before', 'attached-before', 'ready-before', |
+ 'default-after', 'attached-after', 'ready-after', |
+ 'default-below', 'attached-below', 'ready-below', |
+ 'default-above', 'attached-above', 'ready-above', |
+ 'default-container', 'attached-container', 'ready-container' |
+ ]; |
+ cases.forEach(function(caseName) { |
+ test('the url takes priority in ' + caseName + ' initialization', function() { |
+ return getUrl(iframe).then(function(url) { |
+ expect(url.search).to.be.eq(''); |
+ iframe.contentWindow.postMessage({type: 'appendBody', tagName: caseName}, '*'); |
+ return timePasses(10).then(function() {return getUrl(iframe)}); |
+ }).then(function(url) { |
+ expect(url.search).to.be.eq(''); |
+ }); |
+ }); |
+ }); |
+ var expectedFailureCases = ['timeout-before', 'timeout-after', 'timeout-below', 'timeout-above', 'timeout-container']; |
+ expectedFailureCases.forEach(function(caseName) { |
+ test('the url does not take priority in ' + caseName + ' initialization', function() { |
+ return getUrl(iframe).then(function(url) { |
+ expect(url.search).to.be.eq(''); |
+ iframe.contentWindow.postMessage({type: 'appendBody', tagName: caseName}, '*'); |
+ return timePasses(60).then(function() {return getUrl(iframe)}); |
+ }).then(function(url) { |
+ expect(url.search).to.be.eq('?on-timeout'); |
+ }); |
+ }); |
+ }); |
+ }); |
+ </script> |
+ </body> |
+</html> |