mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 04:27:37 +00:00
45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
//
|
|
// HTTP Accept-Language header test
|
|
//
|
|
|
|
const Cc = Components.classes;
|
|
const Ci = Components.interfaces;
|
|
|
|
var testpath = "/bug672448";
|
|
|
|
function run_test() {
|
|
test_accepted_languages();
|
|
}
|
|
|
|
function test_accepted_languages() {
|
|
let channel = setupChannel(testpath);
|
|
|
|
let AcceptLanguage = channel.getRequestHeader("Accept-Language");
|
|
|
|
let acceptedLanguages = AcceptLanguage.split(",");
|
|
|
|
for( let i = 0; i < acceptedLanguages.length; i++ ) {
|
|
let acceptedLanguage, qualityValue;
|
|
|
|
try {
|
|
[_, acceptedLanguage, qualityValue] = acceptedLanguages[i].trim().match(/^([a-z0-9_-]*?)(?:;q=([0-9.]+))?$/i);
|
|
} catch(e) {
|
|
do_print("Invalid language tag or quality value: " + e);
|
|
}
|
|
|
|
if( i == 0 ) {
|
|
do_check_eq(qualityValue, undefined); // First language shouldn't have a quality value.
|
|
} else {
|
|
do_check_eq(qualityValue.length, 5); // All other languages should have quality value of the format '0.123'.
|
|
}
|
|
}
|
|
}
|
|
|
|
function setupChannel(path) {
|
|
let ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
|
|
let chan = ios.newChannel("http://localhost:4444" + path, "", null);
|
|
chan.QueryInterface(Ci.nsIHttpChannel);
|
|
chan.requestMethod = "GET";
|
|
return chan;
|
|
}
|