提交 9bc37621 编写于 作者: M Matt Bierner

Extra OpenOptions types

上级 3e8beed3
......@@ -13,7 +13,7 @@ import { equalsIgnoreCase } from 'vs/base/common/strings';
import { URI } from 'vs/base/common/uri';
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
import { CommandsRegistry, ICommandService } from 'vs/platform/commands/common/commands';
import { IOpener, IOpenerService, IValidator, IExternalUriResolver } from 'vs/platform/opener/common/opener';
import { IOpener, IOpenerService, IValidator, IExternalUriResolver, OpenOptions } from 'vs/platform/opener/common/opener';
export class OpenerService extends Disposable implements IOpenerService {
......@@ -45,7 +45,7 @@ export class OpenerService extends Disposable implements IOpenerService {
return { dispose: remove };
}
async open(resource: URI, options?: { openToSide?: boolean, openExternal?: boolean }): Promise<boolean> {
async open(resource: URI, options?: OpenOptions): Promise<boolean> {
// no scheme ?!?
if (!resource.scheme) {
return Promise.resolve(false);
......@@ -69,7 +69,7 @@ export class OpenerService extends Disposable implements IOpenerService {
return this._doOpen(resource, options);
}
private _doOpen(resource: URI, options?: { openToSide?: boolean, openExternal?: boolean }): Promise<boolean> {
private _doOpen(resource: URI, options?: OpenOptions): Promise<boolean> {
const { scheme, path, query, fragment } = resource;
......
......@@ -9,9 +9,14 @@ import { IDisposable, Disposable } from 'vs/base/common/lifecycle';
export const IOpenerService = createDecorator<IOpenerService>('openerService');
type OpenToSideOptions = { readonly openToSide?: boolean };
type OpenExternalOptions = { readonly openExternal?: boolean };
export type OpenOptions = OpenToSideOptions & OpenExternalOptions;
export interface IOpener {
open(resource: URI, options?: { openToSide?: boolean }): Promise<boolean>;
open(resource: URI, options?: { openExternal?: boolean }): Promise<boolean>;
open(resource: URI, options?: OpenToSideOptions): Promise<boolean>;
open(resource: URI, options?: OpenExternalOptions): Promise<boolean>;
}
export interface IValidator {
......@@ -48,8 +53,8 @@ export interface IOpenerService {
* @param resource A resource
* @return A promise that resolves when the opening is done.
*/
open(resource: URI, options?: { openToSide?: boolean }): Promise<boolean>;
open(resource: URI, options?: { openExternal?: boolean }): Promise<boolean>;
open(resource: URI, options?: OpenToSideOptions): Promise<boolean>;
open(resource: URI, options?: OpenExternalOptions): Promise<boolean>;
}
export const NullOpenerService: IOpenerService = Object.freeze({
......
......@@ -53,7 +53,7 @@ import { IPreferencesService } from '../services/preferences/common/preferences'
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { IMenubarService, IMenubarData, IMenubarMenu, IMenubarKeybinding, IMenubarMenuItemSubmenu, IMenubarMenuItemAction, MenubarMenuItem } from 'vs/platform/menubar/node/menubar';
import { withNullAsUndefined } from 'vs/base/common/types';
import { IOpenerService } from 'vs/platform/opener/common/opener';
import { IOpenerService, OpenOptions } from 'vs/platform/opener/common/opener';
import { Schemas } from 'vs/base/common/network';
import { IElectronService } from 'vs/platform/electron/node/electron';
import { posix, dirname } from 'vs/base/common/path';
......@@ -416,7 +416,7 @@ export class ElectronWindow extends Disposable {
// Handle internal open() calls
this.openerService.registerOpener({
open: async (resource: URI, options?: { openToSide?: boolean; openExternal?: boolean; }): Promise<boolean> => {
open: async (resource: URI, options?: OpenOptions): Promise<boolean> => {
// If either the caller wants to open externally or the
// scheme is one where we prefer to open externally
......@@ -437,7 +437,7 @@ export class ElectronWindow extends Disposable {
});
}
private shouldOpenExternal(resource: URI, options?: { openToSide?: boolean; openExternal?: boolean; }) {
private shouldOpenExternal(resource: URI, options?: OpenOptions) {
const scheme = resource.scheme.toLowerCase();
const preferOpenExternal = (scheme === Schemas.mailto || scheme === Schemas.http || scheme === Schemas.https);
return (options && options.openExternal) || preferOpenExternal;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册