// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {getRequiredElement} from 'chrome://resources/js/util.js';
/**
* @fileoverview This JavaScript prints an error message, throws uncaught
* exceptions, and otherwise does erroneous things for testing.
*
* Note that function names and error text are referenced in integration tests
* (particularly tast tests); do not change them without updating the tests.
*/
/**
* Logs an error when called. This is the "during page load" error.
*/
function logsErrorDuringPageLoadOuter() {
logsErrorDuringPageLoadInner();
}
/**
* Logs an error when called. This is a separate function from
* logsErrorDuringPageLoadOuter() so that we get an interesting stack.
*/
function logsErrorDuringPageLoadInner() {
console.error('WebUI JS Error: printing error on page load');
}
/**
* Logs an error when called. This is the "from button click" error.
*/
function logsErrorFromButtonClickHandler() {
logsErrorFromButtonClickInner();
}
/**
* Logs an error when called. This is a separate function from
* logsErrorFromButtonClickHandler() so that we get an interesting stack.
*/
function logsErrorFromButtonClickInner() {
console.error('WebUI JS Error: printing error on button click');
}
/**
* Throws an exception when called.
*/
function throwExceptionHandler() {
throwExceptionInner();
}
/**
* Throws an exception when called. This is a separate function from
* throwExceptionHandler() so that we get an interesting stack.
*/
function throwExceptionInner() {
throw new Error('WebUI JS Error: exception button clicked');
}
/**
* Success callback for the promise. This should never be called.
*/
function promiseSuccessful() {
console.error('WebUI JS Error: Promise success. This should never happen');
}
/**
* Creates a promise which will be rejected and doesn't handle the rejection.
*/
function unhandledPromiseRejection() {
const promise =
Promise.reject('WebUI JS Error: The rejector always rejects!');
promise.then(promiseSuccessful);
}
getRequiredElement('error-button').onclick = logsErrorFromButtonClickHandler;
getRequiredElement('exception-button').onclick = throwExceptionHandler;
getRequiredElement('promise-button').onclick = unhandledPromiseRejection;
logsErrorDuringPageLoadOuter();