IJPL-173829 rdct: report host IDE info from the client's UpdateChecker

(cherry picked from commit a3187064115f7551d435a581682e21f4c5bccc7e)

GitOrigin-RevId: 3bdaec164b92a92b0e680d13307c526609d09ed0
This commit is contained in:
Aleksey Pivovarov
2025-01-07 17:40:30 +01:00
committed by intellij-monorepo-bot
parent b3bbc880e5
commit 98ef6fded6
6 changed files with 36 additions and 9 deletions

View File

@@ -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<String> 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;
}

View File

@@ -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 {

View File

@@ -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);
}
}

View File

@@ -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)

View File

@@ -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? {

View File

@@ -1162,6 +1162,8 @@
testServiceImplementation="com.intellij.openapi.updateSettings.impl.pluginsAdvertisement.HeadlessPluginAdvertiserServiceImpl"/>
<applicationService
serviceImplementation="com.intellij.openapi.updateSettings.impl.pluginsAdvertisement.GlobalIgnoredPluginSuggestionState"/>
<applicationService serviceInterface="com.intellij.openapi.updateSettings.impl.UpdateRequestParametersProvider"
serviceImplementation="com.intellij.openapi.updateSettings.impl.DefaultUpdateRequestParametersProvider"/>
<dependencyCollector kind="executable"
implementation="com.intellij.openapi.updateSettings.impl.pluginsAdvertisement.EnvironmentDependencyCollector"/>