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

Unified 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 side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698