/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { IDisposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; export const IProtocolMainService = createDecorator('protocolMainService'); export interface IIPCObjectUrl extends IDisposable { /** * A `URI` that a renderer can use to retrieve the * object via `ipcRenderer.invoke(resource.toString())` */ resource: URI; /** * Allows to update the value of the object after it * has been created. * * @param obj the object to make accessible to the * renderer. */ update(obj: T): void; } export interface IProtocolMainService { readonly _serviceBrand: undefined; /** * Allows to make an object accessible to a renderer * via `ipcRenderer.invoke(resource.toString())`. * * @param obj the (optional) object to make accessible to the * renderer. Can be updated later via the `IObjectUrl#update` * method too. */ createIPCObjectUrl(obj?: T): IIPCObjectUrl; /** * Adds a `URI` as root to the list of allowed * resources for file access. * * @param root the URI to allow for file access */ addValidFileRoot(root: URI): IDisposable; }