diff options
author | Matthew Gharrity <gharrma@google.com> | 2020-08-24 14:32:51 -0700 |
---|---|---|
committer | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-08-24 22:45:51 +0000 |
commit | 3a6967e118442a395c28c32a6d30b340bc346e21 (patch) | |
tree | 1b730633e020c1596aa579252c4e183e9f798463 /analytics | |
parent | a23a5a32c084c9fcf62223654e00916d29ed5367 (diff) | |
download | idea-3a6967e118442a395c28c32a6d30b340bc346e21.tar.gz |
Change HighlightingStats into application service
Now, HighlightingStats is loaded on demand after the first highlighting
pass, and reports are sent each hour after that moment.
That way, no code needs to run on application startup.
Bug: not filed
Test: manually tested that HighlightingStats sends data on app close
Change-Id: Id849227a0529fb0a9b626b64f74a19c956284ca1
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 | 20 |
3 files changed, 13 insertions, 45 deletions
diff --git a/analytics/BUILD b/analytics/BUILD index 6f0e8566d6f..8450dfeede5 100644 --- a/analytics/BUILD +++ b/analytics/BUILD @@ -6,45 +6,9 @@ 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", @@ -53,7 +17,6 @@ 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 16862bc286a..ee3e75a2e2e 100644 --- a/analytics/analytics.iml +++ b/analytics/analytics.iml @@ -15,6 +15,5 @@ <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 0ae86b0da48..4b521064631 100644 --- a/analytics/src/com/android/tools/analytics/HighlightingStats.kt +++ b/analytics/src/com/android/tools/analytics/HighlightingStats.kt @@ -15,7 +15,6 @@ */ 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 @@ -29,12 +28,11 @@ 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.Service import com.intellij.openapi.editor.Document import com.intellij.openapi.fileEditor.FileDocumentManager -import com.intellij.openapi.util.Disposer import com.intellij.openapi.vfs.VirtualFile import org.HdrHistogram.Recorder import java.util.concurrent.ConcurrentHashMap @@ -44,15 +42,23 @@ import java.util.concurrent.TimeUnit * Tracks highlighting latency across file types. * To log an [AndroidStudioEvent] with the collected data, call [reportHighlightingStats]. */ -object HighlightingStats : AppLifecycleListener { - private const val MAX_LATENCY_MS = 10 * 60 * 1000 // Limit latencies to 10 minutes to ensure reasonable histogram size. +@Service +class HighlightingStats : Disposable { + companion object { + private const val MAX_LATENCY_MS = 10 * 60 * 1000 // Limit latencies to 10 minutes to ensure reasonable histogram size. - override fun appStarted() { + @JvmStatic + fun getInstance(): HighlightingStats { + return ApplicationManager.getApplication().getService(HighlightingStats::class.java) + } + } + + init { // Send reports hourly. JobScheduler.getScheduler().scheduleWithFixedDelay(this::reportHighlightingStats, 1, 1, TimeUnit.HOURS) } - override fun appWillBeClosed(isRestart: Boolean) { + override fun dispose() { // Send reports on application close. reportHighlightingStats() } |