diff options
author | Nazmul Idris <nazmul@google.com> | 2020-08-21 17:17:46 -0700 |
---|---|---|
committer | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-08-22 01:37:25 +0000 |
commit | aed56355248f5c9ce325c0f262db33887edd4e12 (patch) | |
tree | a9092ef06a4e9e315639b97b2bbdcb0b2e6cd01d /analytics | |
parent | 035e1bc0b9ece71d73d73d4f77e4d7c485e36bf7 (diff) | |
download | idea-aed56355248f5c9ce325c0f262db33887edd4e12.tar.gz |
Make HighlightingStats dynamic
Part of the Dynamic Plugin migration effort for 2020.2 merge.
More info:
- http://go/idea-dynamic-plugins
- https://jetbrains.org/intellij/sdk/docs/basics/plugin_structure/plugin_components.html
Bug: 161932727
Change-Id: I5016addec4688bd77631ba33ea7b058beb2fa772
Diffstat (limited to 'analytics')
-rw-r--r-- | analytics/BUILD | 37 | ||||
-rw-r--r-- | analytics/analytics.iml | 1 | ||||
-rw-r--r-- | analytics/src/com/android/tools/analytics/HighlightingStats.kt | 15 |
3 files changed, 48 insertions, 5 deletions
diff --git a/analytics/BUILD b/analytics/BUILD index 8450dfeede5..6f0e8566d6f 100644 --- a/analytics/BUILD +++ b/analytics/BUILD @@ -6,9 +6,45 @@ iml_module( srcs = ["src"], iml_files = ["analytics.iml"], lint_baseline = "//tools/base/lint:studio-checks/empty_baseline.xml", + # do not sort: must match IML order + test_runtime_deps = [ + "//tools/idea/xml/dom-impl:intellij.xml.dom.impl", + "//tools/idea/platform/testFramework/extensions:intellij.platform.testExtensions", + "//tools/idea/images:intellij.platform.images", + ], test_srcs = ["testSrc"], visibility = ["//visibility:public"], # do not sort: must match IML order + runtime_deps = [ + "//tools/idea/xml/dom-openapi:intellij.xml.dom", + "//tools/idea/platform/usageView:intellij.platform.usageView", + "//tools/idea/platform/execution-impl:intellij.platform.execution.impl", + "//tools/idea/platform/inspect:intellij.platform.inspect", + "//tools/idea/platform/credential-store:intellij.platform.credentialStore", + "//tools/idea/xml/xml-structure-view-impl:intellij.xml.structureView.impl", + "//tools/idea/spellchecker:intellij.spellchecker", + "//tools/idea/platform/lvcs-impl:intellij.platform.lvcs.impl", + "//tools/idea/platform/testRunner:intellij.platform.testRunner", + "//tools/idea/platform/statistics/devkit:intellij.platform.statistics.devkit", + "//tools/idea/platform/workspaceModel/ide:intellij.platform.workspaceModel.ide", + "//tools/idea/platform/external-system-impl:intellij.platform.externalSystem.impl", + "//tools/idea/platform/built-in-server:intellij.platform.builtInServer.impl", + "//tools/idea/platform/tasks-platform-impl:intellij.platform.tasks.impl", + "//tools/idea/.idea/libraries:delight-rhino-sandbox", + "//tools/idea/.idea/libraries:rhino", + "//tools/idea/.idea/libraries:netty-handler-proxy", + "//tools/idea/platform/diagnostic:intellij.platform.diagnostic", + "//tools/idea/.idea/libraries:error-prone-annotations", + "//tools/idea/.idea/libraries:javax.activation", + "//tools/idea/.idea/libraries:jaxb-api", + "//tools/idea/.idea/libraries:jaxb-runtime", + "//tools/idea/.idea/libraries:javax.annotation-api", + "//tools/idea/.idea/libraries:org.codehaus.groovy_groovy-jsr223", + "//tools/idea/.idea/libraries:org.codehaus.groovy_groovy-json", + "//tools/idea/.idea/libraries:org.codehaus.groovy_groovy-templates", + "//tools/idea/.idea/libraries:org.codehaus.groovy_groovy-xml", + ], + # do not sort: must match IML order deps = [ "//tools/idea/.idea/libraries:kotlin-stdlib-jdk8", "//tools/idea/.idea/libraries:studio-analytics-proto", @@ -17,6 +53,7 @@ iml_module( "//tools/idea/.idea/libraries:JUnit4[test]", "//tools/idea/.idea/libraries:protobuf", "//tools/idea/platform/core-api:intellij.platform.core[module]", + "//tools/idea/platform/platform-impl:intellij.platform.ide.impl[module]", ], ) diff --git a/analytics/analytics.iml b/analytics/analytics.iml index ee3e75a2e2e..16862bc286a 100644 --- a/analytics/analytics.iml +++ b/analytics/analytics.iml @@ -15,5 +15,6 @@ <orderEntry type="library" scope="TEST" name="JUnit4" level="project" /> <orderEntry type="library" name="protobuf" level="project" /> <orderEntry type="module" module-name="intellij.platform.core" /> + <orderEntry type="module" module-name="intellij.platform.ide.impl" /> </component> </module>
\ No newline at end of file diff --git a/analytics/src/com/android/tools/analytics/HighlightingStats.kt b/analytics/src/com/android/tools/analytics/HighlightingStats.kt index 69ca29c2c20..0ae86b0da48 100644 --- a/analytics/src/com/android/tools/analytics/HighlightingStats.kt +++ b/analytics/src/com/android/tools/analytics/HighlightingStats.kt @@ -15,6 +15,7 @@ */ package com.android.tools.analytics +import com.android.tools.analytics.HighlightingStats.reportHighlightingStats import com.google.wireless.android.sdk.stats.AndroidStudioEvent import com.google.wireless.android.sdk.stats.EditorFileType import com.google.wireless.android.sdk.stats.EditorFileType.GROOVY @@ -28,9 +29,9 @@ import com.google.wireless.android.sdk.stats.EditorFileType.UNKNOWN import com.google.wireless.android.sdk.stats.EditorFileType.XML import com.google.wireless.android.sdk.stats.EditorHighlightingStats import com.intellij.concurrency.JobScheduler +import com.intellij.ide.AppLifecycleListener import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.components.BaseComponent import com.intellij.openapi.editor.Document import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.util.Disposer @@ -43,13 +44,17 @@ import java.util.concurrent.TimeUnit * Tracks highlighting latency across file types. * To log an [AndroidStudioEvent] with the collected data, call [reportHighlightingStats]. */ -object HighlightingStats : BaseComponent { +object HighlightingStats : AppLifecycleListener { private const val MAX_LATENCY_MS = 10 * 60 * 1000 // Limit latencies to 10 minutes to ensure reasonable histogram size. - override fun initComponent() { - // Send reports hourly and on application close. + override fun appStarted() { + // Send reports hourly. JobScheduler.getScheduler().scheduleWithFixedDelay(this::reportHighlightingStats, 1, 1, TimeUnit.HOURS) - Disposer.register(ApplicationManager.getApplication(), Disposable(this::reportHighlightingStats)) + } + + override fun appWillBeClosed(isRestart: Boolean) { + // Send reports on application close. + reportHighlightingStats() } /** |