// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {Page} from './policy_base.js';
import type {PolicyPrecedenceRowElement} from './policy_precedence_row.js';
import type {PolicyRowElement} from './policy_row.js';
import type {PolicyTableElement} from './policy_table.js';
// Have the main initialization function be called when the page finishes
// loading.
const page: Page = Page.getInstance();
document.addEventListener('DOMContentLoaded', () => {
page.initialize();
});
// Functions for tests that directly inject JS to access certain UI elements.
function getPolicyFieldsets() {
const statusBoxes = document.querySelectorAll('status-box');
return Array.from(statusBoxes)
.map(box => box.shadowRoot!.querySelector('.status-box-fields'));
}
function getAllPolicyTables() {
return document.querySelectorAll('#policy-ui policy-table');
}
function getAllPolicyRows(policyTable: PolicyTableElement) {
return policyTable.shadowRoot!.querySelectorAll('policy-row');
}
function getAllPolicyRowDivs(policyRow: PolicyRowElement) {
const row = policyRow.shadowRoot!.querySelector('.policy.row');
return row!.querySelectorAll('div');
}
function getPrecedenceRowValue() {
const tables = document.querySelectorAll('policy-table');
let precedenceRow = null;
tables.forEach(table => {
const row: PolicyPrecedenceRowElement|null =
table.shadowRoot!.querySelector('policy-precedence-row');
if (row) {
precedenceRow = row.shadowRoot!.querySelector('.value');
}
});
return precedenceRow;
}
function getRefreshIntervalEl() {
return document.querySelector('status-box')!.shadowRoot!.querySelector(
'.refresh-interval');
}
function getReportButtonVisibility() {
const button: any = document.querySelector('button#upload-report');
if (!button) {
return 'none';
}
return button!.style.display.toString();
}
Object.assign(window, {
getPolicyFieldsets,
getAllPolicyTables,
getAllPolicyRows,
getAllPolicyRowDivs,
getPrecedenceRowValue,
getRefreshIntervalEl,
getReportButtonVisibility,
});