blob: c5a420c62eec85487464a25f2fc2b8502c80fdee [file] [log] [blame]
importScripts('/resources/testharness.js');
get_worker_type = () => {
var type = Object.prototype.toString.call(self);
if (type.indexOf('ServiceWorkerGlobalScope') !== -1) {
return 'service';
}
if (type.indexOf('SharedWorkerGlobalScope') !== -1) {
if (self.name) {
return 'shared (' + self.name + ')';
}
return 'shared';
}
if (type.indexOf('DedicatedWorkerGlobalScope') !== -1) {
return 'dedicated';
}
return 'unknown';
}
// Test whether the origin-trial-enabled attributes are *NOT* attached in a
// worker where the trial is not enabled.
// This is deliberately just a minimal set of tests to ensure that trials are
// available in a worker. The full suite of tests are in origintrials.js.
expect_failure_worker = () => {
// Use |worker_type| to make the test descriptions unique when multiple
// workers are created in a single test file.
var worker_type = get_worker_type();
test(() => {
var testObject = self.internals.originTrialsTest();
assert_idl_attribute(testObject, 'throwingAttribute');
assert_throws('NotSupportedError', () => {
testObject.throwingAttribute;
}, 'Accessing attribute should throw error');
}, 'Accessing attribute should throw error in ' + worker_type + ' worker');
test(() => {
var testObject = self.internals.originTrialsTest();
assert_false('normalAttribute' in testObject);
assert_equals(testObject.normalAttribute, undefined);
}, 'Attribute should not exist in ' + worker_type + ' worker');
test(() => {
var testObject = self.internals.originTrialsTest();
assert_false('CONSTANT' in testObject);
assert_equals(testObject.CONSTANT, undefined);
}, 'Constant should not exist in ' + worker_type + ' worker');
done();
}
// Test whether the origin-trial-enabled attributes are *NOT* attached in a
// worker where the implied trial is not enabled.
expect_failure_worker_implied = () => {
// Use |worker_type| to make the test descriptions unique when multiple
// workers are created in a single test file.
var worker_type = get_worker_type();
test(() => {
var testObject = self.internals.originTrialsTest();
assert_false('impliedAttribute' in testObject);
assert_equals(testObject.impliedAttribute, undefined);
}, 'Implied attribute should not exist in ' + worker_type + ' worker');
done();
}
// Test whether the origin-trial-enabled attributes are attached in a worker
// where the trial is enabled.
// This is deliberately just a minimal set of tests to ensure that trials are
// available in a worker. The full suite of tests are in origintrials.js.
expect_success_worker = () => {
// Use |worker_type| to make the test descriptions unique when multiple
// workers are created in a single test file.
var worker_type = get_worker_type();
test(() => {
var testObject = self.internals.originTrialsTest();
assert_idl_attribute(testObject, 'throwingAttribute');
assert_true(testObject.throwingAttribute, 'Attribute should return boolean value');
}, 'Accessing attribute should return value and not throw exception in ' + worker_type + ' worker');
test(() => {
var testObject = self.internals.originTrialsTest();
assert_idl_attribute(testObject, 'normalAttribute');
assert_true(testObject.normalAttribute, 'Attribute should return boolean value');
}, 'Attribute should exist and return value in ' + worker_type + ' worker');
test(() => {
var testObject = self.internals.originTrialsTest();
assert_idl_attribute(testObject, 'CONSTANT');
assert_equals(testObject.CONSTANT, 1, 'Constant should return integer value');
}, 'Constant should exist and return value in ' + worker_type + ' worker');
test(() => {
var testObject = self.internals.originTrialsTest();
assert_idl_attribute(testObject, 'CONSTANT');
testObject.CONSTANT = 10;
assert_equals(testObject.CONSTANT, 1, 'Constant should not be modifiable');
}, 'Constant should exist and not be modifiable in ' + worker_type + ' worker');
done();
}
// Test whether the origin-trial-enabled attributes are attached in a worker
// where the implied trial is enabled, either directly or by the related trial.
expect_success_worker_implied = () => {
// Use |worker_type| to make the test descriptions unique when multiple
// workers are created in a single test file.
var worker_type = get_worker_type();
test(() => {
var testObject = self.internals.originTrialsTest();
assert_idl_attribute(testObject, 'impliedAttribute');
assert_true(testObject.impliedAttribute, 'Attribute should return boolean value');
}, 'Implied attribute should exist and return value in ' + worker_type + ' worker');
done();
}