/* * 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. */ // Returns just the class name and root package information function getComponentClassName(componentFullName) { const classParts = componentFullName.split('.'); if (classParts.length <= 3) { return componentFullName; } const className = classParts.slice(-1).pop(); return `${classParts[0]}.${classParts[1]}.(...).${className}` } const hashCode = /([A-Fa-f0-9]{7}|[A-Fa-f0-9]{6})/; const packageRegex = /(([a-z][a-z_0-9]*\.)*([a-z][a-z_0-9]*))/; const qualifiedClassNameRegex = /(([a-z][a-z_0-9]*\.)*[A-Z_]($[A-Z_]|[\w_])*)/; const surfaceRegex = new RegExp(/^Surface\(.*\)\/@0x/.source + hashCode.source + / - .*/.source + "$"); const moduleName = new RegExp("^" + "(" + packageRegex.source + /\//.source + ")?" + qualifiedClassNameRegex.source + /(\$.*)?/.source + /(\#.*)?/.source + "$"); function getSimplifiedLayerName(layerName) { // Get rid of prepended hash code let removedHashCodePrefix = false; if (new RegExp("^" + hashCode.source + " ").test(layerName)) { layerName = layerName.split(" ").slice(1).join(" "); removedHashCodePrefix = true; } if (/^ActivityRecord\{.*\}?(\#[0-9]+)?$/.test(layerName)) { return "ActivityRecord"; } if (/^WindowToken\{.*\}(\#[0-9]*)?$/.test(layerName)) { return "WindowToken"; } if (/^WallpaperWindowToken\{.*\}(\#[0-9]*)?$/.test(layerName)) { return "WallpaperWindowToken"; } if (surfaceRegex.test(layerName)) { return "Surface - " + layerName.split("- ").slice(-1).pop(); } if (moduleName.test(layerName)) { return layerName.split(".").slice(-1).pop(); } if (removedHashCodePrefix) { return layerName; } return null; } export { getComponentClassName, getSimplifiedLayerName };