1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 var QueryString = function() {
6 // Allows access to query parameters on the URL; e.g., given a URL like:
7 // http://<server>/my.html?test=123&bob=123
8 // Parameters can then be accessed via QueryString.test or QueryString.bob.
10 // RegEx to split out values by &.
11 var r = /([^&=]+)=?([^&]*)/g;
12 // Lambda function for decoding extracted match values. Replaces '+' with
13 // space so decodeURIComponent functions properly.
14 function d(s) { return decodeURIComponent(s.replace(/\+/g, ' ')); }
16 while (match = r.exec(window.location.search.substring(1)))
17 params[d(match[1])] = d(match[2]);
21 function failTest(msg) {
22 var failMessage = msg;
23 if (msg instanceof Event)
24 failMessage = msg.target + '.' + msg.type;
25 console.log("FAILED TEST: " + msg);
26 setResultInTitle('FAILED');
29 var titleChanged = false;
30 function setResultInTitle(title) {
31 // If document title is 'ENDED', then update it with new title to possibly
32 // mark a test as failure. Otherwise, keep the first title change in place.
33 if (!titleChanged || document.title.toUpperCase() == 'ENDED')
34 document.title = title.toUpperCase();
35 console.log('Set document title to: ' + title + ', updated title: ' +
40 function installTitleEventHandler(element, event) {
41 element.addEventListener(event, function(e) {
42 setResultInTitle(event.toString());
46 function convertToArray(input) {
47 if (Array.isArray(input))