1/* 2 * Copyright 2020, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17// Imports all the compiled common Flicker library classes and exports them 18// as clean es6 modules rather than having them be commonjs modules 19 20// WM 21const WindowManagerTrace = require('flicker').com.android.server.wm.traces. 22 common.windowmanager.WindowManagerTrace; 23const WindowManagerState = require('flicker').com.android.server.wm.traces. 24 common.windowmanager.WindowManagerState; 25const Activity = require('flicker').com.android.server.wm.traces.common. 26 windowmanager.windows.Activity; 27const Configuration = require('flicker').com.android.server.wm.traces.common. 28 windowmanager.windows.Configuration; 29const ConfigurationContainer = require('flicker').com.android.server.wm.traces. 30 common.windowmanager.windows.ConfigurationContainer; 31const DisplayArea = require('flicker').com.android.server.wm.traces.common. 32 windowmanager.windows.DisplayArea; 33const DisplayContent = require('flicker').com.android.server.wm.traces.common. 34 windowmanager.windows.DisplayContent; 35const KeyguardControllerState = require('flicker').com.android.server.wm. 36 traces.common.windowmanager.windows.KeyguardControllerState; 37const RootWindowContainer = require('flicker').com.android.server.wm.traces. 38 common.windowmanager.windows.RootWindowContainer; 39const Task = require('flicker').com.android.server.wm.traces.common. 40 windowmanager.windows.Task; 41const TaskFragment = require('flicker').com.android.server.wm.traces.common. 42 windowmanager.windows.TaskFragment; 43const WindowConfiguration = require('flicker').com.android.server.wm.traces. 44 common.windowmanager.windows.WindowConfiguration; 45const WindowContainer = require('flicker').com.android.server.wm.traces.common. 46 windowmanager.windows.WindowContainer; 47const WindowLayoutParams= require('flicker').com.android.server.wm.traces. 48 common.windowmanager.windows.WindowLayoutParams; 49const WindowManagerPolicy = require('flicker').com.android.server.wm.traces. 50 common.windowmanager.windows.WindowManagerPolicy; 51const WindowState = require('flicker').com.android.server.wm.traces.common. 52 windowmanager.windows.WindowState; 53const WindowToken = require('flicker').com.android.server.wm.traces.common. 54 windowmanager.windows.WindowToken; 55 56// SF 57const Layer = require('flicker').com.android.server.wm.traces.common. 58 layers.Layer; 59const BaseLayerTraceEntry = require('flicker').com.android.server.wm.traces.common. 60 layers.BaseLayerTraceEntry; 61const LayerTraceEntry = require('flicker').com.android.server.wm.traces.common. 62 layers.LayerTraceEntry; 63const LayerTraceEntryBuilder = require('flicker').com.android.server.wm.traces. 64 common.layers.LayerTraceEntryBuilder; 65const LayersTrace = require('flicker').com.android.server.wm.traces.common. 66 layers.LayersTrace; 67const Matrix22 = require('flicker').com.android.server.wm.traces.common 68 .Matrix22; 69const Matrix33 = require('flicker').com.android.server.wm.traces.common 70 .Matrix33; 71const Transform = require('flicker').com.android.server.wm.traces.common. 72 layers.Transform; 73const Display = require('flicker').com.android.server.wm.traces.common. 74 layers.Display; 75 76// Common 77const Size = require('flicker').com.android.server.wm.traces.common.Size; 78const ActiveBuffer = require('flicker').com.android.server.wm.traces.common 79 .ActiveBuffer; 80const Color3 = require('flicker').com.android.server.wm.traces.common.Color3; 81const Color = require('flicker').com.android.server.wm.traces.common.Color; 82const Point = require('flicker').com.android.server.wm.traces.common.Point; 83const Rect = require('flicker').com.android.server.wm.traces.common.Rect; 84const RectF = require('flicker').com.android.server.wm.traces.common.RectF; 85const Region = require('flicker').com.android.server.wm.traces.common.region.Region; 86 87//Tags 88const Tag = require('flicker').com.android.server.wm.traces.common.tags.Tag; 89const TagState = require('flicker').com.android.server.wm.traces.common.tags.TagState; 90const TagTrace = require('flicker').com.android.server.wm.traces.common.tags.TagTrace; 91 92//Errors 93const Error = require('flicker').com.android.server.wm.traces.common.errors.Error; 94const ErrorState = require('flicker').com.android.server.wm.traces.common.errors.ErrorState; 95const ErrorTrace = require('flicker').com.android.server.wm.traces.common.errors.ErrorTrace; 96 97// Service 98const TaggingEngine = require('flicker').com.android.server.wm.traces.common.service.TaggingEngine; 99 100const EMPTY_BUFFER = new ActiveBuffer(0, 0, 0, 0); 101const EMPTY_COLOR3 = new Color3(-1, -1, -1); 102const EMPTY_COLOR = new Color(-1, -1, -1, 0); 103const EMPTY_RECT = new Rect(0, 0, 0, 0); 104const EMPTY_RECTF = new RectF(0, 0, 0, 0); 105const EMPTY_POINT = new Point(0, 0); 106const EMPTY_MATRIX22 = new Matrix22(0, 0, 0, 0, 0, 0); 107const EMPTY_MATRIX33 = new Matrix33(0, 0, 0, 0, 0, 0); 108const EMPTY_TRANSFORM = new Transform(0, EMPTY_MATRIX33); 109 110function toSize(proto) { 111 if (proto == null) { 112 return EMPTY_BOUNDS; 113 } 114 const width = proto.width ?? proto.w ?? 0; 115 const height = proto.height ?? proto.h ?? 0; 116 if (width || height) { 117 return new Size(width, height); 118 } 119 return EMPTY_BOUNDS; 120} 121 122function toActiveBuffer(proto) { 123 const width = proto?.width ?? 0; 124 const height = proto?.height ?? 0; 125 const stride = proto?.stride ?? 0; 126 const format = proto?.format ?? 0; 127 128 if (width || height || stride || format) { 129 return new ActiveBuffer(width, height, stride, format); 130 } 131 return EMPTY_BUFFER; 132} 133 134function toColor3(proto) { 135 if (proto == null) { 136 return EMPTY_COLOR; 137 } 138 const r = proto.r ?? 0; 139 const g = proto.g ?? 0; 140 const b = proto.b ?? 0; 141 if (r || g || b) { 142 return new Color3(r, g, b); 143 } 144 return EMPTY_COLOR3; 145} 146 147function toColor(proto) { 148 if (proto == null) { 149 return EMPTY_COLOR; 150 } 151 const r = proto.r ?? 0; 152 const g = proto.g ?? 0; 153 const b = proto.b ?? 0; 154 const a = proto.a ?? 0; 155 if (r || g || b || a) { 156 return new Color(r, g, b, a); 157 } 158 return EMPTY_COLOR; 159} 160 161function toPoint(proto) { 162 if (proto == null) { 163 return null; 164 } 165 const x = proto.x ?? 0; 166 const y = proto.y ?? 0; 167 if (x || y) { 168 return new Point(x, y); 169 } 170 return EMPTY_POINT; 171} 172 173function toRect(proto) { 174 if (proto == null) { 175 return EMPTY_RECT; 176 } 177 178 const left = proto?.left ?? 0; 179 const top = proto?.top ?? 0; 180 const right = proto?.right ?? 0; 181 const bottom = proto?.bottom ?? 0; 182 if (left || top || right || bottom) { 183 return new Rect(left, top, right, bottom); 184 } 185 return EMPTY_RECT; 186} 187 188function toRectF(proto) { 189 if (proto == null) { 190 return EMPTY_RECTF; 191 } 192 193 const left = proto?.left ?? 0; 194 const top = proto?.top ?? 0; 195 const right = proto?.right ?? 0; 196 const bottom = proto?.bottom ?? 0; 197 if (left || top || right || bottom) { 198 return new RectF(left, top, right, bottom); 199 } 200 return EMPTY_RECTF; 201} 202 203function toRegion(proto) { 204 if (proto == null) { 205 return null; 206 } 207 208 const rects = []; 209 for (let x = 0; x < proto.rect.length; x++) { 210 const rect = proto.rect[x]; 211 const parsedRect = toRect(rect); 212 rects.push(parsedRect); 213 } 214 215 return new Region(rects); 216} 217 218function toTransform(proto) { 219 if (proto == null) { 220 return EMPTY_TRANSFORM; 221 } 222 const dsdx = proto.dsdx ?? 0; 223 const dtdx = proto.dtdx ?? 0; 224 const tx = proto.tx ?? 0; 225 const dsdy = proto.dsdy ?? 0; 226 const dtdy = proto.dtdy ?? 0; 227 const ty = proto.ty ?? 0; 228 229 if (dsdx || dtdx || tx || dsdy || dtdy || ty) { 230 const matrix = new Matrix33(dsdx, dtdx, tx, dsdy, dtdy, ty); 231 return new Transform(proto.type ?? 0, matrix); 232 } 233 234 if (proto.type) { 235 return new Transform(proto.type ?? 0, EMPTY_MATRIX33); 236 } 237 return EMPTY_TRANSFORM; 238} 239 240function toMatrix22(proto) { 241 if (proto == null) { 242 return EMPTY_MATRIX22; 243 } 244 const dsdx = proto.dsdx ?? 0; 245 const dtdx = proto.dtdx ?? 0; 246 const dsdy = proto.dsdy ?? 0; 247 const dtdy = proto.dtdy ?? 0; 248 249 if (dsdx || dtdx || dsdy || dtdy) { 250 return new Matrix22(dsdx, dtdx, dsdy, dtdy); 251 } 252 253 return EMPTY_MATRIX22; 254} 255 256export { 257 Activity, 258 Configuration, 259 ConfigurationContainer, 260 DisplayArea, 261 DisplayContent, 262 KeyguardControllerState, 263 RootWindowContainer, 264 Task, 265 TaskFragment, 266 WindowConfiguration, 267 WindowContainer, 268 WindowState, 269 WindowToken, 270 WindowLayoutParams, 271 WindowManagerPolicy, 272 WindowManagerTrace, 273 WindowManagerState, 274 // SF 275 BaseLayerTraceEntry, 276 Layer, 277 LayerTraceEntry, 278 LayerTraceEntryBuilder, 279 LayersTrace, 280 Transform, 281 Matrix22, 282 Matrix33, 283 Display, 284 // Tags 285 Tag, 286 TagState, 287 TagTrace, 288 // Errors 289 Error, 290 ErrorState, 291 ErrorTrace, 292 // Common 293 Size, 294 ActiveBuffer, 295 Color, 296 Color3, 297 Point, 298 Rect, 299 RectF, 300 Region, 301 // Service 302 TaggingEngine, 303 toSize, 304 toActiveBuffer, 305 toColor, 306 toColor3, 307 toPoint, 308 toRect, 309 toRectF, 310 toRegion, 311 toMatrix22, 312 toTransform, 313}; 314