aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHector Dearman <hjd@google.com>2023-07-04 09:25:02 +0100
committerHector Dearman <hjd@google.com>2023-07-04 14:51:56 +0000
commitf2b9f8869c63ede7ad40bc69f81f02aceedf1f36 (patch)
treefdb930c4e51d5d7d1549facb662d0488adc34bb4
parentba396db0bbe857326832e35d5c91fb5e520f5d28 (diff)
downloadperfetto-f2b9f8869c63ede7ad40bc69f81f02aceedf1f36.tar.gz
ui: Move plugins_api.ts to a new public/ directory
We want to enforce that plugins use a narrow API, this makes it: - easier to write plugins (everything you need is in one place) - easier to maintain plugins (since the API to support is narrow) - possible to deal with plugins which crash etc. As a start for this move plugins_api.ts to a new public/ directory where the plugins API will live. In concrete terms we want to get to a point where: - core/ does not depend on plugins/ - plugins/ does not depend *directly* on core/ but may depend indirectly on core/ via public/ See also go/perfetto-ui-roadmap > 'Code layout'. Change-Id: I5937dbf875327a874c590dcaf16cda9070edb3d5
-rwxr-xr-xpython/tools/check_imports.py4
-rw-r--r--ui/src/common/plugins.ts6
-rw-r--r--ui/src/common/plugins_unittest.ts3
-rw-r--r--ui/src/plugins/dev.perfetto.ExamplePlugin/index.ts2
-rw-r--r--ui/src/public/index.ts (renamed from ui/src/common/plugin_api.ts)3
-rw-r--r--ui/src/tracks/actual_frames/index.ts2
-rw-r--r--ui/src/tracks/android_log/index.ts5
-rw-r--r--ui/src/tracks/async_slices/index.ts2
-rw-r--r--ui/src/tracks/chrome_scroll_jank/index.ts4
-rw-r--r--ui/src/tracks/chrome_slices/index.ts2
-rw-r--r--ui/src/tracks/counter/index.ts18
-rw-r--r--ui/src/tracks/cpu_freq/index.ts2
-rw-r--r--ui/src/tracks/cpu_profile/index.ts2
-rw-r--r--ui/src/tracks/cpu_slices/index.ts2
-rw-r--r--ui/src/tracks/custom_sql_table_slices/index.ts2
-rw-r--r--ui/src/tracks/debug/index.ts3
-rw-r--r--ui/src/tracks/expected_frames/index.ts2
-rw-r--r--ui/src/tracks/ftrace/index.ts8
-rw-r--r--ui/src/tracks/generic_slice_track/index.ts2
-rw-r--r--ui/src/tracks/heap_profile/index.ts2
-rw-r--r--ui/src/tracks/null_track/index.ts2
-rw-r--r--ui/src/tracks/perf_samples_profile/index.ts2
-rw-r--r--ui/src/tracks/process_scheduling/index.ts3
-rw-r--r--ui/src/tracks/process_summary/index.ts5
-rw-r--r--ui/src/tracks/thread_state/index.ts2
-rw-r--r--ui/src/tracks/thread_state_v2/index.ts7
-rw-r--r--ui/src/tracks/visualised_args/index.ts2
27 files changed, 46 insertions, 53 deletions
diff --git a/python/tools/check_imports.py b/python/tools/check_imports.py
index 5c921f91b..b4a1a32ee 100755
--- a/python/tools/check_imports.py
+++ b/python/tools/check_imports.py
@@ -117,12 +117,12 @@ RULES = [
NoDirectDep(
r'/plugins/.*',
r'/core/.*',
- 'instead plugins should depend on the API exposed at ui/src/api.',
+ 'instead plugins should depend on the API exposed at ui/src/public.',
),
#NoDirectDep(
# r'/tracks/.*',
# r'/core/.*',
- # 'instead tracks should depend on the API exposed at ui/src/api.',
+ # 'instead tracks should depend on the API exposed at ui/src/public.',
#),
NoDep(
r'/core/.*',
diff --git a/ui/src/common/plugins.ts b/ui/src/common/plugins.ts
index 5a362c792..ba45aac92 100644
--- a/ui/src/common/plugins.ts
+++ b/ui/src/common/plugins.ts
@@ -21,15 +21,15 @@ import {
import {Store} from '../frontend/store';
import {TrackCreator} from '../frontend/track';
import {trackRegistry} from '../frontend/track_registry';
-
-import {Engine} from './engine';
import {
EngineProxy,
PluginContext,
PluginInfo,
TrackInfo,
TrackProvider,
-} from './plugin_api';
+} from '../public';
+
+import {Engine} from './engine';
import {Registry} from './registry';
import {State} from './state';
diff --git a/ui/src/common/plugins_unittest.ts b/ui/src/common/plugins_unittest.ts
index 1922bb7ad..03aca4f8d 100644
--- a/ui/src/common/plugins_unittest.ts
+++ b/ui/src/common/plugins_unittest.ts
@@ -12,7 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import {PluginContext} from './plugin_api';
+import {PluginContext} from '../public';
+
import {PluginManager, PluginRegistry} from './plugins';
test('can activate plugin', () => {
diff --git a/ui/src/plugins/dev.perfetto.ExamplePlugin/index.ts b/ui/src/plugins/dev.perfetto.ExamplePlugin/index.ts
index 3305a90f6..09400e504 100644
--- a/ui/src/plugins/dev.perfetto.ExamplePlugin/index.ts
+++ b/ui/src/plugins/dev.perfetto.ExamplePlugin/index.ts
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import {EngineProxy, PluginContext} from '../../common/plugin_api';
import {TracePlugin} from '../../common/plugins';
import {Store} from '../../frontend/store';
+import {EngineProxy, PluginContext} from '../../public';
interface ExampleState {
counter: number;
diff --git a/ui/src/common/plugin_api.ts b/ui/src/public/index.ts
index 53e09a2e1..fc1040571 100644
--- a/ui/src/common/plugin_api.ts
+++ b/ui/src/public/index.ts
@@ -13,11 +13,10 @@
// limitations under the License.
import {EngineProxy} from '../common/engine';
+import {TracePluginFactory} from '../common/plugins';
import {TrackControllerFactory} from '../controller/track_controller';
import {TrackCreator} from '../frontend/track';
-import {TracePluginFactory} from './plugins';
-
export {EngineProxy} from '../common/engine';
export {
LONG,
diff --git a/ui/src/tracks/actual_frames/index.ts b/ui/src/tracks/actual_frames/index.ts
index d01abc1fc..dc1d84d45 100644
--- a/ui/src/tracks/actual_frames/index.ts
+++ b/ui/src/tracks/actual_frames/index.ts
@@ -13,12 +13,12 @@
// limitations under the License.
import {BigintMath as BIMath} from '../../base/bigint_math';
-import {PluginContext} from '../../common/plugin_api';
import {LONG, LONG_NULL, NUM, STR} from '../../common/query_result';
import {TPDuration, TPTime} from '../../common/time';
import {TrackData} from '../../common/track_data';
import {TrackController} from '../../controller/track_controller';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
import {ChromeSliceTrack} from '../chrome_slices';
export const ACTUAL_FRAMES_SLICE_TRACK_KIND = 'ActualFramesSliceTrack';
diff --git a/ui/src/tracks/android_log/index.ts b/ui/src/tracks/android_log/index.ts
index 30d69136d..83c7befe1 100644
--- a/ui/src/tracks/android_log/index.ts
+++ b/ui/src/tracks/android_log/index.ts
@@ -12,17 +12,16 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import {PluginContext} from '../../common/plugin_api';
import {LONG, NUM} from '../../common/query_result';
import {TPDuration, TPTime} from '../../common/time';
-import {TrackData} from '../../common/track_data';
-import {LIMIT} from '../../common/track_data';
+import {LIMIT, TrackData} from '../../common/track_data';
import {
TrackController,
} from '../../controller/track_controller';
import {checkerboardExcept} from '../../frontend/checkerboard';
import {globals} from '../../frontend/globals';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
export const ANDROID_LOGS_TRACK_KIND = 'AndroidLogTrack';
diff --git a/ui/src/tracks/async_slices/index.ts b/ui/src/tracks/async_slices/index.ts
index c84e2b929..bd98980cf 100644
--- a/ui/src/tracks/async_slices/index.ts
+++ b/ui/src/tracks/async_slices/index.ts
@@ -13,7 +13,6 @@
// limitations under the License.
import {BigintMath as BIMath} from '../../base/bigint_math';
-import {PluginContext} from '../../common/plugin_api';
import {LONG, LONG_NULL, NUM, STR} from '../../common/query_result';
import {TPDuration, TPTime} from '../../common/time';
import {TrackData} from '../../common/track_data';
@@ -21,6 +20,7 @@ import {
TrackController,
} from '../../controller/track_controller';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
import {ChromeSliceTrack} from '../chrome_slices';
export const ASYNC_SLICE_TRACK_KIND = 'AsyncSliceTrack';
diff --git a/ui/src/tracks/chrome_scroll_jank/index.ts b/ui/src/tracks/chrome_scroll_jank/index.ts
index 9147972ce..b6c816d82 100644
--- a/ui/src/tracks/chrome_scroll_jank/index.ts
+++ b/ui/src/tracks/chrome_scroll_jank/index.ts
@@ -17,8 +17,9 @@ import {Engine} from '../../common/engine';
import {featureFlags} from '../../common/feature_flags';
import {
PluginContext,
-} from '../../common/plugin_api';
+} from '../../public';
+import {ChromeTasksScrollJankTrack} from './chrome_tasks_scroll_jank_track';
import {addLatencyTracks, EventLatencyTrack} from './event_latency_track';
import {TopLevelScrollTrack} from './scroll_track';
import {addTopLevelJankTrack, TopLevelJankTrack} from './top_level_jank_track';
@@ -26,7 +27,6 @@ import {
addJankyLatenciesTrack,
TopLevelEventLatencyTrack,
} from './top_level_janky_event_latencies_track';
-import {ChromeTasksScrollJankTrack} from './chrome_tasks_scroll_jank_track';
export {Data} from '../chrome_slices';
diff --git a/ui/src/tracks/chrome_slices/index.ts b/ui/src/tracks/chrome_slices/index.ts
index d09a5526b..a9f068e00 100644
--- a/ui/src/tracks/chrome_slices/index.ts
+++ b/ui/src/tracks/chrome_slices/index.ts
@@ -17,7 +17,6 @@ import {Actions} from '../../common/actions';
import {cropText, drawIncompleteSlice} from '../../common/canvas_utils';
import {colorForThreadIdleSlice, hslForSlice} from '../../common/colorizer';
import {HighPrecisionTime} from '../../common/high_precision_time';
-import {PluginContext} from '../../common/plugin_api';
import {LONG, LONG_NULL, NUM, STR} from '../../common/query_result';
import {Span, TPDuration, TPTime} from '../../common/time';
import {TrackData} from '../../common/track_data';
@@ -27,6 +26,7 @@ import {globals} from '../../frontend/globals';
import {cachedHsluvToHex} from '../../frontend/hsluv_cache';
import {PxSpan, TimeScale} from '../../frontend/time_scale';
import {NewTrackArgs, SliceRect, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
export const SLICE_TRACK_KIND = 'ChromeSliceTrack';
const SLICE_HEIGHT = 18;
diff --git a/ui/src/tracks/counter/index.ts b/ui/src/tracks/counter/index.ts
index 966404cf9..d51075d12 100644
--- a/ui/src/tracks/counter/index.ts
+++ b/ui/src/tracks/counter/index.ts
@@ -17,15 +17,6 @@ import m from 'mithril';
import {searchSegment} from '../../base/binary_search';
import {assertTrue} from '../../base/logging';
import {Actions} from '../../common/actions';
-import {
- EngineProxy,
- LONG,
- LONG_NULL,
- NUM,
- PluginContext,
- STR,
- TrackInfo,
-} from '../../common/plugin_api';
import {TPDuration, TPTime, tpTimeToSeconds} from '../../common/time';
import {TrackData} from '../../common/track_data';
import {TrackController} from '../../controller/track_controller';
@@ -34,6 +25,15 @@ import {globals} from '../../frontend/globals';
import {NewTrackArgs, Track} from '../../frontend/track';
import {Button} from '../../frontend/widgets/button';
import {MenuItem, PopupMenu2} from '../../frontend/widgets/menu';
+import {
+ EngineProxy,
+ LONG,
+ LONG_NULL,
+ NUM,
+ PluginContext,
+ STR,
+ TrackInfo,
+} from '../../public';
export const COUNTER_TRACK_KIND = 'CounterTrack';
diff --git a/ui/src/tracks/cpu_freq/index.ts b/ui/src/tracks/cpu_freq/index.ts
index eec39e41c..e097acacd 100644
--- a/ui/src/tracks/cpu_freq/index.ts
+++ b/ui/src/tracks/cpu_freq/index.ts
@@ -16,7 +16,6 @@ import {BigintMath as BIMath} from '../../base/bigint_math';
import {searchSegment} from '../../base/binary_search';
import {assertTrue} from '../../base/logging';
import {hueForCpu} from '../../common/colorizer';
-import {PluginContext} from '../../common/plugin_api';
import {
LONG,
LONG_NULL,
@@ -30,6 +29,7 @@ import {TrackController} from '../../controller/track_controller';
import {checkerboardExcept} from '../../frontend/checkerboard';
import {globals} from '../../frontend/globals';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
export const CPU_FREQ_TRACK_KIND = 'CpuFreqTrack';
diff --git a/ui/src/tracks/cpu_profile/index.ts b/ui/src/tracks/cpu_profile/index.ts
index abf2536e8..ec6472495 100644
--- a/ui/src/tracks/cpu_profile/index.ts
+++ b/ui/src/tracks/cpu_profile/index.ts
@@ -16,7 +16,6 @@
import {searchSegment} from '../../base/binary_search';
import {Actions} from '../../common/actions';
import {hslForSlice} from '../../common/colorizer';
-import {PluginContext} from '../../common/plugin_api';
import {LONG, NUM} from '../../common/query_result';
import {TPDuration, TPTime} from '../../common/time';
import {TrackData} from '../../common/track_data';
@@ -27,6 +26,7 @@ import {globals} from '../../frontend/globals';
import {cachedHsluvToHex} from '../../frontend/hsluv_cache';
import {TimeScale} from '../../frontend/time_scale';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
const BAR_HEIGHT = 3;
const MARGIN_TOP = 4.5;
diff --git a/ui/src/tracks/cpu_slices/index.ts b/ui/src/tracks/cpu_slices/index.ts
index f91da51c5..199f65848 100644
--- a/ui/src/tracks/cpu_slices/index.ts
+++ b/ui/src/tracks/cpu_slices/index.ts
@@ -22,7 +22,6 @@ import {
drawIncompleteSlice,
} from '../../common/canvas_utils';
import {colorForThread} from '../../common/colorizer';
-import {PluginContext} from '../../common/plugin_api';
import {LONG, NUM} from '../../common/query_result';
import {formatDurationShort, TPDuration, TPTime} from '../../common/time';
import {TrackData} from '../../common/track_data';
@@ -32,6 +31,7 @@ import {
import {checkerboardExcept} from '../../frontend/checkerboard';
import {globals} from '../../frontend/globals';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
export const CPU_SLICE_TRACK_KIND = 'CpuSliceTrack';
diff --git a/ui/src/tracks/custom_sql_table_slices/index.ts b/ui/src/tracks/custom_sql_table_slices/index.ts
index 60516b121..81d078d49 100644
--- a/ui/src/tracks/custom_sql_table_slices/index.ts
+++ b/ui/src/tracks/custom_sql_table_slices/index.ts
@@ -16,7 +16,6 @@ import {Actions} from '../../common/actions';
import {
generateSqlWithInternalLayout,
} from '../../common/internal_layout_utils';
-import {PluginContext} from '../../common/plugin_api';
import {Selection} from '../../common/state';
import {OnSliceClickArgs} from '../../frontend/base_slice_track';
import {
@@ -28,6 +27,7 @@ import {
NamedSliceTrackTypes,
} from '../../frontend/named_slice_track';
import {NewTrackArgs} from '../../frontend/track';
+import {PluginContext} from '../../public';
export interface CustomSqlTableDefConfig {
// Table name
diff --git a/ui/src/tracks/debug/index.ts b/ui/src/tracks/debug/index.ts
index e68b45124..0ac08eea3 100644
--- a/ui/src/tracks/debug/index.ts
+++ b/ui/src/tracks/debug/index.ts
@@ -12,7 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import {PluginContext} from '../../common/plugin_api';
+import {PluginContext} from '../../public';
+
import {DebugTrackV2} from './slice_track';
function activate(ctx: PluginContext) {
diff --git a/ui/src/tracks/expected_frames/index.ts b/ui/src/tracks/expected_frames/index.ts
index 3b7d7e2d6..8f36802d9 100644
--- a/ui/src/tracks/expected_frames/index.ts
+++ b/ui/src/tracks/expected_frames/index.ts
@@ -24,7 +24,7 @@ import {TPDuration, TPTime} from '../../common/time';
import {
TrackController,
} from '../../controller/track_controller';
-import {PluginContext} from '../../common/plugin_api';
+import {PluginContext} from '../../public';
import {BigintMath as BIMath} from '../../base/bigint_math';
export interface Config {
diff --git a/ui/src/tracks/ftrace/index.ts b/ui/src/tracks/ftrace/index.ts
index fc0b9e88e..4b6e60771 100644
--- a/ui/src/tracks/ftrace/index.ts
+++ b/ui/src/tracks/ftrace/index.ts
@@ -15,18 +15,16 @@
import {Vnode} from 'mithril';
import {colorForString} from '../../common/colorizer';
-import {PluginContext} from '../../common/plugin_api';
import {LONG, STR} from '../../common/query_result';
-import {TPDuration} from '../../common/time';
-import {TPTime} from '../../common/time';
-import {TrackData} from '../../common/track_data';
-import {LIMIT} from '../../common/track_data';
+import {TPDuration, TPTime} from '../../common/time';
+import {LIMIT, TrackData} from '../../common/track_data';
import {
TrackController,
} from '../../controller/track_controller';
import {checkerboardExcept} from '../../frontend/checkerboard';
import {globals} from '../../frontend/globals';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
export interface Data extends TrackData {
diff --git a/ui/src/tracks/generic_slice_track/index.ts b/ui/src/tracks/generic_slice_track/index.ts
index e9a112045..8b8b46dee 100644
--- a/ui/src/tracks/generic_slice_track/index.ts
+++ b/ui/src/tracks/generic_slice_track/index.ts
@@ -12,12 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import {PluginContext} from '../../common/plugin_api';
import {
NamedSliceTrack,
NamedSliceTrackTypes,
} from '../../frontend/named_slice_track';
import {NewTrackArgs} from '../../frontend/track';
+import {PluginContext} from '../../public';
export interface GenericSliceTrackConfig {
sqlTrackId: number;
diff --git a/ui/src/tracks/heap_profile/index.ts b/ui/src/tracks/heap_profile/index.ts
index 84285eb04..a5dba84ec 100644
--- a/ui/src/tracks/heap_profile/index.ts
+++ b/ui/src/tracks/heap_profile/index.ts
@@ -14,7 +14,6 @@
import {searchSegment} from '../../base/binary_search';
import {Actions} from '../../common/actions';
-import {PluginContext} from '../../common/plugin_api';
import {LONG, STR} from '../../common/query_result';
import {ProfileType} from '../../common/state';
import {TPDuration, TPTime} from '../../common/time';
@@ -25,6 +24,7 @@ import {FLAMEGRAPH_HOVERED_COLOR} from '../../frontend/flamegraph';
import {globals} from '../../frontend/globals';
import {TimeScale} from '../../frontend/time_scale';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
export const HEAP_PROFILE_TRACK_KIND = 'HeapProfileTrack';
diff --git a/ui/src/tracks/null_track/index.ts b/ui/src/tracks/null_track/index.ts
index 4a001fb9e..ed37a6450 100644
--- a/ui/src/tracks/null_track/index.ts
+++ b/ui/src/tracks/null_track/index.ts
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import {PluginContext} from '../../common/plugin_api';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
export const NULL_TRACK_KIND = 'NullTrack';
diff --git a/ui/src/tracks/perf_samples_profile/index.ts b/ui/src/tracks/perf_samples_profile/index.ts
index 21b13ebb2..bfe8e8a25 100644
--- a/ui/src/tracks/perf_samples_profile/index.ts
+++ b/ui/src/tracks/perf_samples_profile/index.ts
@@ -14,7 +14,6 @@
import {searchSegment} from '../../base/binary_search';
import {Actions} from '../../common/actions';
-import {PluginContext} from '../../common/plugin_api';
import {LONG} from '../../common/query_result';
import {ProfileType} from '../../common/state';
import {TPDuration, TPTime} from '../../common/time';
@@ -24,6 +23,7 @@ import {FLAMEGRAPH_HOVERED_COLOR} from '../../frontend/flamegraph';
import {globals} from '../../frontend/globals';
import {TimeScale} from '../../frontend/time_scale';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
export const PERF_SAMPLES_PROFILE_TRACK_KIND = 'PerfSamplesProfileTrack';
diff --git a/ui/src/tracks/process_scheduling/index.ts b/ui/src/tracks/process_scheduling/index.ts
index 270157c62..ee90fd7ac 100644
--- a/ui/src/tracks/process_scheduling/index.ts
+++ b/ui/src/tracks/process_scheduling/index.ts
@@ -14,11 +14,9 @@
import {BigintMath as BIMath} from '../../base/bigint_math';
import {searchEq, searchRange, searchSegment} from '../../base/binary_search';
-
import {assertTrue} from '../../base/logging';
import {Actions} from '../../common/actions';
import {colorForThread} from '../../common/colorizer';
-import {PluginContext} from '../../common/plugin_api';
import {LONG, NUM, QueryResult} from '../../common/query_result';
import {TPDuration, TPTime} from '../../common/time';
import {TrackData} from '../../common/track_data';
@@ -26,6 +24,7 @@ import {TrackController} from '../../controller/track_controller';
import {checkerboardExcept} from '../../frontend/checkerboard';
import {globals} from '../../frontend/globals';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
export const PROCESS_SCHEDULING_TRACK_KIND = 'ProcessSchedulingTrack';
diff --git a/ui/src/tracks/process_summary/index.ts b/ui/src/tracks/process_summary/index.ts
index 0697ce17f..96fb4313e 100644
--- a/ui/src/tracks/process_summary/index.ts
+++ b/ui/src/tracks/process_summary/index.ts
@@ -15,15 +15,14 @@
import {BigintMath} from '../../base/bigint_math';
import {assertFalse} from '../../base/logging';
import {colorForTid} from '../../common/colorizer';
-import {PluginContext} from '../../common/plugin_api';
import {NUM} from '../../common/query_result';
import {TPDuration, TPTime} from '../../common/time';
-import {TrackData} from '../../common/track_data';
-import {LIMIT} from '../../common/track_data';
+import {LIMIT, TrackData} from '../../common/track_data';
import {TrackController} from '../../controller/track_controller';
import {checkerboardExcept} from '../../frontend/checkerboard';
import {globals} from '../../frontend/globals';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
export const PROCESS_SUMMARY_TRACK = 'ProcessSummaryTrack';
diff --git a/ui/src/tracks/thread_state/index.ts b/ui/src/tracks/thread_state/index.ts
index 840b8a5c3..95efdd163 100644
--- a/ui/src/tracks/thread_state/index.ts
+++ b/ui/src/tracks/thread_state/index.ts
@@ -18,7 +18,6 @@ import {assertFalse} from '../../base/logging';
import {Actions} from '../../common/actions';
import {cropText} from '../../common/canvas_utils';
import {colorForState} from '../../common/colorizer';
-import {PluginContext} from '../../common/plugin_api';
import {LONG, NUM, NUM_NULL, STR_NULL} from '../../common/query_result';
import {translateState} from '../../common/thread_state';
import {TPDuration, TPTime} from '../../common/time';
@@ -27,6 +26,7 @@ import {TrackController} from '../../controller/track_controller';
import {checkerboardExcept} from '../../frontend/checkerboard';
import {globals} from '../../frontend/globals';
import {NewTrackArgs, Track} from '../../frontend/track';
+import {PluginContext} from '../../public';
export const THREAD_STATE_TRACK_KIND = 'ThreadStateTrack';
diff --git a/ui/src/tracks/thread_state_v2/index.ts b/ui/src/tracks/thread_state_v2/index.ts
index b19869373..cca64c569 100644
--- a/ui/src/tracks/thread_state_v2/index.ts
+++ b/ui/src/tracks/thread_state_v2/index.ts
@@ -13,11 +13,7 @@
// limitations under the License.
import {Actions} from '../../common/actions';
-import {colorForState} from '../../common/colorizer';
-import {
- Color,
-} from '../../common/colorizer';
-import {PluginContext} from '../../common/plugin_api';
+import {Color, colorForState} from '../../common/colorizer';
import {NUM_NULL, STR} from '../../common/query_result';
import {Selection} from '../../common/state';
import {translateState} from '../../common/thread_state';
@@ -33,6 +29,7 @@ import {
SliceLayout,
} from '../../frontend/slice_layout';
import {NewTrackArgs} from '../../frontend/track';
+import {PluginContext} from '../../public';
export const THREAD_STATE_ROW = {
...BASE_SLICE_ROW,
diff --git a/ui/src/tracks/visualised_args/index.ts b/ui/src/tracks/visualised_args/index.ts
index 32baabd62..60dc45454 100644
--- a/ui/src/tracks/visualised_args/index.ts
+++ b/ui/src/tracks/visualised_args/index.ts
@@ -15,10 +15,10 @@
import m from 'mithril';
import {Actions} from '../../common/actions';
-import {PluginContext} from '../../common/plugin_api';
import {globals} from '../../frontend/globals';
import {NewTrackArgs, Track} from '../../frontend/track';
import {TrackButton, TrackButtonAttrs} from '../../frontend/track_panel';
+import {PluginContext} from '../../public';
import {
ChromeSliceTrack,
ChromeSliceTrackController,