xref: /aosp_15_r20/external/skia/modules/pathkit/perf/path.bench.js (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workerdescribe('PathKit\'s Path Behavior', function() {
2*c8dee2aaSAndroid Build Coastguard Worker    function drawPath() {
3*c8dee2aaSAndroid Build Coastguard Worker        let path = PathKit.NewPath();
4*c8dee2aaSAndroid Build Coastguard Worker        path.moveTo(20, 5);
5*c8dee2aaSAndroid Build Coastguard Worker        path.lineTo(30, 20);
6*c8dee2aaSAndroid Build Coastguard Worker        path.lineTo(40, 10);
7*c8dee2aaSAndroid Build Coastguard Worker        path.lineTo(50, 20);
8*c8dee2aaSAndroid Build Coastguard Worker        path.lineTo(60, 0);
9*c8dee2aaSAndroid Build Coastguard Worker        path.lineTo(20, 5);
10*c8dee2aaSAndroid Build Coastguard Worker
11*c8dee2aaSAndroid Build Coastguard Worker        path.moveTo(20, 80);
12*c8dee2aaSAndroid Build Coastguard Worker        path.bezierCurveTo(90, 10, 160, 150, 190, 10);
13*c8dee2aaSAndroid Build Coastguard Worker
14*c8dee2aaSAndroid Build Coastguard Worker        path.moveTo(36, 148);
15*c8dee2aaSAndroid Build Coastguard Worker        path.quadraticCurveTo(66, 188, 120, 136);
16*c8dee2aaSAndroid Build Coastguard Worker        path.lineTo(36, 148);
17*c8dee2aaSAndroid Build Coastguard Worker
18*c8dee2aaSAndroid Build Coastguard Worker        path.rect(5, 170, 20, 20);
19*c8dee2aaSAndroid Build Coastguard Worker
20*c8dee2aaSAndroid Build Coastguard Worker        path.moveTo(150, 180);
21*c8dee2aaSAndroid Build Coastguard Worker        path.arcTo(150, 100, 50, 200, 20);
22*c8dee2aaSAndroid Build Coastguard Worker        path.lineTo(160, 160);
23*c8dee2aaSAndroid Build Coastguard Worker
24*c8dee2aaSAndroid Build Coastguard Worker        path.moveTo(20, 120);
25*c8dee2aaSAndroid Build Coastguard Worker        path.arc(20, 120, 18, 0, 1.75 * Math.PI);
26*c8dee2aaSAndroid Build Coastguard Worker        path.lineTo(20, 120);
27*c8dee2aaSAndroid Build Coastguard Worker
28*c8dee2aaSAndroid Build Coastguard Worker        let secondPath = PathKit.NewPath();
29*c8dee2aaSAndroid Build Coastguard Worker        secondPath.ellipse(130, 25, 30, 10, -1*Math.PI/8, Math.PI/6, 1.5*Math.PI, false);
30*c8dee2aaSAndroid Build Coastguard Worker
31*c8dee2aaSAndroid Build Coastguard Worker        path.addPath(secondPath);
32*c8dee2aaSAndroid Build Coastguard Worker
33*c8dee2aaSAndroid Build Coastguard Worker        let m = document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGMatrix();
34*c8dee2aaSAndroid Build Coastguard Worker        m.a = 1; m.b = 0;
35*c8dee2aaSAndroid Build Coastguard Worker        m.c = 0; m.d = 1;
36*c8dee2aaSAndroid Build Coastguard Worker        m.e = 0; m.f = 20.5;
37*c8dee2aaSAndroid Build Coastguard Worker
38*c8dee2aaSAndroid Build Coastguard Worker        path.addPath(secondPath, m);
39*c8dee2aaSAndroid Build Coastguard Worker        secondPath.delete();
40*c8dee2aaSAndroid Build Coastguard Worker        return path;
41*c8dee2aaSAndroid Build Coastguard Worker    }
42*c8dee2aaSAndroid Build Coastguard Worker
43*c8dee2aaSAndroid Build Coastguard Worker    it('path_path2dapi', function(done) {
44*c8dee2aaSAndroid Build Coastguard Worker        function setup(ctx) { }
45*c8dee2aaSAndroid Build Coastguard Worker
46*c8dee2aaSAndroid Build Coastguard Worker        function test(ctx) {
47*c8dee2aaSAndroid Build Coastguard Worker            path = drawPath();
48*c8dee2aaSAndroid Build Coastguard Worker            path.delete();
49*c8dee2aaSAndroid Build Coastguard Worker        }
50*c8dee2aaSAndroid Build Coastguard Worker
51*c8dee2aaSAndroid Build Coastguard Worker        function teardown(ctx) { }
52*c8dee2aaSAndroid Build Coastguard Worker
53*c8dee2aaSAndroid Build Coastguard Worker        LoadPathKit.then(() => {
54*c8dee2aaSAndroid Build Coastguard Worker            benchmarkAndReport('path_path2dapi', setup, test, teardown).then(() => {
55*c8dee2aaSAndroid Build Coastguard Worker                done();
56*c8dee2aaSAndroid Build Coastguard Worker            }).catch(reportError(done));
57*c8dee2aaSAndroid Build Coastguard Worker        });
58*c8dee2aaSAndroid Build Coastguard Worker    });
59*c8dee2aaSAndroid Build Coastguard Worker
60*c8dee2aaSAndroid Build Coastguard Worker    describe('import options', function() {
61*c8dee2aaSAndroid Build Coastguard Worker        it('path_copy', function(done) {
62*c8dee2aaSAndroid Build Coastguard Worker            function setup(ctx) {
63*c8dee2aaSAndroid Build Coastguard Worker                ctx.path = PathKit.FromSVGString('M 205,5 L 795,5 L 595,295 L 5,295 L 205,5 z');
64*c8dee2aaSAndroid Build Coastguard Worker            }
65*c8dee2aaSAndroid Build Coastguard Worker
66*c8dee2aaSAndroid Build Coastguard Worker            function test(ctx) {
67*c8dee2aaSAndroid Build Coastguard Worker                let p = ctx.path.copy();
68*c8dee2aaSAndroid Build Coastguard Worker                p.delete();
69*c8dee2aaSAndroid Build Coastguard Worker            }
70*c8dee2aaSAndroid Build Coastguard Worker
71*c8dee2aaSAndroid Build Coastguard Worker            function teardown(ctx) {
72*c8dee2aaSAndroid Build Coastguard Worker                ctx.path.delete();
73*c8dee2aaSAndroid Build Coastguard Worker            }
74*c8dee2aaSAndroid Build Coastguard Worker
75*c8dee2aaSAndroid Build Coastguard Worker            LoadPathKit.then(() => {
76*c8dee2aaSAndroid Build Coastguard Worker                benchmarkAndReport('path_copy', setup, test, teardown).then(() => {
77*c8dee2aaSAndroid Build Coastguard Worker                    done();
78*c8dee2aaSAndroid Build Coastguard Worker                }).catch(reportError(done));
79*c8dee2aaSAndroid Build Coastguard Worker            });
80*c8dee2aaSAndroid Build Coastguard Worker        });
81*c8dee2aaSAndroid Build Coastguard Worker
82*c8dee2aaSAndroid Build Coastguard Worker        it('path_from_api_calls', function(done) {
83*c8dee2aaSAndroid Build Coastguard Worker            function setup(ctx) { }
84*c8dee2aaSAndroid Build Coastguard Worker
85*c8dee2aaSAndroid Build Coastguard Worker            function test(ctx) {
86*c8dee2aaSAndroid Build Coastguard Worker                let p = PathKit.NewPath()
87*c8dee2aaSAndroid Build Coastguard Worker                               .moveTo(205, 5)
88*c8dee2aaSAndroid Build Coastguard Worker                               .lineTo(795, 5)
89*c8dee2aaSAndroid Build Coastguard Worker                               .lineTo(595, 295)
90*c8dee2aaSAndroid Build Coastguard Worker                               .lineTo(5, 295)
91*c8dee2aaSAndroid Build Coastguard Worker                               .lineTo(205, 5)
92*c8dee2aaSAndroid Build Coastguard Worker                               .close();
93*c8dee2aaSAndroid Build Coastguard Worker                p.delete();
94*c8dee2aaSAndroid Build Coastguard Worker            }
95*c8dee2aaSAndroid Build Coastguard Worker
96*c8dee2aaSAndroid Build Coastguard Worker            function teardown(ctx) { }
97*c8dee2aaSAndroid Build Coastguard Worker
98*c8dee2aaSAndroid Build Coastguard Worker            LoadPathKit.then(() => {
99*c8dee2aaSAndroid Build Coastguard Worker                benchmarkAndReport('path_from_api_calls', setup, test, teardown).then(() => {
100*c8dee2aaSAndroid Build Coastguard Worker                    done();
101*c8dee2aaSAndroid Build Coastguard Worker                }).catch(reportError(done));
102*c8dee2aaSAndroid Build Coastguard Worker            });
103*c8dee2aaSAndroid Build Coastguard Worker        });
104*c8dee2aaSAndroid Build Coastguard Worker
105*c8dee2aaSAndroid Build Coastguard Worker        it('path_fromCmds', function(done) {
106*c8dee2aaSAndroid Build Coastguard Worker            function setup(ctx) { }
107*c8dee2aaSAndroid Build Coastguard Worker
108*c8dee2aaSAndroid Build Coastguard Worker            function test(ctx) {
109*c8dee2aaSAndroid Build Coastguard Worker                let p = PathKit.FromCmds(
110*c8dee2aaSAndroid Build Coastguard Worker                    [[PathKit.MOVE_VERB, 205, 5],
111*c8dee2aaSAndroid Build Coastguard Worker                    [PathKit.LINE_VERB, 795, 5],
112*c8dee2aaSAndroid Build Coastguard Worker                    [PathKit.LINE_VERB, 595, 295],
113*c8dee2aaSAndroid Build Coastguard Worker                    [PathKit.LINE_VERB, 5, 295],
114*c8dee2aaSAndroid Build Coastguard Worker                    [PathKit.LINE_VERB, 205, 5],
115*c8dee2aaSAndroid Build Coastguard Worker                    [PathKit.CLOSE_VERB]]);
116*c8dee2aaSAndroid Build Coastguard Worker                p.delete();
117*c8dee2aaSAndroid Build Coastguard Worker            }
118*c8dee2aaSAndroid Build Coastguard Worker
119*c8dee2aaSAndroid Build Coastguard Worker            function teardown(ctx) { }
120*c8dee2aaSAndroid Build Coastguard Worker
121*c8dee2aaSAndroid Build Coastguard Worker            LoadPathKit.then(() => {
122*c8dee2aaSAndroid Build Coastguard Worker                benchmarkAndReport('path_fromCmds', setup, test, teardown).then(() => {
123*c8dee2aaSAndroid Build Coastguard Worker                    done();
124*c8dee2aaSAndroid Build Coastguard Worker                }).catch(reportError(done));
125*c8dee2aaSAndroid Build Coastguard Worker            });
126*c8dee2aaSAndroid Build Coastguard Worker        });
127*c8dee2aaSAndroid Build Coastguard Worker
128*c8dee2aaSAndroid Build Coastguard Worker        it('path_fromSVGString', function(done) {
129*c8dee2aaSAndroid Build Coastguard Worker            function setup(ctx) {}
130*c8dee2aaSAndroid Build Coastguard Worker
131*c8dee2aaSAndroid Build Coastguard Worker            function test(ctx) {
132*c8dee2aaSAndroid Build Coastguard Worker                // https://upload.wikimedia.org/wikipedia/commons/e/e7/Simple_parallelogram.svg
133*c8dee2aaSAndroid Build Coastguard Worker                let p = PathKit.FromSVGString('M 205,5 L 795,5 L 595,295 L 5,295 L 205,5 z');
134*c8dee2aaSAndroid Build Coastguard Worker                p.delete();
135*c8dee2aaSAndroid Build Coastguard Worker            }
136*c8dee2aaSAndroid Build Coastguard Worker
137*c8dee2aaSAndroid Build Coastguard Worker            function teardown(ctx) { }
138*c8dee2aaSAndroid Build Coastguard Worker
139*c8dee2aaSAndroid Build Coastguard Worker            LoadPathKit.then(() => {
140*c8dee2aaSAndroid Build Coastguard Worker                benchmarkAndReport('path_fromSVGString', setup, test, teardown).then(() => {
141*c8dee2aaSAndroid Build Coastguard Worker                    done();
142*c8dee2aaSAndroid Build Coastguard Worker                }).catch(reportError(done));
143*c8dee2aaSAndroid Build Coastguard Worker            });
144*c8dee2aaSAndroid Build Coastguard Worker        });
145*c8dee2aaSAndroid Build Coastguard Worker    });
146*c8dee2aaSAndroid Build Coastguard Worker
147*c8dee2aaSAndroid Build Coastguard Worker    describe('export options', function() {
148*c8dee2aaSAndroid Build Coastguard Worker        it('path_toCmds', function(done) {
149*c8dee2aaSAndroid Build Coastguard Worker            function setup(ctx) {
150*c8dee2aaSAndroid Build Coastguard Worker                ctx.path = drawPath();
151*c8dee2aaSAndroid Build Coastguard Worker            }
152*c8dee2aaSAndroid Build Coastguard Worker
153*c8dee2aaSAndroid Build Coastguard Worker            function test(ctx) {
154*c8dee2aaSAndroid Build Coastguard Worker                ctx.path.toCmds();
155*c8dee2aaSAndroid Build Coastguard Worker            }
156*c8dee2aaSAndroid Build Coastguard Worker
157*c8dee2aaSAndroid Build Coastguard Worker            function teardown(ctx) {
158*c8dee2aaSAndroid Build Coastguard Worker                ctx.path.delete();
159*c8dee2aaSAndroid Build Coastguard Worker            }
160*c8dee2aaSAndroid Build Coastguard Worker
161*c8dee2aaSAndroid Build Coastguard Worker            LoadPathKit.then(() => {
162*c8dee2aaSAndroid Build Coastguard Worker                benchmarkAndReport('path_toCmds', setup, test, teardown).then(() => {
163*c8dee2aaSAndroid Build Coastguard Worker                    done();
164*c8dee2aaSAndroid Build Coastguard Worker                }).catch(reportError(done));
165*c8dee2aaSAndroid Build Coastguard Worker            });
166*c8dee2aaSAndroid Build Coastguard Worker        });
167*c8dee2aaSAndroid Build Coastguard Worker
168*c8dee2aaSAndroid Build Coastguard Worker        it('path_toPath2D', function(done) {
169*c8dee2aaSAndroid Build Coastguard Worker            function setup(ctx) {
170*c8dee2aaSAndroid Build Coastguard Worker                ctx.path = drawPath();
171*c8dee2aaSAndroid Build Coastguard Worker            }
172*c8dee2aaSAndroid Build Coastguard Worker
173*c8dee2aaSAndroid Build Coastguard Worker            function test(ctx) {
174*c8dee2aaSAndroid Build Coastguard Worker                ctx.path.toPath2D();
175*c8dee2aaSAndroid Build Coastguard Worker            }
176*c8dee2aaSAndroid Build Coastguard Worker
177*c8dee2aaSAndroid Build Coastguard Worker            function teardown(ctx) {
178*c8dee2aaSAndroid Build Coastguard Worker                ctx.path.delete();
179*c8dee2aaSAndroid Build Coastguard Worker            }
180*c8dee2aaSAndroid Build Coastguard Worker
181*c8dee2aaSAndroid Build Coastguard Worker            LoadPathKit.then(() => {
182*c8dee2aaSAndroid Build Coastguard Worker                benchmarkAndReport('path_toPath2D', setup, test, teardown).then(() => {
183*c8dee2aaSAndroid Build Coastguard Worker                    done();
184*c8dee2aaSAndroid Build Coastguard Worker                }).catch(reportError(done));
185*c8dee2aaSAndroid Build Coastguard Worker            });
186*c8dee2aaSAndroid Build Coastguard Worker        });
187*c8dee2aaSAndroid Build Coastguard Worker
188*c8dee2aaSAndroid Build Coastguard Worker        it('path_toSVGString', function(done) {
189*c8dee2aaSAndroid Build Coastguard Worker            function setup(ctx) {
190*c8dee2aaSAndroid Build Coastguard Worker                ctx.path = drawPath();
191*c8dee2aaSAndroid Build Coastguard Worker            }
192*c8dee2aaSAndroid Build Coastguard Worker
193*c8dee2aaSAndroid Build Coastguard Worker            function test(ctx) {
194*c8dee2aaSAndroid Build Coastguard Worker                ctx.path.toSVGString();
195*c8dee2aaSAndroid Build Coastguard Worker            }
196*c8dee2aaSAndroid Build Coastguard Worker
197*c8dee2aaSAndroid Build Coastguard Worker            function teardown(ctx) {
198*c8dee2aaSAndroid Build Coastguard Worker                ctx.path.delete();
199*c8dee2aaSAndroid Build Coastguard Worker            }
200*c8dee2aaSAndroid Build Coastguard Worker
201*c8dee2aaSAndroid Build Coastguard Worker            LoadPathKit.then(() => {
202*c8dee2aaSAndroid Build Coastguard Worker                benchmarkAndReport('path_toSVGString', setup, test, teardown).then(() => {
203*c8dee2aaSAndroid Build Coastguard Worker                    done();
204*c8dee2aaSAndroid Build Coastguard Worker                }).catch(reportError(done));
205*c8dee2aaSAndroid Build Coastguard Worker            });
206*c8dee2aaSAndroid Build Coastguard Worker        });
207*c8dee2aaSAndroid Build Coastguard Worker    });
208*c8dee2aaSAndroid Build Coastguard Worker
209*c8dee2aaSAndroid Build Coastguard Worker    describe('matrix options', function() {
210*c8dee2aaSAndroid Build Coastguard Worker        function drawTriangle() {
211*c8dee2aaSAndroid Build Coastguard Worker            let path = PathKit.NewPath();
212*c8dee2aaSAndroid Build Coastguard Worker            path.moveTo(0, 0);
213*c8dee2aaSAndroid Build Coastguard Worker            path.lineTo(10, 0);
214*c8dee2aaSAndroid Build Coastguard Worker            path.lineTo(10, 10);
215*c8dee2aaSAndroid Build Coastguard Worker            path.close();
216*c8dee2aaSAndroid Build Coastguard Worker            return path;
217*c8dee2aaSAndroid Build Coastguard Worker        }
218*c8dee2aaSAndroid Build Coastguard Worker
219*c8dee2aaSAndroid Build Coastguard Worker        it('path_add_path_svgmatrix', function(done) {
220*c8dee2aaSAndroid Build Coastguard Worker            function setup(ctx) {
221*c8dee2aaSAndroid Build Coastguard Worker                ctx.path = drawTriangle();
222*c8dee2aaSAndroid Build Coastguard Worker            }
223*c8dee2aaSAndroid Build Coastguard Worker
224*c8dee2aaSAndroid Build Coastguard Worker            function test(ctx) {
225*c8dee2aaSAndroid Build Coastguard Worker                let path = PathKit.NewPath();
226*c8dee2aaSAndroid Build Coastguard Worker                let m = document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGMatrix();
227*c8dee2aaSAndroid Build Coastguard Worker                m.a = 1; m.b = 0;
228*c8dee2aaSAndroid Build Coastguard Worker                m.c = 0; m.d = 1;
229*c8dee2aaSAndroid Build Coastguard Worker                m.e = 0; m.f = 20.5;
230*c8dee2aaSAndroid Build Coastguard Worker                path.addPath(ctx.path, m);
231*c8dee2aaSAndroid Build Coastguard Worker                path.delete();
232*c8dee2aaSAndroid Build Coastguard Worker            }
233*c8dee2aaSAndroid Build Coastguard Worker
234*c8dee2aaSAndroid Build Coastguard Worker            function teardown(ctx) {
235*c8dee2aaSAndroid Build Coastguard Worker                ctx.path.delete();
236*c8dee2aaSAndroid Build Coastguard Worker            }
237*c8dee2aaSAndroid Build Coastguard Worker
238*c8dee2aaSAndroid Build Coastguard Worker            LoadPathKit.then(() => {
239*c8dee2aaSAndroid Build Coastguard Worker                benchmarkAndReport('path_add_path_svgmatrix', setup, test, teardown).then(() => {
240*c8dee2aaSAndroid Build Coastguard Worker                    done();
241*c8dee2aaSAndroid Build Coastguard Worker                }).catch(reportError(done));
242*c8dee2aaSAndroid Build Coastguard Worker            });
243*c8dee2aaSAndroid Build Coastguard Worker        });
244*c8dee2aaSAndroid Build Coastguard Worker
245*c8dee2aaSAndroid Build Coastguard Worker        it('path_add_path_svgmatrix_reuse', function(done) {
246*c8dee2aaSAndroid Build Coastguard Worker            function setup(ctx) {
247*c8dee2aaSAndroid Build Coastguard Worker                ctx.path = drawTriangle();
248*c8dee2aaSAndroid Build Coastguard Worker                let m = document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGMatrix();
249*c8dee2aaSAndroid Build Coastguard Worker                ctx.matrix = m;
250*c8dee2aaSAndroid Build Coastguard Worker            }
251*c8dee2aaSAndroid Build Coastguard Worker
252*c8dee2aaSAndroid Build Coastguard Worker            function test(ctx) {
253*c8dee2aaSAndroid Build Coastguard Worker                let path = PathKit.NewPath();
254*c8dee2aaSAndroid Build Coastguard Worker                let m = ctx.matrix
255*c8dee2aaSAndroid Build Coastguard Worker                m.a = 1; m.b = 0;
256*c8dee2aaSAndroid Build Coastguard Worker                m.c = 0; m.d = 1;
257*c8dee2aaSAndroid Build Coastguard Worker                m.e = 0; m.f = 20.5;
258*c8dee2aaSAndroid Build Coastguard Worker                path.addPath(ctx.path, m);
259*c8dee2aaSAndroid Build Coastguard Worker                path.delete();
260*c8dee2aaSAndroid Build Coastguard Worker            }
261*c8dee2aaSAndroid Build Coastguard Worker
262*c8dee2aaSAndroid Build Coastguard Worker            function teardown(ctx) {
263*c8dee2aaSAndroid Build Coastguard Worker                ctx.path.delete();
264*c8dee2aaSAndroid Build Coastguard Worker            }
265*c8dee2aaSAndroid Build Coastguard Worker
266*c8dee2aaSAndroid Build Coastguard Worker            LoadPathKit.then(() => {
267*c8dee2aaSAndroid Build Coastguard Worker                benchmarkAndReport('path_add_path_svgmatrix_reuse', setup, test, teardown).then(() => {
268*c8dee2aaSAndroid Build Coastguard Worker                    done();
269*c8dee2aaSAndroid Build Coastguard Worker                }).catch(reportError(done));
270*c8dee2aaSAndroid Build Coastguard Worker            });
271*c8dee2aaSAndroid Build Coastguard Worker        });
272*c8dee2aaSAndroid Build Coastguard Worker
273*c8dee2aaSAndroid Build Coastguard Worker        it('path_add_path_svgmatrix_bare', function(done) {
274*c8dee2aaSAndroid Build Coastguard Worker            function setup(ctx) {
275*c8dee2aaSAndroid Build Coastguard Worker                ctx.path = drawTriangle();
276*c8dee2aaSAndroid Build Coastguard Worker            }
277*c8dee2aaSAndroid Build Coastguard Worker
278*c8dee2aaSAndroid Build Coastguard Worker            function test(ctx) {
279*c8dee2aaSAndroid Build Coastguard Worker                let path = PathKit.NewPath();
280*c8dee2aaSAndroid Build Coastguard Worker                path.addPath(ctx.path, 1, 0, 0, 1, 0, 20.5);
281*c8dee2aaSAndroid Build Coastguard Worker                path.delete();
282*c8dee2aaSAndroid Build Coastguard Worker            }
283*c8dee2aaSAndroid Build Coastguard Worker
284*c8dee2aaSAndroid Build Coastguard Worker            function teardown(ctx) {
285*c8dee2aaSAndroid Build Coastguard Worker                ctx.path.delete();
286*c8dee2aaSAndroid Build Coastguard Worker            }
287*c8dee2aaSAndroid Build Coastguard Worker
288*c8dee2aaSAndroid Build Coastguard Worker            LoadPathKit.then(() => {
289*c8dee2aaSAndroid Build Coastguard Worker                benchmarkAndReport('path_add_path_svgmatrix_bare', setup, test, teardown).then(() => {
290*c8dee2aaSAndroid Build Coastguard Worker                    done();
291*c8dee2aaSAndroid Build Coastguard Worker                }).catch(reportError(done));
292*c8dee2aaSAndroid Build Coastguard Worker            });
293*c8dee2aaSAndroid Build Coastguard Worker        });
294*c8dee2aaSAndroid Build Coastguard Worker    });
295*c8dee2aaSAndroid Build Coastguard Worker
296*c8dee2aaSAndroid Build Coastguard Worker});