Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(232)

Side by Side Diff: polymer_1.2.3/bower_components/iron-page-url/test/initialization-tests.html

Issue 1581713003: [third_party] add polymer 1.2.3 (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: 1.2.3 Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title></title>
6 <script src="../../webcomponentsjs/webcomponents.js"></script>
7 <script src="../../web-component-tester/browser.js"></script>
8 <script src="../../test-fixture/test-fixture-mocha.js"></script>
9
10 <link rel="import" href="../../polymer/polymer.html">
11 <link rel="import" href="../../promise-polyfill/promise-polyfill.html">
12 <link rel="import" href="../../test-fixture/test-fixture.html">
13 <link rel="import" href="../iron-page-url.html">
14 </head>
15
16 <body>
17 <script>
18 'use strict';
19
20 function getIframe() {
21 return new Promise(function(resolve, reject) {
22 var iframe = document.createElement('iframe');
23 var result = getMessageMatching(iframe, function(message) {
24 return message.type === 'ready';
25 });
26 iframe.src = './initialization-iframe.html';
27 document.body.appendChild(iframe);
28 iframe.addEventListener('error', reject);
29 result.then(function() {resolve(iframe)}, reject);
30 });
31 }
32
33 function onMessage(iframe, callback) {
34 var f = function(event) {
35 if (event.source === iframe.contentWindow) {
36 callback(event.data);
37 }
38 };
39 window.addEventListener('message', f, false);
40 return function() {
41 window.removeEventListener('message', f);
42 }
43 }
44
45 function getMessageMatching(iframe, predicate) {
46 var revoke = function() {};
47 var result = new Promise(function(resolve, reject) {
48 revoke = onMessage(iframe, function(message) {
49 if (predicate(message)) {
50 resolve(message);
51 }
52 });
53 });
54 result.then(revoke, revoke);
55 return result;
56 }
57
58 function getUrl(iframe) {
59 var result = getMessageMatching(iframe, function(message) {
60 return message.type === 'urlQueryResponse';
61 })
62 var revoke = function() {};
63 var result = new Promise(function(resolve, reject) {
64 revoke = onMessage(iframe, resolve);
65 });
66 result.then(revoke, revoke);
67 iframe.contentWindow.postMessage({type: 'urlQuery'}, '*');
68 return result;
69 }
70
71 function timePasses(ms) {
72 return new Promise(function(resolve) {
73 window.setTimeout(function() {
74 resolve();
75 }, ms);
76 });
77 }
78
79 suite('<iron-page-url>\'s initialization', function() {
80 var iframe;
81 var error;
82 setup(function() {
83 return getIframe().then(function(i) {
84 iframe = i;
85 function isError(m) {return m.type === 'error'}
86 getMessageMatching(iframe, isError).then(function(m) {
87 error = m.error;
88 });
89 });
90 });
91 teardown(function() {
92 if (iframe) {
93 document.body.removeChild(iframe);
94 }
95 var e = error;
96 iframe = null;
97 error = null;
98 if (e) {
99 throw new Error('Error message from contained iframe: ' + e);
100 }
101 });
102 var cases = [
103 'default-before', 'attached-before', 'ready-before',
104 'default-after', 'attached-after', 'ready-after',
105 'default-below', 'attached-below', 'ready-below',
106 'default-above', 'attached-above', 'ready-above',
107 'default-container', 'attached-container', 'ready-container'
108 ];
109 cases.forEach(function(caseName) {
110 test('the url takes priority in ' + caseName + ' initialization', func tion() {
111 return getUrl(iframe).then(function(url) {
112 expect(url.search).to.be.eq('');
113 iframe.contentWindow.postMessage({type: 'appendBody', tagName: cas eName}, '*');
114 return timePasses(10).then(function() {return getUrl(iframe)});
115 }).then(function(url) {
116 expect(url.search).to.be.eq('');
117 });
118 });
119 });
120 var expectedFailureCases = ['timeout-before', 'timeout-after', 'timeout- below', 'timeout-above', 'timeout-container'];
121 expectedFailureCases.forEach(function(caseName) {
122 test('the url does not take priority in ' + caseName + ' initializatio n', function() {
123 return getUrl(iframe).then(function(url) {
124 expect(url.search).to.be.eq('');
125 iframe.contentWindow.postMessage({type: 'appendBody', tagName: cas eName}, '*');
126 return timePasses(60).then(function() {return getUrl(iframe)});
127 }).then(function(url) {
128 expect(url.search).to.be.eq('?on-timeout');
129 });
130 });
131 });
132 });
133 </script>
134 </body>
135 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698