diff --git a/front_end/core/host/InspectorFrontendHostAPI.ts b/front_end/core/host/InspectorFrontendHostAPI.ts index 0abe976da16..a3467ea11d1 100644 --- a/front_end/core/host/InspectorFrontendHostAPI.ts +++ b/front_end/core/host/InspectorFrontendHostAPI.ts @@ -325,6 +325,7 @@ export interface ExtensionDescriptor { name: string; exposeExperimentalAPIs: boolean; hostsPolicy?: ExtensionHostsPolicy; + allowFileAccess?: boolean; } export interface ExtensionHostsPolicy { runtimeAllowedHosts: string[]; diff --git a/front_end/models/extensions/ExtensionServer.ts b/front_end/models/extensions/ExtensionServer.ts index 53a5babddf2..44d6e8cea05 100644 --- a/front_end/models/extensions/ExtensionServer.ts +++ b/front_end/models/extensions/ExtensionServer.ts @@ -107,6 +107,20 @@ export class HostsPolicy { } } +function currentTargetIsFile(): boolean { + const inspectedURL = SDK.TargetManager.TargetManager.instance().primaryPageTarget()?.inspectedURL(); + if (!inspectedURL) { + return false; + } + let parsedURL; + try { + parsedURL = new URL(inspectedURL); + } catch (exception) { + return false; + } + return parsedURL.protocol === 'file:'; +} + export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper { private readonly clientObjects: Map; private readonly handlers: @@ -121,6 +135,7 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper; private status: ExtensionStatus; private readonly sidebarPanesInternal: ExtensionSidebarPane[]; @@ -1018,7 +1033,8 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper { diff --git a/test/unittests/front_end/models/extensions/helpers.ts b/test/unittests/front_end/models/extensions/helpers.ts index dc878f1e8fe..a1ea8ec8b46 100644 --- a/test/unittests/front_end/models/extensions/helpers.ts +++ b/test/unittests/front_end/models/extensions/helpers.ts @@ -20,6 +20,7 @@ export function describeWithDevtoolsExtension( startPage: `${window.location.origin}/blank.html`, name: 'TestExtension', exposeExperimentalAPIs: true, + allowFileAccess: false, ...extension, }; const context: ExtensionContext = {