Merge "Fix horrible jitter when selecting pivot table"
diff --git a/python/tools/check_imports.py b/python/tools/check_imports.py
index 5c921f9..b4a1a32 100755
--- a/python/tools/check_imports.py
+++ b/python/tools/check_imports.py
@@ -117,12 +117,12 @@
     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 5a362c7..ba45aac 100644
--- a/ui/src/common/plugins.ts
+++ b/ui/src/common/plugins.ts
@@ -21,15 +21,15 @@
 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 1922bb7..03aca4f 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/frontend/sql/args.ts b/ui/src/frontend/sql/args.ts
index 6d76ad4..99870ae 100644
--- a/ui/src/frontend/sql/args.ts
+++ b/ui/src/frontend/sql/args.ts
@@ -62,7 +62,7 @@
     stringValue: STR_NULL,
     realValue: NUM_NULL,
     valueType: STR,
-    displayValue: STR,
+    displayValue: STR_NULL,
   });
 
   const result: Arg[] = [];
@@ -74,7 +74,7 @@
       flatKey: it.flatKey,
       key: it.key,
       value,
-      displayValue: it.displayValue,
+      displayValue: it.displayValue ?? 'NULL',
     });
   }
 
diff --git a/ui/src/plugins/dev.perfetto.ExamplePlugin/index.ts b/ui/src/plugins/dev.perfetto.ExamplePlugin/index.ts
index 3305a90..09400e5 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
similarity index 97%
rename from ui/src/common/plugin_api.ts
rename to ui/src/public/index.ts
index 53e09a2..fc10405 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 d01abc1..dc1d84d 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 30d6913..83c7bef 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 c84e2b9..bd98980 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 @@
   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 9147972..b6c816d 100644
--- a/ui/src/tracks/chrome_scroll_jank/index.ts
+++ b/ui/src/tracks/chrome_scroll_jank/index.ts
@@ -17,8 +17,9 @@
 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 @@
   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 d09a552..a9f068e 100644
--- a/ui/src/tracks/chrome_slices/index.ts
+++ b/ui/src/tracks/chrome_slices/index.ts
@@ -17,7 +17,6 @@
 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 {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 966404c..d51075d 100644
--- a/ui/src/tracks/counter/index.ts
+++ b/ui/src/tracks/counter/index.ts
@@ -17,15 +17,6 @@
 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 {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 eec39e4..e097aca 100644
--- a/ui/src/tracks/cpu_freq/index.ts
+++ b/ui/src/tracks/cpu_freq/index.ts
@@ -16,7 +16,6 @@
 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 {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 abf2536..ec64724 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 {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 f91da51..199f658 100644
--- a/ui/src/tracks/cpu_slices/index.ts
+++ b/ui/src/tracks/cpu_slices/index.ts
@@ -22,7 +22,6 @@
   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 {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 60516b1..81d078d 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 {
   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 @@
   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 e68b451..0ac08ee 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 3b7d7e2..8f36802 100644
--- a/ui/src/tracks/expected_frames/index.ts
+++ b/ui/src/tracks/expected_frames/index.ts
@@ -24,7 +24,7 @@
 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 fc0b9e8..4b6e607 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 e9a1120..8b8b46d 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 84285eb..a5dba84 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 {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 4a001fb..ed37a64 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 21b13eb..bfe8e8a 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 {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 270157c..ee90fd7 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 {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 0697ce1..96fb431 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 840b8a5..95efdd1 100644
--- a/ui/src/tracks/thread_state/index.ts
+++ b/ui/src/tracks/thread_state/index.ts
@@ -18,7 +18,6 @@
 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 {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 b198693..cca64c5 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 @@
   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 32baabd..60dc454 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,