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 extends Runnable> 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 extends Exception> action) throws Exception {
+ private void withDisabledChangeListManager(@NotNull ThrowableRunnable extends Exception> 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())) {