216 lines
6.5 KiB
JavaScript
216 lines
6.5 KiB
JavaScript
let testingInterface;
|
|
|
|
/* eslint-disable mozilla/no-comparison-or-assignment-inside-ok */
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
function test_deprecatedInterface() {
|
|
info("Testing DeprecatedTestingInterface report");
|
|
return new Promise(resolve => {
|
|
let obs = new ReportingObserver((reports, o) => {
|
|
is(obs, o, "Same observer!");
|
|
ok(reports.length == 1, "We have 1 report");
|
|
|
|
let report = reports[0];
|
|
is(report.type, "deprecation", "Deprecation report received");
|
|
is(report.url, location.href, "URL is location");
|
|
ok(!!report.body, "The report has a body");
|
|
ok(
|
|
report.body instanceof DeprecationReportBody,
|
|
"Correct type for the body"
|
|
);
|
|
is(
|
|
report.body.id,
|
|
"DeprecatedTestingInterface",
|
|
"report.body.id matches DeprecatedTestingMethod"
|
|
);
|
|
ok(!report.body.anticipatedRemoval, "We don't have a anticipatedRemoval");
|
|
ok(
|
|
report.body.message.includes("TestingDeprecatedInterface"),
|
|
"We have a message"
|
|
);
|
|
is(
|
|
report.body.sourceFile,
|
|
location.href
|
|
.split("?")[0]
|
|
.replace("test_deprecated.html", "common_deprecated.js")
|
|
.replace("worker_deprecated.js", "common_deprecated.js"),
|
|
"We have a sourceFile"
|
|
);
|
|
is(report.body.lineNumber, 50, "We have a lineNumber");
|
|
is(report.body.columnNumber, 24, "We have a columnNumber");
|
|
|
|
obs.disconnect();
|
|
resolve();
|
|
});
|
|
ok(!!obs, "ReportingObserver is a thing");
|
|
|
|
obs.observe();
|
|
ok(true, "ReportingObserver.observe() is callable");
|
|
|
|
testingInterface = new TestingDeprecatedInterface();
|
|
ok(true, "Created a deprecated interface");
|
|
});
|
|
}
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
function test_deprecatedMethod() {
|
|
info("Testing DeprecatedTestingMethod report");
|
|
return new Promise(resolve => {
|
|
let obs = new ReportingObserver((reports, o) => {
|
|
is(obs, o, "Same observer!");
|
|
ok(reports.length == 1, "We have 1 report");
|
|
|
|
let report = reports[0];
|
|
is(report.type, "deprecation", "Deprecation report received");
|
|
is(report.url, location.href, "URL is location");
|
|
ok(!!report.body, "The report has a body");
|
|
ok(
|
|
report.body instanceof DeprecationReportBody,
|
|
"Correct type for the body"
|
|
);
|
|
is(
|
|
report.body.id,
|
|
"DeprecatedTestingMethod",
|
|
"report.body.id matches DeprecatedTestingMethod"
|
|
);
|
|
ok(!report.body.anticipatedRemoval, "We don't have a anticipatedRemoval");
|
|
ok(
|
|
report.body.message.includes(
|
|
"TestingDeprecatedInterface.deprecatedMethod"
|
|
),
|
|
"We have a message"
|
|
);
|
|
is(
|
|
report.body.sourceFile,
|
|
location.href
|
|
.split("?")[0]
|
|
.replace("test_deprecated.html", "common_deprecated.js")
|
|
.replace("worker_deprecated.js", "common_deprecated.js"),
|
|
"We have a sourceFile"
|
|
);
|
|
is(report.body.lineNumber, 102, "We have a lineNumber");
|
|
is(report.body.columnNumber, 22, "We have a columnNumber");
|
|
|
|
obs.disconnect();
|
|
resolve();
|
|
});
|
|
ok(!!obs, "ReportingObserver is a thing");
|
|
|
|
obs.observe();
|
|
ok(true, "ReportingObserver.observe() is callable");
|
|
|
|
testingInterface.deprecatedMethod();
|
|
ok(true, "Run a deprecated method.");
|
|
});
|
|
}
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
function test_deprecatedMethodWithDataURI() {
|
|
info("Testing deprecatedMethodWithDataURI report");
|
|
|
|
const uri = `data:text/html,<script>
|
|
window.onload = () => {
|
|
let obs = new ReportingObserver((reports, o) => {
|
|
obs.disconnect();
|
|
let report = reports[0];
|
|
const message = (report.url == "data:...") ? "passed" : "failed";
|
|
window.opener.postMessage(message, "http://mochi.test:8888");
|
|
close();
|
|
});
|
|
|
|
obs.observe();
|
|
let testingInterface = new TestingDeprecatedInterface();
|
|
testingInterface.deprecatedMethod();
|
|
};
|
|
</script>`;
|
|
|
|
return new Promise(resolve => {
|
|
window.open(uri);
|
|
window.addEventListener("message", e => {
|
|
is(e.data, "passed", "The data URI is truncated");
|
|
resolve();
|
|
});
|
|
});
|
|
}
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
function test_deprecatedAttribute() {
|
|
info("Testing DeprecatedTestingAttribute report");
|
|
return new Promise(resolve => {
|
|
let obs = new ReportingObserver((reports, o) => {
|
|
is(obs, o, "Same observer!");
|
|
ok(reports.length == 1, "We have 1 report");
|
|
|
|
let report = reports[0];
|
|
is(report.type, "deprecation", "Deprecation report received");
|
|
is(report.url, location.href, "URL is location");
|
|
ok(!!report.body, "The report has a body");
|
|
ok(
|
|
report.body instanceof DeprecationReportBody,
|
|
"Correct type for the body"
|
|
);
|
|
is(
|
|
report.body.id,
|
|
"DeprecatedTestingAttribute",
|
|
"report.body.id matches DeprecatedTestingAttribute"
|
|
);
|
|
ok(!report.body.anticipatedRemoval, "We don't have a anticipatedRemoval");
|
|
ok(
|
|
report.body.message.includes(
|
|
"TestingDeprecatedInterface.deprecatedAttribute"
|
|
),
|
|
"We have a message"
|
|
);
|
|
is(
|
|
report.body.sourceFile,
|
|
location.href
|
|
.split("?")[0]
|
|
.replace("test_deprecated.html", "common_deprecated.js")
|
|
.replace("worker_deprecated.js", "common_deprecated.js"),
|
|
"We have a sourceFile"
|
|
);
|
|
is(report.body.lineNumber, 183, "We have a lineNumber");
|
|
is(report.body.columnNumber, 8, "We have a columnNumber");
|
|
|
|
obs.disconnect();
|
|
resolve();
|
|
});
|
|
ok(!!obs, "ReportingObserver is a thing");
|
|
|
|
obs.observe();
|
|
ok(true, "ReportingObserver.observe() is callable");
|
|
|
|
ok(testingInterface.deprecatedAttribute, "Attributed called");
|
|
});
|
|
}
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
function test_takeRecords() {
|
|
info("Testing ReportingObserver.takeRecords()");
|
|
let p = new Promise(resolve => {
|
|
let obs = new ReportingObserver((reports, o) => {
|
|
is(obs, o, "Same observer!");
|
|
resolve(obs);
|
|
});
|
|
ok(!!obs, "ReportingObserver is a thing");
|
|
|
|
obs.observe();
|
|
ok(true, "ReportingObserver.observe() is callable");
|
|
|
|
testingInterface.deprecatedMethod();
|
|
ok(true, "Run a deprecated method.");
|
|
});
|
|
|
|
return p.then(obs => {
|
|
let reports = obs.takeRecords();
|
|
is(reports.length, 0, "No reports after an callback");
|
|
|
|
testingInterface.deprecatedAttribute + 1;
|
|
|
|
reports = obs.takeRecords();
|
|
ok(reports.length >= 1, "We have at least 1 report");
|
|
|
|
reports = obs.takeRecords();
|
|
is(reports.length, 0, "No more reports");
|
|
});
|
|
}
|