Skip to content

Commit ceb5fe4

Browse files
authored
[CQ] migrate post-startup Startup to Project activities (#8200)
`StartupActivity` is marked as obsolete with `ProjectActivity` identified as the path forward. This introduces a `FlutterProjectActivity` that does some rudimentary error handling as well. See #7718 and #8100 --- - [x] I’ve reviewed the contributor guide and applied the relevant portions to this PR. <details> <summary>Contribution guidelines:</summary><br> - See our [contributor guide]([https://github.com/dart-lang/sdk/blob/main/CONTRIBUTING.md](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview) for general expectations for PRs. - Larger or significant changes should be discussed in an issue before creating a PR. - Dart contributions to our repos should follow the [Dart style guide](https://dart.dev/guides/language/effective-dart) and use `dart format`. - Java and Kotlin contributions should strive to follow Java and Kotlin best practices ([discussion](#8098)). </details>
1 parent 53ddcc6 commit ceb5fe4

File tree

3 files changed

+29
-6
lines changed

3 files changed

+29
-6
lines changed

flutter-idea/src/io/flutter/FlutterInitializer.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import com.intellij.openapi.project.ModuleListener;
2626
import com.intellij.openapi.project.Project;
2727
import com.intellij.openapi.roots.ProjectRootManager;
28-
import com.intellij.openapi.startup.StartupActivity;
2928
import com.intellij.openapi.vfs.VirtualFile;
3029
import com.intellij.util.messages.MessageBusConnection;
3130
import com.jetbrains.lang.dart.ide.toolingDaemon.DartToolingDaemonService;
@@ -68,7 +67,7 @@
6867
* @see io.flutter.project.FlutterProjectOpenProcessor for additional actions that
6968
* may run when a project is being imported.
7069
*/
71-
public class FlutterInitializer implements StartupActivity {
70+
public class FlutterInitializer extends FlutterProjectActivity {
7271
private static final @NotNull Logger LOG = Logger.getInstance(FlutterInitializer.class);
7372

7473
private boolean toolWindowsInitialized = false;
@@ -78,7 +77,7 @@ public class FlutterInitializer implements StartupActivity {
7877
private @NotNull AtomicLong lastScheduledThemeChangeTime = new AtomicLong();
7978

8079
@Override
81-
public void runActivity(@NotNull Project project) {
80+
public void executeProjectStartup(@NotNull Project project) {
8281
// Disable the 'Migrate Project to Gradle' notification.
8382
FlutterUtils.disableGradleProjectMigrationNotification(project);
8483

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Copyright 2025 The Chromium Authors. All rights reserved.
3+
* Use of this source code is governed by a BSD-style license that can be
4+
* found in the LICENSE file.
5+
*/
6+
7+
package io.flutter
8+
9+
import com.intellij.openapi.diagnostic.Logger
10+
import com.intellij.openapi.project.Project
11+
import com.intellij.openapi.startup.ProjectActivity
12+
13+
abstract class FlutterProjectActivity : ProjectActivity {
14+
15+
protected val log = Logger.getInstance(this::class.java)
16+
abstract fun executeProjectStartup(project: Project)
17+
18+
override suspend fun execute(project: Project) {
19+
runCatching {
20+
executeProjectStartup(project)
21+
}.onFailure {
22+
log.error(it)
23+
}
24+
}
25+
}

flutter-idea/src/io/flutter/ProjectOpenActivity.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import com.intellij.openapi.project.Project;
2121
import com.intellij.openapi.project.ProjectType;
2222
import com.intellij.openapi.project.ProjectTypeService;
23-
import com.intellij.openapi.startup.StartupActivity;
2423
import com.intellij.openapi.ui.Messages;
2524
import icons.FlutterIcons;
2625
import io.flutter.bazel.WorkspaceCache;
@@ -40,14 +39,14 @@
4039
*
4140
* @see FlutterInitializer for actions that run later.
4241
*/
43-
public class ProjectOpenActivity implements StartupActivity, DumbAware {
42+
public class ProjectOpenActivity extends FlutterProjectActivity implements DumbAware {
4443
public static final ProjectType FLUTTER_PROJECT_TYPE = new ProjectType("io.flutter");
4544

4645
public ProjectOpenActivity() {
4746
}
4847

4948
@Override
50-
public void runActivity(@NotNull Project project) {
49+
public void executeProjectStartup(@NotNull Project project) {
5150
// TODO(helinx): We don't have a good way to check whether a Bazel project is using Flutter. Look into whether we can
5251
// build a better Flutter Bazel check into `declaresFlutter` so we don't need the second condition.
5352
if (!FlutterModuleUtils.declaresFlutter(project) && !WorkspaceCache.getInstance(project).isBazel()) {

0 commit comments

Comments
 (0)