提交 8fb99cd9 编写于 作者: S Sandeep Somavarapu

product service for web

- get product configuration from server
上级 535c9d56
......@@ -15,6 +15,9 @@
<!-- Workaround to pass remote user data uri-->
<meta id="vscode-remote-user-data-uri" data-settings="{{REMOTE_USER_DATA_URI}}">
<!-- Workaround to pass product configuration-->
<meta id="vscode-remote-product-configuration" data-settings="{{PRODUCT_CONFIGURATION}}">
<!-- Workaround to pass remote connection token-->
<meta id="vscode-remote-connection-token" data-settings="{{CONNECTION_AUTH_TOKEN}}">
</head>
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IProductService, IProductConfiguration } from 'vs/platform/product/common/product';
import { ServiceIdentifier } from 'vs/platform/instantiation/common/instantiation';
export class ProductService implements IProductService {
private readonly productConfiguration: IProductConfiguration | null;
constructor() {
const element = document.getElementById('vscode-remote-product-configuration');
this.productConfiguration = element ? JSON.parse(element.getAttribute('data-settings')!) : null;
}
_serviceBrand: ServiceIdentifier<IProductService>;
get version(): string { return '1.35.0'; }
get commit(): string | undefined { return undefined; }
get nameLong(): string { return ''; }
get urlProtocol(): string { return ''; }
get extensionAllowedProposedApi(): string[] { return this.productConfiguration ? this.productConfiguration.extensionAllowedProposedApi : []; }
get uiExtensions(): string[] | undefined { return this.productConfiguration ? this.productConfiguration.uiExtensions : undefined; }
get enableTelemetry(): boolean { return false; }
get sendASmile(): { reportIssueUrl: string, requestFeatureUrl: string } | undefined { return this.productConfiguration ? this.productConfiguration.sendASmile : undefined; }
get extensionsGallery() { return this.productConfiguration ? this.productConfiguration.extensionsGallery : undefined; }
}
\ No newline at end of file
......@@ -30,4 +30,89 @@ export interface IProductService {
reportIssueUrl: string;
requestFeatureUrl: string;
};
}
export interface IProductConfiguration {
nameShort: string;
nameLong: string;
applicationName: string;
win32AppId: string;
win32x64AppId: string;
win32UserAppId: string;
win32x64UserAppId: string;
win32AppUserModelId: string;
win32MutexName: string;
darwinBundleIdentifier: string;
urlProtocol: string;
dataFolderName: string;
downloadUrl: string;
updateUrl?: string;
quality?: string;
target?: string;
commit?: string;
settingsSearchBuildId?: number;
settingsSearchUrl?: string;
experimentsUrl?: string;
date: string;
extensionsGallery?: {
serviceUrl: string;
itemUrl: string;
controlUrl: string;
recommendationsUrl: string;
};
extensionTips: { [id: string]: string; };
extensionImportantTips: { [id: string]: { name: string; pattern: string; }; };
exeBasedExtensionTips: { [id: string]: { friendlyName: string, windowsPath?: string, recommendations: string[] }; };
extensionKeywords: { [extension: string]: string[]; };
extensionAllowedBadgeProviders: string[];
extensionAllowedProposedApi: string[];
keymapExtensionTips: string[];
crashReporter: {
companyName: string;
productName: string;
};
welcomePage: string;
enableTelemetry: boolean;
aiConfig: {
asimovKey: string;
};
sendASmile: {
reportIssueUrl: string,
requestFeatureUrl: string
};
documentationUrl: string;
releaseNotesUrl: string;
keyboardShortcutsUrlMac: string;
keyboardShortcutsUrlLinux: string;
keyboardShortcutsUrlWin: string;
introductoryVideosUrl: string;
tipsAndTricksUrl: string;
newsletterSignupUrl: string;
twitterUrl: string;
requestFeatureUrl: string;
reportIssueUrl: string;
licenseUrl: string;
privacyStatementUrl: string;
telemetryOptOutUrl: string;
npsSurveyUrl: string;
surveys: ISurveyData[];
checksums: { [path: string]: string; };
checksumFailMoreInfoUrl: string;
hockeyApp: {
'win32-ia32': string;
'win32-x64': string;
'linux-x64': string;
'darwin': string;
};
logUploaderUrl: string;
portable?: string;
uiExtensions?: string[];
}
export interface ISurveyData {
surveyId: string;
surveyUrl: string;
languageId: string;
editCount: number;
userProbability: number;
}
\ No newline at end of file
......@@ -5,91 +5,7 @@
import * as path from 'vs/base/common/path';
import { getPathFromAmdModule } from 'vs/base/common/amd';
export interface IProductConfiguration {
nameShort: string;
nameLong: string;
applicationName: string;
win32AppId: string;
win32x64AppId: string;
win32UserAppId: string;
win32x64UserAppId: string;
win32AppUserModelId: string;
win32MutexName: string;
darwinBundleIdentifier: string;
urlProtocol: string;
dataFolderName: string;
downloadUrl: string;
updateUrl?: string;
quality?: string;
target?: string;
commit?: string;
settingsSearchBuildId?: number;
settingsSearchUrl?: string;
experimentsUrl?: string;
date: string;
extensionsGallery?: {
serviceUrl: string;
itemUrl: string;
controlUrl: string;
recommendationsUrl: string;
};
extensionTips: { [id: string]: string; };
extensionImportantTips: { [id: string]: { name: string; pattern: string; }; };
exeBasedExtensionTips: { [id: string]: { friendlyName: string, windowsPath?: string, recommendations: string[] }; };
extensionKeywords: { [extension: string]: string[]; };
extensionAllowedBadgeProviders: string[];
extensionAllowedProposedApi: string[];
keymapExtensionTips: string[];
crashReporter: {
companyName: string;
productName: string;
};
welcomePage: string;
enableTelemetry: boolean;
aiConfig: {
asimovKey: string;
};
sendASmile: {
reportIssueUrl: string,
requestFeatureUrl: string
};
documentationUrl: string;
releaseNotesUrl: string;
keyboardShortcutsUrlMac: string;
keyboardShortcutsUrlLinux: string;
keyboardShortcutsUrlWin: string;
introductoryVideosUrl: string;
tipsAndTricksUrl: string;
newsletterSignupUrl: string;
twitterUrl: string;
requestFeatureUrl: string;
reportIssueUrl: string;
licenseUrl: string;
privacyStatementUrl: string;
telemetryOptOutUrl: string;
npsSurveyUrl: string;
surveys: ISurveyData[];
checksums: { [path: string]: string; };
checksumFailMoreInfoUrl: string;
hockeyApp: {
'win32-ia32': string;
'win32-x64': string;
'linux-x64': string;
'darwin': string;
};
logUploaderUrl: string;
portable?: string;
uiExtensions?: string[];
}
export interface ISurveyData {
surveyId: string;
surveyUrl: string;
languageId: string;
editCount: number;
userProbability: number;
}
import { IProductConfiguration } from 'vs/platform/product/common/product';
const rootPath = path.dirname(getPathFromAmdModule(require, ''));
const productJsonPath = path.join(rootPath, 'product.json');
......
......@@ -8,7 +8,7 @@ import { domContentLoaded, addDisposableListener, EventType } from 'vs/base/brow
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
import { ILogService } from 'vs/platform/log/common/log';
import { Disposable } from 'vs/base/common/lifecycle';
import { SimpleLogService, SimpleProductService } from 'vs/workbench/browser/web.simpleservices';
import { SimpleLogService } from 'vs/workbench/browser/web.simpleservices';
import { BrowserWorkbenchEnvironmentService } from 'vs/workbench/services/environment/browser/environmentService';
import { Workbench } from 'vs/workbench/browser/workbench';
import { IChannel } from 'vs/base/parts/ipc/common/ipc';
......@@ -35,6 +35,7 @@ import { ISignService } from 'vs/platform/sign/common/sign';
import { SignService } from 'vs/platform/sign/browser/signService';
import { hash } from 'vs/base/common/hash';
import { IWorkbenchConstructionOptions } from 'vs/workbench/workbench.web.api';
import { ProductService } from 'vs/platform/product/browser/productService';
class CodeRendererMain extends Disposable {
......@@ -90,7 +91,7 @@ class CodeRendererMain extends Disposable {
serviceCollection.set(IWorkbenchEnvironmentService, environmentService);
// Product
const productService = new SimpleProductService();
const productService = new ProductService();
serviceCollection.set(IProductService, productService);
// Remote
......
......@@ -23,7 +23,6 @@ import { IURLHandler, IURLService } from 'vs/platform/url/common/url';
import { ITelemetryService, ITelemetryData, ITelemetryInfo } from 'vs/platform/telemetry/common/telemetry';
import { ConsoleLogService } from 'vs/platform/log/common/log';
import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle';
import { IProductService } from 'vs/platform/product/common/product';
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
import { IStorageService, IWorkspaceStorageChangeEvent, StorageScope, IWillSaveStateEvent, WillSaveStateReason } from 'vs/platform/storage/common/storage';
import { IUpdateService, State } from 'vs/platform/update/common/update';
......@@ -517,23 +516,6 @@ export class SimpleMultiExtensionsManagementService implements IExtensionManagem
//#endregion
//#region Product
export class SimpleProductService implements IProductService {
_serviceBrand: any;
version: string = '1.35.0';
commit?: string;
nameLong: string = '';
urlProtocol: string = '';
extensionAllowedProposedApi: string[] = [];
uiExtensions?: string[];
enableTelemetry: boolean = false;
}
//#endregion
//#region Request
export const IRequestService = createDecorator<IRequestService>('requestService');
......
......@@ -11,7 +11,8 @@ import { Registry } from 'vs/platform/registry/common/platform';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
import pkg from 'vs/platform/product/node/package';
import product, { ISurveyData } from 'vs/platform/product/node/product';
import product from 'vs/platform/product/node/product';
import { ISurveyData } from 'vs/platform/product/common/product';
import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle';
import { Severity, INotificationService } from 'vs/platform/notification/common/notification';
import { ITextFileService, StateChange } from 'vs/workbench/services/textfile/common/textfiles';
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { Event } from 'vs/base/common/event';
export const IUserDataService = createDecorator<IUserDataService>('userDataService');
export interface IUserDataService {
_serviceBrand: any;
onDidChange: Event<string>;
read(key: string): Promise<string>;
write(key: string, value: string): Promise<void>;
}
export const IUserDataEditorService = createDecorator<IUserDataEditorService>('userDataEditorService');
export interface IUserDataEditorService {
_serviceBrand: any;
openInEditor(key: string): Promise<void>;
}
\ No newline at end of file
......@@ -157,7 +157,6 @@ registerSingleton(IContextViewService, ContextViewService, true);
registerSingleton(ILifecycleService, BrowserLifecycleService);
// registerSingleton(ILocalizationsService, LocalizationsService);
// registerSingleton(ISharedProcessService, SharedProcessService, true);
// registerSingleton(IProductService, ProductService, true);
// registerSingleton(IWindowsService, WindowsService);
// registerSingleton(IUpdateService, UpdateService);
// registerSingleton(IIssueService, IssueService);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册