blob: a133c5cfe71e8a808b754215f6207f74b545ff10 [file] [log] [blame]
// 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 load_util = {
report: function(msg) {
domAutomationController.setAutomationId(0);
// The automation controller seems to choke on Objects, so turn them into
// strings.
domAutomationController.send(JSON.stringify(msg));
},
log: function(message) {
load_util.report({type: "Log", message: message});
},
shutdown: function(message, passed) {
load_util.report({type: "Shutdown", message: message, passed: passed});
},
embed: function(manifest_url) {
var embed = document.createElement("embed");
embed.src = manifest_url;
embed.type = "application/x-nacl";
return embed;
},
// Use the DOM to determine the absolute URL.
absoluteURL: function(url) {
var a = document.createElement("a");
a.href = url;
return a.href;
},
crossOriginURL: function(manifest_url) {
manifest_url = load_util.absoluteURL(manifest_url);
// The test server is only listening on a specific random port
// at 127.0.0.1. So, to inspect a cross-origin request from within
// the server code, we load from "localhost" which is a different origin,
// yet still served by the server. Otherwise, if we choose a host
// other than localhost we would need to modify the DNS/host resolver
// to point that host at 127.0.0.1.
var cross_url = manifest_url.replace("127.0.0.1", "localhost");
if (cross_url == manifest_url) {
load_util.shutdown("Could not create a cross-origin URL.", false);
throw "abort";
}
return cross_url;
},
crossOriginEmbed: function(manifest_url) {
return load_util.embed(load_util.crossOriginURL(manifest_url));
},
expectLoadFailure: function(embed, message) {
embed.addEventListener("load", function(event) {
load_util.log("Load succeeded when it should have failed.");
load_util.shutdown("1 test failed.", false);
}, true);
embed.addEventListener("error", function(event) {
if (embed.lastError != "NaCl module load failed: " + message) {
load_util.log("Unexpected load error: " + embed.lastError);
load_util.shutdown("1 test failed.", false);
} else {
load_util.shutdown("1 test passed.", true);
}
}, true);
}
};