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,