[ui] Convert ftrace track impl into native plugin track.
Change-Id: Idcc96e594b7d1a90bab7ba0891febd8c76023217
diff --git a/ui/src/tracks/ftrace/index.ts b/ui/src/tracks/ftrace/index.ts
index 5a576a5..124696e 100644
--- a/ui/src/tracks/ftrace/index.ts
+++ b/ui/src/tracks/ftrace/index.ts
@@ -12,20 +12,13 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import {Vnode} from 'mithril';
-
import {duration, Time, time} from '../../base/time';
+import {BasicAsyncTrack} from '../../common/basic_async_track';
import {colorForString} from '../../common/colorizer';
import {LONG, NUM, STR} from '../../common/query_result';
-import {
- TrackAdapter,
- TrackControllerAdapter,
- TrackWithControllerAdapter,
-} from '../../common/track_adapter';
import {LIMIT, TrackData} from '../../common/track_data';
import {checkerboardExcept} from '../../frontend/checkerboard';
import {globals} from '../../frontend/globals';
-import {NewTrackArgs} from '../../frontend/track';
import {
EngineProxy,
Plugin,
@@ -44,23 +37,26 @@
cpu?: number;
}
-export const FTRACE_RAW_TRACK_KIND = 'FtraceRawTrack';
-
const MARGIN = 2;
const RECT_HEIGHT = 18;
const TRACK_HEIGHT = (RECT_HEIGHT) + (2 * MARGIN);
-class FtraceRawTrackController extends TrackControllerAdapter<Config, Data> {
- static readonly kind = FTRACE_RAW_TRACK_KIND;
+class FtraceRawTrack extends BasicAsyncTrack<Data> {
+ constructor(private engine: EngineProxy, private cpu: number) {
+ super();
+ }
+
+ getHeight(): number {
+ return TRACK_HEIGHT;
+ }
async onBoundsChange(start: time, end: time, resolution: duration):
Promise<Data> {
const excludeList = Array.from(globals.state.ftraceFilter.excludedNames);
const excludeListSql = excludeList.map((s) => `'${s}'`).join(',');
- const cpuFilter =
- this.config.cpu === undefined ? '' : `and cpu = ${this.config.cpu}`;
+ const cpuFilter = this.cpu === undefined ? '' : `and cpu = ${this.cpu}`;
- const queryRes = await this.query(`
+ const queryRes = await this.engine.query(`
select
cast(ts / ${resolution} as integer) * ${resolution} as tsQuant,
type,
@@ -91,21 +87,6 @@
}
return result;
}
-}
-
-export class FtraceRawTrack extends TrackAdapter<Config, Data> {
- static readonly kind = FTRACE_RAW_TRACK_KIND;
- constructor(args: NewTrackArgs) {
- super(args);
- }
-
- static create(args: NewTrackArgs): FtraceRawTrack {
- return new FtraceRawTrack(args);
- }
-
- getHeight(): number {
- return TRACK_HEIGHT;
- }
renderCanvas(ctx: CanvasRenderingContext2D): void {
const {
@@ -113,7 +94,7 @@
windowSpan,
} = globals.frontendLocalState;
- const data = this.data();
+ const data = this.data;
if (data === undefined) return; // Can't possibly draw anything.
@@ -152,10 +133,6 @@
ctx.restore();
}
}
-
- getContextMenu(): Vnode<any, {}>|null {
- return null;
- }
}
class FtraceRawPlugin implements Plugin {
@@ -165,18 +142,12 @@
const cpus = await this.lookupCpuCores(ctx.engine);
for (const cpuNum of cpus) {
const uri = `perfetto.FtraceRaw#cpu${cpuNum}`;
- const config: Config = {cpu: cpuNum};
ctx.addTrack({
uri,
displayName: `Ftrace Track for CPU ${cpuNum}`,
trackFactory: () => {
- return new TrackWithControllerAdapter<Config, Data>(
- ctx.engine,
- uri,
- config,
- FtraceRawTrack,
- FtraceRawTrackController);
+ return new FtraceRawTrack(ctx.engine, cpuNum);
},
});
}