Please clarify "pending" reporting at build.webkit.org/dashboard
[WebKit-https.git] / Tools / BuildSlaveSupport / build.webkit.org-config / public_html / dashboard / Scripts / Utilities.js
1 /*
2  * Copyright (C) 2013 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 JSON.load = function(url, callback)
27 {
28     console.assert(url);
29
30     if (!(callback instanceof Function))
31         return;
32
33     var request = new XMLHttpRequest;
34     request.onreadystatechange = function() {
35         if (this.readyState !== 4)
36             return;
37
38         try {
39             var data = JSON.parse(request.responseText);
40         } catch (e) {
41             var data = {error: e.message};
42         }
43
44         // Allow a status of 0 for easier testing with local files.
45         if (!this.status || this.status === 200)
46             callback(data);
47     };
48
49     request.open("GET", url);
50     request.send();
51 };
52
53 function loadXML(url, callback) {
54     console.assert(url);
55
56     if (!(callback instanceof Function))
57         return;
58
59     var request = new XMLHttpRequest;
60     request.onreadystatechange = function() {
61         if (this.readyState !== 4)
62             return;
63
64         // Allow a status of 0 for easier testing with local files.
65         if (!this.status || this.status === 200)
66             callback(request.responseXML);
67     };
68
69     request.open("GET", url);
70     request.send();
71 };
72
73 Element.prototype.removeChildren = function()
74 {
75     // This has been tested to be the fastest removal method.
76     if (this.firstChild)
77         this.textContent = "";
78 };
79
80 Array.prototype.contains = function(value)
81 {
82     return this.indexOf(value) >= 0;
83 };
84
85 Array.prototype.findFirst = function(predicate)
86 {
87     for (var i = 0; i < this.length; ++i) {
88         if (predicate(this[i]))
89             return this[i];
90     }
91
92     return null;
93 };
94
95 String.prototype.contains = function(substring)
96 {
97     return this.indexOf(substring) >= 0;
98 };