diff --git a/tests/blacklist b/tests/blacklist new file mode 100644 index 0000000..19bb255 --- /dev/null +++ b/tests/blacklist @@ -0,0 +1,2 @@ +config_useRoundIcon +config_swipe_up_gesture_setting_available diff --git a/tests/knownKeys b/tests/knownKeys new file mode 100644 index 0000000..7aacaca --- /dev/null +++ b/tests/knownKeys @@ -0,0 +1,87 @@ +config_allowAllRotations +config_allowAutoBrightnessWhileDozing +config_autoBrightnessAdjustmentMaxGamma +config_autoBrightnessBrighteningLightDebounce +config_autoBrightnessButtonBacklightValues +config_autoBrightnessDarkeningLightDebounce +config_autoBrightnessInitialLightSensorRate +config_autoBrightnessLcdBacklightValues +config_autoBrightnessLevels +config_autoBrightnessLightSensorRate +config_autoBrightnessResetAmbientLuxAfterWarmUp +config_autoPowerModeAnyMotionSensor +config_auto_attach_data_on_creation +config_automatic_brightness_available +config_bluetooth_hfp_inband_ringing_support +config_bluetooth_idle_cur_ma +config_bluetooth_le_peripheral_mode_supported +config_bluetooth_operating_voltage_mv +config_bluetooth_rx_cur_ma +config_bluetooth_tx_cur_ma +config_brightness_ramp_rate_fast +config_brightness_ramp_rate_slow +config_cameraDoubleTapPowerGestureEnabled +config_cameraLaunchGestureSensorStringType +config_cameraLaunchGestureSensorType +config_carrier_volte_available +config_carrier_wfc_ims_available +config_cellBroadcastAppLinks +config_defaultPinnerServiceFiles +config_device_volte_available +config_device_vt_available +config_device_wfc_ims_available +config_displayBlanksAfterDoze +config_doublePressOnPowerBehavior +config_dozeAfterScreenOffByDefault +config_dozeAlwaysOnDisplayAvailable +config_dozeComponent +config_dynamic_bind_ims +config_enableAutoPowerModes +config_enableMultiUserUI +config_gpsParameters +config_hotswapCapable +config_ims_package +config_intrusiveNotificationLed +config_keyboardTapVibePattern +config_lidControlsSleep +config_longPressVibePattern +config_mainBuiltInDisplayCutout +config_maximumScreenDimRatio +config_mobile_mtu +config_multiuserMaximumUsers +config_nightDisplayAvailable +config_overrideHasPermanentMenuKey +config_pinnerCameraApp +config_powerDecoupleAutoSuspendModeFromDisplay +config_powerDecoupleInteractiveModeFromDisplay +config_screenBrightnessDark +config_screenBrightnessDim +config_screenBrightnessDoze +config_screenBrightnessSettingDefault +config_screenBrightnessSettingMaximum +config_screenBrightnessSettingMinimum +config_setColorTransformAccelerated +config_showNavigationBar +config_shutdownBatteryTemperature +config_speed_up_audio_on_mt_calls +config_supportAudioSourceUnprocessed +config_supportSystemNavigationKeys +config_suspendWhenScreenOffDueToProximity +config_sustainedPerformanceModeSupported +config_switch_phone_on_voice_reg_state_change +config_tether_bluetooth_regexs +config_tether_upstream_types +config_tether_usb_regexs +config_tether_wifi_regexs +config_useDevInputEventForAudioJack +config_use_sim_language_file +config_virtualKeyVibePattern +config_wifiDisplaySupportsProtectedBuffers +config_wifi_background_scan_support +config_wifi_batched_scan_supported +config_wifi_dual_band_support +config_wifi_enable_disconnection_debounce +config_wifi_fast_bss_transition_enabled +skip_restoring_network_selection +status_bar_height_landscape +status_bar_height_portrait diff --git a/tests/tests.sh b/tests/tests.sh new file mode 100644 index 0000000..29b31f7 --- /dev/null +++ b/tests/tests.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +base="$(dirname "$(readlink -f -- $0)")/.." +cd $base + +#Keep knownKeys +rm -f tests/priorities +touch tests/priorities tests/knownKeys +result=0 +find -name AndroidManifest.xml |while read manifest;do + folder="$(dirname "$manifest")" + #Ensure this overlay doesn't override blacklist-ed properties + for b in $(cat tests/blacklist);do + if grep -qRF "$b" $folder;then + echo "Overlay $folder is defining $b which is forbidden" + result=1 + fi + done + + #Everything after that is specifically for static overlays, targetting framework-res + isStatic="$(xmlstarlet sel -t -m '//overlay' -v @android:isStatic -n $manifest)" + [ "$isStatic" != "true" ] && continue + + #Ensure priorities unique-ness + priority="$(xmlstarlet sel -t -m '//overlay' -v @android:priority -n $manifest)" + if grep -qE '^'$priority'$' tests/priorities;then + echo $manifest priority $priority conflicts with another manifest + result=1 + fi + echo $priority >> tests/priorities + + systemPropertyName="$(xmlstarlet sel -t -m '//overlay' -v @android:requiredSystemPropertyName -n $manifest)" + if [ "$systemPropertyName" == "ro.vendor.product.name" ];then + echo "$manifest: ro.vendor.product.name is deprecated. Please use ro.vendor.build.fingerprint" + fi + + #Ensure the overloaded properties exist in AOSP + find "$folder" -name \*.xml |while read xml;do + keys="$(xmlstarlet sel -t -m '//resources/*' -v @name -n $xml)" + + for key in $keys;do + grep -q $key tests/knownKeys && continue + if ag '"'$key'"' /build/AOSP-9.0/frameworks/base/core/res/res > /dev/null;then + echo $key >> tests/knownKeys + else + echo $xml defines a non-existing attribute $key + fi + done + done +done +rm -f tests/priorities + +exit $result