UNPKG

chrome-devtools-frontend

Version:
166 lines (135 loc) • 5.16 kB
// Copyright 2018 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import type * as Common from '../../core/common/common.js'; import * as i18n from '../../core/i18n/i18n.js'; import type * as Platform from '../../core/platform/platform.js'; import type * as TextUtils from '../text_utils/text_utils.js'; const UIStrings = { /** * @description Assertion error message when failing to load a file. */ unableToReadFilesWithThis: '`PlatformFileSystem` cannot read files.', } as const; const str_ = i18n.i18n.registerUIStrings('models/persistence/PlatformFileSystem.ts', UIStrings); const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_); export enum PlatformFileSystemType { /** * Snippets are implemented as a PlatformFileSystem but they are * actually stored in the browser's profile directory and do not * create files on the actual filesystem. * * See Sources > Snippets in the UI. */ SNIPPETS = 'snippets', /** * Overrides is a filesystem that represents a user-selected folder on * disk. This folder is used to replace page resources using request * interception. * * See Sources > Overrides in the UI. */ OVERRIDES = 'overrides', /** * Represents a filesystem for a workspace folder that the user added * to DevTools. It can be manually connected or it can be * automatically discovered based on the hints found in devtools.json * served by the inspected page (see * https://goo.gle/devtools-json-design). DevTools tries to map the * page content to the content in such folder but does not use request * interception for this. */ WORKSPACE_PROJECT = 'workspace-project', } export class PlatformFileSystem { readonly #path: Platform.DevToolsPath.UrlString; #type: PlatformFileSystemType; /** * True if the filesystem was automatically discovered (see * https://goo.gle/devtools-json-design). */ readonly automatic: boolean; constructor(path: Platform.DevToolsPath.UrlString, type: PlatformFileSystemType, automatic: boolean) { this.#path = path; this.#type = type; this.automatic = automatic; } getMetadata(_path: Platform.DevToolsPath.EncodedPathString): Promise<{modificationTime: Date, size: number}|null> { return Promise.resolve(null); } initialFilePaths(): Platform.DevToolsPath.EncodedPathString[] { return []; } initialGitFolders(): Platform.DevToolsPath.EncodedPathString[] { return []; } path(): Platform.DevToolsPath.UrlString { return this.#path; } embedderPath(): Platform.DevToolsPath.RawPathString { throw new Error('Not implemented'); } type(): PlatformFileSystemType { return this.#type; } async createFile(_path: Platform.DevToolsPath.EncodedPathString, _name: Platform.DevToolsPath.RawPathString|null): Promise<Platform.DevToolsPath.EncodedPathString|null> { return await Promise.resolve(null); } deleteFile(_path: Platform.DevToolsPath.EncodedPathString): Promise<boolean> { return Promise.resolve(false); } deleteDirectoryRecursively(_path: Platform.DevToolsPath.EncodedPathString): Promise<boolean> { return Promise.resolve(false); } requestFileBlob(_path: Platform.DevToolsPath.EncodedPathString): Promise<Blob|null> { return Promise.resolve(null as Blob | null); } async requestFileContent(_path: Platform.DevToolsPath.EncodedPathString): Promise<TextUtils.ContentData.ContentDataOrError> { return {error: i18nString(UIStrings.unableToReadFilesWithThis)}; } setFileContent(_path: Platform.DevToolsPath.EncodedPathString, _content: string, _isBase64: boolean): void { throw new Error('Not implemented'); } renameFile( _path: Platform.DevToolsPath.EncodedPathString, _newName: Platform.DevToolsPath.RawPathString, callback: (arg0: boolean, arg1?: string|undefined) => void): void { callback(false); } addExcludedFolder(_path: Platform.DevToolsPath.EncodedPathString): void { } removeExcludedFolder(_path: Platform.DevToolsPath.EncodedPathString): void { } fileSystemRemoved(): void { } isFileExcluded(_folderPath: Platform.DevToolsPath.EncodedPathString): boolean { return false; } excludedFolders(): Set<Platform.DevToolsPath.EncodedPathString> { return new Set(); } searchInPath(_query: string, _progress: Common.Progress.Progress): Promise<string[]> { return Promise.resolve([]); } indexContent(progress: Common.Progress.Progress): void { queueMicrotask(() => { progress.done(); }); } mimeFromPath(_path: Platform.DevToolsPath.UrlString): string { throw new Error('Not implemented'); } canExcludeFolder(_path: Platform.DevToolsPath.EncodedPathString): boolean { return false; } contentType(_path: string): Common.ResourceType.ResourceType { throw new Error('Not implemented'); } tooltipForURL(_url: Platform.DevToolsPath.UrlString): string { throw new Error('Not implemented'); } supportsAutomapping(): boolean { throw new Error('Not implemented'); } }