OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright 2013 The Polymer Authors. All rights reserved. | |
3 * Use of this source code is governed by a BSD-style | |
4 * license that can be found in the LICENSE file. | |
5 */ | |
6 | |
7 // if standalone | |
8 if (window.top === window) { | |
9 // if standalone | |
10 var failed = false; | |
11 window.done = function() { | |
12 window.onerror = null; | |
13 if (!failed) { | |
14 var d = document.createElement('pre'); | |
15 d.style.cssText = 'padding: 6px; background-color: lightgreen; position: a
bsolute; bottom:0; right:10px;'; | |
16 d.textContent = 'Passed'; | |
17 document.body.appendChild(d); | |
18 } | |
19 }; | |
20 window.onerror = function(x) { | |
21 failed = true; | |
22 var d = document.createElement('pre'); | |
23 d.style.cssText = 'padding: 6px; background-color: #FFE0E0; position: absolu
te; bottom:0; right:10px;'; | |
24 d.textContent = 'FAILED: ' + x; | |
25 document.body.appendChild(d); | |
26 }; | |
27 } else | |
28 // if part of a test suite | |
29 { | |
30 window.done = function() { | |
31 window.onerror = null; | |
32 parent.postMessage('ok', '*'); | |
33 }; | |
34 | |
35 window.onerror = function(x) { | |
36 parent.postMessage({error: x}, '*'); | |
37 }; | |
38 } | |
39 | |
40 window.asyncSeries = function(series, callback, forwardExceptions) { | |
41 series = series.slice(); | |
42 var next = function(err) { | |
43 if (err) { | |
44 if (callback) { | |
45 callback(err); | |
46 } | |
47 } else { | |
48 var f = series.shift(); | |
49 if (f) { | |
50 if (!forwardExceptions) { | |
51 f(next); | |
52 } else { | |
53 try { | |
54 f(next); | |
55 } catch(e) { | |
56 if (callback) { | |
57 callback(e); | |
58 } | |
59 } | |
60 } | |
61 } else { | |
62 if (callback) { | |
63 callback(); | |
64 } | |
65 } | |
66 } | |
67 }; | |
68 next(); | |
69 }; | |
70 | |
71 window.waitFor = function(fn, next, intervalOrMutationEl, timeout, timeoutTime)
{ | |
72 timeoutTime = timeoutTime || Date.now() + (timeout || 1000); | |
73 intervalOrMutationEl = intervalOrMutationEl || 32; | |
74 try { | |
75 fn(); | |
76 } catch (e) { | |
77 if (Date.now() > timeoutTime) { | |
78 throw e; | |
79 } else { | |
80 if (isNaN(intervalOrMutationEl)) { | |
81 intervalOrMutationEl.onMutation(intervalOrMutationEl, function() { | |
82 waitFor(fn, next, intervalOrMutationEl, timeout, timeoutTime); | |
83 }); | |
84 } else { | |
85 setTimeout(function() { | |
86 waitFor(fn, next, intervalOrMutationEl, timeout, timeoutTime); | |
87 }, intervalOrMutationEl); | |
88 } | |
89 return; | |
90 } | |
91 } | |
92 next(); | |
93 }; | |
OLD | NEW |