diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateRequestParameters.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/DefaultUpdateRequestParametersProvider.java similarity index 86% rename from platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateRequestParameters.java rename to platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/DefaultUpdateRequestParametersProvider.java index 06372a774aa9..a4f7cc37ceab 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateRequestParameters.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/DefaultUpdateRequestParametersProvider.java @@ -1,4 +1,4 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.openapi.updateSettings.impl; import com.intellij.ide.util.PropertiesComponent; @@ -19,11 +19,16 @@ import java.util.LinkedHashMap; import static com.intellij.openapi.util.NullableLazyValue.lazyNullable; @ApiStatus.Internal -public final class UpdateRequestParameters { +public class DefaultUpdateRequestParametersProvider implements UpdateRequestParametersProvider { private static final NullableLazyValue ourMachineId = lazyNullable(() -> MachineIdManager.INSTANCE.getAnonymizedMachineId("JetBrainsUpdates")); - public static @NotNull Url amendUpdateRequest(@NotNull Url url) { + @Override + public @NotNull Url amendUpdateRequest(@NotNull Url url) { + return passDefaultParameters(url); + } + + public static @NotNull Url passDefaultParameters(@NotNull Url url) { if (URLUtil.FILE_PROTOCOL.equals(url.getScheme())) { return url; } diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateCheckerService.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateCheckerService.java index 385f499b00bf..f69014ef13e3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateCheckerService.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateCheckerService.java @@ -25,6 +25,7 @@ import com.intellij.openapi.util.text.HtmlChunk; import com.intellij.openapi.util.text.StringUtil; import com.intellij.platform.ide.customization.ExternalProductResourceUrls; import com.intellij.ui.ExperimentalUI; +import com.intellij.util.SystemProperties; import com.intellij.util.Url; import com.intellij.util.concurrency.AppExecutorUtil; import com.intellij.util.text.DateFormatUtil; @@ -87,7 +88,8 @@ class UpdateCheckerService { private void appStarted() { UpdateSettings settings = UpdateSettings.getInstance(); updateDefaultChannel(settings); - if (settings.isCheckNeeded() || settings.isPluginsCheckNeeded()) { + if (settings.isCheckNeeded() || settings.isPluginsCheckNeeded() || + SystemProperties.getBooleanProperty("ide.force.platform.update.check", false)) { scheduleFirstCheck(settings); } } @@ -130,7 +132,8 @@ class UpdateCheckerService { BuildNumber lastBuildChecked = BuildNumber.fromString(settings.getLastBuildChecked()); long timeSinceLastCheck = max(System.currentTimeMillis() - settings.getLastTimeChecked(), 0); - if (lastBuildChecked == null || currentBuild.compareTo(lastBuildChecked) > 0 || timeSinceLastCheck >= CHECK_INTERVAL_MS) { + if (lastBuildChecked == null || currentBuild.compareTo(lastBuildChecked) > 0 || timeSinceLastCheck >= CHECK_INTERVAL_MS || + SystemProperties.getBooleanProperty("ide.force.platform.update.check", false)) { checkUpdates(); } else { diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateRequestParametersProvider.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateRequestParametersProvider.java new file mode 100644 index 000000000000..40e0e67d05cd --- /dev/null +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateRequestParametersProvider.java @@ -0,0 +1,17 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.openapi.updateSettings.impl; + +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.util.Url; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +@ApiStatus.Internal +public interface UpdateRequestParametersProvider { + @NotNull Url amendUpdateRequest(@NotNull Url url); + + static @NotNull Url passUpdateParameters(@NotNull Url url) { + UpdateRequestParametersProvider provider = ApplicationManager.getApplication().getService(UpdateRequestParametersProvider.class); + return provider.amendUpdateRequest(url); + } +} diff --git a/platform/platform-impl/src/com/intellij/platform/ide/impl/customization/BaseJetBrainsExternalProductResourceUrls.kt b/platform/platform-impl/src/com/intellij/platform/ide/impl/customization/BaseJetBrainsExternalProductResourceUrls.kt index 59ea6084bc4e..739b62a5d15a 100644 --- a/platform/platform-impl/src/com/intellij/platform/ide/impl/customization/BaseJetBrainsExternalProductResourceUrls.kt +++ b/platform/platform-impl/src/com/intellij/platform/ide/impl/customization/BaseJetBrainsExternalProductResourceUrls.kt @@ -3,7 +3,7 @@ package com.intellij.platform.ide.impl.customization import com.intellij.openapi.application.ApplicationInfo import com.intellij.openapi.updateSettings.impl.PatchInfo -import com.intellij.openapi.updateSettings.impl.UpdateRequestParameters +import com.intellij.openapi.updateSettings.impl.UpdateRequestParametersProvider import com.intellij.openapi.util.BuildNumber import com.intellij.openapi.util.SystemInfo import com.intellij.platform.ide.customization.ExternalProductResourceUrls @@ -66,7 +66,7 @@ abstract class BaseJetBrainsExternalProductResourceUrls : ExternalProductResourc override val updateMetadataUrl: Url get() = System.getProperty("idea.updates.url", "https://www.jetbrains.com/updates/updates.xml") .let { Urls.newFromEncoded(it) } - .let { UpdateRequestParameters.amendUpdateRequest(it) } + .let { UpdateRequestParametersProvider.passUpdateParameters(it) } final override fun computePatchUrl(from: BuildNumber, to: BuildNumber): Url = computeCustomPatchDownloadUrl(from, to) diff --git a/platform/platform-impl/src/com/intellij/platform/ide/impl/customization/LegacyExternalProductResourceUrls.kt b/platform/platform-impl/src/com/intellij/platform/ide/impl/customization/LegacyExternalProductResourceUrls.kt index ce5905863998..30fd8d36b22e 100644 --- a/platform/platform-impl/src/com/intellij/platform/ide/impl/customization/LegacyExternalProductResourceUrls.kt +++ b/platform/platform-impl/src/com/intellij/platform/ide/impl/customization/LegacyExternalProductResourceUrls.kt @@ -3,7 +3,7 @@ package com.intellij.platform.ide.impl.customization import com.intellij.openapi.application.ApplicationInfo import com.intellij.openapi.application.ex.ApplicationInfoEx -import com.intellij.openapi.updateSettings.impl.UpdateRequestParameters +import com.intellij.openapi.updateSettings.impl.UpdateRequestParametersProvider import com.intellij.openapi.util.BuildNumber import com.intellij.openapi.util.SystemInfo import com.intellij.platform.ide.customization.ExternalProductResourceUrls @@ -25,7 +25,7 @@ class LegacyExternalProductResourceUrls : ExternalProductResourceUrls { return Urls.newFromEncoded(customUrl) } val baseUrl = ApplicationInfoEx.getInstanceEx().updateUrls?.checkingUrl ?: return null - return UpdateRequestParameters.amendUpdateRequest(Urls.newFromEncoded(baseUrl)) + return UpdateRequestParametersProvider.passUpdateParameters(Urls.newFromEncoded(baseUrl)) } override fun computePatchUrl(from: BuildNumber, to: BuildNumber): Url? { diff --git a/platform/platform-resources/src/META-INF/PlatformExtensions.xml b/platform/platform-resources/src/META-INF/PlatformExtensions.xml index 3a3d0992caf6..e334dc0239d5 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensions.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensions.xml @@ -1162,6 +1162,8 @@ testServiceImplementation="com.intellij.openapi.updateSettings.impl.pluginsAdvertisement.HeadlessPluginAdvertiserServiceImpl"/> +