summaryrefslogtreecommitdiff
path: root/analytics
diff options
context:
space:
mode:
authorNazmul Idris <nazmul@google.com>2020-08-21 17:17:46 -0700
committerTreeHugger Robot <treehugger-gerrit@google.com>2020-08-22 01:37:25 +0000
commitaed56355248f5c9ce325c0f262db33887edd4e12 (patch)
treea9092ef06a4e9e315639b97b2bbdcb0b2e6cd01d /analytics
parent035e1bc0b9ece71d73d73d4f77e4d7c485e36bf7 (diff)
downloadidea-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/BUILD37
-rw-r--r--analytics/analytics.iml1
-rw-r--r--analytics/src/com/android/tools/analytics/HighlightingStats.kt15
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()
}
/**