diff options
Diffstat (limited to 'tools/winscope/src/flickerlib/windows/DisplayContent.ts')
-rw-r--r-- | tools/winscope/src/flickerlib/windows/DisplayContent.ts | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/tools/winscope/src/flickerlib/windows/DisplayContent.ts b/tools/winscope/src/flickerlib/windows/DisplayContent.ts new file mode 100644 index 000000000..41efb1ee5 --- /dev/null +++ b/tools/winscope/src/flickerlib/windows/DisplayContent.ts @@ -0,0 +1,74 @@ +/* + * Copyright 2020, 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 { getPropertiesForDisplay, shortenName } from '../mixin' +import { asRawTreeViewObject } from '../../utils/diff.js' +import { toRect, DisplayContent, Rect } from "../common" +import WindowContainer from "./WindowContainer" + +DisplayContent.fromProto = function (proto, isActivityInTree: Boolean): DisplayContent { + if (proto == null) { + return null + } else { + const children = proto.rootDisplayArea.windowContainer.children.reverse() + .filter(it => it != null) + .map(it => WindowContainer.childrenFromProto(it, isActivityInTree)) + const windowContainer = WindowContainer.fromProto({proto: proto.rootDisplayArea.windowContainer, + children: children, nameOverride: proto.displayInfo?.name ?? null}) + if (windowContainer == null) { + throw "Window container should not be null: " + JSON.stringify(proto) + } + + const displayRectWidth = proto.displayInfo?.logicalWidth ?? 0 + const displayRectHeight = proto.displayInfo?.logicalHeight ?? 0 + const appRectWidth = proto.displayInfo?.appWidth ?? 0 + const appRectHeight = proto.displayInfo?.appHeight ?? 0 + + const defaultBounds = proto.pinnedStackController?.defaultBounds ?? null + const movementBounds = proto.pinnedStackController?.movementBounds ?? null + + const entry = new DisplayContent( + proto.id, + proto.focusedRootTaskId, + proto.resumedActivity?.title ?? "", + proto.singleTaskInstance, + toRect(defaultBounds), + toRect(movementBounds), + new Rect(0, 0, displayRectWidth, displayRectHeight), + new Rect(0, 0, appRectWidth, appRectHeight), + proto.dpi, + proto.displayInfo?.flags ?? 0, + toRect(proto.displayFrames?.stableBounds), + proto.surfaceSize, + proto.focusedApp, + proto.appTransition?.lastUsedAppTransition ?? "", + proto.appTransition?.appTransitionState ?? "", + proto.displayRotation?.rotation ?? 0, + proto.displayRotation?.lastOrientation ?? 0, + windowContainer + ) + + entry.obj = getPropertiesForDisplay(proto, entry) + entry.kind = entry.constructor.name + entry.shortName = shortenName(entry.name) + entry.rawTreeViewObject = asRawTreeViewObject(entry) + + console.warn("Created ", entry.kind, " stableId=", entry.stableId) + return entry + } +} + +export default DisplayContent |