@theia/core 1.53.0-next.5 → 1.53.0-next.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/i18n/nls.cs.json +582 -552
- package/i18n/nls.de.json +582 -552
- package/i18n/nls.es.json +582 -552
- package/i18n/nls.fr.json +582 -552
- package/i18n/nls.hu.json +582 -552
- package/i18n/nls.it.json +582 -552
- package/i18n/nls.ja.json +582 -552
- package/i18n/nls.json +582 -552
- package/i18n/nls.ko.json +582 -0
- package/i18n/nls.pl.json +582 -552
- package/i18n/nls.pt-br.json +582 -552
- package/i18n/nls.ru.json +582 -552
- package/i18n/nls.tr.json +582 -0
- package/i18n/nls.zh-cn.json +582 -552
- package/i18n/nls.zh-tw.json +582 -0
- package/lib/browser/authentication-service.d.ts +15 -14
- package/lib/browser/authentication-service.d.ts.map +1 -1
- package/lib/browser/authentication-service.js +5 -5
- package/lib/browser/authentication-service.js.map +1 -1
- package/lib/browser/catalog.json +6889 -0
- package/lib/browser/common-frontend-contribution.js +3 -3
- package/lib/browser/common-styling-participants.js +166 -166
- package/lib/browser/context-key-service.d.ts +3 -2
- package/lib/browser/context-key-service.d.ts.map +1 -1
- package/lib/browser/context-key-service.js.map +1 -1
- package/lib/browser/core-preferences.d.ts.map +1 -1
- package/lib/browser/core-preferences.js +9 -0
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/json-schema-store.d.ts +0 -3
- package/lib/browser/json-schema-store.d.ts.map +1 -1
- package/lib/browser/json-schema-store.js +2 -12
- package/lib/browser/json-schema-store.js.map +1 -1
- package/lib/browser/open-with-service.d.ts +13 -1
- package/lib/browser/open-with-service.d.ts.map +1 -1
- package/lib/browser/open-with-service.js +48 -9
- package/lib/browser/open-with-service.js.map +1 -1
- package/lib/browser/opener-service.d.ts +8 -0
- package/lib/browser/opener-service.d.ts.map +1 -1
- package/lib/browser/opener-service.js +18 -3
- package/lib/browser/opener-service.js.map +1 -1
- package/lib/browser/progress-location-service.spec.js +7 -7
- package/lib/browser/saveable-service.d.ts.map +1 -1
- package/lib/browser/saveable-service.js +6 -2
- package/lib/browser/saveable-service.js.map +1 -1
- package/lib/browser/saveable.d.ts +17 -1
- package/lib/browser/saveable.d.ts.map +1 -1
- package/lib/browser/saveable.js +62 -1
- package/lib/browser/saveable.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +5 -4
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +2 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts +6 -16
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +12 -29
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts +43 -78
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js +8 -39
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +10 -10
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +43 -32
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/storage-service.js +3 -3
- package/lib/browser/tree/tree.spec.js +75 -75
- package/lib/browser/view-container.d.ts +2 -2
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widget-open-handler.d.ts +4 -1
- package/lib/browser/widget-open-handler.d.ts.map +1 -1
- package/lib/browser/widget-open-handler.js.map +1 -1
- package/lib/browser/widgets/extractable-widget.js +1 -1
- package/lib/browser/widgets/extractable-widget.js.map +1 -1
- package/lib/browser/widgets/index.d.ts +1 -0
- package/lib/browser/widgets/index.d.ts.map +1 -1
- package/lib/browser/widgets/index.js +1 -0
- package/lib/browser/widgets/index.js.map +1 -1
- package/lib/browser/widgets/split-widget.d.ts +45 -0
- package/lib/browser/widgets/split-widget.d.ts.map +1 -0
- package/lib/browser/widgets/split-widget.js +126 -0
- package/lib/browser/widgets/split-widget.js.map +1 -0
- package/lib/common/event.d.ts +2 -0
- package/lib/common/event.d.ts.map +1 -1
- package/lib/common/event.js +4 -0
- package/lib/common/event.js.map +1 -1
- package/lib/common/glob.d.ts +4 -4
- package/lib/common/json-schema.d.ts +2 -0
- package/lib/common/json-schema.d.ts.map +1 -1
- package/lib/common/menu/menu-types.d.ts.map +1 -1
- package/lib/common/menu/menu-types.js.map +1 -1
- package/lib/electron-browser/electron-uri-handler.d.ts +6 -0
- package/lib/electron-browser/electron-uri-handler.d.ts.map +1 -0
- package/lib/electron-browser/electron-uri-handler.js +49 -0
- package/lib/electron-browser/electron-uri-handler.js.map +1 -0
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +6 -6
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/preload.d.ts.map +1 -1
- package/lib/electron-browser/preload.js +12 -0
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-browser/window/electron-window-module.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +3 -0
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-browser/window/external-app-open-handler.js +1 -1
- package/lib/electron-browser/window/external-app-open-handler.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +2 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-api.js +2 -1
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/electron-main/electron-api-main.d.ts +2 -0
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +27 -3
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +5 -3
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +57 -14
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/theia-electron-window.d.ts +1 -0
- package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
- package/lib/electron-main/theia-electron-window.js +3 -0
- package/lib/electron-main/theia-electron-window.js.map +1 -1
- package/lib/node/i18n/theia-localization-contribution.d.ts.map +1 -1
- package/lib/node/i18n/theia-localization-contribution.js +12 -8
- package/lib/node/i18n/theia-localization-contribution.js.map +1 -1
- package/lib/node/process-utils.spec.js +8 -8
- package/package.json +10 -8
- package/shared/ajv/index.d.ts +2 -2
- package/shared/markdown-it.d.ts +2 -2
- package/shared/markdown-it.js +1 -1
- package/shared/reflect-metadata/index.d.ts +1 -1
- package/shared/reflect-metadata/index.js +1 -1
- package/shared/vscode-languageserver-types/index.d.ts +1 -1
- package/src/browser/about-dialog.tsx +137 -137
- package/src/browser/authentication-service.ts +467 -468
- package/src/browser/breadcrumbs/breadcrumb-popup-container.ts +101 -101
- package/src/browser/breadcrumbs/breadcrumb-renderer.tsx +41 -41
- package/src/browser/breadcrumbs/breadcrumbs-constants.ts +79 -79
- package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +185 -185
- package/src/browser/breadcrumbs/breadcrumbs-service.ts +108 -108
- package/src/browser/breadcrumbs/index.ts +21 -21
- package/src/browser/browser-clipboard-service.ts +122 -122
- package/src/browser/browser.ts +239 -239
- package/src/browser/clipboard-service.ts +23 -23
- package/src/browser/color-application-contribution.ts +110 -110
- package/src/browser/color-registry.ts +60 -60
- package/src/browser/command-open-handler.ts +54 -54
- package/src/browser/common-frontend-contribution.ts +2680 -2680
- package/src/browser/common-styling-participants.ts +361 -361
- package/src/browser/connection-status-service.spec.ts +200 -200
- package/src/browser/connection-status-service.ts +216 -216
- package/src/browser/context-key-service.ts +142 -142
- package/src/browser/context-menu-renderer.ts +124 -124
- package/src/browser/core-preferences.ts +343 -334
- package/src/browser/credentials-service.ts +106 -106
- package/src/browser/decoration-style.ts +65 -65
- package/src/browser/decorations-service.ts +209 -209
- package/src/browser/dialogs/react-dialog.tsx +56 -56
- package/src/browser/dialogs.ts +534 -534
- package/src/browser/diff-uris.ts +117 -117
- package/src/browser/encoding-registry.ts +97 -97
- package/src/browser/endpoint.spec.ts +148 -148
- package/src/browser/endpoint.ts +136 -136
- package/src/browser/external-uri-service.ts +79 -79
- package/src/browser/file-icons-js.d.ts +20 -20
- package/src/browser/frontend-application-bindings.ts +62 -62
- package/src/browser/frontend-application-config-provider.spec.ts +45 -45
- package/src/browser/frontend-application-config-provider.ts +50 -50
- package/src/browser/frontend-application-contribution.ts +110 -110
- package/src/browser/frontend-application-module.ts +474 -475
- package/src/browser/frontend-application-state.ts +74 -74
- package/src/browser/frontend-application.ts +326 -326
- package/src/browser/hover-service.ts +218 -218
- package/src/browser/http-open-handler.ts +49 -49
- package/src/browser/i18n/i18n-frontend-module.ts +27 -27
- package/src/browser/i18n/language-quick-pick-service.ts +130 -130
- package/src/browser/icon-registry.ts +87 -87
- package/src/browser/icon-theme-contribution.ts +64 -64
- package/src/browser/icon-theme-service.ts +217 -217
- package/src/browser/icons/CollapseAll.svg +7 -7
- package/src/browser/icons/CollapseAll_inverse.svg +7 -7
- package/src/browser/icons/Refresh.svg +7 -7
- package/src/browser/icons/Refresh_inverse.svg +7 -7
- package/src/browser/icons/add-inverse.svg +4 -4
- package/src/browser/icons/add.svg +4 -4
- package/src/browser/icons/arrow-down-bright.svg +6 -6
- package/src/browser/icons/arrow-down-dark.svg +6 -6
- package/src/browser/icons/arrow-up-bright.svg +6 -6
- package/src/browser/icons/arrow-up-dark.svg +6 -6
- package/src/browser/icons/case-sensitive-dark.svg +16 -16
- package/src/browser/icons/case-sensitive.svg +16 -16
- package/src/browser/icons/chevron-right-dark.svg +5 -5
- package/src/browser/icons/chevron-right-light.svg +6 -6
- package/src/browser/icons/circle-bright.svg +7 -7
- package/src/browser/icons/circle-dark.svg +7 -7
- package/src/browser/icons/clear-search-results-dark.svg +7 -7
- package/src/browser/icons/clear-search-results.svg +7 -7
- package/src/browser/icons/close-all-bright.svg +7 -7
- package/src/browser/icons/close-all-dark.svg +7 -7
- package/src/browser/icons/close-bright.svg +7 -7
- package/src/browser/icons/close-dark.svg +7 -7
- package/src/browser/icons/collapse.svg +4 -4
- package/src/browser/icons/edit-json-dark.svg +6 -6
- package/src/browser/icons/edit-json.svg +6 -6
- package/src/browser/icons/expand.svg +4 -4
- package/src/browser/icons/loading-dark.svg +6 -6
- package/src/browser/icons/loading-light.svg +6 -6
- package/src/browser/icons/open-change-bright.svg +3 -3
- package/src/browser/icons/open-change-dark.svg +4 -4
- package/src/browser/icons/open-file-bright.svg +4 -4
- package/src/browser/icons/open-file-dark.svg +4 -4
- package/src/browser/icons/preview-bright.svg +3 -3
- package/src/browser/icons/preview-dark.svg +3 -3
- package/src/browser/icons/regex-dark.svg +10 -10
- package/src/browser/icons/regex.svg +10 -10
- package/src/browser/icons/remove-all-inverse.svg +4 -4
- package/src/browser/icons/remove-all.svg +4 -4
- package/src/browser/icons/replace-all-inverse.svg +13 -13
- package/src/browser/icons/replace-all.svg +13 -13
- package/src/browser/icons/replace-inverse.svg +15 -15
- package/src/browser/icons/replace.svg +15 -15
- package/src/browser/icons/whole-word-dark.svg +19 -19
- package/src/browser/icons/whole-word.svg +19 -19
- package/src/browser/index.ts +50 -50
- package/src/browser/json-schema-store.ts +118 -127
- package/src/browser/keybinding.spec.ts +554 -554
- package/src/browser/keybinding.ts +759 -759
- package/src/browser/keyboard/browser-keyboard-frontend-contribution.ts +108 -108
- package/src/browser/keyboard/browser-keyboard-layout-provider.spec.ts +171 -171
- package/src/browser/keyboard/browser-keyboard-layout-provider.ts +469 -469
- package/src/browser/keyboard/browser-keyboard-module.ts +30 -30
- package/src/browser/keyboard/index.ts +20 -20
- package/src/browser/keyboard/keyboard-layout-service.spec.ts +121 -121
- package/src/browser/keyboard/keyboard-layout-service.ts +455 -455
- package/src/browser/keyboard/keys.spec.ts +258 -258
- package/src/browser/keyboard/keys.ts +20 -20
- package/src/browser/keys.ts +21 -21
- package/src/browser/label-parser.spec.ts +165 -165
- package/src/browser/label-parser.ts +108 -108
- package/src/browser/label-provider.spec.ts +62 -62
- package/src/browser/label-provider.ts +385 -385
- package/src/browser/language-icon-provider.ts +55 -55
- package/src/browser/language-service.ts +77 -77
- package/src/browser/logger-frontend-module.ts +65 -65
- package/src/browser/markdown-rendering/markdown-renderer.ts +98 -98
- package/src/browser/menu/browser-context-menu-renderer.ts +48 -48
- package/src/browser/menu/browser-menu-module.ts +28 -28
- package/src/browser/menu/browser-menu-plugin.ts +491 -491
- package/src/browser/menu/context-menu-context.ts +41 -41
- package/src/browser/messaging/connection-source.ts +26 -26
- package/src/browser/messaging/frontend-id-provider.ts +37 -37
- package/src/browser/messaging/index.ts +18 -18
- package/src/browser/messaging/messaging-frontend-module.ts +41 -41
- package/src/browser/messaging/service-connection-provider.ts +140 -140
- package/src/browser/messaging/ws-connection-provider.ts +49 -49
- package/src/browser/messaging/ws-connection-source.ts +230 -230
- package/src/browser/mime-service.ts +30 -30
- package/src/browser/navigatable-types.ts +81 -81
- package/src/browser/navigatable.ts +39 -39
- package/src/browser/open-with-service.ts +140 -93
- package/src/browser/opener-service.spec.ts +49 -49
- package/src/browser/opener-service.ts +169 -146
- package/src/browser/performance/frontend-stopwatch.ts +65 -65
- package/src/browser/performance/index.ts +18 -18
- package/src/browser/performance/measurement-frontend-bindings.ts +31 -31
- package/src/browser/preferences/index.ts +23 -23
- package/src/browser/preferences/injectable-preference-proxy.ts +283 -283
- package/src/browser/preferences/preference-configurations.ts +82 -82
- package/src/browser/preferences/preference-contribution.ts +436 -436
- package/src/browser/preferences/preference-language-override-service.ts +111 -111
- package/src/browser/preferences/preference-provider.spec.ts +36 -36
- package/src/browser/preferences/preference-provider.ts +277 -277
- package/src/browser/preferences/preference-proxy.spec.ts +367 -367
- package/src/browser/preferences/preference-proxy.ts +367 -367
- package/src/browser/preferences/preference-schema-provider.spec.ts +130 -130
- package/src/browser/preferences/preference-scope.ts +18 -18
- package/src/browser/preferences/preference-service.spec.ts +613 -613
- package/src/browser/preferences/preference-service.ts +594 -594
- package/src/browser/preferences/preference-validation-service.spec.ts +334 -334
- package/src/browser/preferences/preference-validation-service.ts +358 -358
- package/src/browser/preferences/test/index.ts +19 -19
- package/src/browser/preferences/test/mock-preference-provider.ts +50 -50
- package/src/browser/preferences/test/mock-preference-proxy.ts +48 -48
- package/src/browser/preferences/test/mock-preference-service.ts +63 -63
- package/src/browser/preload/i18n-preload-contribution.ts +50 -50
- package/src/browser/preload/os-preload-contribution.ts +37 -37
- package/src/browser/preload/preload-module.ts +45 -45
- package/src/browser/preload/preloader.ts +37 -37
- package/src/browser/preload/theme-preload-contribution.ts +31 -31
- package/src/browser/progress-bar-factory.ts +29 -29
- package/src/browser/progress-bar.ts +76 -76
- package/src/browser/progress-client.ts +53 -53
- package/src/browser/progress-location-service.spec.ts +50 -50
- package/src/browser/progress-location-service.ts +96 -96
- package/src/browser/progress-status-bar-item.ts +83 -83
- package/src/browser/quick-input/index.ts +23 -23
- package/src/browser/quick-input/quick-access.ts +75 -75
- package/src/browser/quick-input/quick-command-frontend-contribution.ts +89 -89
- package/src/browser/quick-input/quick-command-service.ts +246 -246
- package/src/browser/quick-input/quick-help-service.ts +87 -87
- package/src/browser/quick-input/quick-input-frontend-contribution.ts +33 -33
- package/src/browser/quick-input/quick-input-service.spec.ts +176 -176
- package/src/browser/quick-input/quick-input-service.ts +17 -17
- package/src/browser/quick-input/quick-pick-service-impl.ts +69 -69
- package/src/browser/quick-input/quick-view-service.ts +83 -83
- package/src/browser/request/browser-request-module.ts +23 -23
- package/src/browser/request/browser-request-service.ts +172 -172
- package/src/browser/resource-context-key.ts +77 -77
- package/src/browser/saveable-service.ts +332 -328
- package/src/browser/saveable.ts +395 -327
- package/src/browser/secondary-window-handler.ts +211 -211
- package/src/browser/shell/additional-views-menu-widget.tsx +71 -71
- package/src/browser/shell/application-shell-mouse-tracker.ts +103 -103
- package/src/browser/shell/application-shell.ts +2271 -2271
- package/src/browser/shell/current-widget-command-adapter.ts +57 -57
- package/src/browser/shell/index.ts +23 -23
- package/src/browser/shell/shell-layout-restorer.ts +399 -399
- package/src/browser/shell/side-panel-handler.ts +794 -794
- package/src/browser/shell/side-panel-toolbar.ts +111 -111
- package/src/browser/shell/sidebar-bottom-menu-widget.tsx +39 -39
- package/src/browser/shell/sidebar-menu-widget.tsx +183 -183
- package/src/browser/shell/sidebar-top-menu-widget.tsx +26 -26
- package/src/browser/shell/split-panels.ts +191 -191
- package/src/browser/shell/tab-bar-decorator.ts +106 -106
- package/src/browser/shell/tab-bar-toolbar/index.ts +19 -19
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.ts +31 -31
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +242 -256
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts +149 -207
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.ts +62 -62
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +443 -428
- package/src/browser/shell/tab-bars.spec.ts +63 -63
- package/src/browser/shell/tab-bars.ts +1468 -1468
- package/src/browser/shell/theia-dock-panel.ts +265 -265
- package/src/browser/shell/view-column-service.ts +125 -125
- package/src/browser/shell/view-contribution.ts +178 -178
- package/src/browser/source-tree/index.ts +19 -19
- package/src/browser/source-tree/source-tree-widget.tsx +107 -107
- package/src/browser/source-tree/source-tree.ts +146 -146
- package/src/browser/source-tree/tree-source.ts +73 -73
- package/src/browser/status-bar/index.ts +29 -29
- package/src/browser/status-bar/status-bar-types.ts +97 -97
- package/src/browser/status-bar/status-bar-view-model.ts +209 -209
- package/src/browser/status-bar/status-bar.tsx +189 -189
- package/src/browser/storage-service.spec.ts +76 -76
- package/src/browser/storage-service.ts +129 -129
- package/src/browser/style/about.css +36 -36
- package/src/browser/style/alert-messages.css +62 -62
- package/src/browser/style/ansi.css +88 -88
- package/src/browser/style/breadcrumbs.css +130 -130
- package/src/browser/style/dialog.css +126 -126
- package/src/browser/style/dockpanel.css +76 -76
- package/src/browser/style/hover-service.css +101 -101
- package/src/browser/style/icons.css +61 -61
- package/src/browser/style/index.css +353 -352
- package/src/browser/style/materialcolors.css +278 -278
- package/src/browser/style/menus.css +230 -230
- package/src/browser/style/notification.css +39 -39
- package/src/browser/style/os.css +87 -87
- package/src/browser/style/progress-bar.css +43 -43
- package/src/browser/style/quick-title-bar.css +45 -45
- package/src/browser/style/scrollbars.css +172 -172
- package/src/browser/style/search-box.css +123 -123
- package/src/browser/style/select-component.css +107 -107
- package/src/browser/style/sidepanel.css +367 -367
- package/src/browser/style/split-widget.css +38 -0
- package/src/browser/style/status-bar.css +127 -127
- package/src/browser/style/tabs.css +647 -658
- package/src/browser/style/tooltip.css +28 -28
- package/src/browser/style/tree-decorators.css +81 -81
- package/src/browser/style/tree.css +232 -232
- package/src/browser/style/view-container.css +187 -194
- package/src/browser/style/widget.css +19 -19
- package/src/browser/styling-service.ts +96 -96
- package/src/browser/supported-encodings.ts +262 -262
- package/src/browser/test/jsdom.ts +69 -69
- package/src/browser/test/mock-connection-status-service.ts +33 -33
- package/src/browser/test/mock-env-variables-server.ts +47 -47
- package/src/browser/test/mock-opener-service.ts +34 -34
- package/src/browser/test/mock-storage-service.ts +49 -49
- package/src/browser/theming.ts +206 -206
- package/src/browser/tooltip-service.tsx +96 -96
- package/src/browser/tree/fuzzy-search.spec.ts +99 -99
- package/src/browser/tree/fuzzy-search.ts +136 -136
- package/src/browser/tree/index.ts +29 -29
- package/src/browser/tree/search-box-debounce.ts +96 -96
- package/src/browser/tree/search-box.ts +355 -355
- package/src/browser/tree/test/mock-selectable-tree-model.ts +109 -109
- package/src/browser/tree/test/mock-tree-model.ts +136 -136
- package/src/browser/tree/test/tree-test-container.ts +50 -50
- package/src/browser/tree/tree-compression/compressed-tree-expansion-service.ts +46 -46
- package/src/browser/tree/tree-compression/compressed-tree-model.ts +88 -88
- package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +203 -203
- package/src/browser/tree/tree-compression/index.ts +20 -20
- package/src/browser/tree/tree-compression/tree-compression-service.ts +125 -125
- package/src/browser/tree/tree-compression/tree-compression.css +28 -28
- package/src/browser/tree/tree-consistency.spec.ts +105 -105
- package/src/browser/tree/tree-container.spec.ts +45 -45
- package/src/browser/tree/tree-container.ts +155 -155
- package/src/browser/tree/tree-decorator.spec.ts +162 -162
- package/src/browser/tree/tree-decorator.ts +238 -238
- package/src/browser/tree/tree-expansion.spec.ts +173 -173
- package/src/browser/tree/tree-expansion.ts +165 -165
- package/src/browser/tree/tree-focus-service.ts +55 -55
- package/src/browser/tree/tree-iterator.spec.ts +170 -170
- package/src/browser/tree/tree-iterator.ts +256 -256
- package/src/browser/tree/tree-label-provider.ts +40 -40
- package/src/browser/tree/tree-model.ts +562 -562
- package/src/browser/tree/tree-navigation.ts +58 -58
- package/src/browser/tree/tree-preference.ts +50 -50
- package/src/browser/tree/tree-search.ts +128 -128
- package/src/browser/tree/tree-selectable.spec.ts +152 -152
- package/src/browser/tree/tree-selection-impl.ts +176 -176
- package/src/browser/tree/tree-selection-state.spec.ts +462 -462
- package/src/browser/tree/tree-selection-state.ts +245 -245
- package/src/browser/tree/tree-selection.ts +159 -159
- package/src/browser/tree/tree-view-welcome-widget.tsx +263 -263
- package/src/browser/tree/tree-widget-selection.ts +45 -45
- package/src/browser/tree/tree-widget.tsx +1591 -1591
- package/src/browser/tree/tree.spec.ts +241 -241
- package/src/browser/tree/tree.ts +425 -425
- package/src/browser/undo-redo-handler.ts +85 -85
- package/src/browser/user-working-directory-provider.ts +77 -77
- package/src/browser/view-container.ts +1640 -1640
- package/src/browser/widget-decoration.ts +358 -358
- package/src/browser/widget-manager.spec.ts +102 -102
- package/src/browser/widget-manager.ts +318 -318
- package/src/browser/widget-open-handler.ts +168 -165
- package/src/browser/widgets/alert-message.tsx +56 -56
- package/src/browser/widgets/enhanced-preview-widget.ts +27 -27
- package/src/browser/widgets/extractable-widget.ts +33 -33
- package/src/browser/widgets/index.ts +21 -20
- package/src/browser/widgets/previewable-widget.ts +31 -31
- package/src/browser/widgets/react-renderer.tsx +53 -53
- package/src/browser/widgets/react-widget.tsx +51 -51
- package/src/browser/widgets/select-component.tsx +367 -367
- package/src/browser/widgets/split-widget.ts +163 -0
- package/src/browser/widgets/widget.ts +406 -406
- package/src/browser/window/browser-window-module.ts +32 -32
- package/src/browser/window/default-secondary-window-service.ts +189 -189
- package/src/browser/window/default-window-service.spec.ts +78 -78
- package/src/browser/window/default-window-service.ts +171 -171
- package/src/browser/window/secondary-window-service.ts +39 -39
- package/src/browser/window/test/mock-window-service.ts +29 -29
- package/src/browser/window/window-service.ts +78 -78
- package/src/browser/window/window-title-service.ts +107 -107
- package/src/browser/window/window-title-updater.ts +95 -95
- package/src/browser/window-contribution.ts +64 -64
- package/src/browser-only/frontend-only-application-module.ts +116 -116
- package/src/browser-only/i18n/i18n-frontend-only-module.ts +37 -37
- package/src/browser-only/logger-frontend-only-module.ts +63 -63
- package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +39 -39
- package/src/browser-only/messaging/messaging-frontend-only-module.ts +42 -42
- package/src/browser-only/preload/frontend-only-preload-module.ts +49 -49
- package/src/common/accessibility.ts +33 -33
- package/src/common/application-error.spec.ts +27 -27
- package/src/common/application-error.ts +76 -76
- package/src/common/application-protocol.ts +42 -42
- package/src/common/array-utils.ts +129 -129
- package/src/common/buffer.ts +228 -228
- package/src/common/cancellation.ts +163 -163
- package/src/common/char-code.ts +438 -438
- package/src/common/collections.ts +125 -125
- package/src/common/color.ts +103 -103
- package/src/common/command.spec.ts +208 -208
- package/src/common/command.ts +489 -489
- package/src/common/contribution-filter/contribution-filter-registry.ts +79 -79
- package/src/common/contribution-filter/contribution-filter.ts +64 -64
- package/src/common/contribution-filter/filter.ts +23 -23
- package/src/common/contribution-filter/index.ts +19 -19
- package/src/common/contribution-provider.ts +96 -96
- package/src/common/disposable.spec.ts +94 -94
- package/src/common/disposable.ts +188 -188
- package/src/common/encoding-service.ts +380 -380
- package/src/common/encodings.ts +24 -24
- package/src/common/env-variables/env-variables-protocol.ts +38 -38
- package/src/common/env-variables/index.ts +17 -17
- package/src/common/event.spec.ts +32 -32
- package/src/common/event.ts +493 -487
- package/src/common/file-uri.ts +61 -61
- package/src/common/frontend-application-state.ts +38 -38
- package/src/common/glob.ts +741 -741
- package/src/common/hash.ts +85 -85
- package/src/common/i18n/localization-server.ts +25 -25
- package/src/common/i18n/localization.ts +80 -80
- package/src/common/i18n/nls.metadata.json +34112 -34112
- package/src/common/index.ts +51 -51
- package/src/common/json-schema.ts +108 -106
- package/src/common/key-store.ts +26 -26
- package/src/common/keybinding.ts +152 -152
- package/src/common/keyboard/keyboard-layout-provider.ts +51 -51
- package/src/common/keys.ts +694 -694
- package/src/common/label-protocol.ts +35 -35
- package/src/common/logger-protocol.ts +119 -119
- package/src/common/logger-watcher.ts +48 -48
- package/src/common/logger.spec.ts +46 -46
- package/src/common/logger.ts +389 -389
- package/src/common/lsp-types.ts +34 -34
- package/src/common/markdown-rendering/icon-utilities.ts +30 -30
- package/src/common/markdown-rendering/index.ts +18 -18
- package/src/common/markdown-rendering/markdown-string.ts +152 -152
- package/src/common/menu/action-menu-node.ts +65 -65
- package/src/common/menu/composite-menu-node.spec.ts +67 -67
- package/src/common/menu/composite-menu-node.ts +114 -114
- package/src/common/menu/index.ts +21 -21
- package/src/common/menu/menu-adapter.ts +103 -103
- package/src/common/menu/menu-model-registry.ts +374 -374
- package/src/common/menu/menu-types.ts +220 -219
- package/src/common/menu/menu.spec.ts +101 -101
- package/src/common/message-rpc/channel.spec.ts +88 -88
- package/src/common/message-rpc/channel.ts +300 -300
- package/src/common/message-rpc/index.ts +22 -22
- package/src/common/message-rpc/message-buffer.ts +105 -105
- package/src/common/message-rpc/msg-pack-extension-manager.ts +70 -70
- package/src/common/message-rpc/rpc-message-encoder.spec.ts +65 -65
- package/src/common/message-rpc/rpc-message-encoder.ts +190 -190
- package/src/common/message-rpc/rpc-protocol.ts +255 -255
- package/src/common/message-rpc/uint8-array-message-buffer.spec.ts +41 -41
- package/src/common/message-rpc/uint8-array-message-buffer.ts +213 -213
- package/src/common/message-service-protocol.ts +148 -148
- package/src/common/message-service.ts +226 -226
- package/src/common/messaging/connection-error-handler.ts +73 -73
- package/src/common/messaging/connection-management.ts +43 -43
- package/src/common/messaging/handler.ts +26 -26
- package/src/common/messaging/index.ts +19 -19
- package/src/common/messaging/proxy-factory.spec.ts +108 -108
- package/src/common/messaging/proxy-factory.ts +336 -336
- package/src/common/messaging/socket-write-buffer.ts +52 -52
- package/src/common/messaging/web-socket-channel.ts +76 -76
- package/src/common/nls.ts +151 -151
- package/src/common/numbers.ts +21 -21
- package/src/common/objects.spec.ts +112 -112
- package/src/common/objects.ts +123 -123
- package/src/common/os.ts +82 -82
- package/src/common/path.spec.ts +415 -415
- package/src/common/path.ts +334 -334
- package/src/common/paths.ts +250 -250
- package/src/common/performance/index.ts +19 -19
- package/src/common/performance/measurement-protocol.ts +104 -104
- package/src/common/performance/measurement.ts +130 -130
- package/src/common/performance/stopwatch.ts +183 -183
- package/src/common/preferences/preference-schema.ts +101 -101
- package/src/common/preferences/preference-scope.spec.ts +48 -48
- package/src/common/preferences/preference-scope.ts +68 -68
- package/src/common/prioritizeable.ts +58 -58
- package/src/common/progress-service-protocol.ts +35 -35
- package/src/common/progress-service.ts +82 -82
- package/src/common/promise-util.spec.ts +102 -102
- package/src/common/promise-util.ts +143 -143
- package/src/common/quick-pick-service.ts +353 -353
- package/src/common/reference.spec.ts +145 -145
- package/src/common/reference.ts +230 -230
- package/src/common/resource.ts +430 -430
- package/src/common/selection-command-handler.ts +101 -101
- package/src/common/selection-service.spec.ts +43 -43
- package/src/common/selection-service.ts +49 -49
- package/src/common/selection.ts +50 -50
- package/src/common/severity.ts +111 -111
- package/src/common/stream.ts +718 -718
- package/src/common/strings.ts +231 -231
- package/src/common/telemetry.ts +45 -45
- package/src/common/ternary-search-tree.ts +417 -417
- package/src/common/test/expect.ts +34 -34
- package/src/common/test/mock-logger.ts +118 -118
- package/src/common/test/mock-menu.ts +35 -35
- package/src/common/test/mock-resource-provider.ts +33 -33
- package/src/common/theme.ts +68 -68
- package/src/common/types.spec.ts +86 -86
- package/src/common/types.ts +140 -140
- package/src/common/uri-command-handler.spec.ts +90 -90
- package/src/common/uri-command-handler.ts +148 -148
- package/src/common/uri.spec.ts +278 -278
- package/src/common/uri.ts +279 -279
- package/src/common/uuid.ts +45 -45
- package/src/common/version.ts +17 -17
- package/src/common/view-column.ts +33 -33
- package/src/common/window.ts +34 -34
- package/src/electron-browser/electron-clipboard-service.ts +32 -32
- package/src/electron-browser/electron-uri-handler.ts +42 -0
- package/src/electron-browser/keyboard/electron-keyboard-layout-change-notifier.ts +39 -39
- package/src/electron-browser/keyboard/electron-keyboard-module.ts +28 -28
- package/src/electron-browser/menu/electron-context-menu-renderer.ts +122 -122
- package/src/electron-browser/menu/electron-main-menu-factory.ts +339 -338
- package/src/electron-browser/menu/electron-menu-contribution.ts +506 -506
- package/src/electron-browser/menu/electron-menu-module.ts +40 -40
- package/src/electron-browser/menu/electron-menu-style.css +110 -110
- package/src/electron-browser/messaging/electron-frontend-id-provider.ts +25 -25
- package/src/electron-browser/messaging/electron-ipc-connection-source.ts +65 -65
- package/src/electron-browser/messaging/electron-local-ws-connection-source.ts +45 -45
- package/src/electron-browser/messaging/electron-messaging-frontend-module.ts +78 -78
- package/src/electron-browser/messaging/electron-ws-connection-source.ts +38 -38
- package/src/electron-browser/preload.ts +264 -249
- package/src/electron-browser/request/electron-browser-request-module.ts +26 -26
- package/src/electron-browser/token/electron-token-frontend-module.ts +22 -22
- package/src/electron-browser/window/electron-frontend-application-state.ts +26 -26
- package/src/electron-browser/window/electron-secondary-window-service.ts +35 -35
- package/src/electron-browser/window/electron-window-module.ts +48 -45
- package/src/electron-browser/window/electron-window-preferences.ts +76 -76
- package/src/electron-browser/window/electron-window-service.ts +109 -109
- package/src/electron-browser/window/external-app-open-handler.ts +42 -42
- package/src/electron-common/electron-api.ts +157 -154
- package/src/electron-common/electron-main-window-service.ts +24 -24
- package/src/electron-common/electron-token.ts +27 -27
- package/src/electron-main/electron-api-main.ts +373 -347
- package/src/electron-main/electron-main-application-module.ts +65 -65
- package/src/electron-main/electron-main-application.ts +860 -818
- package/src/electron-main/electron-main-constants.ts +23 -23
- package/src/electron-main/electron-main-window-service-impl.ts +44 -44
- package/src/electron-main/electron-security-token-service.ts +36 -36
- package/src/electron-main/event-utils.ts +36 -36
- package/src/electron-main/messaging/electron-connection-handler.ts +21 -21
- package/src/electron-main/messaging/electron-messaging-contribution.ts +143 -143
- package/src/electron-main/messaging/electron-messaging-service.ts +35 -35
- package/src/electron-main/theia-electron-window.ts +219 -214
- package/src/electron-node/cli/electron-backend-cli-module.ts +24 -24
- package/src/electron-node/cli/electron-cli-contribution.ts +35 -35
- package/src/electron-node/hosting/electron-backend-hosting-module.ts +24 -24
- package/src/electron-node/hosting/electron-ws-origin-validator.ts +37 -37
- package/src/electron-node/keyboard/electron-backend-keyboard-module.ts +30 -30
- package/src/electron-node/keyboard/electron-keyboard-layout-provider.ts +35 -35
- package/src/electron-node/request/electron-backend-request-module.ts +23 -23
- package/src/electron-node/request/electron-backend-request-service.ts +78 -78
- package/src/electron-node/token/electron-token-backend-contribution.ts +48 -48
- package/src/electron-node/token/electron-token-backend-module.ts +28 -28
- package/src/electron-node/token/electron-token-validator.ts +93 -93
- package/src/node/application-server.ts +59 -59
- package/src/node/backend-application-config-provider.spec.ts +29 -29
- package/src/node/backend-application-config-provider.ts +48 -48
- package/src/node/backend-application-module.ts +139 -139
- package/src/node/backend-application.ts +374 -374
- package/src/node/cli.spec.ts +94 -94
- package/src/node/cli.ts +63 -63
- package/src/node/console-logger-server.spec.ts +59 -59
- package/src/node/console-logger-server.ts +76 -76
- package/src/node/debug.ts +30 -30
- package/src/node/dynamic-require.ts +56 -56
- package/src/node/env-variables/env-variables-server.ts +123 -123
- package/src/node/env-variables/index.ts +17 -17
- package/src/node/environment-utils.spec.ts +92 -92
- package/src/node/environment-utils.ts +66 -66
- package/src/node/file-uri.spec.ts +76 -76
- package/src/node/filesystem-locking.ts +77 -77
- package/src/node/hosting/backend-application-hosts.ts +60 -60
- package/src/node/hosting/backend-hosting-module.ts +26 -26
- package/src/node/hosting/ws-origin-validator.ts +36 -36
- package/src/node/i18n/i18n-backend-module.ts +42 -42
- package/src/node/i18n/localization-contribution.ts +112 -112
- package/src/node/i18n/localization-provider.ts +125 -125
- package/src/node/i18n/localization-server.ts +52 -52
- package/src/node/i18n/theia-localization-contribution.ts +40 -36
- package/src/node/index.ts +22 -22
- package/src/node/key-store-server.ts +162 -162
- package/src/node/logger-backend-module.ts +88 -88
- package/src/node/logger-cli-contribution.spec.ts +245 -245
- package/src/node/logger-cli-contribution.ts +168 -168
- package/src/node/main.ts +33 -33
- package/src/node/messaging/binary-message-pipe.ts +168 -168
- package/src/node/messaging/connection-container-module.ts +96 -96
- package/src/node/messaging/default-messaging-service.ts +129 -129
- package/src/node/messaging/frontend-connection-service.ts +24 -24
- package/src/node/messaging/index.ts +19 -19
- package/src/node/messaging/ipc-bootstrap.ts +27 -27
- package/src/node/messaging/ipc-channel.ts +77 -77
- package/src/node/messaging/ipc-connection-provider.ts +107 -107
- package/src/node/messaging/ipc-protocol.ts +76 -76
- package/src/node/messaging/messaging-backend-module.ts +52 -52
- package/src/node/messaging/messaging-listeners.ts +52 -52
- package/src/node/messaging/messaging-service.ts +46 -46
- package/src/node/messaging/test/test-web-socket-channel.ts +61 -61
- package/src/node/messaging/websocket-endpoint.ts +79 -79
- package/src/node/messaging/websocket-frontend-connection-service.ts +186 -186
- package/src/node/os-backend-provider.ts +25 -25
- package/src/node/performance/index.ts +18 -18
- package/src/node/performance/measurement-backend-bindings.ts +35 -35
- package/src/node/performance/node-stopwatch.ts +40 -40
- package/src/node/process-utils.spec.ts +48 -48
- package/src/node/process-utils.ts +102 -102
- package/src/node/remote/backend-remote-service.ts +25 -25
- package/src/node/remote/remote-cli-contribution.ts +34 -34
- package/src/node/remote/remote-copy-contribution.ts +45 -45
- package/src/node/request/backend-request-facade.ts +39 -39
- package/src/node/request/backend-request-module.ts +25 -25
- package/src/node/request/proxy-cli-contribution.ts +65 -65
- package/src/node/ws-request-validators.ts +56 -56
- package/src/typings/native-keymap.d.ts +108 -108
- package/i18n/nls.pt-pt.json +0 -552
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2017 TypeFox and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
|
|
17
|
-
import { ContainerModule } from 'inversify';
|
|
18
|
-
import { WindowService } from '../../browser/window/window-service';
|
|
19
|
-
import { DefaultWindowService } from '../../browser/window/default-window-service';
|
|
20
|
-
import { FrontendApplicationContribution } from '../frontend-application-contribution';
|
|
21
|
-
import { ClipboardService } from '../clipboard-service';
|
|
22
|
-
import { BrowserClipboardService } from '../browser-clipboard-service';
|
|
23
|
-
import { SecondaryWindowService } from './secondary-window-service';
|
|
24
|
-
import { DefaultSecondaryWindowService } from './default-secondary-window-service';
|
|
25
|
-
|
|
26
|
-
export default new ContainerModule(bind => {
|
|
27
|
-
bind(DefaultWindowService).toSelf().inSingletonScope();
|
|
28
|
-
bind(WindowService).toService(DefaultWindowService);
|
|
29
|
-
bind(FrontendApplicationContribution).toService(DefaultWindowService);
|
|
30
|
-
bind(ClipboardService).to(BrowserClipboardService).inSingletonScope();
|
|
31
|
-
bind(SecondaryWindowService).to(DefaultSecondaryWindowService).inSingletonScope();
|
|
32
|
-
});
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2017 TypeFox and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { ContainerModule } from 'inversify';
|
|
18
|
+
import { WindowService } from '../../browser/window/window-service';
|
|
19
|
+
import { DefaultWindowService } from '../../browser/window/default-window-service';
|
|
20
|
+
import { FrontendApplicationContribution } from '../frontend-application-contribution';
|
|
21
|
+
import { ClipboardService } from '../clipboard-service';
|
|
22
|
+
import { BrowserClipboardService } from '../browser-clipboard-service';
|
|
23
|
+
import { SecondaryWindowService } from './secondary-window-service';
|
|
24
|
+
import { DefaultSecondaryWindowService } from './default-secondary-window-service';
|
|
25
|
+
|
|
26
|
+
export default new ContainerModule(bind => {
|
|
27
|
+
bind(DefaultWindowService).toSelf().inSingletonScope();
|
|
28
|
+
bind(WindowService).toService(DefaultWindowService);
|
|
29
|
+
bind(FrontendApplicationContribution).toService(DefaultWindowService);
|
|
30
|
+
bind(ClipboardService).to(BrowserClipboardService).inSingletonScope();
|
|
31
|
+
bind(SecondaryWindowService).to(DefaultSecondaryWindowService).inSingletonScope();
|
|
32
|
+
});
|
|
@@ -1,189 +1,189 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2022 STMicroelectronics, Ericsson, ARM, EclipseSource and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
import { inject, injectable, postConstruct } from 'inversify';
|
|
17
|
-
import { SecondaryWindowService } from './secondary-window-service';
|
|
18
|
-
import { WindowService } from './window-service';
|
|
19
|
-
import { ExtractableWidget } from '../widgets';
|
|
20
|
-
import { ApplicationShell } from '../shell';
|
|
21
|
-
import { Saveable } from '../saveable';
|
|
22
|
-
import { PreferenceService } from '../preferences';
|
|
23
|
-
import { environment } from '../../common';
|
|
24
|
-
import { SaveableService } from '../saveable-service';
|
|
25
|
-
|
|
26
|
-
@injectable()
|
|
27
|
-
export class DefaultSecondaryWindowService implements SecondaryWindowService {
|
|
28
|
-
// secondary-window.html is part of Theia's generated code. It is generated by dev-packages/application-manager/src/generator/frontend-generator.ts
|
|
29
|
-
protected static SECONDARY_WINDOW_URL = 'secondary-window.html';
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Randomized prefix to be included in opened windows' ids.
|
|
33
|
-
* This avoids conflicts when creating sub-windows from multiple theia instances (e.g. by opening Theia multiple times in the same browser)
|
|
34
|
-
*/
|
|
35
|
-
protected readonly prefix = crypto.getRandomValues(new Uint32Array(1))[0];
|
|
36
|
-
/** Unique id. Increase after every access. */
|
|
37
|
-
private nextId = 0;
|
|
38
|
-
|
|
39
|
-
protected secondaryWindows: Window[] = [];
|
|
40
|
-
|
|
41
|
-
@inject(WindowService)
|
|
42
|
-
protected readonly windowService: WindowService;
|
|
43
|
-
|
|
44
|
-
@inject(PreferenceService)
|
|
45
|
-
protected readonly preferenceService: PreferenceService;
|
|
46
|
-
|
|
47
|
-
@inject(SaveableService)
|
|
48
|
-
protected readonly saveResourceService: SaveableService;
|
|
49
|
-
|
|
50
|
-
@postConstruct()
|
|
51
|
-
init(): void {
|
|
52
|
-
// Set up messaging with secondary windows
|
|
53
|
-
window.addEventListener('message', (event: MessageEvent) => {
|
|
54
|
-
console.trace('Message on main window', event);
|
|
55
|
-
if (event.data.fromSecondary) {
|
|
56
|
-
console.trace('Message comes from secondary window');
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
if (event.data.fromMain) {
|
|
60
|
-
console.trace('Message has mainWindow marker, therefore ignore it');
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Filter setImmediate messages. Do not forward because these come in with very high frequency.
|
|
65
|
-
// They are not needed in secondary windows because these messages are just a work around
|
|
66
|
-
// to make setImmediate work in the main window: https://developer.mozilla.org/en-US/docs/Web/API/Window/setImmediate
|
|
67
|
-
if (typeof event.data === 'string' && event.data.startsWith('setImmediate')) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
console.trace('Delegate main window message to secondary windows', event);
|
|
72
|
-
this.secondaryWindows.forEach(secondaryWindow => {
|
|
73
|
-
if (!secondaryWindow.window.closed) {
|
|
74
|
-
secondaryWindow.window.postMessage({ ...event.data, fromMain: true }, '*');
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
// Close all open windows when the main window is closed.
|
|
80
|
-
this.windowService.onUnload(() => {
|
|
81
|
-
// Iterate backwards because calling window.close might remove the window from the array
|
|
82
|
-
for (let i = this.secondaryWindows.length - 1; i >= 0; i--) {
|
|
83
|
-
this.secondaryWindows[i].close();
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
createSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): Window | undefined {
|
|
89
|
-
const [height, width, left, top] = this.findSecondaryWindowCoordinates(widget);
|
|
90
|
-
let options = `popup=1,width=${width},height=${height},left=${left},top=${top}`;
|
|
91
|
-
if (this.preferenceService.get('window.secondaryWindowAlwaysOnTop')) {
|
|
92
|
-
options += ',alwaysOnTop=true';
|
|
93
|
-
}
|
|
94
|
-
const newWindow = window.open(DefaultSecondaryWindowService.SECONDARY_WINDOW_URL, this.nextWindowId(), options) ?? undefined;
|
|
95
|
-
if (newWindow) {
|
|
96
|
-
this.secondaryWindows.push(newWindow);
|
|
97
|
-
newWindow.addEventListener('DOMContentLoaded', () => {
|
|
98
|
-
newWindow.addEventListener('beforeunload', evt => {
|
|
99
|
-
const saveable = Saveable.get(widget);
|
|
100
|
-
const wouldLoseState = !!saveable && saveable.dirty && this.saveResourceService.autoSave === 'off';
|
|
101
|
-
if (wouldLoseState) {
|
|
102
|
-
evt.returnValue = '';
|
|
103
|
-
evt.preventDefault();
|
|
104
|
-
return 'non-empty';
|
|
105
|
-
}
|
|
106
|
-
}, { capture: true });
|
|
107
|
-
|
|
108
|
-
newWindow.addEventListener('unload', () => {
|
|
109
|
-
const saveable = Saveable.get(widget);
|
|
110
|
-
shell.closeWidget(widget.id, {
|
|
111
|
-
save: !!saveable && saveable.dirty && this.saveResourceService.autoSave !== 'off'
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
const extIndex = this.secondaryWindows.indexOf(newWindow);
|
|
115
|
-
if (extIndex > -1) {
|
|
116
|
-
this.secondaryWindows.splice(extIndex, 1);
|
|
117
|
-
};
|
|
118
|
-
});
|
|
119
|
-
this.windowCreated(newWindow, widget, shell);
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
return newWindow;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
protected windowCreated(newWindow: Window, widget: ExtractableWidget, shell: ApplicationShell): void {
|
|
126
|
-
newWindow.addEventListener('unload', () => {
|
|
127
|
-
shell.closeWidget(widget.id);
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
protected findWindow<T>(windowName: string): Window | undefined {
|
|
132
|
-
for (const w of this.secondaryWindows) {
|
|
133
|
-
if (w.name === windowName) {
|
|
134
|
-
return w;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return undefined;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
protected findSecondaryWindowCoordinates(widget: ExtractableWidget): (number | undefined)[] {
|
|
141
|
-
const clientBounds = widget.node.getBoundingClientRect();
|
|
142
|
-
const preference = this.preferenceService.get('window.secondaryWindowPlacement');
|
|
143
|
-
|
|
144
|
-
let height; let width; let left; let top;
|
|
145
|
-
const offsetY = 20; // Offset to avoid the window title bar
|
|
146
|
-
|
|
147
|
-
switch (preference) {
|
|
148
|
-
case 'originalSize': {
|
|
149
|
-
height = widget.node.clientHeight;
|
|
150
|
-
width = widget.node.clientWidth;
|
|
151
|
-
left = window.screenLeft + clientBounds.x;
|
|
152
|
-
top = window.screenTop + (window.outerHeight - window.innerHeight) + offsetY;
|
|
153
|
-
if (environment.electron.is()) {
|
|
154
|
-
top = window.screenTop + clientBounds.y;
|
|
155
|
-
}
|
|
156
|
-
break;
|
|
157
|
-
}
|
|
158
|
-
case 'halfWidth': {
|
|
159
|
-
height = window.innerHeight - (window.outerHeight - window.innerHeight);
|
|
160
|
-
width = window.innerWidth / 2;
|
|
161
|
-
left = window.screenLeft;
|
|
162
|
-
top = window.screenTop;
|
|
163
|
-
if (!environment.electron.is()) {
|
|
164
|
-
height = window.innerHeight + clientBounds.y - offsetY;
|
|
165
|
-
}
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
case 'fullSize': {
|
|
169
|
-
height = window.innerHeight - (window.outerHeight - window.innerHeight);
|
|
170
|
-
width = window.innerWidth;
|
|
171
|
-
left = window.screenLeft;
|
|
172
|
-
top = window.screenTop;
|
|
173
|
-
if (!environment.electron.is()) {
|
|
174
|
-
height = window.innerHeight + clientBounds.y - offsetY;
|
|
175
|
-
}
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
return [height, width, left, top];
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
focus(win: Window): void {
|
|
183
|
-
win.focus();
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
protected nextWindowId(): string {
|
|
187
|
-
return `${this.prefix}-secondaryWindow-${this.nextId++}`;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2022 STMicroelectronics, Ericsson, ARM, EclipseSource and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
import { inject, injectable, postConstruct } from 'inversify';
|
|
17
|
+
import { SecondaryWindowService } from './secondary-window-service';
|
|
18
|
+
import { WindowService } from './window-service';
|
|
19
|
+
import { ExtractableWidget } from '../widgets';
|
|
20
|
+
import { ApplicationShell } from '../shell';
|
|
21
|
+
import { Saveable } from '../saveable';
|
|
22
|
+
import { PreferenceService } from '../preferences';
|
|
23
|
+
import { environment } from '../../common';
|
|
24
|
+
import { SaveableService } from '../saveable-service';
|
|
25
|
+
|
|
26
|
+
@injectable()
|
|
27
|
+
export class DefaultSecondaryWindowService implements SecondaryWindowService {
|
|
28
|
+
// secondary-window.html is part of Theia's generated code. It is generated by dev-packages/application-manager/src/generator/frontend-generator.ts
|
|
29
|
+
protected static SECONDARY_WINDOW_URL = 'secondary-window.html';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Randomized prefix to be included in opened windows' ids.
|
|
33
|
+
* This avoids conflicts when creating sub-windows from multiple theia instances (e.g. by opening Theia multiple times in the same browser)
|
|
34
|
+
*/
|
|
35
|
+
protected readonly prefix = crypto.getRandomValues(new Uint32Array(1))[0];
|
|
36
|
+
/** Unique id. Increase after every access. */
|
|
37
|
+
private nextId = 0;
|
|
38
|
+
|
|
39
|
+
protected secondaryWindows: Window[] = [];
|
|
40
|
+
|
|
41
|
+
@inject(WindowService)
|
|
42
|
+
protected readonly windowService: WindowService;
|
|
43
|
+
|
|
44
|
+
@inject(PreferenceService)
|
|
45
|
+
protected readonly preferenceService: PreferenceService;
|
|
46
|
+
|
|
47
|
+
@inject(SaveableService)
|
|
48
|
+
protected readonly saveResourceService: SaveableService;
|
|
49
|
+
|
|
50
|
+
@postConstruct()
|
|
51
|
+
init(): void {
|
|
52
|
+
// Set up messaging with secondary windows
|
|
53
|
+
window.addEventListener('message', (event: MessageEvent) => {
|
|
54
|
+
console.trace('Message on main window', event);
|
|
55
|
+
if (event.data.fromSecondary) {
|
|
56
|
+
console.trace('Message comes from secondary window');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (event.data.fromMain) {
|
|
60
|
+
console.trace('Message has mainWindow marker, therefore ignore it');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Filter setImmediate messages. Do not forward because these come in with very high frequency.
|
|
65
|
+
// They are not needed in secondary windows because these messages are just a work around
|
|
66
|
+
// to make setImmediate work in the main window: https://developer.mozilla.org/en-US/docs/Web/API/Window/setImmediate
|
|
67
|
+
if (typeof event.data === 'string' && event.data.startsWith('setImmediate')) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
console.trace('Delegate main window message to secondary windows', event);
|
|
72
|
+
this.secondaryWindows.forEach(secondaryWindow => {
|
|
73
|
+
if (!secondaryWindow.window.closed) {
|
|
74
|
+
secondaryWindow.window.postMessage({ ...event.data, fromMain: true }, '*');
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
// Close all open windows when the main window is closed.
|
|
80
|
+
this.windowService.onUnload(() => {
|
|
81
|
+
// Iterate backwards because calling window.close might remove the window from the array
|
|
82
|
+
for (let i = this.secondaryWindows.length - 1; i >= 0; i--) {
|
|
83
|
+
this.secondaryWindows[i].close();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
createSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): Window | undefined {
|
|
89
|
+
const [height, width, left, top] = this.findSecondaryWindowCoordinates(widget);
|
|
90
|
+
let options = `popup=1,width=${width},height=${height},left=${left},top=${top}`;
|
|
91
|
+
if (this.preferenceService.get('window.secondaryWindowAlwaysOnTop')) {
|
|
92
|
+
options += ',alwaysOnTop=true';
|
|
93
|
+
}
|
|
94
|
+
const newWindow = window.open(DefaultSecondaryWindowService.SECONDARY_WINDOW_URL, this.nextWindowId(), options) ?? undefined;
|
|
95
|
+
if (newWindow) {
|
|
96
|
+
this.secondaryWindows.push(newWindow);
|
|
97
|
+
newWindow.addEventListener('DOMContentLoaded', () => {
|
|
98
|
+
newWindow.addEventListener('beforeunload', evt => {
|
|
99
|
+
const saveable = Saveable.get(widget);
|
|
100
|
+
const wouldLoseState = !!saveable && saveable.dirty && this.saveResourceService.autoSave === 'off';
|
|
101
|
+
if (wouldLoseState) {
|
|
102
|
+
evt.returnValue = '';
|
|
103
|
+
evt.preventDefault();
|
|
104
|
+
return 'non-empty';
|
|
105
|
+
}
|
|
106
|
+
}, { capture: true });
|
|
107
|
+
|
|
108
|
+
newWindow.addEventListener('unload', () => {
|
|
109
|
+
const saveable = Saveable.get(widget);
|
|
110
|
+
shell.closeWidget(widget.id, {
|
|
111
|
+
save: !!saveable && saveable.dirty && this.saveResourceService.autoSave !== 'off'
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const extIndex = this.secondaryWindows.indexOf(newWindow);
|
|
115
|
+
if (extIndex > -1) {
|
|
116
|
+
this.secondaryWindows.splice(extIndex, 1);
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
this.windowCreated(newWindow, widget, shell);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return newWindow;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
protected windowCreated(newWindow: Window, widget: ExtractableWidget, shell: ApplicationShell): void {
|
|
126
|
+
newWindow.addEventListener('unload', () => {
|
|
127
|
+
shell.closeWidget(widget.id);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
protected findWindow<T>(windowName: string): Window | undefined {
|
|
132
|
+
for (const w of this.secondaryWindows) {
|
|
133
|
+
if (w.name === windowName) {
|
|
134
|
+
return w;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
protected findSecondaryWindowCoordinates(widget: ExtractableWidget): (number | undefined)[] {
|
|
141
|
+
const clientBounds = widget.node.getBoundingClientRect();
|
|
142
|
+
const preference = this.preferenceService.get('window.secondaryWindowPlacement');
|
|
143
|
+
|
|
144
|
+
let height; let width; let left; let top;
|
|
145
|
+
const offsetY = 20; // Offset to avoid the window title bar
|
|
146
|
+
|
|
147
|
+
switch (preference) {
|
|
148
|
+
case 'originalSize': {
|
|
149
|
+
height = widget.node.clientHeight;
|
|
150
|
+
width = widget.node.clientWidth;
|
|
151
|
+
left = window.screenLeft + clientBounds.x;
|
|
152
|
+
top = window.screenTop + (window.outerHeight - window.innerHeight) + offsetY;
|
|
153
|
+
if (environment.electron.is()) {
|
|
154
|
+
top = window.screenTop + clientBounds.y;
|
|
155
|
+
}
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
case 'halfWidth': {
|
|
159
|
+
height = window.innerHeight - (window.outerHeight - window.innerHeight);
|
|
160
|
+
width = window.innerWidth / 2;
|
|
161
|
+
left = window.screenLeft;
|
|
162
|
+
top = window.screenTop;
|
|
163
|
+
if (!environment.electron.is()) {
|
|
164
|
+
height = window.innerHeight + clientBounds.y - offsetY;
|
|
165
|
+
}
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
case 'fullSize': {
|
|
169
|
+
height = window.innerHeight - (window.outerHeight - window.innerHeight);
|
|
170
|
+
width = window.innerWidth;
|
|
171
|
+
left = window.screenLeft;
|
|
172
|
+
top = window.screenTop;
|
|
173
|
+
if (!environment.electron.is()) {
|
|
174
|
+
height = window.innerHeight + clientBounds.y - offsetY;
|
|
175
|
+
}
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return [height, width, left, top];
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
focus(win: Window): void {
|
|
183
|
+
win.focus();
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
protected nextWindowId(): string {
|
|
187
|
+
return `${this.prefix}-secondaryWindow-${this.nextId++}`;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2020 Ericsson and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
|
|
17
|
-
import { Container } from 'inversify';
|
|
18
|
-
import { ContributionProvider } from '../../common';
|
|
19
|
-
import { CorePreferences } from '../core-preferences';
|
|
20
|
-
import { FrontendApplicationContribution } from '../frontend-application-contribution';
|
|
21
|
-
import { DefaultWindowService } from './default-window-service';
|
|
22
|
-
import assert = require('assert');
|
|
23
|
-
|
|
24
|
-
describe('DefaultWindowService', () => {
|
|
25
|
-
class TestFrontendApplicationContribution implements FrontendApplicationContribution {
|
|
26
|
-
constructor(private preventUnload: boolean) { }
|
|
27
|
-
onWillStopCalled = false;
|
|
28
|
-
onWillStop(): boolean {
|
|
29
|
-
this.onWillStopCalled = true;
|
|
30
|
-
return this.preventUnload;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function setupWindowService(confirmExit: CorePreferences['application.confirmExit'], frontendContributions: FrontendApplicationContribution[]): DefaultWindowService {
|
|
34
|
-
const container = new Container();
|
|
35
|
-
container.bind(DefaultWindowService).toSelf().inSingletonScope();
|
|
36
|
-
container.bind<Partial<ContributionProvider<FrontendApplicationContribution>>>(ContributionProvider)
|
|
37
|
-
.toConstantValue({
|
|
38
|
-
getContributions: () => frontendContributions,
|
|
39
|
-
})
|
|
40
|
-
.whenTargetNamed(FrontendApplicationContribution);
|
|
41
|
-
container.bind<Partial<CorePreferences>>(CorePreferences)
|
|
42
|
-
.toConstantValue({
|
|
43
|
-
'application.confirmExit': confirmExit,
|
|
44
|
-
});
|
|
45
|
-
return container.get(DefaultWindowService);
|
|
46
|
-
}
|
|
47
|
-
it('onWillStop should be called on every contribution (never)', () => {
|
|
48
|
-
const frontendContributions: TestFrontendApplicationContribution[] = [
|
|
49
|
-
// preventUnload should be ignored here
|
|
50
|
-
new TestFrontendApplicationContribution(true),
|
|
51
|
-
];
|
|
52
|
-
const windowService = setupWindowService('never', frontendContributions);
|
|
53
|
-
assert(frontendContributions.every(contribution => !contribution.onWillStopCalled), 'contributions should not be called yet');
|
|
54
|
-
assert(windowService['collectContributionUnloadVetoes']().length === 0, 'there should be no vetoes');
|
|
55
|
-
assert(frontendContributions.every(contribution => contribution.onWillStopCalled), 'contributions should have been called');
|
|
56
|
-
});
|
|
57
|
-
it('onWillStop should be called on every contribution (ifRequired)', () => {
|
|
58
|
-
const frontendContributions: TestFrontendApplicationContribution[] = [
|
|
59
|
-
new TestFrontendApplicationContribution(true),
|
|
60
|
-
// canUnload should not stop at the previous contribution
|
|
61
|
-
new TestFrontendApplicationContribution(false),
|
|
62
|
-
];
|
|
63
|
-
const windowService = setupWindowService('ifRequired', frontendContributions);
|
|
64
|
-
assert(frontendContributions.every(contribution => !contribution.onWillStopCalled), 'contributions should not be called yet');
|
|
65
|
-
assert(windowService['collectContributionUnloadVetoes']().length > 0, 'There should be vetoes');
|
|
66
|
-
assert(frontendContributions.every(contribution => contribution.onWillStopCalled), 'contributions should have been called');
|
|
67
|
-
});
|
|
68
|
-
it('onWillStop should be called on every contribution (always)', () => {
|
|
69
|
-
const frontendContributions: TestFrontendApplicationContribution[] = [
|
|
70
|
-
// canUnload should return false despite preventUnload not being set
|
|
71
|
-
new TestFrontendApplicationContribution(false),
|
|
72
|
-
];
|
|
73
|
-
const windowService = setupWindowService('always', frontendContributions);
|
|
74
|
-
assert(frontendContributions.every(contribution => !contribution.onWillStopCalled), 'contributions should not be called yet');
|
|
75
|
-
assert(windowService['collectContributionUnloadVetoes']().length > 0, 'there should be vetoes');
|
|
76
|
-
assert(frontendContributions.every(contribution => contribution.onWillStopCalled), 'contributions should have been called');
|
|
77
|
-
});
|
|
78
|
-
});
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2020 Ericsson and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { Container } from 'inversify';
|
|
18
|
+
import { ContributionProvider } from '../../common';
|
|
19
|
+
import { CorePreferences } from '../core-preferences';
|
|
20
|
+
import { FrontendApplicationContribution } from '../frontend-application-contribution';
|
|
21
|
+
import { DefaultWindowService } from './default-window-service';
|
|
22
|
+
import assert = require('assert');
|
|
23
|
+
|
|
24
|
+
describe('DefaultWindowService', () => {
|
|
25
|
+
class TestFrontendApplicationContribution implements FrontendApplicationContribution {
|
|
26
|
+
constructor(private preventUnload: boolean) { }
|
|
27
|
+
onWillStopCalled = false;
|
|
28
|
+
onWillStop(): boolean {
|
|
29
|
+
this.onWillStopCalled = true;
|
|
30
|
+
return this.preventUnload;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function setupWindowService(confirmExit: CorePreferences['application.confirmExit'], frontendContributions: FrontendApplicationContribution[]): DefaultWindowService {
|
|
34
|
+
const container = new Container();
|
|
35
|
+
container.bind(DefaultWindowService).toSelf().inSingletonScope();
|
|
36
|
+
container.bind<Partial<ContributionProvider<FrontendApplicationContribution>>>(ContributionProvider)
|
|
37
|
+
.toConstantValue({
|
|
38
|
+
getContributions: () => frontendContributions,
|
|
39
|
+
})
|
|
40
|
+
.whenTargetNamed(FrontendApplicationContribution);
|
|
41
|
+
container.bind<Partial<CorePreferences>>(CorePreferences)
|
|
42
|
+
.toConstantValue({
|
|
43
|
+
'application.confirmExit': confirmExit,
|
|
44
|
+
});
|
|
45
|
+
return container.get(DefaultWindowService);
|
|
46
|
+
}
|
|
47
|
+
it('onWillStop should be called on every contribution (never)', () => {
|
|
48
|
+
const frontendContributions: TestFrontendApplicationContribution[] = [
|
|
49
|
+
// preventUnload should be ignored here
|
|
50
|
+
new TestFrontendApplicationContribution(true),
|
|
51
|
+
];
|
|
52
|
+
const windowService = setupWindowService('never', frontendContributions);
|
|
53
|
+
assert(frontendContributions.every(contribution => !contribution.onWillStopCalled), 'contributions should not be called yet');
|
|
54
|
+
assert(windowService['collectContributionUnloadVetoes']().length === 0, 'there should be no vetoes');
|
|
55
|
+
assert(frontendContributions.every(contribution => contribution.onWillStopCalled), 'contributions should have been called');
|
|
56
|
+
});
|
|
57
|
+
it('onWillStop should be called on every contribution (ifRequired)', () => {
|
|
58
|
+
const frontendContributions: TestFrontendApplicationContribution[] = [
|
|
59
|
+
new TestFrontendApplicationContribution(true),
|
|
60
|
+
// canUnload should not stop at the previous contribution
|
|
61
|
+
new TestFrontendApplicationContribution(false),
|
|
62
|
+
];
|
|
63
|
+
const windowService = setupWindowService('ifRequired', frontendContributions);
|
|
64
|
+
assert(frontendContributions.every(contribution => !contribution.onWillStopCalled), 'contributions should not be called yet');
|
|
65
|
+
assert(windowService['collectContributionUnloadVetoes']().length > 0, 'There should be vetoes');
|
|
66
|
+
assert(frontendContributions.every(contribution => contribution.onWillStopCalled), 'contributions should have been called');
|
|
67
|
+
});
|
|
68
|
+
it('onWillStop should be called on every contribution (always)', () => {
|
|
69
|
+
const frontendContributions: TestFrontendApplicationContribution[] = [
|
|
70
|
+
// canUnload should return false despite preventUnload not being set
|
|
71
|
+
new TestFrontendApplicationContribution(false),
|
|
72
|
+
];
|
|
73
|
+
const windowService = setupWindowService('always', frontendContributions);
|
|
74
|
+
assert(frontendContributions.every(contribution => !contribution.onWillStopCalled), 'contributions should not be called yet');
|
|
75
|
+
assert(windowService['collectContributionUnloadVetoes']().length > 0, 'there should be vetoes');
|
|
76
|
+
assert(frontendContributions.every(contribution => contribution.onWillStopCalled), 'contributions should have been called');
|
|
77
|
+
});
|
|
78
|
+
});
|