blob: fc35ecbc80081389888ed69ec126918357177d21 [file] [log] [blame]
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {TraceType} from "common/trace/trace_type";
import {Viewer} from "./viewer";
import {ViewerInputMethodClients} from "./viewer_input_method_clients/viewer_input_method_clients";
import {ViewerInputMethodService} from "./viewer_input_method_service/viewer_input_method_service";
import {ViewerInputMethodManagerService} from "./viewer_input_method_manager_service/viewer_input_method_manager_service";
import {ViewerProtoLog} from "./viewer_protolog/viewer_protolog";
import {ViewerSurfaceFlinger} from "./viewer_surface_flinger/viewer_surface_flinger";
import {ViewerWindowManager} from "./viewer_window_manager/viewer_window_manager";
import {ViewerTransactions} from "./viewer_transactions/viewer_transactions";
import {ViewerScreenRecording} from "./viewer_screen_recording/viewer_screen_recording";
class ViewerFactory {
// Note:
// the final order of tabs/views in the UI corresponds the order of the
// respective viewers below
static readonly VIEWERS = [
ViewerSurfaceFlinger,
ViewerWindowManager,
ViewerInputMethodClients,
ViewerInputMethodManagerService,
ViewerInputMethodService,
ViewerTransactions,
ViewerProtoLog,
ViewerScreenRecording,
];
public createViewers(activeTraceTypes: Set<TraceType>, storage: Storage): Viewer[] {
const viewers: Viewer[] = [];
for (const Viewer of ViewerFactory.VIEWERS) {
const areViewerDepsSatisfied = Viewer.DEPENDENCIES.every((traceType: TraceType) =>
activeTraceTypes.has(traceType)
);
if (areViewerDepsSatisfied) {
viewers.push(new Viewer(storage));
}
}
return viewers;
}
}
export {ViewerFactory};