xref: /aosp_15_r20/external/perfetto/ui/src/public/app.ts (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker// Copyright (C) 2024 The Android Open Source Project
2*6dbdd20aSAndroid Build Coastguard Worker//
3*6dbdd20aSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*6dbdd20aSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*6dbdd20aSAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*6dbdd20aSAndroid Build Coastguard Worker//
7*6dbdd20aSAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*6dbdd20aSAndroid Build Coastguard Worker//
9*6dbdd20aSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*6dbdd20aSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*6dbdd20aSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*6dbdd20aSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*6dbdd20aSAndroid Build Coastguard Worker// limitations under the License.
14*6dbdd20aSAndroid Build Coastguard Worker
15*6dbdd20aSAndroid Build Coastguard Workerimport {RouteArgs} from './route_schema';
16*6dbdd20aSAndroid Build Coastguard Workerimport {CommandManager} from './command';
17*6dbdd20aSAndroid Build Coastguard Workerimport {OmniboxManager} from './omnibox';
18*6dbdd20aSAndroid Build Coastguard Workerimport {SidebarManager} from './sidebar';
19*6dbdd20aSAndroid Build Coastguard Workerimport {Analytics} from './analytics';
20*6dbdd20aSAndroid Build Coastguard Workerimport {PluginManager} from './plugin';
21*6dbdd20aSAndroid Build Coastguard Workerimport {Trace} from './trace';
22*6dbdd20aSAndroid Build Coastguard Workerimport {PageManager} from './page';
23*6dbdd20aSAndroid Build Coastguard Workerimport {FeatureFlagManager} from './feature_flag';
24*6dbdd20aSAndroid Build Coastguard Worker
25*6dbdd20aSAndroid Build Coastguard Worker/**
26*6dbdd20aSAndroid Build Coastguard Worker * The API endpoint to interact programmaticaly with the UI before a trace has
27*6dbdd20aSAndroid Build Coastguard Worker * been loaded. This is passed to plugins' OnActivate().
28*6dbdd20aSAndroid Build Coastguard Worker */
29*6dbdd20aSAndroid Build Coastguard Workerexport interface App {
30*6dbdd20aSAndroid Build Coastguard Worker  /**
31*6dbdd20aSAndroid Build Coastguard Worker   * The unique id for this plugin (as specified in the PluginDescriptor),
32*6dbdd20aSAndroid Build Coastguard Worker   * or '__core__' for the interface exposed to the core.
33*6dbdd20aSAndroid Build Coastguard Worker   */
34*6dbdd20aSAndroid Build Coastguard Worker  readonly pluginId: string;
35*6dbdd20aSAndroid Build Coastguard Worker  readonly commands: CommandManager;
36*6dbdd20aSAndroid Build Coastguard Worker  readonly sidebar: SidebarManager;
37*6dbdd20aSAndroid Build Coastguard Worker  readonly omnibox: OmniboxManager;
38*6dbdd20aSAndroid Build Coastguard Worker  readonly analytics: Analytics;
39*6dbdd20aSAndroid Build Coastguard Worker  readonly plugins: PluginManager;
40*6dbdd20aSAndroid Build Coastguard Worker  readonly pages: PageManager;
41*6dbdd20aSAndroid Build Coastguard Worker  readonly featureFlags: FeatureFlagManager;
42*6dbdd20aSAndroid Build Coastguard Worker
43*6dbdd20aSAndroid Build Coastguard Worker  /**
44*6dbdd20aSAndroid Build Coastguard Worker   * The parsed querystring passed when starting the app, before any navigation
45*6dbdd20aSAndroid Build Coastguard Worker   * happens.
46*6dbdd20aSAndroid Build Coastguard Worker   */
47*6dbdd20aSAndroid Build Coastguard Worker  readonly initialRouteArgs: RouteArgs;
48*6dbdd20aSAndroid Build Coastguard Worker
49*6dbdd20aSAndroid Build Coastguard Worker  /**
50*6dbdd20aSAndroid Build Coastguard Worker   * Returns the current trace object, if any. The instance being returned is
51*6dbdd20aSAndroid Build Coastguard Worker   * bound to the same plugin of App.pluginId.
52*6dbdd20aSAndroid Build Coastguard Worker   */
53*6dbdd20aSAndroid Build Coastguard Worker  readonly trace?: Trace;
54*6dbdd20aSAndroid Build Coastguard Worker
55*6dbdd20aSAndroid Build Coastguard Worker  // TODO(primiano): this should be needed in extremely rare cases. We should
56*6dbdd20aSAndroid Build Coastguard Worker  // probably switch to mithril auto-redraw at some point.
57*6dbdd20aSAndroid Build Coastguard Worker  scheduleFullRedraw(force?: 'force'): void;
58*6dbdd20aSAndroid Build Coastguard Worker
59*6dbdd20aSAndroid Build Coastguard Worker  /**
60*6dbdd20aSAndroid Build Coastguard Worker   * Navigate to a new page.
61*6dbdd20aSAndroid Build Coastguard Worker   */
62*6dbdd20aSAndroid Build Coastguard Worker  navigate(newHash: string): void;
63*6dbdd20aSAndroid Build Coastguard Worker
64*6dbdd20aSAndroid Build Coastguard Worker  openTraceFromFile(file: File): void;
65*6dbdd20aSAndroid Build Coastguard Worker  openTraceFromUrl(url: string): void;
66*6dbdd20aSAndroid Build Coastguard Worker  openTraceFromBuffer(args: {
67*6dbdd20aSAndroid Build Coastguard Worker    buffer: ArrayBuffer;
68*6dbdd20aSAndroid Build Coastguard Worker    title: string;
69*6dbdd20aSAndroid Build Coastguard Worker    fileName: string;
70*6dbdd20aSAndroid Build Coastguard Worker  }): void;
71*6dbdd20aSAndroid Build Coastguard Worker}
72