From 9df95ee092d54ea5520768569f90b6fa88d83697 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Sun, 31 May 2020 10:39:21 +0200 Subject: [PATCH] remove experimental registerPostStartupDumbAwareActivity GitOrigin-RevId: d352ad7980749140bf52f7ad1dec37e70750bfc1 --- .../daemon/NonAsciiCharactersTest.java | 20 +-- .../start-up-visualizer/format-changelog.md | 4 + .../start-up-visualizer/package.json | 10 +- .../start-up-visualizer/yarn.lock | 62 +++---- .../intellij/openapi/project/DumbAware.java | 4 +- .../openapi/startup/StartupManager.java | 11 +- .../StartUpPerformanceReporter.kt | 2 +- .../build/BuildContentManagerImpl.java | 13 +- .../navigation/CtrlMouseHandler.java | 2 +- .../ProjectLoadingErrorsNotifierImpl.java | 2 +- .../ide/startup/impl/StartupManagerImpl.java | 155 +++++++----------- .../impl/FileEditorManagerImpl.java | 2 +- .../openapi/project/DumbServiceImpl.java | 8 +- .../project/TrackedEdtActivityService.java | 9 +- .../platform/PlatformProjectOpenProcessor.kt | 2 +- .../com/intellij/ide/StartupManagerTest.kt | 23 ++- .../impl/CodeInsightTestFixtureImpl.java | 3 - .../intellij/diagnostic/StartUpMeasurer.java | 3 - .../vcs/impl/FileStatusManagerImpl.java | 5 +- .../org/jetbrains/idea/svn/SvnTestCase.java | 11 +- 20 files changed, 140 insertions(+), 211 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/NonAsciiCharactersTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/NonAsciiCharactersTest.java index 0aed65e10aff..10d68e137b40 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/NonAsciiCharactersTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/NonAsciiCharactersTest.java @@ -1,30 +1,14 @@ -/* - * Copyright 2000-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - +// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.java.codeInsight.daemon; import com.intellij.codeInsight.daemon.DaemonAnalyzerTestCase; import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.NonAsciiCharactersInspection; import com.intellij.util.ui.UIUtil; -import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class NonAsciiCharactersTest extends DaemonAnalyzerTestCase { - @NonNls private static final String BASE_PATH = "/codeInsight/daemonCodeAnalyzer/nonAsciiCharacters"; + private static final String BASE_PATH = "/codeInsight/daemonCodeAnalyzer/nonAsciiCharacters"; @Override protected LocalInspectionTool @NotNull [] configureLocalInspectionTools() { diff --git a/platform/built-in-server/start-up-visualizer/format-changelog.md b/platform/built-in-server/start-up-visualizer/format-changelog.md index 98daa248fbd0..74ade79b9333 100644 --- a/platform/built-in-server/start-up-visualizer/format-changelog.md +++ b/platform/built-in-server/start-up-visualizer/format-changelog.md @@ -1,3 +1,7 @@ +# 22 + +* `project dumb post-startup` -> `project post-startup` + # 21 * `tasks waiting` removed. No such activity anymore. diff --git a/platform/built-in-server/start-up-visualizer/package.json b/platform/built-in-server/start-up-visualizer/package.json index cdc5fad3d01e..3cf9824aed3f 100644 --- a/platform/built-in-server/start-up-visualizer/package.json +++ b/platform/built-in-server/start-up-visualizer/package.json @@ -7,7 +7,7 @@ "build": "vue-cli-service build" }, "dependencies": { - "@amcharts/amcharts4": "4.9.22", + "@amcharts/amcharts4": "4.9.24", "chokidar": "^3.4.0", "compare-versions": "^3.6.0", "debounce": "^1.2.0", @@ -17,15 +17,15 @@ "vue": "^2.6.11", "vue-class-component": "^7.2.3", "vue-property-decorator": "^8.4.2", - "vue-router": "^3.1.6", + "vue-router": "^3.3.2", "vuex": "^3.4.0", "vuex-persist": "^2.2.0" }, "devDependencies": { "@types/debounce": "^1.2.0", - "@vue/cli-plugin-typescript": "^4.3.1", - "@vue/cli-service": "^4.3.1", - "typescript": "^3.9.2", + "@vue/cli-plugin-typescript": "^4.4.1", + "@vue/cli-service": "^4.4.1", + "typescript": "^3.9.3", "vue-template-compiler": "^2.6.11", "vuex-module-decorators": "^0.17.0" }, diff --git a/platform/built-in-server/start-up-visualizer/yarn.lock b/platform/built-in-server/start-up-visualizer/yarn.lock index a9fac95a1d73..259cec1c3628 100644 --- a/platform/built-in-server/start-up-visualizer/yarn.lock +++ b/platform/built-in-server/start-up-visualizer/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@amcharts/amcharts4@4.9.22": - version "4.9.22" - resolved "https://registry.yarnpkg.com/@amcharts/amcharts4/-/amcharts4-4.9.22.tgz#c9ce751d52f82c3adf0ecfbb1e1262a4eb5d3aff" - integrity sha512-7Q8/LpBzkipOvUJjHMCkusnv+4juQAjLIsqs79XyE8ujfjtBwrLSv6btskMqdFCNoAkUUl2nnndMUiBrnj7WQQ== +"@amcharts/amcharts4@4.9.24": + version "4.9.24" + resolved "https://registry.yarnpkg.com/@amcharts/amcharts4/-/amcharts4-4.9.24.tgz#39aee823047edd6af9e35521fd276df678d1797f" + integrity sha512-ZQMLjPVCei/8+hvzNeMp+vP/bJhmnyLGoK+OnF0OR2zFekHEN8M2GAyKP+5XrQkFaujeqMvr8l3awPs+jLXvHQ== dependencies: "@babel/runtime" "^7.6.3" "@types/regression" "^2.0.0" @@ -45,9 +45,9 @@ js-tokens "^4.0.0" "@babel/runtime@^7.6.3": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.1.tgz#b6eb75cac279588d3100baecd1b9894ea2840822" - integrity sha512-nQbbCbQc9u/rpg1XCxoMYQTbSMVZjCDxErQ1ClCn9Pvcmv1lGads19ep0a2VsEiIJeHqjZley6EQGEC3Yo1xMA== + version "7.10.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.2.tgz#d103f21f2602497d38348a32e008637d506db839" + integrity sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg== dependencies: regenerator-runtime "^0.13.4" @@ -143,15 +143,20 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/json-schema@^7.0.4": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "14.0.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b" - integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA== + version "14.0.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.6.tgz#f9e178b2da31a4b0ec60b64649e244c31ce18daf" + integrity sha512-FbNmu4F67d3oZMWBV6Y4MaPER+0EpE9eIYf2yaHhCWovc1dlXCZkqGX4NLHfVVr6umt20TNBdRzrNJIzIKfdbw== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -185,7 +190,7 @@ dependencies: "@vue/cli-shared-utils" "^4.4.1" -"@vue/cli-plugin-typescript@^4.3.1": +"@vue/cli-plugin-typescript@^4.4.1": version "4.4.1" resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.4.1.tgz#00f2e0af3a50e00074cb01dea53ebb75bb50f392" integrity sha512-WfgaT5N/eUlGXWsucl8vPskB3QYZFw77P1e/0TEwekVsz8yyT5/MEnZaQSH9emufcAagjpWHHL3fNQdIVg70eQ== @@ -206,7 +211,7 @@ resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.4.1.tgz#98d18fc5d36fa6e0d1fc2ecaeea37aa965564f19" integrity sha512-FtOFsDP0qznwVaCz0BZmTzUm5vhHSJzX2/XD3L5dLTkrNxyDEbZmbKoX0n1OzBcQwZC7dkJZP2tdoCQx0mX//g== -"@vue/cli-service@^4.3.1": +"@vue/cli-service@^4.4.1": version "4.4.1" resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.4.1.tgz#b26a435d8c953bc7efaf7b784c9835c1415bcf1c" integrity sha512-DVV0zr5Sw7pzdm3z3PRrfqihLgoJP/d9AgNFcSSQF/J9Gtvjf1t0PTJJFeLANHSL3kDWte+3kjc22sXayu0BJQ== @@ -527,7 +532,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5: version "6.12.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== @@ -2374,9 +2379,9 @@ ejs@^2.6.1: integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== electron-to-chromium@^1.3.413: - version "1.3.453" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.453.tgz#758a8565a64b7889b27132a51d2abb8b135c9d01" - integrity sha512-IQbCfjJR0NDDn/+vojTlq7fPSREcALtF8M1n01gw7nQghCtfFYrJ2dfhsp8APr8bANoFC8vRTFVXMOGpT0eetw== + version "1.3.455" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.455.tgz#fd65a3f5db6ffa83eb7c84f16ea9b1b7396f537d" + integrity sha512-4lwnxp+ArqOX9hiLwLpwhfqvwzUHFuDgLz4NTiU3lhygUzWtocIJ/5Vix+mWVNE2HQ9aI1k2ncGe5H/0OktMvA== element-ui@^2.13.2: version "2.13.2" @@ -6118,11 +6123,12 @@ schema-utils@^1.0.0: ajv-keywords "^3.1.0" schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.6: - version "2.6.6" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" - integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA== + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== dependencies: - ajv "^6.12.0" + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" ajv-keywords "^3.4.1" scope-analyzer@^2.0.1: @@ -6540,9 +6546,9 @@ stackblur-canvas@^2.0.0: integrity sha512-3ZHJv+43D8YttgumssIxkfs3hBXW7XaMS5Ux65fOBhKDYMjbG5hF8Ey8a90RiiJ58aQnAhWbGilPzZ9rkIlWgQ== stackframe@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71" - integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ== + version "1.2.0" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== static-eval@^2.0.5: version "2.0.5" @@ -7105,7 +7111,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.9.2: +typescript@^3.9.3: version "3.9.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a" integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ== @@ -7390,10 +7396,10 @@ vue-property-decorator@^8.4.2: dependencies: vue-class-component "^7.1.0" -vue-router@^3.1.6: - version "3.3.1" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.3.1.tgz#7d0545dd8ebf4f45494ca185b7eccb38d67689c1" - integrity sha512-2E2Xlks6oDzU559/NcSGD08g3XCDZznx8CK/jHIHkrbAdnCu1ghUcnz5e78SZ35gaOKtHGS01vJG8Yv4iJFTug== +vue-router@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.3.2.tgz#0099de402edb2fe92f9711053ab5a2156f239cad" + integrity sha512-5sEbcfb7MW8mY8lbUVbF4kgcipGXsagkM/X+pb6n0MhjP+RorWIUTPAPSqgPaiPOxVCXgAItBl8Vwz8vq78faA== vue-style-loader@^4.1.0, vue-style-loader@^4.1.2: version "4.1.2" diff --git a/platform/core-api/src/com/intellij/openapi/project/DumbAware.java b/platform/core-api/src/com/intellij/openapi/project/DumbAware.java index 125d411baa29..02037125c2fb 100644 --- a/platform/core-api/src/com/intellij/openapi/project/DumbAware.java +++ b/platform/core-api/src/com/intellij/openapi/project/DumbAware.java @@ -1,4 +1,4 @@ -// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.openapi.project; import com.intellij.openapi.startup.StartupActivity; @@ -10,7 +10,7 @@ import com.intellij.openapi.startup.StartupActivity; * Some known implementors are: *
  • {@link com.intellij.openapi.actionSystem.AnAction}s (see {@link com.intellij.openapi.project.DumbAwareAction}) *
  • {@link com.intellij.openapi.fileEditor.FileEditorProvider}s - *
  • post-startup activities ({@link StartupActivity} / {@link com.intellij.openapi.startup.StartupManager#registerPostStartupDumbAwareActivity(Runnable)}) + *
  • post-startup activities ({@link StartupActivity}) *
  • Stacktrace {@link com.intellij.execution.filters.Filter}s *
  • {@link com.intellij.ide.SelectInTarget}s *
  • {@link com.intellij.ide.IconProvider}s diff --git a/platform/core-api/src/com/intellij/openapi/startup/StartupManager.java b/platform/core-api/src/com/intellij/openapi/startup/StartupManager.java index 850bd2f0115a..8f83c57073a7 100644 --- a/platform/core-api/src/com/intellij/openapi/startup/StartupManager.java +++ b/platform/core-api/src/com/intellij/openapi/startup/StartupManager.java @@ -40,22 +40,13 @@ public abstract class StartupManager { * Registers an activity that is performed during project load after the "Loading Project" * progress bar is displayed. You may access the PSI structures from the activity.

    * - * Consider to use {@link #registerPostStartupDumbAwareActivity} if possible. + * Consider to use {@link #runAfterOpened} if possible. * * @param runnable the activity to execute. * @see StartupActivity#POST_STARTUP_ACTIVITY */ public abstract void registerPostStartupActivity(@NotNull Runnable runnable); - /** - * Registers an {@link com.intellij.openapi.project.DumbAware} activity that is performed during project load, after the "Loading Project" - * progress bar is displayed, in a pooled thread. - * - * @param runnable the activity to execute. - * @see StartupActivity#POST_STARTUP_ACTIVITY - */ - public abstract void registerPostStartupDumbAwareActivity(@NotNull Runnable runnable); - /** * Registers activity that is executed after project loaded. * The runnable will be executed in current thread if project is already opened.

    diff --git a/platform/diagnostic/src/startUpPerformanceReporter/StartUpPerformanceReporter.kt b/platform/diagnostic/src/startUpPerformanceReporter/StartUpPerformanceReporter.kt index d682b69a59d0..23153ac67b3d 100644 --- a/platform/diagnostic/src/startUpPerformanceReporter/StartUpPerformanceReporter.kt +++ b/platform/diagnostic/src/startUpPerformanceReporter/StartUpPerformanceReporter.kt @@ -41,7 +41,7 @@ class StartUpPerformanceReporter : StartupActivity, StartUpPerformanceService { companion object { internal val LOG = logger() - internal const val VERSION = "21" + internal const val VERSION = "22" internal fun sortItems(items: MutableList) { items.sortWith(Comparator { o1, o2 -> diff --git a/platform/lang-impl/src/com/intellij/build/BuildContentManagerImpl.java b/platform/lang-impl/src/com/intellij/build/BuildContentManagerImpl.java index 9f6dca41baeb..7bb41d82ed86 100644 --- a/platform/lang-impl/src/com/intellij/build/BuildContentManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/build/BuildContentManagerImpl.java @@ -12,7 +12,6 @@ import com.intellij.ide.startup.StartupManagerEx; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.application.ModalityState; -import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Key; @@ -87,17 +86,13 @@ public final class BuildContentManagerImpl implements BuildContentManager { return toolWindow; } - private void invokeLaterIfNeeded(@NotNull DumbAwareRunnable runnable) { + private void invokeLaterIfNeeded(@NotNull Runnable runnable) { if (myProject.isDefault()) { return; } - if (!StartupManagerEx.getInstanceEx(myProject).startupActivityPassed()) { - StartupManagerEx.getInstanceEx(myProject).registerPostStartupDumbAwareActivity( - () -> GuiUtils.invokeLaterIfNeeded(runnable, ModalityState.defaultModalityState(), myProject.getDisposed())); - } - else { + StartupManagerEx.getInstanceEx(myProject).runAfterOpened(() -> { GuiUtils.invokeLaterIfNeeded(runnable, ModalityState.defaultModalityState(), myProject.getDisposed()); - } + }); } @Override @@ -255,7 +250,7 @@ public final class BuildContentManagerImpl implements BuildContentManager { }); } - private class CloseListener extends BaseContentCloseListener { + private final class CloseListener extends BaseContentCloseListener { private @Nullable BuildProcessHandler myProcessHandler; private CloseListener(final @NotNull Content content, @NotNull BuildProcessHandler processHandler) { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/CtrlMouseHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/CtrlMouseHandler.java index 3ea044256c7d..84b41d2bc33d 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/CtrlMouseHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/CtrlMouseHandler.java @@ -170,7 +170,7 @@ public final class CtrlMouseHandler { public CtrlMouseHandler(@NotNull Project project) { myProject = project; - StartupManager.getInstance(project).registerPostStartupDumbAwareActivity(() -> { + StartupManager.getInstance(project).runAfterOpened(() -> { EditorEventMulticaster eventMulticaster = EditorFactory.getInstance().getEventMulticaster(); eventMulticaster.addEditorMouseListener(myEditorMouseAdapter, project); eventMulticaster.addEditorMouseMotionListener(myEditorMouseMotionListener, project); diff --git a/platform/lang-impl/src/com/intellij/openapi/module/impl/ProjectLoadingErrorsNotifierImpl.java b/platform/lang-impl/src/com/intellij/openapi/module/impl/ProjectLoadingErrorsNotifierImpl.java index b59f2318ddab..d0b75da667d3 100644 --- a/platform/lang-impl/src/com/intellij/openapi/module/impl/ProjectLoadingErrorsNotifierImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/module/impl/ProjectLoadingErrorsNotifierImpl.java @@ -55,7 +55,7 @@ public class ProjectLoadingErrorsNotifierImpl extends ProjectLoadingErrorsNotifi fireNotifications(); } else if (first) { - StartupManager.getInstance(myProject).registerPostStartupDumbAwareActivity(() -> fireNotifications()); + StartupManager.getInstance(myProject).runAfterOpened(() -> fireNotifications()); } } diff --git a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java index 85a47120611e..a755ea6ce21b 100644 --- a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java @@ -1,7 +1,6 @@ // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.startup.impl; -import com.intellij.codeWithMe.ClientId; import com.intellij.diagnostic.*; import com.intellij.diagnostic.StartUpMeasurer.Activities; import com.intellij.ide.IdeBundle; @@ -24,9 +23,9 @@ import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressIndicatorProvider; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.util.BackgroundTaskUtil; +import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.impl.ProjectManagerImpl; import com.intellij.openapi.startup.StartupActivity; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.registry.Registry; @@ -38,7 +37,9 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; import java.nio.file.Path; -import java.util.*; +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.List; import java.util.concurrent.Future; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -53,10 +54,8 @@ public class StartupManagerImpl extends StartupManagerEx { private final Object myLock = new Object(); - private final Deque myStartupActivities = new ArrayDeque<>(); - - private final Deque myDumbAwarePostStartupActivities = new ArrayDeque<>(); - private final Deque myNotDumbAwarePostStartupActivities = new ArrayDeque<>(); + private final Deque startupActivities = new ArrayDeque<>(); + private final Deque postStartupActivities = new ArrayDeque<>(); private volatile boolean postStartupActivitiesPassed; private volatile boolean myStartupActivitiesPassed; @@ -76,31 +75,27 @@ public class StartupManagerImpl extends StartupManagerEx { checkNonDefaultProject(); LOG.assertTrue(!myStartupActivitiesPassed, "Registering startup activity that will never be run"); synchronized (myLock) { - myStartupActivities.add(runnable); + startupActivities.add(runnable); } } @Override public void registerPostStartupActivity(@NotNull Runnable runnable) { - checkBeforeAddingPostStartupActivity(); - Deque list = DumbService.isDumbAware(runnable) ? myDumbAwarePostStartupActivities : myNotDumbAwarePostStartupActivities; - synchronized (myLock) { - checkThatPostActivitiesNotPassed(); - list.add(runnable); - } - } - - @Override - public void registerPostStartupDumbAwareActivity(@NotNull Runnable runnable) { - checkBeforeAddingPostStartupActivity(); - synchronized (myLock) { - myDumbAwarePostStartupActivities.add(ClientId.decorateRunnable(runnable)); - } - } - - private void checkBeforeAddingPostStartupActivity() { checkNonDefaultProject(); checkThatPostActivitiesNotPassed(); + + Runnable effectiveRunnable; + if (DumbService.isDumbAware(runnable)) { + effectiveRunnable = runnable; + } + else { + //LOG.warn("Activities registered via registerPostStartupActivity must be dumb-aware"); + effectiveRunnable = (DumbAwareRunnable)() -> DumbService.getInstance(myProject).unsafeRunWhenSmart(runnable); + } + synchronized (myLock) { + checkThatPostActivitiesNotPassed(); + postStartupActivities.add(effectiveRunnable); + } } private void checkThatPostActivitiesNotPassed() { @@ -126,7 +121,7 @@ public class StartupManagerImpl extends StartupManagerEx { indicator.setText(IdeBundle.message("startup.indicator.text.running.startup.activities")); } - doRunStartUpActivities(indicator); + runStartUpActivities(indicator); if (indicator != null) { indicator.checkCanceled(); @@ -145,11 +140,11 @@ public class StartupManagerImpl extends StartupManagerEx { return future; } - private void doRunStartUpActivities(@Nullable ProgressIndicator indicator) { + private void runStartUpActivities(@Nullable ProgressIndicator indicator) { LOG.assertTrue(!myStartupActivitiesPassed); - Activity activity = StartUpMeasurer.startMainActivity(Activities.PROJECT_STARTUP); - runActivities(myStartupActivities, indicator, null); + Activity activity = StartUpMeasurer.startMainActivity("project startup"); + runActivities(startupActivities, indicator, null); ExtensionsAreaImpl area = (ExtensionsAreaImpl)ApplicationManager.getApplication().getExtensionArea(); executeActivitiesFromExtensionPoint(indicator, area.getExtensionPoint("com.intellij.startupActivity")); myStartupActivitiesPassed = true; @@ -192,7 +187,7 @@ public class StartupManagerImpl extends StartupManagerEx { @Deprecated public void runStartupActivities() { if (!myStartupActivitiesPassed) { - doRunStartUpActivities(null); + runStartUpActivities(null); } } @@ -226,7 +221,7 @@ public class StartupManagerImpl extends StartupManagerEx { } counter.incrementAndGet(); - runDumbUnawareActivity(dumbService, () -> { + dumbService.unsafeRunWhenSmart(() -> { runActivity(uiFreezeWarned, extension, pluginDescriptor, ProgressIndicatorProvider.getGlobalProgressIndicator()); dumbUnawarePostActivitiesPassed(edtActivity, counter.decrementAndGet()); }); @@ -238,6 +233,16 @@ public class StartupManagerImpl extends StartupManagerEx { return; } + //noinspection TestOnlyProblems + runPostStartupActivitiesRegisteredDynamically(); + dumbAwareActivity.end(); + + snapshot.logResponsivenessSinceCreation("Post-startup activities under progress"); + + if (!myProject.isDisposed() && !ApplicationManager.getApplication().isUnitTestMode()) { + scheduleBackgroundPostStartupActivities(); + } + StartupActivity.POST_STARTUP_ACTIVITY.addExtensionPointListener(new ExtensionPointListener() { @Override public void extensionAdded(@NotNull StartupActivity extension, @NotNull PluginDescriptor pluginDescriptor) { @@ -245,18 +250,12 @@ public class StartupManagerImpl extends StartupManagerEx { runActivity(new AtomicBoolean(), extension, pluginDescriptor, ProgressIndicatorProvider.getGlobalProgressIndicator()); } else { - runDumbUnawareActivity(DumbService.getInstance(myProject), () -> { + DumbService.getInstance(myProject).unsafeRunWhenSmart(() -> { runActivity(null, extension, pluginDescriptor, ProgressIndicatorProvider.getGlobalProgressIndicator()); }); } } }, myProject); - - runActivities(myDumbAwarePostStartupActivities, null, null); - dumbAwareActivity.end(); - snapshot.logResponsivenessSinceCreation("Post-startup activities under progress"); - - runDumbUnawarePostStartupActivitiesRegisteredDynamically(); } private static void dumbUnawarePostActivitiesPassed(@NotNull AtomicReference edtActivity, int count) { @@ -315,62 +314,36 @@ public class StartupManagerImpl extends StartupManagerEx { return; } - runActivities(myDumbAwarePostStartupActivities, null, Activities.PROJECT_DUMB_POST_STARTUP); - runDumbUnawarePostStartupActivitiesRegisteredDynamically(); - } + runActivities(postStartupActivities, null, "project post-startup"); - private void runDumbUnawarePostStartupActivitiesRegisteredDynamically() { - DumbService dumbService = DumbService.getInstance(myProject); - runDumbUnawareActivity(dumbService, new Runnable() { + DumbService.getInstance(myProject).unsafeRunWhenSmart(new Runnable() { @Override public void run() { - // myDumbAwarePostStartupActivities might be non-empty if new activities were registered during dumb mode - // todo should it be moved out of EDT? Not clear, do we really have a lot of such activities - runActivities(myDumbAwarePostStartupActivities, null, Activities.PROJECT_DUMB_POST_STARTUP); - - while (true) { - List dumbUnaware = takeDumbUnawareStartupActivities(); - if (dumbUnaware.isEmpty()) { - break; - } - - // queue each activity in smart mode separately so that if one of them starts the dumb mode, the next ones just wait for it to finish - for (Runnable activity : dumbUnaware) { - runDumbUnawareActivity(dumbService, () -> runActivity(activity)); + synchronized (myLock) { + if (postStartupActivities.isEmpty()) { + postStartupActivitiesPassed = true; + return; } } + runActivities(postStartupActivities, null, null); + DumbService dumbService = DumbService.getInstance(myProject); if (dumbService.isDumb()) { - // return here later to process newly submitted activities (if any) and set myPostStartupActivitiesPassed - DumbService.getInstance(myProject).unsafeRunWhenSmart(this); + // return here later to process newly submitted activities (if any) and set postStartupActivitiesPassed + dumbService.unsafeRunWhenSmart(this); } else { postStartupActivitiesPassed = true; } } }); - - //noinspection TestOnlyProblems - if (!myProject.isDisposed() && !ProjectManagerImpl.isLight(myProject)) { - scheduleBackgroundPostStartupActivities(); - } - } - - private @NotNull List takeDumbUnawareStartupActivities() { - synchronized (myLock) { - if (myNotDumbAwarePostStartupActivities.isEmpty()) { - return Collections.emptyList(); - } - - List result = new ArrayList<>(myNotDumbAwarePostStartupActivities); - myNotDumbAwarePostStartupActivities.clear(); - return result; - } } private void runActivities(@NotNull Deque activities, @Nullable ProgressIndicator indicator, @Nullable String activityName) { - if (activities.isEmpty()) { - return; + synchronized (myLock) { + if (activities.isEmpty()) { + return; + } } Activity activity = activityName == null ? null : StartUpMeasurer.startMainActivity(activityName); @@ -407,10 +380,6 @@ public class StartupManagerImpl extends StartupManagerEx { } private void scheduleBackgroundPostStartupActivities() { - if (myProject.isDisposed() || ApplicationManager.getApplication().isUnitTestMode()) { - return; - } - ScheduledFuture scheduledFuture = AppExecutorUtil.getAppScheduledExecutorService().schedule(() -> { if (myProject.isDisposed()) { return; @@ -469,12 +438,12 @@ public class StartupManagerImpl extends StartupManagerEx { return; } - registerPostStartupDumbAwareActivity(() -> { + runAfterOpened(() -> { if (DumbService.isDumbAware(action)) { runActivity(action); } else { - runDumbUnawareActivity(DumbService.getInstance(myProject), action); + DumbService.getInstance(myProject).unsafeRunWhenSmart(action); } }); }, ModalityState.NON_MODAL, myProject.getDisposed()); @@ -487,7 +456,7 @@ public class StartupManagerImpl extends StartupManagerEx { if (!postStartupActivitiesPassed) { synchronized (myLock) { if (!postStartupActivitiesPassed) { - myDumbAwarePostStartupActivities.add(runnable); + postStartupActivities.add(runnable); return; } } @@ -496,18 +465,11 @@ public class StartupManagerImpl extends StartupManagerEx { runnable.run(); } - private void runDumbUnawareActivity(@NotNull DumbService dumbService, @NotNull Runnable action) { - GuiUtils.invokeLaterIfNeeded(() -> { - dumbService.unsafeRunWhenSmart(action); - }, ModalityState.NON_MODAL, myProject.getDisposed()); - } - @TestOnly public synchronized void prepareForNextTest() { synchronized (myLock) { - myStartupActivities.clear(); - myDumbAwarePostStartupActivities.clear(); - myNotDumbAwarePostStartupActivities.clear(); + startupActivities.clear(); + postStartupActivities.clear(); } } @@ -515,9 +477,8 @@ public class StartupManagerImpl extends StartupManagerEx { public synchronized void checkCleared() { try { synchronized (myLock) { - assert myStartupActivities.isEmpty() : "Activities: " + myStartupActivities; - assert myDumbAwarePostStartupActivities.isEmpty() : "DumbAware Post Activities: " + myDumbAwarePostStartupActivities; - assert myNotDumbAwarePostStartupActivities.isEmpty() : "Post Activities: " + myNotDumbAwarePostStartupActivities; + assert startupActivities.isEmpty() : "Activities: " + startupActivities; + assert postStartupActivities.isEmpty() : "DumbAware Post Activities: " + postStartupActivities; } } finally { diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java index fb7a4fe1a3c7..5d30b5b50cb7 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java @@ -1403,7 +1403,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Persis // extends/cuts number of opened tabs. Also updates location of tabs connection.subscribe(UISettingsListener.TOPIC, new MyUISettingsListener()); - StartupManager.getInstance(myProject).registerPostStartupDumbAwareActivity(() -> { + StartupManager.getInstance(myProject).runAfterOpened(() -> { if (myProject.isDisposed()) { return; } diff --git a/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java b/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java index 2050e54b35a0..119777d46e03 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java @@ -216,7 +216,13 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica } } - runnable.run(); + Application app = ApplicationManager.getApplication(); + if (app.isDispatchThread()) { + runnable.run(); + } + else { + app.invokeLater(() -> unsafeRunWhenSmart(runnable), ModalityState.NON_MODAL, myProject.getDisposed()); + } } @Override diff --git a/platform/platform-impl/src/com/intellij/openapi/project/TrackedEdtActivityService.java b/platform/platform-impl/src/com/intellij/openapi/project/TrackedEdtActivityService.java index 054d174f30ce..f3e7295751e7 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/TrackedEdtActivityService.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/TrackedEdtActivityService.java @@ -1,7 +1,6 @@ // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.openapi.project; -import com.intellij.openapi.application.Application; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.progress.ProcessCanceledException; @@ -34,7 +33,7 @@ final class TrackedEdtActivityService { } } - void invokeLater(@NotNull Runnable action) { + private void invokeLater(@NotNull Runnable action) { new TrackedEdtActivity(action).invokeLater(); } @@ -90,10 +89,8 @@ final class TrackedEdtActivityService { } void invokeLaterAfterProjectInitialized() { - StartupManager startupManager = StartupManager.getInstance(myProject); - startupManager.runWhenProjectIsInitialized((DumbAwareRunnable)() -> { - Application app = ApplicationManager.getApplication(); - app.invokeLater(this, myDumbStartModality, getProjectActivityExpirationCondition()); + StartupManager.getInstance(myProject).runWhenProjectIsInitialized((DumbAwareRunnable)() -> { + ApplicationManager.getApplication().invokeLater(this, myDumbStartModality, getProjectActivityExpirationCondition()); }); } diff --git a/platform/platform-impl/src/com/intellij/platform/PlatformProjectOpenProcessor.kt b/platform/platform-impl/src/com/intellij/platform/PlatformProjectOpenProcessor.kt index a929c5af6d3e..69a841146393 100644 --- a/platform/platform-impl/src/com/intellij/platform/PlatformProjectOpenProcessor.kt +++ b/platform/platform-impl/src/com/intellij/platform/PlatformProjectOpenProcessor.kt @@ -373,7 +373,7 @@ private fun checkExistingProjectOnOpen(projectToClose: Project, callback: Projec } private fun openFileFromCommandLine(project: Project, file: Path, line: Int, column: Int) { - StartupManager.getInstance(project).registerPostStartupDumbAwareActivity { + StartupManager.getInstance(project).runAfterOpened { ApplicationManager.getApplication().invokeLater(Runnable { if (project.isDisposed || !Files.exists(file)) { return@Runnable diff --git a/platform/platform-tests/testSrc/com/intellij/ide/StartupManagerTest.kt b/platform/platform-tests/testSrc/com/intellij/ide/StartupManagerTest.kt index ccb85671bc87..4e83ff5bb1d8 100644 --- a/platform/platform-tests/testSrc/com/intellij/ide/StartupManagerTest.kt +++ b/platform/platform-tests/testSrc/com/intellij/ide/StartupManagerTest.kt @@ -2,16 +2,13 @@ package com.intellij.ide import com.intellij.ide.startup.impl.StartupManagerImpl -import com.intellij.openapi.project.DumbAwareRunnable import com.intellij.openapi.project.DumbService import com.intellij.openapi.project.DumbServiceImpl import com.intellij.openapi.project.ex.ProjectManagerEx -import com.intellij.testFramework.ApplicationRule -import com.intellij.testFramework.PlatformTestUtil +import com.intellij.openapi.startup.StartupActivity +import com.intellij.testFramework.* import com.intellij.testFramework.assertions.Assertions.assertThat -import com.intellij.testFramework.createHeavyProject import com.intellij.testFramework.rules.InMemoryFsRule -import com.intellij.testFramework.runInEdtAndWait import org.junit.ClassRule import org.junit.Rule import org.junit.Test @@ -38,23 +35,23 @@ class StartupManagerTest { val startupManager = StartupManagerImpl.getInstance(project) as StartupManagerImpl assertThat(startupManager.postStartupActivityPassed()).isFalse() + val done = CountDownLatch(1) val dumbService = DumbService.getInstance(project) as DumbServiceImpl - startupManager.registerPostStartupActivity(DumbAwareRunnable { + ExtensionTestUtil.maskExtensions(StartupActivity.POST_STARTUP_ACTIVITY, listOf(StartupActivity.DumbAware { runInEdtAndWait { dumbService.isDumb = true } assertThat(dumbService.isDumb).isTrue() - }) + }, StartupActivity.DumbAware { + startupManager.runAfterOpened { + assertThat(dumbService.isDumb).isTrue() + done.countDown() + } + }), project, fireEvents = false) assertThat(startupManager.postStartupActivityPassed()).isFalse() ProjectManagerEx.getInstanceEx().openProject(project) - - val done = CountDownLatch(1) - startupManager.runAfterOpened { - assertThat(dumbService.isDumb).isTrue() - done.countDown() - } done.await(1, TimeUnit.SECONDS) } finally { diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index f4a1a8089ed7..a9c2ca255bf5 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -34,8 +34,6 @@ import com.intellij.find.impl.FindManagerImpl; import com.intellij.ide.IdeEventQueue; import com.intellij.ide.actions.searcheverywhere.ClassSearchEverywhereContributor; import com.intellij.ide.actions.searcheverywhere.SearchEverywhereContributor; -import com.intellij.ide.startup.StartupManagerEx; -import com.intellij.ide.startup.impl.StartupManagerImpl; import com.intellij.ide.structureView.StructureViewBuilder; import com.intellij.ide.structureView.newStructureView.StructureViewComponent; import com.intellij.ide.util.scopeChooser.ScopeDescriptor; @@ -1198,7 +1196,6 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig DaemonCodeAnalyzerSettings.getInstance().setImportHintEnabled(false); ensureIndexesUpToDate(getProject()); - ((StartupManagerImpl)StartupManagerEx.getInstanceEx(getProject())).runPostStartupActivitiesRegisteredDynamically(); CodeStyle.setTemporarySettings(getProject(), CodeStyle.createTestSettings()); IdeaTestExecutionPolicy policy = IdeaTestExecutionPolicy.current(); diff --git a/platform/util/src/com/intellij/diagnostic/StartUpMeasurer.java b/platform/util/src/com/intellij/diagnostic/StartUpMeasurer.java index 3dc42157750f..b5b12600f945 100644 --- a/platform/util/src/com/intellij/diagnostic/StartUpMeasurer.java +++ b/platform/util/src/com/intellij/diagnostic/StartUpMeasurer.java @@ -30,9 +30,6 @@ public final class StartUpMeasurer { public static final String REGISTER_COMPONENTS_SUFFIX = "component registration"; public static final String CREATE_COMPONENTS_SUFFIX = "component creation"; - public static final String PROJECT_STARTUP = "project startup"; - - public static final String PROJECT_DUMB_POST_STARTUP = "project dumb post-startup"; public static final String PROJECT_DUMB_POST_START_UP_ACTIVITIES = "project post-startup dumb-aware activities"; public static final String EDITOR_RESTORING = "editor restoring"; public static final String EDITOR_RESTORING_TILL_PAINT = "editor restoring till paint"; diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/FileStatusManagerImpl.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/FileStatusManagerImpl.java index 1d9420316536..ba12a543e8db 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/FileStatusManagerImpl.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/FileStatusManagerImpl.java @@ -86,10 +86,7 @@ public final class FileStatusManagerImpl extends FileStatusManager implements Di projectBus.subscribe(ProjectLevelVcsManager.VCS_CONFIGURATION_CHANGED, this::fileStatusesChanged); if (!project.isDefault()) { - StartupManager startManager = StartupManager.getInstance(project); - if (!startManager.postStartupActivityPassed()) { - startManager.registerPostStartupDumbAwareActivity(this::fileStatusesChanged); - } + StartupManager.getInstance(project).runAfterOpened(this::fileStatusesChanged); } FileStatusProvider.EP_NAME.addChangeListener(myProject, this::fileStatusesChanged, project); diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnTestCase.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnTestCase.java index d8f014529432..a524cbc864ad 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnTestCase.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnTestCase.java @@ -2,14 +2,12 @@ package org.jetbrains.idea.svn; import com.intellij.execution.process.ProcessOutput; -import com.intellij.ide.startup.impl.StartupManagerImpl; import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.command.undo.UndoManager; import com.intellij.openapi.progress.EmptyProgressIndicator; -import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.TestDialog; import com.intellij.openapi.util.SystemInfo; @@ -135,7 +133,6 @@ public abstract class SvnTestCase extends AbstractJunitVcsTestCase { vcs = SvnVcs.getInstance(myProject); myGate = new MockChangeListManagerGate(changeListManager); - ((StartupManagerImpl)StartupManager.getInstance(myProject)).runPostStartupActivitiesRegisteredDynamically(); refreshSvnMappingsSynchronously(); refreshChanges(); } @@ -374,7 +371,7 @@ public abstract class SvnTestCase extends AbstractJunitVcsTestCase { }); } - protected void withDisabledChangeListManager(@NotNull ThrowableRunnable action) throws Exception { + private void withDisabledChangeListManager(@NotNull ThrowableRunnable action) throws Exception { changeListManager.waitUntilRefreshed(); changeListManager.forceStopInTestMode(); action.run(); @@ -387,7 +384,7 @@ public abstract class SvnTestCase extends AbstractJunitVcsTestCase { return new VcsDirectoryMapping(toSystemIndependentName(directory.getPath()), vcs.getName()); } - protected void createAnotherRepo() throws Exception { + private void createAnotherRepo() throws Exception { File repo = virtualToIoFile(myTempDirFixture.findOrCreateDir("anotherRepo")); copyDir(myRepoRoot, repo); myAnotherRepoUrl = (SystemInfo.isWindows ? "file:///" : "file://") + toSystemIndependentName(repo.getPath()); @@ -467,8 +464,8 @@ public abstract class SvnTestCase extends AbstractJunitVcsTestCase { runAndVerifyAcrossLocks(workingDir, myRunner, input, verifier, primitiveVerifier); } - public static void runAndVerifyAcrossLocks(File workingDir, final TestClientRunner runner, final String[] input, - final Processor verifier, final Processor primitiveVerifier) throws IOException { + private static void runAndVerifyAcrossLocks(File workingDir, final TestClientRunner runner, final String[] input, + final Processor verifier, final Processor primitiveVerifier) throws IOException { for (int i = 0; i < 5; i++) { final ProcessOutput output = runner.runClient("svn", null, workingDir, input); if (output.getExitCode() != 0 && !isEmptyOrSpaces(output.getStderr())) {