| /** |
| * @license |
| * Copyright (C) 2020 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| import 'polymer-resin/standalone/polymer-resin'; |
| |
| export type SafeTypeBridge = ( |
| value: unknown, |
| type: string, |
| fallback: unknown |
| ) => unknown; |
| |
| export type ReportHandler = ( |
| isDisallowedValue: boolean, |
| printfFormatString: string, |
| ...printfArgs: unknown[] |
| ) => void; |
| |
| declare global { |
| interface Window { |
| security: { |
| polymer_resin: { |
| SafeType: { |
| CONSTANT: string; |
| HTML: string; |
| JAVASCRIPT: string; |
| RESOURCE_URL: string; |
| /** Unprivileged but possibly wrapped string. */ |
| STRING: string; |
| STYLE: string; |
| URL: string; |
| }; |
| CONSOLE_LOGGING_REPORT_HANDLER: ReportHandler; |
| install(options: { |
| UNSAFE_passThruDisallowedValues?: boolean; |
| allowedIdentifierPrefixes?: string[]; |
| reportHandler?: ReportHandler; |
| safeTypesBridge?: SafeTypeBridge; |
| }): void; |
| }; |
| }; |
| } |
| } |
| |
| const security = window.security; |
| |
| export const _testOnly_defaultResinReportHandler = |
| security.polymer_resin.CONSOLE_LOGGING_REPORT_HANDLER; |
| |
| export function installPolymerResin( |
| safeTypesBridge: SafeTypeBridge, |
| reportHandler = security.polymer_resin.CONSOLE_LOGGING_REPORT_HANDLER |
| ) { |
| window.security.polymer_resin.install({ |
| allowedIdentifierPrefixes: [''], |
| reportHandler, |
| safeTypesBridge, |
| }); |
| } |