summaryrefslogtreecommitdiff
path: root/tools/winscope/src/flickerlib/windows/DisplayContent.ts
diff options
context:
space:
mode:
Diffstat (limited to 'tools/winscope/src/flickerlib/windows/DisplayContent.ts')
-rw-r--r--tools/winscope/src/flickerlib/windows/DisplayContent.ts74
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