mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-28 09:35:38 -05:00
* Merge from vscode a348d103d1256a06a2c9b3f9b406298a9fef6898 * Fixes and cleanup * Distro * Fix hygiene yarn * delete no yarn lock changes file * Fix hygiene * Fix layer check * Fix CI * Skip lib checks * Remove tests deleted in vs code * Fix tests * Distro * Fix tests and add removed extension point * Skip failing notebook tests for now * Disable broken tests and cleanup build folder * Update yarn.lock and fix smoke tests * Bump sqlite * fix contributed actions and file spacing * Fix user data path * Update yarn.locks Co-authored-by: ADS Merger <karlb@microsoft.com>
117 lines
4.3 KiB
JavaScript
117 lines
4.3 KiB
JavaScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
/// <reference path="../../../../typings/require.d.ts" />
|
|
|
|
//@ts-check
|
|
(function () {
|
|
'use strict';
|
|
|
|
const bootstrapWindow = bootstrapWindowLib();
|
|
|
|
// Add a perf entry right from the top
|
|
performance.mark('code/didStartRenderer');
|
|
|
|
// Load workbench main JS, CSS and NLS all in parallel. This is an
|
|
// optimization to prevent a waterfall of loading to happen, because
|
|
// we know for a fact that workbench.desktop.sandbox.main will depend on
|
|
// the related CSS and NLS counterparts.
|
|
bootstrapWindow.load([
|
|
'vs/workbench/workbench.desktop.sandbox.main',
|
|
'vs/nls!vs/workbench/workbench.desktop.main',
|
|
'vs/css!vs/workbench/workbench.desktop.main'
|
|
],
|
|
function (_, configuration) {
|
|
|
|
// Mark start of workbench
|
|
performance.mark('code/didLoadWorkbenchMain');
|
|
|
|
// @ts-ignore
|
|
return require('vs/workbench/electron-sandbox/desktop.main').main(configuration);
|
|
},
|
|
{
|
|
configureDeveloperSettings: function (windowConfig) {
|
|
return {
|
|
// disable automated devtools opening on error when running extension tests
|
|
// as this can lead to undeterministic test exectuion (devtools steals focus)
|
|
forceDisableShowDevtoolsOnError: typeof windowConfig.extensionTestsPath === 'string',
|
|
// enable devtools keybindings in extension development window
|
|
forceEnableDeveloperKeybindings: Array.isArray(windowConfig.extensionDevelopmentPath) && windowConfig.extensionDevelopmentPath.length > 0,
|
|
removeDeveloperKeybindingsAfterLoad: true
|
|
};
|
|
},
|
|
canModifyDOM: function (windowConfig) {
|
|
// TODO@sandbox part-splash is non-sandboxed only
|
|
},
|
|
beforeLoaderConfig: function (loaderConfig) {
|
|
loaderConfig.recordStats = true;
|
|
},
|
|
beforeRequire: function () {
|
|
performance.mark('code/willLoadWorkbenchMain');
|
|
|
|
// It looks like browsers only lazily enable
|
|
// the <canvas> element when needed. Since we
|
|
// leverage canvas elements in our code in many
|
|
// locations, we try to help the browser to
|
|
// initialize canvas when it is idle, right
|
|
// before we wait for the scripts to be loaded.
|
|
// @ts-ignore
|
|
window.requestIdleCallback(() => {
|
|
const canvas = document.createElement('canvas');
|
|
const context = canvas.getContext('2d');
|
|
context.clearRect(0, 0, canvas.width, canvas.height);
|
|
canvas.remove();
|
|
}, { timeout: 50 });
|
|
}
|
|
}
|
|
);
|
|
|
|
// add default trustedTypes-policy for logging and to workaround
|
|
// lib/platform limitations
|
|
window.trustedTypes?.createPolicy('default', {
|
|
createHTML(value) {
|
|
// see https://github.com/electron/electron/issues/27211
|
|
// Electron webviews use a static innerHTML default value and
|
|
// that isn't trusted. We use a default policy to check for the
|
|
// exact value of that innerHTML-string and only allow that.
|
|
if (value === '<!DOCTYPE html><style type="text/css">:host { display: flex; }</style>') {
|
|
return value;
|
|
}
|
|
throw new Error('UNTRUSTED html usage, default trusted types policy should NEVER be reached');
|
|
// console.trace('UNTRUSTED html usage, default trusted types policy should NEVER be reached');
|
|
// return value;
|
|
}
|
|
});
|
|
|
|
//#region Helpers
|
|
|
|
/**
|
|
* @typedef {import('../../../platform/windows/common/windows').INativeWindowConfiguration} INativeWindowConfiguration
|
|
*
|
|
* @returns {{
|
|
* load: (
|
|
* modules: string[],
|
|
* resultCallback: (result, configuration: INativeWindowConfiguration) => unknown,
|
|
* options?: {
|
|
* configureDeveloperSettings?: (config: INativeWindowConfiguration & object) => {
|
|
* forceEnableDeveloperKeybindings?: boolean,
|
|
* disallowReloadKeybinding?: boolean,
|
|
* removeDeveloperKeybindingsAfterLoad?: boolean
|
|
* },
|
|
* canModifyDOM?: (config: INativeWindowConfiguration & object) => void,
|
|
* beforeLoaderConfig?: (loaderConfig: object) => void,
|
|
* beforeRequire?: () => void
|
|
* }
|
|
* ) => Promise<unknown>
|
|
* }}
|
|
*/
|
|
function bootstrapWindowLib() {
|
|
// @ts-ignore (defined in bootstrap-window.js)
|
|
return window.MonacoBootstrapWindow;
|
|
}
|
|
|
|
//#endregion
|
|
}());
|