blob: a5ae03797ce8e87998f594bcf5694492573de92b [file] [log] [blame]
/*
* 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 };