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