Initial commit, long overdue

This commit is contained in:
Tad 2016-12-21 19:30:02 -05:00
commit c0083c1519
292 changed files with 951990 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
Signing_Keys/
Builds/
Repos/

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remove-project name="CyanogenMod/android_device_generic_mips" />
<remove-project name="CyanogenMod/android_device_generic_x86" />
<remove-project name="CyanogenMod/android_device_google_accessory_arduino" />
<remove-project name="CyanogenMod/android_device_google_accessory_demokit" />
<remove-project name="CyanogenMod/android_external_ant-wireless_ant_native" />
<remove-project name="CyanogenMod/android_external_ant-wireless_ant_service" />
<remove-project name="CyanogenMod/android_external_arduino" />
<remove-project name="CyanogenMod/android_hardware_samsung_slsi_exynos5" />
<remove-project name="CyanogenMod/android_hardware_ti_omap3" />
<remove-project name="CyanogenMod/android_hardware_ti_omap4xxx" />
<remove-project name="CyanogenMod/android_packages_apps_CMAccount" />
<remove-project name="CyanogenMod/android_packages_apps_CMBugreport" />
<remove-project name="CyanogenMod/android_packages_apps_CMUpdater" />
<remove-project name="CyanogenMod/android_packages_apps_Provision" />
<remove-project name="CyanogenMod/android_packages_apps_Stk" />
<remove-project name="CyanogenMod/android_packages_apps_VideoEditor" />
<remove-project name="CyanogenMod/android_packages_apps_VoiceDialer" />
<remove-project name="CyanogenMod/android_packages_apps_VoicePlus" />
<remove-project name="CyanogenMod/android_packages_inputmethods_OpenWnn" />
<remove-project name="CyanogenMod/android_packages_inputmethods_PinyinIME" />
<remove-project name="CyanogenMod/android_packages_screensavers_Basic" />
<remove-project name="CyanogenMod/android_packages_screensavers_PhotoTable" />
<remove-project name="CyanogenMod/android_packages_screensavers_WebView" />
<remove-project name="CyanogenMod/android_packages_wallpapers_Galaxy4" />
<remove-project name="CyanogenMod/android_packages_wallpapers_HoloSpiral" />
<remove-project name="CyanogenMod/android_packages_wallpapers_MagicSmoke" />
<remove-project name="CyanogenMod/android_packages_wallpapers_MusicVisualization" />
<remove-project name="CyanogenMod/android_packages_wallpapers_NoiseField" />
<remove-project name="CyanogenMod/android_packages_wallpapers_PhaseBeam" />
<remove-project name="CyanogenMod/android_packages_wallpapers_PhotoPhase" />
<remove-project name="device/generic/mini-emulator-armv7-a-neon" />
<remove-project name="device/generic/mini-emulator-mips" />
<remove-project name="device/generic/mini-emulator-x86" />
<remove-project name="platform/cts" />
<remove-project name="platform/developers/build" />
<remove-project name="platform/developers/demos" />
<remove-project name="platform/developers/docs" />
<remove-project name="platform/developers/samples/android" />
<remove-project name="platform/docs/source.android.com" />
<remove-project name="platform/packages/apps/OneTimeInitializer" />
<remove-project name="platform/prebuilts/clang/darwin-x86/3.1" />
<remove-project name="platform/prebuilts/clang/darwin-x86/3.2" />
<remove-project name="platform/prebuilts/clang/darwin-x86/arm/3.3" />
<remove-project name="platform/prebuilts/clang/darwin-x86/host/3.3" />
<remove-project name="platform/prebuilts/clang/darwin-x86/mips/3.3" />
<remove-project name="platform/prebuilts/clang/darwin-x86/x86/3.3" />
<remove-project name="platform/prebuilts/clang/linux-x86/mips/3.3" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.6" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.7" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.6" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.7" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/host/headers" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/mips/mipsel-linux-android-4.6" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/mips/mipsel-linux-android-4.7" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/x86/i686-linux-android-4.6" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/x86/i686-linux-android-4.7" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.7" />
<remove-project name="platform/prebuilts/gcc/linux-x86/mips/mipsel-linux-android-4.6" />
<remove-project name="platform/prebuilts/gcc/linux-x86/mips/mipsel-linux-android-4.7" />
<remove-project name="platform/prebuilts/python/darwin-x86/2.7.5" />
<remove-project name="platform/tools/emulator" />
<!--Device Repos-->
<project path="device/zte/nex" name="spock1104/android_device_zte_nex" remote="github" revision="cm11_newkern" />
<project path="device/qcom/common" name="CyanogenMod/android_device_qcom_common" remote="github" revision="cm-11.0" />
<project path="kernel/zte/msm8930" name="spock1104/android_kernel_zte_msm8930" remote="github" revision="stockmod" />
</manifest>

View File

@ -0,0 +1,137 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remove-project name="CyanogenMod/android_device_generic_goldfish" />
<remove-project name="CyanogenMod/android_device_generic_mips" />
<remove-project name="CyanogenMod/android_device_google_atv" />
<remove-project name="CyanogenMod/android_external_android-mock" />
<remove-project name="CyanogenMod/android_external_ant-wireless_ant_native" />
<remove-project name="CyanogenMod/android_external_ant-wireless_ant_service" />
<remove-project name="CyanogenMod/android_frameworks_compile_mclinker" />
<remove-project name="CyanogenMod/android_hardware_intel_common_libmix" />
<remove-project name="CyanogenMod/android_hardware_intel_common_libva" />
<remove-project name="CyanogenMod/android_hardware_intel_common_libwsbm" />
<remove-project name="CyanogenMod/android_hardware_intel_common_omx-components" />
<remove-project name="CyanogenMod/android_hardware_intel_img_hwcomposer" />
<remove-project name="CyanogenMod/android_hardware_intel_img_psb_headers" />
<remove-project name="CyanogenMod/android_hardware_intel_img_psb_video" />
<remove-project name="CyanogenMod/android_hardware_qcom_fm" />
<remove-project name="CyanogenMod/android_hardware_samsung_slsi_exynos5" />
<remove-project name="CyanogenMod/android_hardware_ti_omap4" />
<remove-project name="CyanogenMod/android_hardware_ti_omap4xxx" />
<remove-project name="CyanogenMod/android_hardware_ti_wlan" />
<remove-project name="CyanogenMod/android_hardware_ti_wpan" />
<remove-project name="CyanogenMod/android_packages_apps_CMBugreport" />
<remove-project name="CyanogenMod/android_packages_apps_CMUpdater" />
<!--<remove-project name="CyanogenMod/android_packages_apps_Eleven" />-->
<remove-project name="CyanogenMod/android_packages_apps_FMRadio" />
<remove-project name="CyanogenMod/android_packages_apps_LockClock" />
<remove-project name="CyanogenMod/android_packages_apps_ManagedProvisioning" />
<remove-project name="CyanogenMod/android_packages_apps_Provision" />
<remove-project name="CyanogenMod/android_packages_apps_SmartCardService" />
<remove-project name="CyanogenMod/android_packages_apps_SpeechRecorder" />
<remove-project name="CyanogenMod/android_packages_apps_Stk" />
<!--<remove-project name="CyanogenMod/android_packages_apps_Terminal" />-->
<remove-project name="CyanogenMod/android_packages_apps_TvSettings" />
<remove-project name="CyanogenMod/android_packages_experimental" />
<remove-project name="CyanogenMod/android_packages_providers_PartnerBookmarksProvider" />
<remove-project name="CyanogenMod/android_packages_providers_TvProvider" />
<remove-project name="CyanogenMod/android_packages_screensavers_Basic" />
<remove-project name="CyanogenMod/android_packages_screensavers_PhotoTable" />
<remove-project name="CyanogenMod/android_packages_screensavers_WebView" />
<remove-project name="CyanogenMod/android_packages_wallpapers_Galaxy4" />
<remove-project name="CyanogenMod/android_packages_wallpapers_HoloSpiral" />
<remove-project name="CyanogenMod/android_packages_wallpapers_MagicSmoke" />
<remove-project name="CyanogenMod/android_packages_wallpapers_NoiseField" />
<remove-project name="CyanogenMod/android_packages_wallpapers_PhaseBeam" />
<remove-project name="CyanogenMod/android_packages_wallpapers_PhotoPhase" />
<remove-project name="device/generic/mini-emulator-arm64" />
<remove-project name="device/generic/mini-emulator-armv7-a-neon" />
<remove-project name="device/generic/mini-emulator-mips" />
<remove-project name="device/generic/mini-emulator-x86" />
<remove-project name="device/generic/mini-emulator-x86_64" />
<remove-project name="device/generic/qemu" />
<remove-project name="device/generic/x86" />
<remove-project name="device/generic/x86_64" />
<remove-project name="device/google/accessory/arduino" />
<remove-project name="device/google/accessory/demokit" />
<remove-project name="device/sample" />
<remove-project name="platform/cts" />
<remove-project name="platform/developers/build" />
<remove-project name="platform/developers/samples/android" />
<remove-project name="platform/docs/source.android.com" />
<remove-project name="platform/external/google-tv-pairing-protocol" />
<remove-project name="platform/hardware/intel/audio_media" />
<remove-project name="platform/hardware/intel/bootstub" />
<remove-project name="platform/hardware/intel/common/bd_prov" />
<remove-project name="platform/hardware/intel/common/libstagefrighthw" />
<remove-project name="platform/hardware/intel/common/utils" />
<remove-project name="platform/hardware/intel/common/wrs_omxil_core" />
<remove-project name="platform/hardware/intel/sensors" />
<remove-project name="platform/hardware/marvell/bt" />
<remove-project name="platform/hardware/mediatek" />
<remove-project name="platform/hardware/ti/omap3" />
<remove-project name="platform/hardware/ti/omap4-aah" />
<remove-project name="platform/packages/apps/OneTimeInitializer" />
<remove-project name="platform/prebuilts/android-emulator" />
<remove-project name="platform/prebuilts/clang/darwin-x86/host/3.6" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.8" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" />
<remove-project name="platform/prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" />
<remove-project name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" />
<remove-project name="platform/prebuilts/python/darwin-x86/2.7.5" />
<remote name="gitlab" fetch="https://gitlab.com/" />
<!--Chromium-->
<remove-project name="platform/external/chromium-webview" />
<project path="external/chromium-webview" name="copperheados/platform_external_chromium-webview" remote="github" revision="marshmallow" />
<project path="external/chromium" name="copperheados/platform_external_chromium" remote="github" revision="marshmallow" />
<!--Optimizations-->
<remove-project name="CyanogenMod/android_build" />
<project path="build" name="ArchiDroid/android_build" remote="github" revision="cm-13.0" />
<remove-project name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" />
<remove-project name="platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8" />
<remove-project name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" />
<!--DNScrypt-->
<project path="external/dnscrypt-proxy" name="CyanogenMod/android_external_dnscrypt_dnscrypt-proxy" remote="github" revision="cm-12.1" />
<project path="external/libsodium" name="CyanogenMod/android_external_dnscrypt_libsodium" remote="github" revision="cm-12.1" />
<!--Device Repos-->
<project path="device/lge/g3-common" name="CyanogenMod/android_device_lge_g3-common" remote="github" revision="cm-13.0" />
<project path="device/lge/hammerhead" name="CyanogenMod/android_device_lge_hammerhead" remote="github" revision="cm-13.0" />
<project path="device/lge/mako" name="SpotComms/android_device_lge_mako" remote="github" revision="cm-13.0" />
<project path="device/lge/vs985" name="CyanogenMod/android_device_lge_vs985" remote="github" revision="cm-13.0" />
<project path="device/moto/shamu" name="CyanogenMod/android_device_moto_shamu" remote="github" revision="cm-13.0" />
<project path="device/oneplus/bacon" name="SpotComms/android_device_oneplus_bacon" remote="github" revision="cm-13.0" />
<project path="device/oppo/common" name="CyanogenMod/android_device_oppo_common" remote="github" revision="cm-13.0" />
<project path="device/oppo/msm8974-common" name="CyanogenMod/android_device_oppo_msm8974-common" remote="github" revision="cm-13.0" />
<project path="device/qcom/common" name="CyanogenMod/android_device_qcom_common" remote="github" revision="cm-13.0" />
<project path="device/samsung/hlte-common" name="CyanogenMod/android_device_samsung_hlte-common" remote="github" revision="cm-13.0" />
<project path="device/samsung/hlte" name="CyanogenMod/android_device_samsung_hlte" remote="github" revision="cm-13.0" />
<project path="device/samsung/msm8974-common" name="CyanogenMod/android_device_samsung_msm8974-common" remote="github" revision="cm-13.0" />
<project path="device/samsung/qcom-common" name="CyanogenMod/android_device_samsung_qcom-common" remote="github" revision="cm-13.0" />
<project path="external/stlport" name="CyanogenMod/android_external_stlport" remote="github" revision="cm-13.0" />
<project path="hardware/samsung" name="CyanogenMod/android_hardware_samsung" remote="github" revision="cm-13.0" />
<project path="kernel/google/msm" name="SpotComms/android_kernel_google_msm" remote="github" revision="cm-13.0" />
<project path="kernel/lge/g3" name="CyanogenMod/android_kernel_lge_g3" remote="github" revision="cm-13.0" />
<project path="kernel/lge/hammerhead" name="CyanogenMod/android_kernel_lge_hammerhead" remote="github" revision="cm-13.0" />
<project path="kernel/moto/shamu" name="CyanogenMod/android_kernel_moto_shamu" remote="github" revision="cm-13.0" />
<project path="kernel/oneplus/msm8974" name="SpotComms/android_kernel_oneplus_msm8974" remote="github" revision="cm-13.0-new3" />
<project path="kernel/samsung/hlte" name="CyanogenMod/android_kernel_samsung_hlte" remote="github" revision="cm-13.0" />
<project path="vendor/lge" name="TheMuppets/proprietary_vendor_lge" remote="github" revision="cm-13.0" />
<project path="vendor/motorola" name="TheMuppets/proprietary_vendor_motorola" remote="github" revision="cm-13.0" />
<project path="vendor/oneplus" name="TheMuppets/proprietary_vendor_oneplus" remote="github" revision="cm-13.0" />
<project path="vendor/oppo" name="TheMuppets/proprietary_vendor_oppo" remote="github" revision="cm-13.0" />
<project path="vendor/samsung" name="TheMuppets/proprietary_vendor_samsung" remote="github" revision="cm-13.0" />
<!--TWRP
<remove-project name="CyanogenMod/android_bootable_recovery" />
<project path="bootable/recovery" name="omnirom/android_bootable_recovery" remote="github" revision="android-6.0" />-->
</manifest>

View File

@ -0,0 +1,148 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<!-- START OF UNNECESSARY REPO REMOVAL -->
<remove-project name="CyanogenMod/android_external_ant-wireless_ant_native" />
<remove-project name="CyanogenMod/android_external_ant-wireless_ant_service" />
<remove-project name="CyanogenMod/android_external_gello_build" />
<remove-project name="CyanogenMod/android_hardware_intel_common_libmix" />
<remove-project name="CyanogenMod/android_hardware_intel_common_libva" />
<remove-project name="CyanogenMod/android_hardware_intel_common_libwsbm" />
<remove-project name="CyanogenMod/android_hardware_intel_common_omx-components" />
<remove-project name="CyanogenMod/android_hardware_intel_common_utils" />
<remove-project name="CyanogenMod/android_hardware_intel_img_hwcomposer" />
<remove-project name="CyanogenMod/android_hardware_intel_img_psb_headers" />
<remove-project name="CyanogenMod/android_hardware_intel_img_psb_video" />
<remove-project name="CyanogenMod/android_hardware_ti_omap4xxx" />
<remove-project name="CyanogenMod/android_packages_apps_CMBugreport" />
<remove-project name="CyanogenMod/android_packages_apps_FMRadio" />
<remove-project name="CyanogenMod/CyanogenMod/android_packages_apps_Gello" />
<remove-project name="CyanogenMod/android_packages_apps_ManagedProvisioning" />
<remove-project name="CyanogenMod/android_packages_apps_Stk" />
<remove-project name="CyanogenMod/android_packages_apps_TvSettings" />
<remove-project name="CyanogenMod/android_packages_providers_PartnerBookmarksProvider" />
<remove-project name="CyanogenMod/android_packages_providers_TvProvider" />
<remove-project name="CyanogenMod/android_packages_screensavers_Basic" />
<remove-project name="CyanogenMod/android_packages_screensavers_PhotoTable" />
<remove-project name="CyanogenMod/android_packages_screensavers_WebView" />
<remove-project name="CyanogenMod/android_packages_services_Car" />
<remove-project name="CyanogenMod/android_prebuilts_gcc_darwin-x86_aarch64_aarch64-linux-android-4.9" />
<remove-project name="CyanogenMod/android_prebuilts_gcc_darwin-x86_arm_arm-linux-androideabi-4.9" />
<remove-project name="CyanogenMod/android_prebuilts_gcc_darwin-x86_x86_x86_64-linux-android-4.9" />
<remove-project name="device/generic/goldfish" />
<remove-project name="device/generic/mini-emulator-arm64" />
<remove-project name="device/generic/mini-emulator-armv7-a-neon" />
<remove-project name="device/generic/mini-emulator-x86" />
<remove-project name="device/generic/mini-emulator-x86_64" />
<remove-project name="device/generic/qemu" />
<remove-project name="device/sample" />
<remove-project name="platform/cts" />
<remove-project name="platform/hardware/intel/audio_media" />
<remove-project name="platform/hardware/intel/bootstub" />
<remove-project name="platform/hardware/intel/common/bd_prov" />
<remove-project name="platform/hardware/intel/common/libstagefrighthw" />
<remove-project name="platform/hardware/intel/common/wrs_omxil_core" />
<remove-project name="platform/hardware/intel/sensors" />
<remove-project name="platform/hardware/ti/omap3" />
<remove-project name="platform/hardware/ti/omap4-aah" />
<remove-project name="platform/packages/apps/Provision" />
<remove-project name="platform/prebuilts/clang/darwin-x86/host/3.6" />
<remove-project name="platform/prebuilts/clang/host/darwin-x86" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.8" />
<remove-project name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" />
<remove-project name="platform/prebuilts/gdb/darwin-x86" />
<remove-project name="platform/prebuilts/go/darwin-x86" />
<remove-project name="platform/prebuilts/ninja/darwin-x86" />
<remove-project name="platform/prebuilts/python/darwin-x86/2.7.5" />
<!-- END OF UNNECESSARY REPO REMOVAL -->
<!-- START OF REPLACEMENT REPOS -->
<!-- Updated WebView
<remove-project name="platform/external/chromium-webview" /> -->
<!-- OpenDelta Updater -->
<remove-project name="CyanogenMod/android_packages_apps_CMUpdater" />
<project path="packages/apps/OpenDelta" name="omnirom/android_packages_apps_OpenDelta" remote="github" revision="android-7.1" />
<!-- TWRP
<remove-project name="CyanogenMod/android_bootable_recovery" />
<project path="bootable/recovery" name="omnirom/android_bootable_recovery" remote="github" revision="android-7.0" />-->
<!-- MicroG -->
<project path="packages/apps/GmsCore" name="microg/android_packages_apps_GmsCore" remote="github" revision="master" />
<project path="packages/apps/GsfProxy" name="microg/android_packages_apps_GsfProxy" remote="github" revision="master" />
<project path="packages/apps/FakeStore" name="microg/android_packages_apps_FakeStore" remote="github" revision="master" />
<!-- F-Droid -->
<remote name="fdroid" fetch="https://gitlab.com/fdroid/" />
<project path="packages/apps/FDroidPrivilegedExtension" name="privileged-extension.git" remote="fdroid" revision="master" />
<project path="packages/apps/FDroid" name="fdroidclient.git" remote="fdroid" revision="master" />
<!-- END OF REPLACEMENT REPOS -->
<!-- START OF DEVICE REPOS -->
<!-- Common -->
<project path="packages/resources/devicesettings" name="CyanogenMod/android_packages_resources_devicesettings" remote="github" />
<project path="device/oppo/common" name="CyanogenMod/android_device_oppo_common" remote="github" />
<project path="device/qcom/common" name="CyanogenMod/android_device_qcom_common" remote="github" />
<project path="hardware/samsung" name="CyanogenMod/android_hardware_samsung" remote="github" />
<project path="hardware/sony/thermanager" name="CyanogenMod/android_hardware_sony_thermanager" remote="github" />
<project path="kernel/google/msm" name="CyanogenMod/android_kernel_google_msm" remote="github" />
<!-- Nexus 4 (Mako) -->
<project path="device/lge/mako" name="CyanogenMod/android_device_lge_mako" remote="github" />
<project path="kernel/lge/mako" name="CyanogenMod/lge-kernel-mako" remote="github" />
<!-- Nexus 5 (Hammerhead) -->
<project path="device/lge/hammerhead" name="CyanogenMod/android_device_lge_hammerhead" remote="github" />
<project path="kernel/lge/hammerhead" name="CyanogenMod/android_kernel_lge_hammerhead" remote="github" />
<!-- Nexus 6 (Shamu) -->
<project path="device/moto/shamu" name="CyanogenMod/android_device_moto_shamu" remote="github" />
<project path="kernel/moto/shamu" name="CyanogenMod/android_kernel_moto_shamu" remote="github" />
<!-- Nexus 5X (Bullhead) -->
<project path="device/lge/bullhead" name="CyanogenMod/android_device_lge_bullhead" remote="github" />
<project path="kernel/lge/bullhead" name="CyanogenMod/android_kernel_lge_bullhead" remote="github" />
<!-- Nexus 6P (Angler) -->
<project path="device/huawei/angler" name="CyanogenMod/android_device_huawei_angler" remote="github" />
<project path="kernel/huawei/angler" name="CyanogenMod/android_kernel_huawei_angler" remote="github" />
<!-- Asus Zenfone 2 Laser (Z00T) -->
<project name="CyanogenMod/android_device_asus_msm8916-common" path="device/asus/msm8916-common" remote="github" />
<project name="CyanogenMod/android_device_asus_Z00T" path="device/asus/Z00T" remote="github" />
<project name="CyanogenMod/android_kernel_asus_msm8916" path="kernel/asus/msm8916" remote="github" />
<!-- LG G3 (VS985) -->
<project path="device/lge/g3-common" name="CyanogenMod/android_device_lge_g3-common" remote="github" />
<project path="device/lge/vs985" name="CyanogenMod/android_device_lge_vs985" remote="github" />
<project path="kernel/lge/g3" name="CyanogenMod/android_kernel_lge_g3" remote="github" />
<!-- Moto X Pure Edition (XT1575) -->
<project path="device/motorola/clark" name="CyanogenMod/android_device_motorola_clark" remote="github" />
<project path="kernel/motorola/msm8992" name="CyanogenMod/android_kernel_motorola_msm8992" remote="github" />
<!-- OnePlus One (Bacon) -->
<project path="device/oneplus/bacon" name="CyanogenMod/android_device_oneplus_bacon" remote="github" />
<project path="device/oppo/msm8974-common" name="CyanogenMod/android_device_oppo_msm8974-common" remote="github" />
<project path="kernel/oneplus/msm8974" name="CyanogenMod/android_kernel_oneplus_msm8974" remote="github" />
<!-- Samsung Galaxy Note 4 (trltetmo)
<project path="device/samsung/trlte-common" name="CyanogenMod/android_device_samsung_trlte-common" remote="github" />
<project path="device/samsung/trltetmo" name="CyanogenMod/android_device_samsung_trltetmo" remote="github" />
<project path="kernel/samsung/trlte" name="CyanogenMod/android_kernel_samsung_trlte" remote="github" />-->
<!-- Proprietary Blobs -->
<project path="vendor/asus" name="TheMuppets/proprietary_vendor_asus" remote="github" />
<project path="vendor/huawei" name="TheMuppets/proprietary_vendor_huawei" remote="github" />
<project path="vendor/lge" name="TheMuppets/proprietary_vendor_lge" remote="github" />
<project path="vendor/motorola" name="TheMuppets/proprietary_vendor_motorola" remote="github" />
<project path="vendor/oneplus" name="TheMuppets/proprietary_vendor_oneplus" remote="github" />
<project path="vendor/oppo" name="TheMuppets/proprietary_vendor_oppo" remote="github" />
<project path="vendor/samsung" name="TheMuppets/proprietary_vendor_samsung" remote="github" />
<project path="vendor/qcom/binaries" name="TheMuppets/proprietary_vendor_qcom_binaries" remote="github" />
<!-- END OF DEVICE REPOS -->
</manifest>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<!-- START OF DEVICE REPOS -->
<!-- Proprietary Blobs -->
<project path="vendor/lge" name="DonkeyCoyote/proprietary_vendor_lge" remote="github" />
<project path="vendor/motorola" name="DonkeyCoyote/proprietary_vendor_motorola" remote="github" />
<project path="vendor/oneplus" name="DonkeyCoyote/proprietary_vendor_oneplus" remote="github" />
<project path="vendor/oppo" name="DonkeyCoyote/proprietary_vendor_oppo" remote="github" />
<!-- END OF DEVICE REPOS -->
</manifest>

12
Misc/99clear_cache Normal file
View File

@ -0,0 +1,12 @@
#!/system/bin/sh
#clears various junk
rm -rf /cache/*
rm -rf /data/anr/*
#rm -rf /data/log/*
rm -rf /data/system/cache/*
rm -rf /data/system/dropbox/*
rm -rf /data/system/procstats/*
rm -rf /data/system/recent_images/*
rm -rf /data/system/usagestats/*
rm -rf /data/tombstones/*

182
Misc/App-Profiles.txt Normal file
View File

@ -0,0 +1,182 @@
au.com.shiftyjelly.pocketcasts.*,0
be.uhasselt.privacypolice.*,0
com.accuweather.android.*,0
com.adobe.reader.*,0
com.alensw.PicFolder.*,0
com.amaze.filemanager.*,0
com.amazon.kindle.*,0
com.amazon.mShop.android.shopping.*,0
com.amazon.windowshop.*,0
com.andrewshu.android.reddit.*,0
com.andrewshu.android.redditdonation.*,0
com.android.browser.*,1
com.android.calculator2.*,0
com.android.calendar.*,0
com.android.camera2.*,1
com.android.chrome.*,1
com.android.contacts.*,0
com.android.deskclock.*,0
com.android.dialer.*,0
com.android.email.*,0
com.android.gallery3d.*,0
com.android.incallui.*,0
com.android.keepass.*,1
com.android.mms.*,0
com.android.providers.downloads.ui.*,0
com.android.settings.*,0
com.android.soundrecorder.*,0
com.antutu.ABenchMark.*,2
.*com.antutu.benchmark.*,2
com.asksven.betterbatterystats.*,0
com.aurorasoftworks.quadrant.*BenchmarkExecutionActivity,2
com.authy.authy.*,0
com.bethsoft.falloutshelter.*,1
com.coffeestainstudios.goatsimulator.*,1
com.cyanogenmod.trebuchet.*,0
com.danvelazco.fbwrapper.*,0
com.distractionware.superhexagon.*,1
com.dropbox.android.*,0
com.eamobile.monopoly_na_wf.*,1
com.ebay.mobile.*,0
com.facebook.katana.*,1
com.facebook.orca.*,1
com.farproc.wifi.analyzer.*,0
com.fifthelement.trimmer.*,1
com.flightradar24pro.*,1
com.flyersoft.moonreader.*,0
com.flyersoft.moonreaderp.*,0
com.gh4a.*,0
com.google.android.apps.chromecast.app.*,0
com.google.android.apps.docs.editors.docs.*,1
com.google.android.apps.docs.editors.sheets.*,1
com.google.android.apps.docs.editors.slides.*,1
com.google.android.apps.gmoney.*,0
com.google.android.apps.hangoutsdialer.*,1
com.google.android.apps.inbox.*,0
com.google.android.apps.messaging.*,0
com.google.android.apps.pdfviewer.*,0
com.google.android.apps.photos.*,0
com.google.android.apps.translate.*,1
com.google.android.calendar.*,0
com.google.android.gms.*,0
com.google.android.googlequicksearchbox.*,1
com.google.android.keep.*,0
com.google.android.play.games.*,0
com.google.android.youtube.*,1
com.google.earth.*,1
com.google.xzing.client.android.*,0
com.grarak.kerneladiutor.*,0
com.hulu.plus.*,1
com.instagram.android.*,1
com.ironhidegames.android.kingdomrushfrontiers.*,1
com.ironhidegames.android.kingdomrushorigins.*,1
com.jeremysteckling.facerrel.*,0
com.koushikdutta.backup.*,1
com.koushikdutta.backup.license.*,1
com.laurencedawson.reddit_sync.*,0
com.laurencedawson.reddit_sync.pro.*,0
com.leosfortune.*,0
com.lightricks.facetune.*,1
com.mb.android.*,1
com.melodis.midomiMusicIdentifier.freemium.*,0
com.mgaetan89.showsrage.*,0
com.microblink.photomath.*,1
com.microsoft.office.excel.*,1
com.microsoft.office.outlook.*,0
com.microsoft.office.powerpoint.*,1
com.microsoft.office.word.*,1
com.microsoft.skydrive.*,0
com.miniclip.plagueinc.*,0
com.mitzuli.*,0
com.mojang.minecraftpe.*,1
com.morlunk.mumbleclient.*,0
com.mxtech.videoplayer.ad.*,1
com.mxtech.videoplayer.pro.*,1
com.netflix.mediaclient.*,1
com.ngmoco.pocketgod.*,0
com.ninjakiwi.bloonstd5.*,1
com.nutomic.syncthingandroid.*,1
com.oasisfeng.greenify.*,0
com.oasisfeng.greenify.pro.*,0
com.pandora.android.*,0
com.paypal.android.p2pmobile.*,0
com.pinterest.*,0
com.plexapp.android.*,1
com.primatelabs.geekbench.*,2
com.quizup.core.*,0
com.redbox.android.activity.*,0
com.roku.remote.*,0
com.rovio.angrybirds.*,0
com.samruston.weather.*,0
com.SecUpwN.AIMSICD.*,0
com.shazam.android.*,0
com.shazam.encore.android.*,0
com.skype.radar.*,1
com.snapchat.android.*,1
com.soundcloud.android.*,0
com.spotify.music.*,0
com.target.ui.*,0
com.tassadar.multirommgr.*,1
com.teamspeak.ts3client.*,0
com.tinder.*,0
com.tobykurien.google_news.*,0
com.tumblr.*,0
com.twitter.android.*,0
com.ubercab.*,1
com.ubercab.driver.*,1
com.urbandroid.sleep.*,0
com.ustwo.monumentvalley.*,0
com.uzumapps.wakelockdetector.*,0
com.valvesoftware.android.steam.community.*,0
com.walmart.android.*,0
com.waze.*,1
com.weather.Weather.*,0
com.whatsapp.*,0
com.xzbber.androiddev.*,0
com.yelp.android.*,0
com.yodo1.crossroad.*,0
com.yubico.yubiclip.*,0
com.yubico.yubioath.*,0
com.zillow.android.zillowmap.*,1
co.vine.android.*,1
de.srlabs.snoopsnitch.*,0
de.tap.easy_xkcd.*,0
dev.ukanth.ufirewall.*, 1
dk.jens.backup.*,1
eu.chainfire.supersu.*,0
eu.chainfire.supersu.pro.*,0
eu.thedarken.sdm.*,1
fr.kwiatkowski.ApkTrack.*,1
io.github.droidapps.pdfreader.*,0
it.mvilla.android.fenix.*,0
kik.android.*,1
me.ccrama.redditslide.*,0
me.ccrama.slideforreddit.*,0
me.ccrama.slideforreddittabletuiunlock.*,0
net.dinglisch.android.taskerm.*,0
net.etuldan.sparss.floss.*,0
net.i2p.android.router.*,0
net.minetest.minetest.*,1
net.nightwhistler.pageturner.*,0
net.osmand.plus.*,1
org.adaway.*,1
org.chromium.chrome.*,1
org.connectbot.*,0
org.csploit.android.*,1
org.cyanogenmod.audiofx.*,0
org.documentfoundation.libreoffice.*,0
org.fdroid.fdroid.*,1
org.ligi.blexplorer.*,0
org.mozilla.firefox.*,1
org.ppsspp.ppsspp.*,1
org.ppsspp.ppssppgold.*,1
org.quantumbadger.redreader.*,0
org.schabi.newpipe.*,1
org.torproject.android.*,0
org.videolan.vlc.*,1
org.wikipedia.*,0
org.yaaic.*,0
org.zwanoo.android.speedtest.*,2
reddit.news.*,0
rs.pedajaapps.alogcatroot.app.*,0
tw.twitch.android.app.*,1

42
Misc/Info-Old.txt Normal file
View File

@ -0,0 +1,42 @@
General Changes
Build
- Base: Added 182 applications to the automatic power profile switcher config
- Base: Don't enable battery saver when switching to power save profile
- Browser: Changed some default settings
- Browser: UI Update
- Compiled with UBERTC GCC 4.9 and AOSP NDK 4.9 using JustArchi's v4.1 optimization flags
- Removed analytics from various packages
- Removed some packages for privacy reasons
- Removed useless packages
- Settings: Added option to change encryption password
- Settings: Senisitive notification content is hidden by default
Kernels
- Compiled with UBERTC GCC 4.8 using Cortex-A15 optimization flags
- Enabled DIAG (SnoopSnitch support)
- Enabled modules support
- Implemented KEXEC support (Multirom support)
- Implemented Quick Wakeup (Battery savings)
To Do
- DNScrypt support
- Remove DRM server
- Add more governors
- Add more I/O schedulers
- LZ4 boot support
- Remove unneeded Qualcomm blobs
Bacon Changes
Kernel
- Implemented UKSM (Memory deduplication)
- Overclocked from 2.45Ghz to 2.88Ghz
- Underclocked from 300Mhz to 268Mhz
- Upgraded from Linux 3.4.67 to 3.4.110
Device
- Basic performance/battery build.prop optimizations
- Removed bundled Google Widevine DRM and Microsoft PlayReady DRM firmware files
Mako Changes
Kernel
- Overclocked from 1.51Ghz to 1.94Ghz
- Underclocked from 384Mhz to 81Mhz
Device
- None Yet

32
Misc/Info.txt Normal file
View File

@ -0,0 +1,32 @@
General Changes
Build
- Browser: Changed some default settings
- Camera2: Disabled location saving by default
- Compiled with UBERTC GCC 4.9 and AOSP NDK 4.9 using JustArchi's v4.1 optimization flags
- Miscellaneous hardening
- Removed analytics from various packages
- Removed some packages for privacy reasons
- Removed useless packages
- Settings: Senisitive notification content is hidden by default
To Do
- Add more governors
- Add more I/O schedulers
- DNScrypt support
- Implement Quick Wakeup
- Implement UKSM
- LZ4 boot support
- Remove DRM server
- Remove unneeded Qualcomm blobs
Bacon Changes
Kernel
- Overclocked from 2.45Ghz to 2.88Ghz
- Underclocked from 300Mhz to 268Mhz
Device
- Basic performance/battery build.prop optimizations
- Removed bundled Google Widevine DRM and Microsoft PlayReady DRM firmware files
Mako Changes
Kernel
- Overclocked from 1.51Ghz to 1.94Ghz
- Underclocked from 384Mhz to 81Mhz

View File

@ -0,0 +1,104 @@
From 4eb4173b876ab4b4d71a5be541096d346649bbef Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Sat, 30 May 2015 22:47:50 -0400
Subject: [PATCH] add optional automated signing
---
core/Makefile | 48 ++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 40 insertions(+), 8 deletions(-)
diff --git a/core/Makefile b/core/Makefile
index 7eca2db..82006c9 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -408,6 +408,11 @@ ifneq ($(OTA_PACKAGE_SIGNING_KEY),)
DEFAULT_KEY_CERT_PAIR := $(OTA_PACKAGE_SIGNING_KEY)
endif
+ifneq ($(SIGNING_KEY_DIR),)
+ KEY_CERT_DIR := $(SIGNING_KEY_DIR)
+ DEFAULT_KEY_CERT_PAIR := $(SIGNING_KEY_DIR)/releasekey
+endif
+
# Rules that need to be present for the all targets, even
# if they don't do anything.
.PHONY: systemimage
@@ -943,13 +948,18 @@ endif
# substitute other keys for this one.
OTA_PUBLIC_KEYS := $(DEFAULT_SYSTEM_DEV_CERTIFICATE).x509.pem
-ifneq ($(OTA_PACKAGE_SIGNING_KEY),)
- OTA_PUBLIC_KEYS := $(OTA_PACKAGE_SIGNING_KEY).x509.pem
- PRODUCT_EXTRA_RECOVERY_KEYS := $(DEFAULT_SYSTEM_DEV_CERTIFICATE)
+ifneq ($(SIGNING_KEY_DIR),)
+ OTA_PUBLIC_KEYS := $(SIGNING_KEY_DIR)/releasekey.x509.pem
+ PRODUCT_EXTRA_RECOVERY_KEYS += $(SIGNING_KEY_DIR)/extra
else
- PRODUCT_EXTRA_RECOVERY_KEYS += \
- build/target/product/security/cm \
- build/target/product/security/cm-devkey
+ ifneq ($(OTA_PACKAGE_SIGNING_KEY),)
+ OTA_PUBLIC_KEYS := $(OTA_PACKAGE_SIGNING_KEY).x509.pem
+ PRODUCT_EXTRA_RECOVERY_KEYS := $(DEFAULT_SYSTEM_DEV_CERTIFICATE)
+ else
+ PRODUCT_EXTRA_RECOVERY_KEYS += \
+ build/target/product/security/cm \
+ build/target/product/security/cm-devkey
+ endif
endif
# Generate a file containing the keys that will be read by the
@@ -1593,6 +1603,12 @@ BUILT_TARGET_FILES_PACKAGE := $(intermediates)/$(name).zip
$(BUILT_TARGET_FILES_PACKAGE): intermediates := $(intermediates)
$(BUILT_TARGET_FILES_PACKAGE): \
zip_root := $(intermediates)/$(name)
+SIGNED_TARGET_FILES_PACKAGE := $(intermediates)/signed-$(name).zip
+MAYBE_SIGNED_TARGET_FILES_PACKAGE := $(BUILT_TARGET_FILES_PACKAGE)
+
+ifneq ($(SIGNING_KEY_DIR),)
+ MAYBE_SIGNED_TARGET_FILES_PACKAGE := $(SIGNED_TARGET_FILES_PACKAGE)
+endif
# $(1): Directory to copy
# $(2): Location to copy it to
@@ -1868,6 +1884,12 @@ else
OTA_FROM_TARGET_SCRIPT := $(TARGET_RELEASETOOL_OTA_FROM_TARGET_SCRIPT)
endif
+ifeq ($(TARGET_RELEASETOOL_SIGN_TARGET_SCRIPT),)
+ SIGN_TARGET_SCRIPT := ./build/tools/releasetools/sign_target_files_apks
+else
+ SIGN_TARGET_SCRIPT := $(TARGET_RELEASETOOL_SIGN_TARGET_SCRIPT)
+endif
+
ifeq ($(WITH_GMS),true)
$(INTERNAL_OTA_PACKAGE_TARGET): backuptool := false
else
@@ -1895,7 +1917,17 @@ ifneq ($(BLOCK_BASED_OTA),false)
$(INTERNAL_OTA_PACKAGE_TARGET): block_based := --block
endif
-$(INTERNAL_OTA_PACKAGE_TARGET): $(BUILT_TARGET_FILES_PACKAGE) $(DISTTOOLS)
+$(SIGNED_TARGET_FILES_PACKAGE): $(BUILT_TARGET_FILES_PACKAGE) $(DISTTOOLS)
+ @echo "$(SIGN_TARGET_SCRIPT)" > $(PRODUCT_OUT)/sign_script_path
+ @echo -e ${CL_YLW}"Sign target files:"${CL_RST}" $@"
+ $(hide) $(SIGN_TARGET_SCRIPT) \
+ -d $(KEY_CERT_DIR) \
+ -o \
+ -e SMSSecure.apk,Orbot.apk,Android-IMSI-Catcher-Detector.apk,FreeOTP.apk,F-Droid.apk= \
+ $(BUILT_TARGET_FILES_PACKAGE) \
+ $(SIGNED_TARGET_FILES_PACKAGE)
+
+$(INTERNAL_OTA_PACKAGE_TARGET): $(MAYBE_SIGNED_TARGET_FILES_PACKAGE) $(DISTTOOLS)
@echo "$(OTA_FROM_TARGET_SCRIPT)" > $(PRODUCT_OUT)/ota_script_path
@echo "$(override_device)" > $(PRODUCT_OUT)/ota_override_device
@echo -e ${CL_YLW}"Package OTA:"${CL_RST}" $@"
@@ -1907,7 +1939,7 @@ $(INTERNAL_OTA_PACKAGE_TARGET): $(BUILT_TARGET_FILES_PACKAGE) $(DISTTOOLS)
--backup=$(backuptool) \
--override_device=$(override_device) $(override_prop) \
$(if $(OEM_OTA_CONFIG), -o $(OEM_OTA_CONFIG)) \
- $(BUILT_TARGET_FILES_PACKAGE) $@
+ $(MAYBE_SIGNED_TARGET_FILES_PACKAGE) $@
CM_TARGET_PACKAGE := $(PRODUCT_OUT)/cm-$(CM_VERSION).zip

View File

@ -0,0 +1,26 @@
From 56366ba56892d9de832ca86c95acb6674820d360 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Thu, 14 May 2015 19:14:53 -0400
Subject: [PATCH] enable secure_delete by default
This sanitizes deleted data by overwriting it with zeroes. It prevents a
non-root user from obtaining the deleted data even though it can still
linger on the underlying storage device.
---
dist/Android.mk | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dist/Android.mk b/dist/Android.mk
index 20b3a0a..7eabbdc 100644
--- a/dist/Android.mk
+++ b/dist/Android.mk
@@ -27,7 +27,8 @@ common_sqlite_flags := \
-DSQLITE_OMIT_BUILTIN_TEST \
-DSQLITE_OMIT_COMPILEOPTION_DIAGS \
-DSQLITE_OMIT_LOAD_EXTENSION \
- -DSQLITE_DEFAULT_FILE_PERMISSIONS=0600
+ -DSQLITE_DEFAULT_FILE_PERMISSIONS=0600 \
+ -DSQLITE_SECURE_DELETE
device_sqlite_flags := $(common_sqlite_flags) \
-DSQLITE_ENABLE_ICU \

View File

@ -0,0 +1,50 @@
From 938608ff6a4c61b4c1db2f6b94e81cae1a970aae Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Wed, 27 May 2015 00:29:08 -0400
Subject: [PATCH] hide passwords by default
---
core/java/android/text/method/TextKeyListener.java | 2 +-
core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java | 2 +-
packages/Keyguard/src/com/android/keyguard/PasswordTextView.java | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/core/java/android/text/method/TextKeyListener.java b/core/java/android/text/method/TextKeyListener.java
index 994f3d7..b2ac244 100644
--- a/core/java/android/text/method/TextKeyListener.java
+++ b/core/java/android/text/method/TextKeyListener.java
@@ -291,7 +291,7 @@ private void updatePrefs(ContentResolver resolver) {
boolean cap = System.getInt(resolver, System.TEXT_AUTO_CAPS, 1) > 0;
boolean text = System.getInt(resolver, System.TEXT_AUTO_REPLACE, 1) > 0;
boolean period = System.getInt(resolver, System.TEXT_AUTO_PUNCTUATE, 1) > 0;
- boolean pw = System.getInt(resolver, System.TEXT_SHOW_PASSWORD, 1) > 0;
+ boolean pw = System.getInt(resolver, System.TEXT_SHOW_PASSWORD, 0) > 0;
mPrefs = (cap ? AUTO_CAP : 0) |
(text ? AUTO_TEXT : 0) |
diff --git a/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java b/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
index b2c9dc5..dc5b7f9 100644
--- a/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
+++ b/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
@@ -159,7 +159,7 @@ public void setKeyboardMode(int mode) {
mKeyboardState = KEYBOARD_STATE_NORMAL;
final boolean visiblePassword = Settings.System.getInt(
mContext.getContentResolver(),
- Settings.System.TEXT_SHOW_PASSWORD, 1) != 0;
+ Settings.System.TEXT_SHOW_PASSWORD, 0) != 0;
final boolean enablePreview = false; // TODO: grab from configuration
mKeyboardView.setPreviewEnabled(visiblePassword && enablePreview);
break;
diff --git a/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java b/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
index 50e7ecb..7d29928 100644
--- a/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
+++ b/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
@@ -129,7 +129,7 @@ public PasswordTextView(Context context, AttributeSet attrs, int defStyleAttr,
mCharPadding = getContext().getResources().getDimensionPixelSize(R.dimen
.password_char_padding);
mShowPassword = Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.TEXT_SHOW_PASSWORD, 1) == 1;
+ Settings.System.TEXT_SHOW_PASSWORD, 0) == 1;
mAppearInterpolator = AnimationUtils.loadInterpolator(mContext,
android.R.interpolator.linear_out_slow_in);
mDisappearInterpolator = AnimationUtils.loadInterpolator(mContext,

View File

@ -0,0 +1,154 @@
From a798817de09cc787850ee957c7326fb36dc6c5a5 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Thu, 3 Dec 2015 14:27:34 -0500
Subject: [PATCH] support separate encryption/lockscreen passwords
This adds the necessary infrastructure for allowing users to opt-in to a
distinct device encryption passphrase. The passwords are still tied
together by default. This makes it possible to use a complex encryption
passphrase without losing the convenience of a very simple lockscreen
pin.
This feature can be combined with a forced reboot after a chosen number
of failed unlocking attempts to prevent brute-forcing by requiring the
entry of the encryption password instead.
---
core/java/android/provider/Settings.java | 7 +++
.../android/internal/widget/LockPatternUtils.java | 72 +++++++++++++++++++++-
.../com/android/server/LockSettingsService.java | 1 +
3 files changed, 77 insertions(+), 3 deletions(-)
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index e107fd1..a6be540 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -4850,6 +4850,13 @@ public static boolean putFloatForUser(ContentResolver cr, String name, float val
"lock_screen_allow_private_notifications";
/**
+ * Separate password for encryption and the lockscreen.
+ * @hide
+ */
+ public static final String LOCK_SEPARATE_ENCRYPTION_PASSWORD =
+ "lock_separate_encryption_password";
+
+ /**
* Set by the system to track if the user needs to see the call to action for
* the lockscreen notification policy.
* @hide
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index ae22b50..25f56e7 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -457,7 +457,8 @@ public void clearLock(int userHandle) {
// well, we tried...
}
- if (userHandle == UserHandle.USER_OWNER) {
+ if (userHandle == UserHandle.USER_OWNER
+ && !isSeparateEncryptionPasswordEnabled()) {
// Set the encryption password to default.
updateEncryptionPassword(StorageManager.CRYPT_TYPE_DEFAULT, null);
}
@@ -518,7 +519,8 @@ public void saveLockPattern(List<LockPatternView.Cell> pattern, String savedPatt
// Update the device encryption password.
if (userId == UserHandle.USER_OWNER
- && LockPatternUtils.isDeviceEncryptionEnabled()) {
+ && LockPatternUtils.isDeviceEncryptionEnabled()
+ && !isSeparateEncryptionPasswordEnabled()) {
if (!shouldEncryptWithCredentials(true)) {
clearEncryptionPassword();
} else {
@@ -727,7 +729,8 @@ public void saveLockPassword(String password, String savedPassword, int quality,
// Update the device encryption password.
if (userHandle == UserHandle.USER_OWNER
- && LockPatternUtils.isDeviceEncryptionEnabled()) {
+ && LockPatternUtils.isDeviceEncryptionEnabled()
+ && !isSeparateEncryptionPasswordEnabled()) {
if (!shouldEncryptWithCredentials(true)) {
clearEncryptionPassword();
} else {
@@ -1071,6 +1074,69 @@ public void setVisiblePasswordEnabled(boolean enabled, int userId) {
}
}
+ private void updateEncryptionPasswordFromPassword(String password) {
+ if (!TextUtils.isEmpty(password)) {
+ int computedQuality = computePasswordQuality(password);
+ boolean numeric = computedQuality
+ == DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
+ boolean numericComplex = computedQuality
+ == DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX;
+ int type = numeric || numericComplex ? StorageManager.CRYPT_TYPE_PIN
+ : StorageManager.CRYPT_TYPE_PASSWORD;
+ updateEncryptionPassword(type, password);
+ } else {
+ clearEncryptionPassword();
+ }
+ }
+
+ /**
+ * Set the encryption password separately from the lockscreen password.
+ *
+ * @param password The password to save
+ */
+ public void setSeparateEncryptionPassword(String password) {
+ updateEncryptionPasswordFromPassword(password);
+ setSeparateEncryptionPasswordEnabled(true);
+ }
+
+ /**
+ * Replace the separate encryption password by tying it to the lockscreen
+ * password. No change will occur if the provided lockscreen password is
+ * incorrect.
+ *
+ * @param password The current lockscreen password
+ * @return Whether the lockscreen password was correct.
+ */
+ public void replaceSeparateEncryptionPassword(String password) {
+ updateEncryptionPasswordFromPassword(password);
+ setSeparateEncryptionPasswordEnabled(false);
+ }
+
+ /**
+ * Replace the separate encryption password by tying it to the lockscreen
+ * pattern. No change will occur if the provided lockscreen password is
+ * incorrect.
+ *
+ * @param pattern The current lockscreen pattern
+ * @return Whether the lockscreen pattern was correct.
+ */
+ public void replaceSeparateEncryptionPasswordWithPattern(List<LockPatternView.Cell> pattern) {
+ String stringPattern = patternToString(pattern);
+ updateEncryptionPassword(StorageManager.CRYPT_TYPE_PATTERN, stringPattern);
+ setSeparateEncryptionPasswordEnabled(false);
+ }
+
+ /**
+ * @return Whether the encryption password is separate from the lockscreen password.
+ */
+ public boolean isSeparateEncryptionPasswordEnabled() {
+ return getBoolean(Settings.Secure.LOCK_SEPARATE_ENCRYPTION_PASSWORD, false, UserHandle.USER_OWNER);
+ }
+
+ private void setSeparateEncryptionPasswordEnabled(boolean enabled) {
+ setBoolean(Settings.Secure.LOCK_SEPARATE_ENCRYPTION_PASSWORD, enabled, UserHandle.USER_OWNER);
+ }
+
/**
* @return Whether tactile feedback for the pattern is enabled.
*/
diff --git a/services/core/java/com/android/server/LockSettingsService.java b/services/core/java/com/android/server/LockSettingsService.java
index bb0615d..6e05fde 100644
--- a/services/core/java/com/android/server/LockSettingsService.java
+++ b/services/core/java/com/android/server/LockSettingsService.java
@@ -813,6 +813,7 @@ public void requireStrongAuth(int strongAuthReason, int userId) {
Secure.LOCK_PATTERN_SIZE,
Secure.LOCK_DOTS_VISIBLE,
Secure.LOCK_SHOW_ERROR_PATH,
+ Secure.LOCK_SEPARATE_ENCRYPTION_PASSWORD
};
// Reading these settings needs the contacts permission

View File

@ -0,0 +1,22 @@
From e46cfef3dcfec3b5ee5aff05c46d21ea76b36100 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Sat, 5 Dec 2015 19:33:19 -0500
Subject: [PATCH] remove analytics support
---
.../src/com/android/providers/settings/DatabaseHelper.java | 2 --
1 file changed, 2 deletions(-)
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index b3ec295..9784ee7 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -1911,8 +1911,6 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) {
}
if (upgradeVersion < 115) {
- moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE,
- new String[] { CMSettings.Secure.STATS_COLLECTION }, true);
if (mUserHandle == UserHandle.USER_OWNER) {
db.beginTransaction();
SQLiteStatement stmt = null;

View File

@ -0,0 +1,31 @@
From 4b908ef94233b911fe3d6f2d93a6076a7ab92151 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Sun, 5 Apr 2015 00:57:23 -0400
Subject: [PATCH] remove duckduckgo referral strings
---
res/values/all_search_engines.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/res/values/all_search_engines.xml b/res/values/all_search_engines.xml
index a87c880..51ebfe4 100644
--- a/res/values/all_search_engines.xml
+++ b/res/values/all_search_engines.xml
@@ -752,7 +752,7 @@ http://www.opensearch.org/Specifications/OpenSearch/1.1/Draft_4#OpenSearch_1.1_p
<item>DuckDuckGo</item>
<item>duckduckgo.com</item>
<item>https://duckduckgo.com/favicon.ico</item>
- <item>https://duckduckgo.com/?q={searchTerms}&amp;t=cyanogenmod</item>
+ <item>https://duckduckgo.com/?q={searchTerms}</item>
<item>UTF-8</item>
<item></item>
</string-array>
@@ -760,7 +760,7 @@ http://www.opensearch.org/Specifications/OpenSearch/1.1/Draft_4#OpenSearch_1.1_p
<item>DuckDuckGo (UK)</item>
<item>duckduckgo.com</item>
<item>https://duckduckgo.com/favicon.ico</item>
- <item>https://duckduckgo.com/?q={searchTerms}%20r:uk&amp;t=cyanogenmod</item>
+ <item>https://duckduckgo.com/?q={searchTerms}%20r:uk</item>
<item>UTF-8</item>
<item></item>
</string-array>

View File

@ -0,0 +1,36 @@
From 58bde4cc16f1a0544526fed769542b707b7dc516 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Fri, 20 Mar 2015 18:13:23 -0400
Subject: [PATCH] switch default search engine to duckduckgo
---
res/xml-sw600dp/advanced_preferences.xml | 2 +-
res/xml/advanced_preferences.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/res/xml-sw600dp/advanced_preferences.xml b/res/xml-sw600dp/advanced_preferences.xml
index f3107d8..ae19504 100644
--- a/res/xml-sw600dp/advanced_preferences.xml
+++ b/res/xml-sw600dp/advanced_preferences.xml
@@ -21,7 +21,7 @@
<com.android.browser.search.SearchEnginePreference
android:key="search_engine"
android:title="@string/pref_content_search_engine"
- android:defaultValue="google"
+ android:defaultValue="duckduckgo"
android:summary="@string/pref_content_search_engine_summary"
android:dialogTitle="@string/pref_content_search_engine" />
diff --git a/res/xml/advanced_preferences.xml b/res/xml/advanced_preferences.xml
index 1b051f8..f068330 100644
--- a/res/xml/advanced_preferences.xml
+++ b/res/xml/advanced_preferences.xml
@@ -21,7 +21,7 @@
<com.android.browser.search.SearchEnginePreference
android:key="search_engine"
android:title="@string/pref_content_search_engine"
- android:defaultValue="google"
+ android:defaultValue="duckduckgo"
android:summary="@string/pref_content_search_engine_summary"
android:dialogTitle="@string/pref_content_search_engine" />

View File

@ -0,0 +1,23 @@
From 54f68f47ef79ebda9b695e0205b8abc4e2f07d86 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Sun, 5 Apr 2015 01:00:31 -0400
Subject: [PATCH] switch default home page to duckduckgo
---
res/values/strings.xml | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d79c7f7..0899df9 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -794,8 +794,7 @@
<string name="dump_nav" translatable="false">Dump navigation cache</string>
<!-- The default homepage. -->
- <string name="homepage_base" translatable="false">
- https://www.google.com/webhp?client={CID}&amp;source=android-home</string>
+ <string name="homepage_base" translatable="false">https://duckduckgo.com/</string>
<!-- Bookmarks -->
<string-array name="bookmarks" translatable="false">

View File

@ -0,0 +1,22 @@
From defa0e59c0f38e8f0ea6429ee05414a9402bbd8b Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Sun, 5 Apr 2015 01:27:56 -0400
Subject: [PATCH] disable link preloading by default
---
res/values/strings.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0899df9..8529cf6 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -684,7 +684,7 @@
<string name="pref_link_prefetch_value_never" translatable="false">NEVER</string>
<string name="pref_link_prefetch_value_wifi_only" translatable="false">WIFI_ONLY</string>
<string name="pref_link_prefetch_value_always" translatable="false">ALWAYS</string>
- <string name="pref_link_prefetch_default_value" translatable="false">@string/pref_link_prefetch_value_wifi_only</string>
+ <string name="pref_link_prefetch_default_value" translatable="false">@string/pref_link_prefetch_value_never</string>
<string-array name="pref_link_prefetch_values" translatable="false">
<item><xliff:g>@string/pref_link_prefetch_value_never</xliff:g></item>
<item><xliff:g>@string/pref_link_prefetch_value_wifi_only</xliff:g></item>

View File

@ -0,0 +1,22 @@
From a2cf2c31329c3b14798059d0d7a56b7568089552 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Sun, 5 Apr 2015 01:29:22 -0400
Subject: [PATCH] disable search result preloading by default
---
res/values/strings.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8529cf6..9012511 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -662,7 +662,7 @@
<string name="pref_data_preload_value_never" translatable="false">NEVER</string>
<string name="pref_data_preload_value_wifi_only" translatable="false">WIFI_ONLY</string>
<string name="pref_data_preload_value_always" translatable="false">ALWAYS</string>
- <string name="pref_data_preload_default_value" translatable="false">@string/pref_data_preload_value_wifi_only</string>
+ <string name="pref_data_preload_default_value" translatable="false">@string/pref_data_preload_value_never</string>
<string-array name="pref_data_preload_values" translatable="false">
<item><xliff:g>@string/pref_data_preload_value_never</xliff:g></item>
<item><xliff:g>@string/pref_data_preload_value_wifi_only</xliff:g></item>

View File

@ -0,0 +1,36 @@
From 093e38c00f3e46f875726f1e14190e2f120d3ed7 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Tue, 7 Apr 2015 02:18:09 -0400
Subject: [PATCH] disable plugins by default
---
res/xml-sw600dp/advanced_preferences.xml | 2 +-
res/xml/advanced_preferences.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/res/xml-sw600dp/advanced_preferences.xml b/res/xml-sw600dp/advanced_preferences.xml
index ae19504..93ccbf1 100644
--- a/res/xml-sw600dp/advanced_preferences.xml
+++ b/res/xml-sw600dp/advanced_preferences.xml
@@ -46,7 +46,7 @@
<ListPreference
android:key="plugin_state"
android:title="@string/pref_content_plugins"
- android:defaultValue="ON"
+ android:defaultValue="OFF"
android:entries="@array/pref_content_plugins_choices"
android:entryValues="@array/pref_content_plugins_values"
android:dialogTitle="@string/pref_content_plugins" />
diff --git a/res/xml/advanced_preferences.xml b/res/xml/advanced_preferences.xml
index f068330..0996bab 100644
--- a/res/xml/advanced_preferences.xml
+++ b/res/xml/advanced_preferences.xml
@@ -51,7 +51,7 @@
<ListPreference
android:key="plugin_state"
android:title="@string/pref_content_plugins"
- android:defaultValue="ON"
+ android:defaultValue="OFF"
android:entries="@array/pref_content_plugins_choices"
android:entryValues="@array/pref_content_plugins_values"
android:dialogTitle="@string/pref_content_plugins" />

View File

@ -0,0 +1,203 @@
From 664f95d59cc672fb8b8ea3068a92530b08114f95 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Tue, 7 Apr 2015 03:23:22 -0400
Subject: [PATCH] remove RLZ tracking
---
AndroidManifest.xml | 8 --
res/values/strings.xml | 3 -
src/com/android/browser/UrlHandler.java | 129 --------------------------------
3 files changed, 140 deletions(-)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 0ffdec4..7152192 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -239,14 +239,6 @@
<!-- Makes .BrowserActivity the search target for any activity in Browser -->
<meta-data android:name="android.app.default_searchable" android:value=".BrowserActivity" />
- <!-- Application code for RLZ tracking. RLZ assigns non-unique, non-personally identifiable
- tracking labels to client products; these labels sometimes appear in Google search
- queries. See http://code.google.com/p/rlz for more info.
-
- This value signifies to the RLZ client that this application uses RLZ tracking. -->
- <meta-data android:name="com.google.android.partnersetup.RLZ_ACCESS_POINT"
- android:value="@string/rlz_access_point" />
-
<receiver android:name=".OpenDownloadReceiver">
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED"/>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9012511..d9023ec 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -875,9 +875,6 @@
<!-- The folder name for the special "Other Bookmarks" folder created by Chrome [CHAR LIMIT=24] -->
<string name="other_bookmarks">Other Bookmarks</string>
- <!-- Access point for RLZ tracking. -->
- <string name="rlz_access_point">Y1</string>
-
<!-- Title for a dialog asking the user which account to sync their bookmarks to [CHAR LIMIT=32] -->
<string name="account_chooser_dialog_title" msgid="4833571985009544332">Choose account</string>
diff --git a/src/com/android/browser/UrlHandler.java b/src/com/android/browser/UrlHandler.java
index 084a479..52919c8 100644
--- a/src/com/android/browser/UrlHandler.java
+++ b/src/com/android/browser/UrlHandler.java
@@ -38,9 +38,6 @@
*/
public class UrlHandler {
- static final String RLZ_PROVIDER = "com.google.android.partnersetup.rlzappprovider";
- static final Uri RLZ_PROVIDER_URI = Uri.parse("content://" + RLZ_PROVIDER + "/");
-
// Use in overrideUrlLoading
/* package */ final static String SCHEME_WTAI = "wtai://wp/";
/* package */ final static String SCHEME_WTAI_MC = "wtai://wp/mc;";
@@ -50,9 +47,6 @@
Controller mController;
Activity mActivity;
- private Boolean mIsProviderPresent = null;
- private Uri mRlzUri = null;
-
public UrlHandler(Controller controller) {
mController = controller;
mActivity = mController.getActivity();
@@ -101,20 +95,6 @@ boolean shouldOverrideUrlLoading(Tab tab, WebView view, String url) {
return false;
}
- // If this is a Google search, attempt to add an RLZ string
- // (if one isn't already present).
- if (rlzProviderPresent()) {
- Uri siteUri = Uri.parse(url);
- if (needsRlzString(siteUri)) {
- // Need to look up the RLZ info from a database, so do it in an
- // AsyncTask. Although we are not overriding the URL load synchronously,
- // we guarantee that we will handle this URL load after the task executes,
- // so it's safe to just return true to WebCore now to stop its own loading.
- new RLZTask(tab, siteUri, view).execute();
- return true;
- }
- }
-
if (startActivityForUrl(tab, url)) {
return true;
}
@@ -248,113 +228,4 @@ boolean handleMenuClick(Tab tab, String url) {
return false;
}
-
- // TODO: Move this class into Tab, where it can be properly stopped upon
- // closure of the tab
- private class RLZTask extends AsyncTask<Void, Void, String> {
- private Tab mTab;
- private Uri mSiteUri;
- private WebView mWebView;
-
- public RLZTask(Tab tab, Uri uri, WebView webView) {
- mTab = tab;
- mSiteUri = uri;
- mWebView = webView;
- }
-
- protected String doInBackground(Void... unused) {
- String result = mSiteUri.toString();
- Cursor cur = null;
- try {
- cur = mActivity.getContentResolver()
- .query(getRlzUri(), null, null, null, null);
- if (cur != null && cur.moveToFirst() && !cur.isNull(0)) {
- result = mSiteUri.buildUpon()
- .appendQueryParameter("rlz", cur.getString(0))
- .build().toString();
- }
- } finally {
- if (cur != null) {
- cur.close();
- }
- }
- return result;
- }
-
- protected void onPostExecute(String result) {
- // abort if we left browser already
- if (mController.isActivityPaused()) return;
- // Make sure the Tab was not closed while handling the task
- if (mController.getTabControl().getTabPosition(mTab) != -1) {
- // If the Activity Manager is not invoked, load the URL directly
- if (!startActivityForUrl(mTab, result)) {
- if (!handleMenuClick(mTab, result)) {
- mController.loadUrl(mTab, result);
- }
- }
- }
- }
- }
-
- // Determine whether the RLZ provider is present on the system.
- private boolean rlzProviderPresent() {
- if (mIsProviderPresent == null) {
- PackageManager pm = mActivity.getPackageManager();
- mIsProviderPresent = pm.resolveContentProvider(RLZ_PROVIDER, 0) != null;
- }
- return mIsProviderPresent;
- }
-
- // Retrieve the RLZ access point string and cache the URI used to
- // retrieve RLZ values.
- private Uri getRlzUri() {
- if (mRlzUri == null) {
- String ap = mActivity.getResources()
- .getString(R.string.rlz_access_point);
- mRlzUri = Uri.withAppendedPath(RLZ_PROVIDER_URI, ap);
- }
- return mRlzUri;
- }
-
- // Determine if this URI appears to be for a Google search
- // and does not have an RLZ parameter.
- // Taken largely from Chrome source, src/chrome/browser/google_url_tracker.cc
- private static boolean needsRlzString(Uri uri) {
- String scheme = uri.getScheme();
- if (("http".equals(scheme) || "https".equals(scheme)) &&
- (uri.getQueryParameter("q") != null) &&
- (uri.getQueryParameter("rlz") == null)) {
- String host = uri.getHost();
- if (host == null) {
- return false;
- }
- String[] hostComponents = host.split("\\.");
-
- if (hostComponents.length < 2) {
- return false;
- }
- int googleComponent = hostComponents.length - 2;
- String component = hostComponents[googleComponent];
- if (!"google".equals(component)) {
- if (hostComponents.length < 3 ||
- (!"co".equals(component) && !"com".equals(component))) {
- return false;
- }
- googleComponent = hostComponents.length - 3;
- if (!"google".equals(hostComponents[googleComponent])) {
- return false;
- }
- }
-
- // Google corp network handling.
- if (googleComponent > 0 && "corp".equals(
- hostComponents[googleComponent - 1])) {
- return false;
- }
-
- return true;
- }
- return false;
- }
-
}

View File

@ -0,0 +1,24 @@
From cd7f624c7ead431469813ddf146f1b94c57eeda3 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Tue, 13 Oct 2015 17:36:00 -0400
Subject: [PATCH] disable location recording by default
---
src/com/android/camera/settings/Keys.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/com/android/camera/settings/Keys.java b/src/com/android/camera/settings/Keys.java
index f59591f..5092bfa 100644
--- a/src/com/android/camera/settings/Keys.java
+++ b/src/com/android/camera/settings/Keys.java
@@ -182,6 +182,10 @@ public static void setDefaults(SettingsManager settingsManager, Context context)
settingsManager.setDefaults(KEY_SHOULD_SHOW_SETTINGS_BUTTON_CLING, true);
+ settingsManager.setDefaults(KEY_RECORD_LOCATION, false);
+ if (!settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, KEY_RECORD_LOCATION)) {
+ settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL, KEY_RECORD_LOCATION);
+ }
}
/** Helper functions for some defined keys. */

View File

@ -0,0 +1,25 @@
From 8d7a463afe1ab6aaecdff9707576b4fe74fab713 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Sat, 6 Jun 2015 10:40:51 -0400
Subject: [PATCH] disable NFC and NDEF Push by default
---
src/com/android/nfc/NfcService.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java
index 6aa0dfc..cd4b819 100755
--- a/src/com/android/nfc/NfcService.java
+++ b/src/com/android/nfc/NfcService.java
@@ -98,9 +98,9 @@
public static final String PREF = "NfcServicePrefs";
static final String PREF_NFC_ON = "nfc_on";
- static final boolean NFC_ON_DEFAULT = true;
+ static final boolean NFC_ON_DEFAULT = false;
static final String PREF_NDEF_PUSH_ON = "ndef_push_on";
- static final boolean NDEF_PUSH_ON_DEFAULT = true;
+ static final boolean NDEF_PUSH_ON_DEFAULT = false;
static final String PREF_FIRST_BEAM = "first_beam";
static final String PREF_FIRST_BOOT = "first_boot";
static final String PREF_AIRPLANE_OVERRIDE = "airplane_override";

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,36 @@
From 382f9153c766ef96ac03adbd1ad8ec5bae2fa193 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Wed, 2 Dec 2015 00:14:29 -0500
Subject: [PATCH] hide passwords by default
---
src/com/android/settings/CryptKeeperConfirm.java | 2 +-
src/com/android/settings/SecuritySettings.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/com/android/settings/CryptKeeperConfirm.java b/src/com/android/settings/CryptKeeperConfirm.java
index 45b50f6..bb0c7e5 100644
--- a/src/com/android/settings/CryptKeeperConfirm.java
+++ b/src/com/android/settings/CryptKeeperConfirm.java
@@ -130,7 +130,7 @@ public void onClick(View v) {
}
int value = Settings.System.getInt(getContext().getContentResolver(),
Settings.System.TEXT_SHOW_PASSWORD,
- 1);
+ 0);
utils.setVisiblePasswordEnabled(value != 0, UserHandle.USER_OWNER);
Intent intent = new Intent(getActivity(), Blank.class);
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index c0e5b73..ec04136 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -661,7 +661,7 @@ public void onResume() {
if (mShowPassword != null) {
mShowPassword.setChecked(Settings.System.getInt(getContentResolver(),
- Settings.System.TEXT_SHOW_PASSWORD, 1) != 0);
+ Settings.System.TEXT_SHOW_PASSWORD, 0) != 0);
}
if (mResetCredentials != null) {

View File

@ -0,0 +1,756 @@
From 2d6aa76f7c765ac129d5ac163460eb8e62080afa Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Mon, 15 Jun 2015 10:06:33 -0400
Subject: [PATCH] support setting a separate encryption password
---
AndroidManifest.xml | 3 +
res/values/strings.xml | 9 +
res/xml/security_settings_encrypted.xml | 10 +
.../android/settings/ChooseEncryptionPassword.java | 682 +++++++++++++++++++++
4 files changed, 704 insertions(+)
create mode 100644 src/com/android/settings/ChooseEncryptionPassword.java
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 63648fc..a561d7e 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1524,6 +1524,9 @@
<activity android:name="ChooseLockPassword" android:exported="false"
android:windowSoftInputMode="stateVisible|adjustResize"/>
+ <activity android:name="ChooseEncryptionPassword" android:exported="false"
+ android:windowSoftInputMode="stateVisible|adjustResize"/>
+
<activity android:name=".SetupEncryptionInterstitial"
android:taskAffinity="com.android.wizard"
android:theme="@style/SetupWizardDisableAppStartingTheme"/>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3072f33..d5324f1 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -937,6 +937,15 @@
<!-- Image button description to switch input method -->
<string name="crypt_keeper_switch_input_method">Switch input method</string>
+ <!-- Title for PreferenceScreen to change encryption password [CHAR LIMIT=22] -->
+ <string name="crypt_keeper_change_password_title">Change encryption password</string>
+
+ <!-- Summary for PreferenceScreen to change encryption password [CHAR LIMIT=45] -->
+ <string name="crypt_keeper_change_password_summary">Change the password used for device encryption</string>
+
+ <!-- Header on first screen of choose encryption password [CHAR LIMIT=30] -->
+ <string name="crypt_keeper_choose_your_password_header">Set encryption password</string>
+
<!-- Unlock Picker Settings --><skip />
<!-- Security Picker --><skip />
diff --git a/res/xml/security_settings_encrypted.xml b/res/xml/security_settings_encrypted.xml
index 2399243..f05bad5 100644
--- a/res/xml/security_settings_encrypted.xml
+++ b/res/xml/security_settings_encrypted.xml
@@ -27,6 +27,16 @@
android:title="@string/crypt_keeper_encrypt_title"
android:summary="@string/crypt_keeper_encrypted_summary"/>
+ <Preference
+ android:key="crypt_keeper_change_password"
+ android:title="@string/crypt_keeper_change_password_title"
+ android:summary="@string/crypt_keeper_change_password_summary">
+
+ <intent android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.ChooseEncryptionPassword" />
+ </Preference>
+
</PreferenceCategory>
diff --git a/src/com/android/settings/ChooseEncryptionPassword.java b/src/com/android/settings/ChooseEncryptionPassword.java
new file mode 100644
index 0000000..43e2b0e
--- /dev/null
+++ b/src/com/android/settings/ChooseEncryptionPassword.java
@@ -0,0 +1,682 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+
+package com.android.settings;
+
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.PasswordEntryKeyboardHelper;
+import com.android.internal.widget.PasswordEntryKeyboardView;
+import com.android.internal.widget.TextViewInputDisabler;
+import com.android.internal.widget.LockPatternUtils.RequestThrottledException;
+import com.android.settings.notification.RedactionInterstitial;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.content.Intent;
+import android.inputmethodservice.KeyboardView;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.UserHandle;
+import android.text.Editable;
+import android.text.InputType;
+import android.text.Selection;
+import android.text.Spannable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnClickListener;
+import android.view.inputmethod.EditorInfo;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.TextView.OnEditorActionListener;
+
+public class ChooseEncryptionPassword extends SettingsActivity {
+ public static final String PASSWORD_MIN_KEY = "lockscreen.password_min";
+ public static final String PASSWORD_MAX_KEY = "lockscreen.password_max";
+ public static final String PASSWORD_MIN_LETTERS_KEY = "lockscreen.password_min_letters";
+ public static final String PASSWORD_MIN_LOWERCASE_KEY = "lockscreen.password_min_lowercase";
+ public static final String PASSWORD_MIN_UPPERCASE_KEY = "lockscreen.password_min_uppercase";
+ public static final String PASSWORD_MIN_NUMERIC_KEY = "lockscreen.password_min_numeric";
+ public static final String PASSWORD_MIN_SYMBOLS_KEY = "lockscreen.password_min_symbols";
+ public static final String PASSWORD_MIN_NONLETTER_KEY = "lockscreen.password_min_nonletter";
+
+ private static final String TAG = "ChooseEncryptionPassword";
+
+ @Override
+ public Intent getIntent() {
+ Intent modIntent = new Intent(super.getIntent());
+ modIntent.putExtra(EXTRA_SHOW_FRAGMENT, getFragmentClass().getName());
+ return modIntent;
+ }
+
+ public static Intent createIntent(Context context, int quality,
+ int minLength, final int maxLength, boolean requirePasswordToDecrypt,
+ boolean confirmCredentials) {
+ Intent intent = new Intent().setClass(context, ChooseEncryptionPassword.class);
+ intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, quality);
+ intent.putExtra(PASSWORD_MIN_KEY, minLength);
+ intent.putExtra(PASSWORD_MAX_KEY, maxLength);
+ intent.putExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, confirmCredentials);
+ intent.putExtra(EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, requirePasswordToDecrypt);
+ return intent;
+ }
+
+ public static Intent createIntent(Context context, int quality,
+ int minLength, final int maxLength, boolean requirePasswordToDecrypt, String password) {
+ Intent intent = createIntent(context, quality, minLength, maxLength,
+ requirePasswordToDecrypt, false);
+ intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD, password);
+ return intent;
+ }
+
+ public static Intent createIntent(Context context, int quality,
+ int minLength, final int maxLength, boolean requirePasswordToDecrypt, long challenge) {
+ Intent intent = createIntent(context, quality, minLength, maxLength,
+ requirePasswordToDecrypt, false);
+ intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true);
+ intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, challenge);
+ return intent;
+ }
+
+ @Override
+ protected boolean isValidFragment(String fragmentName) {
+ if (ChooseEncryptionPasswordFragment.class.getName().equals(fragmentName)) return true;
+ return false;
+ }
+
+ /* package */ Class<? extends Fragment> getFragmentClass() {
+ return ChooseEncryptionPasswordFragment.class;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ // TODO: Fix on phones
+ // Disable IME on our window since we provide our own keyboard
+ //getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
+ //WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
+ super.onCreate(savedInstanceState);
+ CharSequence msg = getText(R.string.lockpassword_choose_your_password_header);
+ setTitle(msg);
+ }
+
+ public static class ChooseEncryptionPasswordFragment extends InstrumentedFragment
+ implements OnClickListener, OnEditorActionListener, TextWatcher,
+ SaveAndFinishWorker.Listener {
+ private static final String KEY_FIRST_PIN = "first_pin";
+ private static final String KEY_UI_STAGE = "ui_stage";
+ private static final String KEY_CURRENT_PASSWORD = "current_password";
+ private static final String FRAGMENT_TAG_SAVE_AND_FINISH = "save_and_finish_worker";
+
+ private String mCurrentPassword;
+ private String mChosenPassword;
+ private boolean mHasChallenge;
+ private long mChallenge;
+ private TextView mPasswordEntry;
+ private TextViewInputDisabler mPasswordEntryInputDisabler;
+ private int mPasswordMinLength = LockPatternUtils.MIN_LOCK_PASSWORD_SIZE;
+ private int mPasswordMaxLength = 16;
+ private int mPasswordMinLetters = 0;
+ private int mPasswordMinUpperCase = 0;
+ private int mPasswordMinLowerCase = 0;
+ private int mPasswordMinSymbols = 0;
+ private int mPasswordMinNumeric = 0;
+ private int mPasswordMinNonLetter = 0;
+ private LockPatternUtils mLockPatternUtils;
+ private SaveAndFinishWorker mSaveAndFinishWorker;
+ private int mRequestedQuality = DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC;
+ private ChooseLockSettingsHelper mChooseLockSettingsHelper;
+ private Stage mUiStage = Stage.Introduction;
+
+ private TextView mHeaderText;
+ private String mFirstPin;
+ private KeyboardView mKeyboardView;
+ private PasswordEntryKeyboardHelper mKeyboardHelper;
+ private boolean mIsAlphaMode;
+ private Button mCancelButton;
+ private Button mNextButton;
+ private static final int CONFIRM_EXISTING_REQUEST = 58;
+ static final int RESULT_FINISHED = RESULT_FIRST_USER;
+ private static final long ERROR_MESSAGE_TIMEOUT = 3000;
+ private static final int MSG_SHOW_ERROR = 1;
+
+ private Handler mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ if (msg.what == MSG_SHOW_ERROR) {
+ updateStage((Stage) msg.obj);
+ }
+ }
+ };
+
+ /**
+ * Keep track internally of where the user is in choosing a pattern.
+ */
+ protected enum Stage {
+
+ Introduction(R.string.lockpassword_choose_your_password_header,
+ R.string.lockpassword_choose_your_pin_header,
+ R.string.lockpassword_continue_label),
+
+ NeedToConfirm(R.string.lockpassword_confirm_your_password_header,
+ R.string.lockpassword_confirm_your_pin_header,
+ R.string.lockpassword_ok_label),
+
+ ConfirmWrong(R.string.lockpassword_confirm_passwords_dont_match,
+ R.string.lockpassword_confirm_pins_dont_match,
+ R.string.lockpassword_continue_label);
+
+ Stage(int hintInAlpha, int hintInNumeric, int nextButtonText) {
+ this.alphaHint = hintInAlpha;
+ this.numericHint = hintInNumeric;
+ this.buttonText = nextButtonText;
+ }
+
+ public final int alphaHint;
+ public final int numericHint;
+ public final int buttonText;
+ }
+
+ // required constructor for fragments
+ public ChooseEncryptionPasswordFragment() {
+
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mLockPatternUtils = new LockPatternUtils(getActivity());
+ Intent intent = getActivity().getIntent();
+ if (!(getActivity() instanceof ChooseEncryptionPassword)) {
+ throw new SecurityException("Fragment contained in wrong activity");
+ }
+ mRequestedQuality = Math.max(intent.getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY,
+ mRequestedQuality), mLockPatternUtils.getRequestedPasswordQuality(
+ UserHandle.myUserId()));
+ mPasswordMinLength = Math.max(Math.max(
+ LockPatternUtils.MIN_LOCK_PASSWORD_SIZE,
+ intent.getIntExtra(PASSWORD_MIN_KEY, mPasswordMinLength)),
+ mLockPatternUtils.getRequestedMinimumPasswordLength(UserHandle.myUserId()));
+ mPasswordMaxLength = intent.getIntExtra(PASSWORD_MAX_KEY, mPasswordMaxLength);
+ mPasswordMinLetters = Math.max(intent.getIntExtra(PASSWORD_MIN_LETTERS_KEY,
+ mPasswordMinLetters), mLockPatternUtils.getRequestedPasswordMinimumLetters(
+ UserHandle.myUserId()));
+ mPasswordMinUpperCase = Math.max(intent.getIntExtra(PASSWORD_MIN_UPPERCASE_KEY,
+ mPasswordMinUpperCase), mLockPatternUtils.getRequestedPasswordMinimumUpperCase(
+ UserHandle.myUserId()));
+ mPasswordMinLowerCase = Math.max(intent.getIntExtra(PASSWORD_MIN_LOWERCASE_KEY,
+ mPasswordMinLowerCase), mLockPatternUtils.getRequestedPasswordMinimumLowerCase(
+ UserHandle.myUserId()));
+ mPasswordMinNumeric = Math.max(intent.getIntExtra(PASSWORD_MIN_NUMERIC_KEY,
+ mPasswordMinNumeric), mLockPatternUtils.getRequestedPasswordMinimumNumeric(
+ UserHandle.myUserId()));
+ mPasswordMinSymbols = Math.max(intent.getIntExtra(PASSWORD_MIN_SYMBOLS_KEY,
+ mPasswordMinSymbols), mLockPatternUtils.getRequestedPasswordMinimumSymbols(
+ UserHandle.myUserId()));
+ mPasswordMinNonLetter = Math.max(intent.getIntExtra(PASSWORD_MIN_NONLETTER_KEY,
+ mPasswordMinNonLetter), mLockPatternUtils.getRequestedPasswordMinimumNonLetter(
+ UserHandle.myUserId()));
+
+ mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity());
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.choose_lock_password, container, false);
+ }
+
+ @Override
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+
+ mCancelButton = (Button) view.findViewById(R.id.cancel_button);
+ mCancelButton.setOnClickListener(this);
+ mNextButton = (Button) view.findViewById(R.id.next_button);
+ mNextButton.setOnClickListener(this);
+
+ mIsAlphaMode = DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC == mRequestedQuality
+ || DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC == mRequestedQuality
+ || DevicePolicyManager.PASSWORD_QUALITY_COMPLEX == mRequestedQuality;
+ mKeyboardView = (PasswordEntryKeyboardView) view.findViewById(R.id.keyboard);
+ mPasswordEntry = (TextView) view.findViewById(R.id.password_entry);
+ mPasswordEntry.setOnEditorActionListener(this);
+ mPasswordEntry.addTextChangedListener(this);
+ mPasswordEntryInputDisabler = new TextViewInputDisabler(mPasswordEntry);
+
+ final Activity activity = getActivity();
+ mKeyboardHelper = new PasswordEntryKeyboardHelper(activity,
+ mKeyboardView, mPasswordEntry);
+ mKeyboardHelper.setKeyboardMode(mIsAlphaMode ?
+ PasswordEntryKeyboardHelper.KEYBOARD_MODE_ALPHA
+ : PasswordEntryKeyboardHelper.KEYBOARD_MODE_NUMERIC);
+
+ mHeaderText = (TextView) view.findViewById(R.id.headerText);
+ mKeyboardView.requestFocus();
+
+ int currentType = mPasswordEntry.getInputType();
+ mPasswordEntry.setInputType(mIsAlphaMode ? currentType
+ : (InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD));
+
+ Intent intent = getActivity().getIntent();
+ final boolean confirmCredentials = intent.getBooleanExtra(
+ ChooseLockGeneric.CONFIRM_CREDENTIALS, true);
+ mCurrentPassword = intent.getStringExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD);
+ mHasChallenge = intent.getBooleanExtra(
+ ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false);
+ mChallenge = intent.getLongExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0);
+ if (savedInstanceState == null) {
+ updateStage(Stage.Introduction);
+ if (confirmCredentials) {
+ mChooseLockSettingsHelper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST,
+ getString(R.string.unlock_set_unlock_launch_picker_title), true);
+ }
+ } else {
+ // restore from previous state
+ mFirstPin = savedInstanceState.getString(KEY_FIRST_PIN);
+ final String state = savedInstanceState.getString(KEY_UI_STAGE);
+ if (state != null) {
+ mUiStage = Stage.valueOf(state);
+ updateStage(mUiStage);
+ }
+
+ if (mCurrentPassword == null) {
+ mCurrentPassword = savedInstanceState.getString(KEY_CURRENT_PASSWORD);
+ }
+
+ // Re-attach to the exiting worker if there is one.
+ mSaveAndFinishWorker = (SaveAndFinishWorker) getFragmentManager().findFragmentByTag(
+ FRAGMENT_TAG_SAVE_AND_FINISH);
+ }
+ if (activity instanceof SettingsActivity) {
+ final SettingsActivity sa = (SettingsActivity) activity;
+ int id = mIsAlphaMode ? R.string.lockpassword_choose_your_password_header
+ : R.string.lockpassword_choose_your_pin_header;
+ CharSequence title = getText(id);
+ sa.setTitle(title);
+ }
+ }
+
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.CHOOSE_LOCK_PASSWORD;
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ updateStage(mUiStage);
+ if (mSaveAndFinishWorker != null) {
+ mSaveAndFinishWorker.setListener(this);
+ } else {
+ mKeyboardView.requestFocus();
+ }
+ }
+
+ @Override
+ public void onPause() {
+ mHandler.removeMessages(MSG_SHOW_ERROR);
+ if (mSaveAndFinishWorker != null) {
+ mSaveAndFinishWorker.setListener(null);
+ }
+
+ super.onPause();
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putString(KEY_UI_STAGE, mUiStage.name());
+ outState.putString(KEY_FIRST_PIN, mFirstPin);
+ outState.putString(KEY_CURRENT_PASSWORD, mCurrentPassword);
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode,
+ Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ switch (requestCode) {
+ case CONFIRM_EXISTING_REQUEST:
+ if (resultCode != Activity.RESULT_OK) {
+ getActivity().setResult(RESULT_FINISHED);
+ getActivity().finish();
+ } else {
+ mCurrentPassword = data.getStringExtra(
+ ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD);
+ }
+ break;
+ }
+ }
+
+ protected Intent getRedactionInterstitialIntent(Context context) {
+ return RedactionInterstitial.createStartIntent(context);
+ }
+
+ protected void updateStage(Stage stage) {
+ final Stage previousStage = mUiStage;
+ mUiStage = stage;
+ updateUi();
+
+ // If the stage changed, announce the header for accessibility. This
+ // is a no-op when accessibility is disabled.
+ if (previousStage != stage) {
+ mHeaderText.announceForAccessibility(mHeaderText.getText());
+ }
+ }
+
+ /**
+ * Validates PIN and returns a message to display if PIN fails test.
+ * @param password the raw password the user typed in
+ * @return error message to show to user or null if password is OK
+ */
+ private String validatePassword(String password) {
+ if (password.length() < mPasswordMinLength) {
+ return getString(mIsAlphaMode ?
+ R.string.lockpassword_password_too_short
+ : R.string.lockpassword_pin_too_short, mPasswordMinLength);
+ }
+ if (password.length() > mPasswordMaxLength) {
+ return getString(mIsAlphaMode ?
+ R.string.lockpassword_password_too_long
+ : R.string.lockpassword_pin_too_long, mPasswordMaxLength + 1);
+ }
+ int letters = 0;
+ int numbers = 0;
+ int lowercase = 0;
+ int symbols = 0;
+ int uppercase = 0;
+ int nonletter = 0;
+ for (int i = 0; i < password.length(); i++) {
+ char c = password.charAt(i);
+ // allow non control Latin-1 characters only
+ if (c < 32 || c > 127) {
+ return getString(R.string.lockpassword_illegal_character);
+ }
+ if (c >= '0' && c <= '9') {
+ numbers++;
+ nonletter++;
+ } else if (c >= 'A' && c <= 'Z') {
+ letters++;
+ uppercase++;
+ } else if (c >= 'a' && c <= 'z') {
+ letters++;
+ lowercase++;
+ } else {
+ symbols++;
+ nonletter++;
+ }
+ }
+ if (DevicePolicyManager.PASSWORD_QUALITY_NUMERIC == mRequestedQuality
+ || DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX == mRequestedQuality) {
+ if (letters > 0 || symbols > 0) {
+ // This shouldn't be possible unless user finds some way to bring up
+ // soft keyboard
+ return getString(R.string.lockpassword_pin_contains_non_digits);
+ }
+ // Check for repeated characters or sequences (e.g. '1234', '0000', '2468')
+ final int sequence = LockPatternUtils.maxLengthSequence(password);
+ if (DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX == mRequestedQuality
+ && sequence > LockPatternUtils.MAX_ALLOWED_SEQUENCE) {
+ return getString(R.string.lockpassword_pin_no_sequential_digits);
+ }
+ } else if (DevicePolicyManager.PASSWORD_QUALITY_COMPLEX == mRequestedQuality) {
+ if (letters < mPasswordMinLetters) {
+ return String.format(getResources().getQuantityString(
+ R.plurals.lockpassword_password_requires_letters, mPasswordMinLetters),
+ mPasswordMinLetters);
+ } else if (numbers < mPasswordMinNumeric) {
+ return String.format(getResources().getQuantityString(
+ R.plurals.lockpassword_password_requires_numeric, mPasswordMinNumeric),
+ mPasswordMinNumeric);
+ } else if (lowercase < mPasswordMinLowerCase) {
+ return String.format(getResources().getQuantityString(
+ R.plurals.lockpassword_password_requires_lowercase, mPasswordMinLowerCase),
+ mPasswordMinLowerCase);
+ } else if (uppercase < mPasswordMinUpperCase) {
+ return String.format(getResources().getQuantityString(
+ R.plurals.lockpassword_password_requires_uppercase, mPasswordMinUpperCase),
+ mPasswordMinUpperCase);
+ } else if (symbols < mPasswordMinSymbols) {
+ return String.format(getResources().getQuantityString(
+ R.plurals.lockpassword_password_requires_symbols, mPasswordMinSymbols),
+ mPasswordMinSymbols);
+ } else if (nonletter < mPasswordMinNonLetter) {
+ return String.format(getResources().getQuantityString(
+ R.plurals.lockpassword_password_requires_nonletter, mPasswordMinNonLetter),
+ mPasswordMinNonLetter);
+ }
+ } else {
+ final boolean alphabetic = DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC
+ == mRequestedQuality;
+ final boolean alphanumeric = DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC
+ == mRequestedQuality;
+ if ((alphabetic || alphanumeric) && letters == 0) {
+ return getString(R.string.lockpassword_password_requires_alpha);
+ }
+ if (alphanumeric && numbers == 0) {
+ return getString(R.string.lockpassword_password_requires_digit);
+ }
+ }
+ if(mLockPatternUtils.checkPasswordHistory(password, UserHandle.myUserId())) {
+ return getString(mIsAlphaMode ? R.string.lockpassword_password_recently_used
+ : R.string.lockpassword_pin_recently_used);
+ }
+
+ return null;
+ }
+
+ public void handleNext() {
+ if (mSaveAndFinishWorker != null) return;
+ mChosenPassword = mPasswordEntry.getText().toString();
+ if (TextUtils.isEmpty(mChosenPassword)) {
+ return;
+ }
+ String errorMsg = null;
+ if (mUiStage == Stage.Introduction) {
+ errorMsg = validatePassword(mChosenPassword);
+ if (errorMsg == null) {
+ mFirstPin = mChosenPassword;
+ mPasswordEntry.setText("");
+ updateStage(Stage.NeedToConfirm);
+ }
+ } else if (mUiStage == Stage.NeedToConfirm) {
+ if (mFirstPin.equals(mChosenPassword)) {
+ startSaveAndFinish();
+ } else {
+ CharSequence tmp = mPasswordEntry.getText();
+ if (tmp != null) {
+ Selection.setSelection((Spannable) tmp, 0, tmp.length());
+ }
+ updateStage(Stage.ConfirmWrong);
+ }
+ }
+ if (errorMsg != null) {
+ showError(errorMsg, mUiStage);
+ }
+ }
+
+ protected void setNextEnabled(boolean enabled) {
+ mNextButton.setEnabled(enabled);
+ }
+
+ protected void setNextText(int text) {
+ mNextButton.setText(text);
+ }
+
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.next_button:
+ handleNext();
+ break;
+
+ case R.id.cancel_button:
+ getActivity().finish();
+ break;
+ }
+ }
+
+ private void showError(String msg, final Stage next) {
+ mHeaderText.setText(msg);
+ mHeaderText.announceForAccessibility(mHeaderText.getText());
+ Message mesg = mHandler.obtainMessage(MSG_SHOW_ERROR, next);
+ mHandler.removeMessages(MSG_SHOW_ERROR);
+ mHandler.sendMessageDelayed(mesg, ERROR_MESSAGE_TIMEOUT);
+ }
+
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ // Check if this was the result of hitting the enter or "done" key
+ if (actionId == EditorInfo.IME_NULL
+ || actionId == EditorInfo.IME_ACTION_DONE
+ || actionId == EditorInfo.IME_ACTION_NEXT) {
+ handleNext();
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Update the hint based on current Stage and length of password entry
+ */
+ private void updateUi() {
+ final boolean canInput = mSaveAndFinishWorker == null;
+ String password = mPasswordEntry.getText().toString();
+ final int length = password.length();
+ if (mUiStage == Stage.Introduction) {
+ if (length < mPasswordMinLength) {
+ String msg = getString(mIsAlphaMode ? R.string.lockpassword_password_too_short
+ : R.string.lockpassword_pin_too_short, mPasswordMinLength);
+ mHeaderText.setText(msg);
+ setNextEnabled(false);
+ } else {
+ String error = validatePassword(password);
+ if (error != null) {
+ mHeaderText.setText(error);
+ setNextEnabled(false);
+ } else {
+ mHeaderText.setText(R.string.lockpassword_press_continue);
+ setNextEnabled(true);
+ }
+ }
+ } else {
+ mHeaderText.setText(mIsAlphaMode ? mUiStage.alphaHint : mUiStage.numericHint);
+ setNextEnabled(canInput && length > 0);
+ }
+ setNextText(mUiStage.buttonText);
+ mPasswordEntryInputDisabler.setInputEnabled(canInput);
+ }
+
+ public void afterTextChanged(Editable s) {
+ // Changing the text while error displayed resets to NeedToConfirm state
+ if (mUiStage == Stage.ConfirmWrong) {
+ mUiStage = Stage.NeedToConfirm;
+ }
+ updateUi();
+ }
+
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+ }
+
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+ }
+
+ private void startSaveAndFinish() {
+ if (mSaveAndFinishWorker != null) {
+ Log.w(TAG, "startSaveAndFinish with an existing SaveAndFinishWorker.");
+ return;
+ }
+
+ mPasswordEntryInputDisabler.setInputEnabled(false);
+ setNextEnabled(false);
+
+ mSaveAndFinishWorker = new SaveAndFinishWorker();
+ getFragmentManager().beginTransaction().add(mSaveAndFinishWorker,
+ FRAGMENT_TAG_SAVE_AND_FINISH).commit();
+ mSaveAndFinishWorker.setListener(this);
+
+ final boolean required = getActivity().getIntent().getBooleanExtra(
+ EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
+ mSaveAndFinishWorker.start(mLockPatternUtils, required, mHasChallenge, mChallenge,
+ mChosenPassword, mCurrentPassword, mRequestedQuality);
+ }
+
+ @Override
+ public void onChosenLockSaveFinished(boolean wasSecureBefore, Intent resultData) {
+ getActivity().setResult(RESULT_FINISHED, resultData);
+ getActivity().finish();
+
+ if (!wasSecureBefore) {
+ Intent intent = getRedactionInterstitialIntent(getActivity());
+ if (intent != null) {
+ startActivity(intent);
+ }
+ }
+ }
+ }
+
+ private static class SaveAndFinishWorker extends SaveChosenLockWorkerBase {
+
+ private String mChosenPassword;
+ private String mCurrentPassword;
+ private int mRequestedQuality;
+
+ public void start(LockPatternUtils utils, boolean required,
+ boolean hasChallenge, long challenge,
+ String chosenPassword, String currentPassword, int requestedQuality) {
+ prepare(utils, required, hasChallenge, challenge);
+
+ mChosenPassword = chosenPassword;
+ mCurrentPassword = currentPassword;
+ mRequestedQuality = requestedQuality;
+
+ start();
+ }
+
+ @Override
+ protected Intent saveAndVerifyInBackground() {
+ Intent result = null;
+ final int userId = UserHandle.myUserId();
+ mUtils.setCredentialRequiredToDecrypt(true);
+ mUtils.setSeparateEncryptionPassword(mChosenPassword);
+
+ if (mHasChallenge) {
+ byte[] token;
+ try {
+ token = mUtils.verifyPassword(mChosenPassword, mChallenge, userId);
+ } catch (RequestThrottledException e) {
+ token = null;
+ }
+
+ if (token == null) {
+ Log.e(TAG, "critical: no token returned for known good password.");
+ }
+
+ result = new Intent();
+ result.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token);
+ }
+
+ return result;
+ }
+ }
+}

View File

@ -0,0 +1,198 @@
From 0985c9dc829bd54d29335231704bff3bda2750b3 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Sat, 27 Jun 2015 12:39:17 -0400
Subject: [PATCH] support replacing a separate encryption password
---
AndroidManifest.xml | 2 +
res/values/strings.xml | 6 ++
res/xml/security_settings_encrypted.xml | 10 +++
.../settings/ReplaceEncryptionPassword.java | 99 ++++++++++++++++++++++
src/com/android/settings/SecuritySettings.java | 10 +++
5 files changed, 127 insertions(+)
create mode 100644 src/com/android/settings/ReplaceEncryptionPassword.java
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a561d7e..c54e4fa 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1527,6 +1527,8 @@
<activity android:name="ChooseEncryptionPassword" android:exported="false"
android:windowSoftInputMode="stateVisible|adjustResize"/>
+ <activity android:name="ReplaceEncryptionPassword" android:exported="false"/>
+
<activity android:name=".SetupEncryptionInterstitial"
android:taskAffinity="com.android.wizard"
android:theme="@style/SetupWizardDisableAppStartingTheme"/>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d5324f1..224c91e 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -946,6 +946,12 @@
<!-- Header on first screen of choose encryption password [CHAR LIMIT=30] -->
<string name="crypt_keeper_choose_your_password_header">Set encryption password</string>
+ <!-- Title for PreferenceScreen to replace encryption password [CHAR LIMIT=22] -->
+ <string name="crypt_keeper_replace_password_title">Replace encryption password</string>
+
+ <!-- Summary for PreferenceScreen to replace encryption password [CHAR LIMIT=45] -->
+ <string name="crypt_keeper_replace_password_summary">Remove the separate encryption password</string>
+
<!-- Unlock Picker Settings --><skip />
<!-- Security Picker --><skip />
diff --git a/res/xml/security_settings_encrypted.xml b/res/xml/security_settings_encrypted.xml
index f05bad5..e068541 100644
--- a/res/xml/security_settings_encrypted.xml
+++ b/res/xml/security_settings_encrypted.xml
@@ -37,6 +37,16 @@
android:targetClass="com.android.settings.ChooseEncryptionPassword" />
</Preference>
+ <Preference
+ android:key="crypt_keeper_replace_password"
+ android:title="@string/crypt_keeper_replace_password_title"
+ android:summary="@string/crypt_keeper_replace_password_summary">
+
+ <intent android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.ReplaceEncryptionPassword" />
+ </Preference>
+
</PreferenceCategory>
diff --git a/src/com/android/settings/ReplaceEncryptionPassword.java b/src/com/android/settings/ReplaceEncryptionPassword.java
new file mode 100644
index 0000000..84dcc48
--- /dev/null
+++ b/src/com/android/settings/ReplaceEncryptionPassword.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+
+package com.android.settings;
+
+import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.LockPatternUtils.RequestThrottledException;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.os.storage.StorageManager;
+import android.os.UserHandle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+public class ReplaceEncryptionPassword extends SettingsActivity {
+ @Override
+ public Intent getIntent() {
+ Intent modIntent = new Intent(super.getIntent());
+ modIntent.putExtra(EXTRA_SHOW_FRAGMENT, getFragmentClass().getName());
+ return modIntent;
+ }
+
+ @Override
+ protected boolean isValidFragment(String fragmentName) {
+ if (ReplaceEncryptionPasswordFragment.class.getName().equals(fragmentName)) return true;
+ return false;
+ }
+
+ /* package */ Class<? extends Fragment> getFragmentClass() {
+ return ReplaceEncryptionPasswordFragment.class;
+ }
+
+ public static class ReplaceEncryptionPasswordFragment extends Fragment {
+ private static final int KEYGUARD_REQUEST = 55;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (!(getActivity() instanceof ReplaceEncryptionPassword)) {
+ throw new SecurityException("Fragment contained in wrong activity");
+ }
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
+ Resources res = getActivity().getResources();
+ ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(getActivity(), this);
+
+ helper.launchConfirmationActivity(KEYGUARD_REQUEST,
+ res.getText(R.string.unlock_set_unlock_password_title),
+ true);
+
+ return null;
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ if (requestCode != KEYGUARD_REQUEST) {
+ return;
+ }
+
+ // If the user entered a valid keyguard trace, present the final
+ // confirmation prompt; otherwise, go back to the initial state.
+ if (resultCode == Activity.RESULT_OK && data != null) {
+ LockPatternUtils utils = new LockPatternUtils(getActivity());
+ int type = data.getIntExtra(ChooseLockSettingsHelper.EXTRA_KEY_TYPE, -1);
+ String password = data.getStringExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD);
+ if (type == StorageManager.CRYPT_TYPE_PATTERN) {
+ utils.replaceSeparateEncryptionPasswordWithPattern(
+ utils.stringToPattern(password, utils.getLockPatternSize()));
+ } else {
+ utils.replaceSeparateEncryptionPassword(password);
+ }
+ }
+
+ getActivity().finish();
+ }
+ }
+}
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 4d76f08..7cab5ca 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -110,6 +110,7 @@
private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive";
private static final String KEY_TRUST_AGENT = "trust_agent";
private static final String KEY_SCREEN_PINNING = "screen_pinning_settings";
+ private static final String KEY_REPLACE_ENCRYPTION_PASSWORD = "crypt_keeper_replace_password";
private static final String KEY_SMS_SECURITY_CHECK_PREF = "sms_security_check_limit";
// malloc configuration
@@ -270,6 +271,15 @@ public boolean onPreferenceClick(Preference preference) {
if (LockPatternUtils.isDeviceEncryptionEnabled()) {
// The device is currently encrypted.
addPreferencesFromResource(R.xml.security_settings_encrypted);
+ if (!mLockPatternUtils.isSeparateEncryptionPasswordEnabled()) {
+ PreferenceGroup securityCategory =
+ (PreferenceGroup)root.findPreference(KEY_SECURITY_CATEGORY);
+ if (securityCategory != null) {
+ Preference replaceEncryptionPassword =
+ root.findPreference(KEY_REPLACE_ENCRYPTION_PASSWORD);
+ securityCategory.removePreference(replaceEncryptionPassword);
+ }
+ }
} else {
// This device supports encryption but isn't encrypted.
addPreferencesFromResource(R.xml.security_settings_unencrypted);

View File

@ -0,0 +1,73 @@
From a29c050a986312d6863d2a7ed6cceb1f1b0b9fac Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Sun, 28 Jun 2015 13:31:54 -0400
Subject: [PATCH] fix usage of ChooseLockSettingsHelper
The fragment was not being passed, so the ChooseLock* fragments are not
informed if authentication fails (i.e. the cancel button is pushed) and
continue on as if it was successful. This wasn't noticed because this
code isn't used in the normal path where authentication happens before
entering the preferences menu to choose the authentication method.
The authentication support built-in to these fragments may even be dead
code, but it should work correctly if it's there because it may be the
basis of new code.
---
src/com/android/settings/ChooseEncryptionPassword.java | 2 +-
src/com/android/settings/ChooseLockGeneric.java | 2 +-
src/com/android/settings/ChooseLockPassword.java | 2 +-
src/com/android/settings/ChooseLockPattern.java | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/com/android/settings/ChooseEncryptionPassword.java b/src/com/android/settings/ChooseEncryptionPassword.java
index 43e2b0e..761603a 100644
--- a/src/com/android/settings/ChooseEncryptionPassword.java
+++ b/src/com/android/settings/ChooseEncryptionPassword.java
@@ -237,7 +237,7 @@ public void onCreate(Bundle savedInstanceState) {
mPasswordMinNonLetter), mLockPatternUtils.getRequestedPasswordMinimumNonLetter(
UserHandle.myUserId()));
- mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity());
+ mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity(), this);
}
@Override
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 7f5960f..b177d11 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -137,7 +137,7 @@ public void onCreate(Bundle savedInstanceState) {
(FingerprintManager) getActivity().getSystemService(Context.FINGERPRINT_SERVICE);
mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mKeyStore = KeyStore.getInstance();
- mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity());
+ mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity(), this);
mLockPatternUtils = new LockPatternUtils(getActivity());
mLockPatternUtils.sanitizePassword();
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 54c3620..59d1153 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -237,7 +237,7 @@ public void onCreate(Bundle savedInstanceState) {
mPasswordMinNonLetter), mLockPatternUtils.getRequestedPasswordMinimumNonLetter(
UserHandle.myUserId()));
- mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity());
+ mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity(), this);
}
@Override
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index c85e604..f6f0b7e 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -366,7 +366,7 @@ public void run() {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity());
+ mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity(), this);
if (!(getActivity() instanceof ChooseLockPattern)) {
throw new SecurityException("Fragment contained in wrong activity");
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
From fe1708406e0b31214fcb9a9abf2a4b7c944fab6d Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Fri, 27 Mar 2015 02:55:14 -0400
Subject: [PATCH] add back dmesg_restrict
The debugging use case with the shell user is not very compelling. This
is supposed to enforced elsewhere via SELinux now but there's no harm in
redundancy.
---
rootdir/init.rc | 1 +
1 file changed, 1 insertion(+)
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 5c6b606..b98443a 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -105,6 +105,7 @@ on init
write /proc/sys/kernel/sched_child_runs_first 0
write /proc/sys/kernel/randomize_va_space 2
+ write /proc/sys/kernel/dmesg_restrict 1
write /proc/sys/kernel/kptr_restrict 2
write /proc/sys/vm/mmap_min_addr 32768
write /proc/sys/net/ipv4/ping_group_range "0 2147483647"

View File

@ -0,0 +1,26 @@
From 5eb07e6823e9e68e30f25e4d85466d9b1fccf48d Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Fri, 6 Feb 2015 11:46:34 -0500
Subject: [PATCH] tighten up mount permissions
---
init/init.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/init/init.cpp b/init/init.cpp
index 542c35e..c7275b1 100644
--- a/init/init.cpp
+++ b/init/init.cpp
@@ -1039,9 +1039,9 @@ int main(int argc, char** argv) {
mount("tmpfs", "/dev", "tmpfs", MS_NOSUID, "mode=0755");
mkdir("/dev/pts", 0755);
mkdir("/dev/socket", 0755);
- mount("devpts", "/dev/pts", "devpts", 0, NULL);
- mount("proc", "/proc", "proc", 0, NULL);
- mount("sysfs", "/sys", "sysfs", 0, NULL);
+ mount("devpts", "/dev/pts", "devpts", MS_NOSUID|MS_NOEXEC, NULL);
+ mount("proc", "/proc", "proc", MS_NOSUID|MS_NODEV|MS_NOEXEC, NULL);
+ mount("sysfs", "/sys", "sysfs", MS_NOSUID|MS_NODEV|MS_NOEXEC, NULL);
}
// We must have some place other than / to create the device nodes for

View File

@ -0,0 +1,35 @@
From eee064eb93d1ee3f1db56a9634015ba23e3b0e92 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Thu, 5 Feb 2015 20:33:17 -0500
Subject: [PATCH] tighten up kernel tcp/ip settings
---
rootdir/init.rc | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/rootdir/init.rc b/rootdir/init.rc
index b98443a..f30baf4 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -124,6 +124,21 @@ on init
write /proc/sys/net/ipv4/conf/all/accept_redirects 0
write /proc/sys/net/ipv6/conf/all/accept_redirects 0
+ # IPv4 hardening
+ #
+ # reverse path filtering is done with netfilter for consistency with IPv6
+ write /proc/sys/net/ipv4/tcp_rfc1337 1
+ write /proc/sys/net/ipv4/conf/all/accept_source_route 0
+ write /proc/sys/net/ipv4/conf/default/accept_source_route 0
+ write /proc/sys/net/ipv4/conf/default/accept_redirects 0
+ write /proc/sys/net/ipv4/conf/all/send_redirects 0
+ write /proc/sys/net/ipv4/conf/default/send_redirects 0
+
+ # IPv6 hardening
+ write /proc/sys/net/ipv6/conf/default/accept_redirects 0
+ write /proc/sys/net/ipv6/conf/all/use_tempaddr 2
+ write /proc/sys/net/ipv6/conf/default/use_tempaddr 2
+
# Create cgroup mount points for process groups
mkdir /dev/cpuctl
mount cgroup none /dev/cpuctl cpu

View File

@ -0,0 +1,22 @@
From f7704509fc9ae1abed312e5e4276ce51f1c541ad Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Fri, 14 Aug 2015 15:07:33 -0400
Subject: [PATCH] slow down the service respawning rate
---
init/init.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/init/init.cpp b/init/init.cpp
index 78859a5..11ed674 100644
--- a/init/init.cpp
+++ b/init/init.cpp
@@ -465,7 +465,7 @@ void property_changed(const char *name, const char *value)
static void restart_service_if_needed(struct service *svc)
{
- time_t next_start_time = svc->time_started + 5;
+ time_t next_start_time = svc->time_started + 10;
if (next_start_time <= gettime()) {
svc->flags &= (~SVC_RESTARTING);

View File

@ -0,0 +1,23 @@
From 868adf173741eb6a3f0693d6b14fb92148a48db1 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Fri, 20 Nov 2015 00:13:54 -0500
Subject: [PATCH] remove analytics support
---
.../vendor/cmsdk/packages/CMSettingsProvider/res/values/defaults.xml | 5 -----
1 file changed, 5 deletions(-)
diff --git a/overlay/common/vendor/cmsdk/packages/CMSettingsProvider/res/values/defaults.xml b/overlay/common/vendor/cmsdk/packages/CMSettingsProvider/res/values/defaults.xml
index eec242d..27ec5fe 100644
--- a/overlay/common/vendor/cmsdk/packages/CMSettingsProvider/res/values/defaults.xml
+++ b/overlay/common/vendor/cmsdk/packages/CMSettingsProvider/res/values/defaults.xml
@@ -22,9 +22,4 @@
1. Right
2. Left -->
<integer name="def_qs_quick_pulldown">1</integer>
-
- <!-- Defaults for Secure -->
-
- <!-- Default for CMSettings.Secure.STATS_COLLECTION -->
- <bool name="def_stats_collection">true</bool>
</resources>

View File

@ -0,0 +1,107 @@
From 882d5f332dfa9e0904c1e931440712fddbccf034 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Fri, 18 Dec 2015 20:27:11 -0500
Subject: [PATCH] remove analytics support
Change-Id: Ie3e0541398747d43ab24bad9b9b93c81df4877b9
---
host/migration/src/CMSettings.java | 7 -------
packages/CMSettingsProvider/res/values/defaults.xml | 5 +----
.../src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java | 3 ---
src/java/cyanogenmod/providers/CMSettings.java | 13 -------------
4 files changed, 1 insertion(+), 27 deletions(-)
diff --git a/host/migration/src/CMSettings.java b/host/migration/src/CMSettings.java
index 0d57b0d..b4f5be9 100644
--- a/host/migration/src/CMSettings.java
+++ b/host/migration/src/CMSettings.java
@@ -833,12 +833,6 @@ public final class CMSettings {
public static final String QS_USE_MAIN_TILES = "sysui_qs_main_tiles";
/**
- * Global stats collection
- * @hide
- */
- public static final String STATS_COLLECTION = "stats_collection";
-
- /**
* Boolean value whether to link ringtone and notification volume
*
* @hide
@@ -1021,7 +1015,6 @@ public final class CMSettings {
CMSettings.Secure.DEV_FORCE_SHOW_NAVBAR,
CMSettings.Secure.KEYBOARD_BRIGHTNESS,
CMSettings.Secure.POWER_MENU_ACTIONS,
- CMSettings.Secure.STATS_COLLECTION,
CMSettings.Secure.QS_SHOW_BRIGHTNESS_SLIDER,
CMSettings.Secure.QS_TILES,
CMSettings.Secure.QS_USE_MAIN_TILES,
diff --git a/packages/CMSettingsProvider/res/values/defaults.xml b/packages/CMSettingsProvider/res/values/defaults.xml
index 3a514f8..96af970 100644
--- a/packages/CMSettingsProvider/res/values/defaults.xml
+++ b/packages/CMSettingsProvider/res/values/defaults.xml
@@ -41,9 +41,6 @@
Comma-delimited, quick settings tiles. See QSConstants.java for a list of all available tiles -->
<string name="def_qs_tiles">wifi,bt,cell,airplane,rotation,flashlight,location,cast,visualizer,hotspot,live_display</string>
- <!-- Default for CMSettings.Secure.STATS_COLLECTION -->
- <bool name="def_stats_collection">false</bool>
-
<!-- Default for CMSettings.Secure.QS_USE_MAIN_TILES -->
<bool name="def_sysui_qs_main_tiles">true</bool>
@@ -76,4 +73,4 @@
<!-- Default value for whether or not to use multiple notification LEDs
on devices equiped with more than one LED -->
<bool name="def_notification_multiple_leds">false</bool>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java b/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java
index 5d40866..de0fe19 100644
--- a/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java
+++ b/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java
@@ -234,9 +234,6 @@ public class CMDatabaseHelper extends SQLiteOpenHelper{
loadBooleanSetting(db, CMTableNames.TABLE_SECURE, CMSettings.Secure.QS_USE_MAIN_TILES,
R.bool.def_sysui_qs_main_tiles);
- loadBooleanSetting(db, CMTableNames.TABLE_SECURE, CMSettings.Secure.STATS_COLLECTION,
- R.bool.def_stats_collection);
-
loadBooleanSetting(db, CMTableNames.TABLE_SECURE,
CMSettings.Secure.LOCKSCREEN_VISUALIZER_ENABLED, R.bool.def_lockscreen_visualizer);
}
diff --git a/src/java/cyanogenmod/providers/CMSettings.java b/src/java/cyanogenmod/providers/CMSettings.java
index 9da713b..9d63a9b 100644
--- a/src/java/cyanogenmod/providers/CMSettings.java
+++ b/src/java/cyanogenmod/providers/CMSettings.java
@@ -2464,18 +2464,6 @@ public final class CMSettings {
public static final String QS_USE_MAIN_TILES = "sysui_qs_main_tiles";
/**
- * Global stats collection
- * @hide
- */
- public static final String STATS_COLLECTION = "stats_collection";
-
- /**
- * Whether the global stats collection setting has been successfully reported to server
- * @hide
- */
- public static final String STATS_COLLECTION_REPORTED = "stats_collection_reported";
-
- /**
* Whether newly installed apps should run with privacy guard by default
* @hide
*/
@@ -2631,7 +2619,6 @@ public final class CMSettings {
CMSettings.Secure.DEV_FORCE_SHOW_NAVBAR,
CMSettings.Secure.KEYBOARD_BRIGHTNESS,
CMSettings.Secure.POWER_MENU_ACTIONS,
- CMSettings.Secure.STATS_COLLECTION,
CMSettings.Secure.QS_SHOW_BRIGHTNESS_SLIDER,
CMSettings.Secure.QS_TILES,
CMSettings.Secure.QS_USE_MAIN_TILES,
--
2.6.4

View File

@ -0,0 +1,103 @@
From fdea0fad552207679fc0981a937079b262bfc810 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Fri, 20 Nov 2015 00:13:11 -0500
Subject: [PATCH] remove analytics support
---
host/migration/src/CMSettings.java | 7 -------
packages/CMSettingsProvider/res/values/defaults.xml | 5 +----
.../src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java | 3 ---
src/java/cyanogenmod/providers/CMSettings.java | 13 -------------
4 files changed, 1 insertion(+), 27 deletions(-)
diff --git a/host/migration/src/CMSettings.java b/host/migration/src/CMSettings.java
index 0d57b0d..b4f5be9 100644
--- a/host/migration/src/CMSettings.java
+++ b/host/migration/src/CMSettings.java
@@ -833,12 +833,6 @@ public static boolean isLegacySetting(String key) {
public static final String QS_USE_MAIN_TILES = "sysui_qs_main_tiles";
/**
- * Global stats collection
- * @hide
- */
- public static final String STATS_COLLECTION = "stats_collection";
-
- /**
* Boolean value whether to link ringtone and notification volume
*
* @hide
@@ -1021,7 +1015,6 @@ public static boolean isLegacySetting(String key) {
CMSettings.Secure.DEV_FORCE_SHOW_NAVBAR,
CMSettings.Secure.KEYBOARD_BRIGHTNESS,
CMSettings.Secure.POWER_MENU_ACTIONS,
- CMSettings.Secure.STATS_COLLECTION,
CMSettings.Secure.QS_SHOW_BRIGHTNESS_SLIDER,
CMSettings.Secure.QS_TILES,
CMSettings.Secure.QS_USE_MAIN_TILES,
diff --git a/packages/CMSettingsProvider/res/values/defaults.xml b/packages/CMSettingsProvider/res/values/defaults.xml
index ffc9c88..762abc1 100644
--- a/packages/CMSettingsProvider/res/values/defaults.xml
+++ b/packages/CMSettingsProvider/res/values/defaults.xml
@@ -41,9 +41,6 @@
Comma-delimited, quick settings tiles. See QSConstants.java for a list of all available tiles -->
<string name="def_qs_tiles">wifi,bt,cell,airplane,rotation,flashlight,location,cast,visualizer,hotspot,live_display</string>
- <!-- Default for CMSettings.Secure.STATS_COLLECTION -->
- <bool name="def_stats_collection">false</bool>
-
<!-- Default for CMSettings.Secure.QS_USE_MAIN_TILES -->
<bool name="def_sysui_qs_main_tiles">true</bool>
@@ -73,4 +70,4 @@
<!-- Default value for whether or not to use multiple notification LEDs
on devices equiped with more than one LED -->
<bool name="def_notification_multiple_leds">false</bool>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java b/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java
index 4257c42..baee50a 100644
--- a/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java
+++ b/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java
@@ -233,9 +233,6 @@ private void loadSecureSettings(SQLiteDatabase db) {
loadBooleanSetting(db, CMTableNames.TABLE_SECURE, CMSettings.Secure.QS_USE_MAIN_TILES,
R.bool.def_sysui_qs_main_tiles);
-
- loadBooleanSetting(db, CMTableNames.TABLE_SECURE, CMSettings.Secure.STATS_COLLECTION,
- R.bool.def_stats_collection);
}
private void loadSystemSettings(SQLiteDatabase db) {
diff --git a/src/java/cyanogenmod/providers/CMSettings.java b/src/java/cyanogenmod/providers/CMSettings.java
index 4b2fb7c..468b226 100644
--- a/src/java/cyanogenmod/providers/CMSettings.java
+++ b/src/java/cyanogenmod/providers/CMSettings.java
@@ -2464,18 +2464,6 @@ public static boolean putFloatForUser(ContentResolver cr, String name, float val
public static final String QS_USE_MAIN_TILES = "sysui_qs_main_tiles";
/**
- * Global stats collection
- * @hide
- */
- public static final String STATS_COLLECTION = "stats_collection";
-
- /**
- * Whether the global stats collection setting has been successfully reported to server
- * @hide
- */
- public static final String STATS_COLLECTION_REPORTED = "stats_collection_reported";
-
- /**
* Boolean value whether to link ringtone and notification volume
*
* @hide
@@ -2619,7 +2607,6 @@ public static boolean putFloatForUser(ContentResolver cr, String name, float val
CMSettings.Secure.DEV_FORCE_SHOW_NAVBAR,
CMSettings.Secure.KEYBOARD_BRIGHTNESS,
CMSettings.Secure.POWER_MENU_ACTIONS,
- CMSettings.Secure.STATS_COLLECTION,
CMSettings.Secure.QS_SHOW_BRIGHTNESS_SLIDER,
CMSettings.Secure.QS_TILES,
CMSettings.Secure.QS_USE_MAIN_TILES,

View File

@ -0,0 +1,40 @@
From b003bf4b46743dc3b1b566196e8ee9ece4c1ade0 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sun, 11 Dec 2016 22:15:28 -0500
Subject: [PATCH] Fixes
Change-Id: I53c657f52a7c8fd39655a9acba8e9c0a633fd329
---
BoardConfig.mk | 5 +++++
charger/Android.mk | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 726c947..c11a418 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -192,3 +192,8 @@ TW_FLASH_FROM_STORAGE := true
TW_BRIGHTNESS_PATH := /sys/class/leds/lcd-backlight/brightness
TW_MAX_BRIGHTNESS := 255
TW_INPUT_BLACKLIST := lis3dh_acc
+
+# Use retire fence from MDP driver
+TARGET_DISPLAY_USE_RETIRE_FENCE := true
+
+
diff --git a/charger/Android.mk b/charger/Android.mk
index 14c26dd..0fcc178 100644
--- a/charger/Android.mk
+++ b/charger/Android.mk
@@ -20,7 +20,7 @@ LOCAL_STATIC_LIBRARIES := libminui libpixelflinger_static libpng
ifeq ($(strip $(BOARD_CHARGER_ENABLE_SUSPEND)),true)
LOCAL_STATIC_LIBRARIES += libsuspend
endif
-LOCAL_STATIC_LIBRARIES += libz libstdc++ libcutils liblog libm libc
+LOCAL_STATIC_LIBRARIES += libz libstdc++ libcutils liblog libm libc libutils
include $(BUILD_EXECUTABLE)
--
2.9.3

View File

@ -0,0 +1,26 @@
From fc786df1d3a1f6012863f042f34b2bc0b9a0bd2f Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sun, 11 Dec 2016 23:23:58 -0500
Subject: [PATCH] Change DPI
Change-Id: Ia9059e0b554fec09ab73f961b09cf6316aeaa9c9
---
system.prop | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/system.prop b/system.prop
index 4f7a90c..9cdb394 100644
--- a/system.prop
+++ b/system.prop
@@ -27,7 +27,7 @@ DEVICE_PROVISIONED=1
debug.sf.hw=1
debug.egl.hw=1
debug.composition.type=gpu
-ro.sf.lcd_density=240
+ro.sf.lcd_density=180
dalvik.vm.heapsize=36m
debug.enable.wl_log=1
debug.mdpcomp.maxlayer=4
--
2.9.3

View File

@ -0,0 +1,25 @@
From f67900ad9370a7e7f0186b3f459dad2c74db7aae Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sun, 11 Dec 2016 23:15:20 -0500
Subject: [PATCH] Fixes
Change-Id: I55eb4f1af258b649ddc36bd822d9b28f9fd64ce9
---
include/linux/msm_mdp.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/linux/msm_mdp.h b/include/linux/msm_mdp.h
index 8f829ef..cf6d3d0 100644
--- a/include/linux/msm_mdp.h
+++ b/include/linux/msm_mdp.h
@@ -574,6 +574,7 @@ struct mdp_buf_sync {
uint32_t acq_fen_fd_cnt;
int *acq_fen_fd;
int *rel_fen_fd;
+ int *retire_fen_fd;
};
struct mdp_buf_fence {
--
2.9.3

View File

@ -0,0 +1,369 @@
From 7c00691c59e2a760c6d780bed116ee34717f0233 Mon Sep 17 00:00:00 2001
From: "H. Peter Anvin" <hpa@linux.intel.com>
Date: Thu, 7 Feb 2013 17:14:08 -0800
Subject: [PATCH 1/4] timeconst.pl: Eliminate Perl warning
commit 63a3f603413ffe82ad775f2d62a5afff87fd94a0 upstream.
defined(@array) is deprecated in Perl and gives off a warning.
Restructure the code to remove that warning.
[ hpa: it would be interesting to revert to the timeconst.bc script.
It appears that the failures reported by akpm during testing of
that script was due to a known broken version of make, not a problem
with bc. The Makefile rules could probably be restructured to avoid
the make bug, or it is probably old enough that it doesn't matter. ]
Reported-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
kernel/timeconst.pl | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/kernel/timeconst.pl b/kernel/timeconst.pl
index eb51d76..3f42652 100644
--- a/kernel/timeconst.pl
+++ b/kernel/timeconst.pl
@@ -369,10 +369,8 @@ if ($hz eq '--can') {
die "Usage: $0 HZ\n";
}
- @val = @{$canned_values{$hz}};
- if (!defined(@val)) {
- @val = compute_values($hz);
- }
+ $cv = $canned_values{$hz};
+ @val = defined($cv) ? @$cv : compute_values($hz);
output($hz, @val);
}
exit 0;
--
2.9.3
From 40bdf0ee06c0a50dc1fd6b830244a81b519fab45 Mon Sep 17 00:00:00 2001
From: superr <superr@ddayweb.com>
Date: Fri, 27 Mar 2015 15:39:54 -0500
Subject: [PATCH 2/4] Add OC
---
arch/arm/mach-msm/acpuclock-8930.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/arch/arm/mach-msm/acpuclock-8930.c b/arch/arm/mach-msm/acpuclock-8930.c
index 2dfb3dd..0b35c76 100644
--- a/arch/arm/mach-msm/acpuclock-8930.c
+++ b/arch/arm/mach-msm/acpuclock-8930.c
@@ -149,6 +149,8 @@ static struct l2_level l2_freq_tbl[] __initdata = {
[13] = { { 1080000, HFPLL, 1, 0x28 }, LVL_HIGH, 1150000, 7 },
[14] = { { 1134000, HFPLL, 1, 0x2A }, LVL_HIGH, 1150000, 7 },
[15] = { { 1188000, HFPLL, 1, 0x2C }, LVL_HIGH, 1150000, 7 },
+ [16] = { { 1242000, HFPLL, 1, 0x30 }, LVL_HIGH, 1150000, 7 },
+ [17] = { { 1296000, HFPLL, 1, 0x32 }, LVL_HIGH, 1150000, 7 },
{ }
};
@@ -169,6 +171,10 @@ static struct acpu_level acpu_freq_tbl_slow[] __initdata = {
{ 0, { 1080000, HFPLL, 1, 0x28 }, L2(15), 1175000 },
{ 1, { 1134000, HFPLL, 1, 0x2A }, L2(15), 1175000 },
{ 1, { 1188000, HFPLL, 1, 0x2C }, L2(15), 1200000 },
+ { 1, { 1300000, HFPLL, 1, 0x30 }, L2(15), 1225000 },
+ { 1, { 1400000, HFPLL, 1, 0x32 }, L2(15), 1237500 },
+ { 1, { 1500000, HFPLL, 1, 0x34 }, L2(15), 1250000 },
+ { 1, { 1600000, HFPLL, 1, 0x36 }, L2(15), 1275000 },
{ 0, { 0 } }
};
@@ -189,6 +195,10 @@ static struct acpu_level acpu_freq_tbl_nom[] __initdata = {
{ 0, { 1080000, HFPLL, 1, 0x28 }, L2(15), 1150000 },
{ 1, { 1134000, HFPLL, 1, 0x2A }, L2(15), 1150000 },
{ 1, { 1188000, HFPLL, 1, 0x2C }, L2(15), 1175000 },
+ { 1, { 1300000, HFPLL, 1, 0x30 }, L2(15), 1200000 },
+ { 1, { 1400000, HFPLL, 1, 0x32 }, L2(15), 1212500 },
+ { 1, { 1500000, HFPLL, 1, 0x34 }, L2(15), 1225000 },
+ { 1, { 1600000, HFPLL, 1, 0x36 }, L2(15), 1250000 },
{ 0, { 0 } }
};
@@ -209,6 +219,10 @@ static struct acpu_level acpu_freq_tbl_fast[] __initdata = {
{ 0, { 1080000, HFPLL, 1, 0x28 }, L2(15), 1100000 },
{ 1, { 1134000, HFPLL, 1, 0x2A }, L2(15), 1100000 },
{ 1, { 1188000, HFPLL, 1, 0x2C }, L2(15), 1125000 },
+ { 1, { 1300000, HFPLL, 1, 0x30 }, L2(15), 1150000 },
+ { 1, { 1400000, HFPLL, 1, 0x32 }, L2(15), 1162500 },
+ { 1, { 1500000, HFPLL, 1, 0x34 }, L2(15), 1175000 },
+ { 1, { 1600000, HFPLL, 1, 0x36 }, L2(15), 1200000 },
{ 0, { 0 } }
};
--
2.9.3
From 37a6b5c7a19d1fe2411e25983a708be6027dbfe7 Mon Sep 17 00:00:00 2001
From: superr <superr@ddayweb.com>
Date: Sat, 28 Mar 2015 09:34:32 -0500
Subject: [PATCH 3/4] OC to 2GHz
---
arch/arm/mach-msm/acpuclock-8930.c | 96 ++++++++++++++++++++++++--------------
1 file changed, 62 insertions(+), 34 deletions(-)
diff --git a/arch/arm/mach-msm/acpuclock-8930.c b/arch/arm/mach-msm/acpuclock-8930.c
index 0b35c76..9067efc 100644
--- a/arch/arm/mach-msm/acpuclock-8930.c
+++ b/arch/arm/mach-msm/acpuclock-8930.c
@@ -123,6 +123,9 @@ static struct msm_bus_paths bw_level_tbl[] __initdata = {
[5] = BW_MBPS(3600), /* At least 450 MHz on bus. */
[6] = BW_MBPS(3936), /* At least 492 MHz on bus. */
[7] = BW_MBPS(4264), /* At least 533 MHz on bus. */
+ [8] = BW_MBPS(4532), /* At least 566 MHz on bus. */
+ [9] = BW_MBPS(4624), /* At least 578 MHz on bus. */
+ [10] = BW_MBPS(4800), /* At least 600 MHz on bus. */
};
static struct msm_bus_scale_pdata bus_scale_data __initdata = {
@@ -133,24 +136,25 @@ static struct msm_bus_scale_pdata bus_scale_data __initdata = {
};
static struct l2_level l2_freq_tbl[] __initdata = {
- [0] = { { 384000, PLL_8, 0, 0x00 }, LVL_LOW, 1050000, 1 },
- [1] = { { 432000, HFPLL, 2, 0x20 }, LVL_NOM, 1050000, 2 },
- [2] = { { 486000, HFPLL, 2, 0x24 }, LVL_NOM, 1050000, 2 },
- [3] = { { 540000, HFPLL, 2, 0x28 }, LVL_NOM, 1050000, 2 },
- [4] = { { 594000, HFPLL, 1, 0x16 }, LVL_NOM, 1050000, 2 },
- [5] = { { 648000, HFPLL, 1, 0x18 }, LVL_NOM, 1050000, 4 },
- [6] = { { 702000, HFPLL, 1, 0x1A }, LVL_NOM, 1050000, 4 },
- [7] = { { 756000, HFPLL, 1, 0x1C }, LVL_HIGH, 1150000, 4 },
- [8] = { { 810000, HFPLL, 1, 0x1E }, LVL_HIGH, 1150000, 4 },
- [9] = { { 864000, HFPLL, 1, 0x20 }, LVL_HIGH, 1150000, 4 },
- [10] = { { 918000, HFPLL, 1, 0x22 }, LVL_HIGH, 1150000, 7 },
- [11] = { { 972000, HFPLL, 1, 0x24 }, LVL_HIGH, 1150000, 7 },
- [12] = { { 1026000, HFPLL, 1, 0x26 }, LVL_HIGH, 1150000, 7 },
- [13] = { { 1080000, HFPLL, 1, 0x28 }, LVL_HIGH, 1150000, 7 },
- [14] = { { 1134000, HFPLL, 1, 0x2A }, LVL_HIGH, 1150000, 7 },
- [15] = { { 1188000, HFPLL, 1, 0x2C }, LVL_HIGH, 1150000, 7 },
- [16] = { { 1242000, HFPLL, 1, 0x30 }, LVL_HIGH, 1150000, 7 },
- [17] = { { 1296000, HFPLL, 1, 0x32 }, LVL_HIGH, 1150000, 7 },
+ [0] = { { 384000, PLL_8, 0, 0x00 }, LVL_LOW, 1050000, 1 }, //133mhz fsb
+ [1] = { { 432000, HFPLL, 2, 0x20 }, LVL_NOM, 1050000, 2 }, //266mhz fsb
+ [2] = { { 486000, HFPLL, 2, 0x24 }, LVL_NOM, 1050000, 2 }, //266mhz fsb
+ [3] = { { 540000, HFPLL, 2, 0x28 }, LVL_NOM, 1050000, 2 }, //266mhz fsb
+ [4] = { { 594000, HFPLL, 1, 0x16 }, LVL_NOM, 1050000, 2 }, //266mhz fsb
+ [5] = { { 648000, HFPLL, 1, 0x18 }, LVL_NOM, 1050000, 4 }, //400mhz fsb
+ [6] = { { 702000, HFPLL, 1, 0x1A }, LVL_NOM, 1050000, 4 }, //400mhz fsb
+ [7] = { { 756000, HFPLL, 1, 0x1C }, LVL_HIGH, 1150000, 4 }, //400mhz fsb
+ [8] = { { 810000, HFPLL, 1, 0x1E }, LVL_HIGH, 1150000, 4 }, //400mhz fsb
+ [9] = { { 864000, HFPLL, 1, 0x20 }, LVL_HIGH, 1150000, 4 }, //400mhz fsb
+ [10] = { { 918000, HFPLL, 1, 0x22 }, LVL_HIGH, 1150000, 7 }, //533mhz fsb
+ [11] = { { 972000, HFPLL, 1, 0x24 }, LVL_HIGH, 1150000, 7 }, //533mhz fsb
+ [12] = { { 1026000, HFPLL, 1, 0x26 }, LVL_HIGH, 1150000, 7 }, //533mhz fsb
+ [13] = { { 1080000, HFPLL, 1, 0x28 }, LVL_HIGH, 1150000, 7 }, //533mhz fsb
+ [14] = { { 1134000, HFPLL, 1, 0x2A }, LVL_HIGH, 1150000, 7 }, //533mhz fsb
+ [15] = { { 1188000, HFPLL, 1, 0x2C }, LVL_HIGH, 1150000, 7 }, //533mhz fsb
+ [16] = { { 1242000, HFPLL, 1, 0x2E }, LVL_HIGH, 1150000, 7 },
+ [17] = { { 1296000, HFPLL, 1, 0x30 }, LVL_HIGH, 1150000, 7 },
+ [18] = { { 1350000, HFPLL, 1, 0x32 }, LVL_HIGH, 1150000, 10 }, //600mhz fsb
{ }
};
@@ -171,14 +175,13 @@ static struct acpu_level acpu_freq_tbl_slow[] __initdata = {
{ 0, { 1080000, HFPLL, 1, 0x28 }, L2(15), 1175000 },
{ 1, { 1134000, HFPLL, 1, 0x2A }, L2(15), 1175000 },
{ 1, { 1188000, HFPLL, 1, 0x2C }, L2(15), 1200000 },
- { 1, { 1300000, HFPLL, 1, 0x30 }, L2(15), 1225000 },
- { 1, { 1400000, HFPLL, 1, 0x32 }, L2(15), 1237500 },
- { 1, { 1500000, HFPLL, 1, 0x34 }, L2(15), 1250000 },
- { 1, { 1600000, HFPLL, 1, 0x36 }, L2(15), 1275000 },
{ 0, { 0 } }
};
static struct acpu_level acpu_freq_tbl_nom[] __initdata = {
+ { 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 875000 },
+ { 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 900000 },
+ { 0, { 378000, HFPLL, 2, 0x1C }, L2(0), 925000 },
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(0), 925000 },
{ 0, { 432000, HFPLL, 2, 0x20 }, L2(5), 950000 },
{ 1, { 486000, HFPLL, 2, 0x24 }, L2(5), 950000 },
@@ -193,17 +196,31 @@ static struct acpu_level acpu_freq_tbl_nom[] __initdata = {
{ 0, { 972000, HFPLL, 1, 0x24 }, L2(10), 1100000 },
{ 1, { 1026000, HFPLL, 1, 0x26 }, L2(10), 1100000 },
{ 0, { 1080000, HFPLL, 1, 0x28 }, L2(15), 1150000 },
- { 1, { 1134000, HFPLL, 1, 0x2A }, L2(15), 1150000 },
- { 1, { 1188000, HFPLL, 1, 0x2C }, L2(15), 1175000 },
- { 1, { 1300000, HFPLL, 1, 0x30 }, L2(15), 1200000 },
- { 1, { 1400000, HFPLL, 1, 0x32 }, L2(15), 1212500 },
- { 1, { 1500000, HFPLL, 1, 0x34 }, L2(15), 1225000 },
- { 1, { 1600000, HFPLL, 1, 0x36 }, L2(15), 1250000 },
+ { 0, { 1134000, HFPLL, 1, 0x2A }, L2(15), 1150000 },
+ { 1, { 1188000, HFPLL, 1, 0x2C }, L2(15), 1150000 },
+ { 1, { 1242000, HFPLL, 1, 0x2E }, L2(18), 1150000 },
+ { 0, { 1296000, HFPLL, 1, 0x30 }, L2(18), 1175000 },
+ { 1, { 1350000, HFPLL, 1, 0x32 }, L2(18), 1175000 },
+ { 0, { 1404000, HFPLL, 1, 0x34 }, L2(18), 1187500 },
+ { 1, { 1458000, HFPLL, 1, 0x36 }, L2(18), 1187500 },
+ { 1, { 1512000, HFPLL, 1, 0x38 }, L2(18), 1200000 },
+ { 1, { 1566000, HFPLL, 1, 0x3A }, L2(18), 1225000 },
+ { 1, { 1620000, HFPLL, 1, 0x3C }, L2(18), 1237500 },
+ { 1, { 1674000, HFPLL, 1, 0x3E }, L2(18), 1250000 },
+ { 1, { 1728000, HFPLL, 1, 0x40 }, L2(18), 1267500 },
+ { 1, { 1836000, HFPLL, 1, 0x44 }, L2(18), 1275000 },
+ { 1, { 1890000, HFPLL, 1, 0x46 }, L2(18), 1300000 },
+ { 1, { 1944000, HFPLL, 1, 0x48 }, L2(18), 1312500 },
+ { 1, { 1998000, HFPLL, 1, 0x4A }, L2(18), 1325000 },
+ { 1, { 2052000, HFPLL, 1, 0x4C }, L2(18), 1337500 },
{ 0, { 0 } }
};
static struct acpu_level acpu_freq_tbl_fast[] __initdata = {
- { 1, { 384000, PLL_8, 0, 0x00 }, L2(0), 900000 },
+ { 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 850000 },
+ { 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 875000 },
+ { 0, { 378000, HFPLL, 2, 0x1C }, L2(0), 900000 },
+ { 0, { 384000, PLL_8, 0, 0x00 }, L2(0), 900000 },
{ 0, { 432000, HFPLL, 2, 0x20 }, L2(5), 900000 },
{ 1, { 486000, HFPLL, 2, 0x24 }, L2(5), 900000 },
{ 0, { 540000, HFPLL, 2, 0x28 }, L2(5), 925000 },
@@ -218,11 +235,22 @@ static struct acpu_level acpu_freq_tbl_fast[] __initdata = {
{ 1, { 1026000, HFPLL, 1, 0x26 }, L2(10), 1050000 },
{ 0, { 1080000, HFPLL, 1, 0x28 }, L2(15), 1100000 },
{ 1, { 1134000, HFPLL, 1, 0x2A }, L2(15), 1100000 },
- { 1, { 1188000, HFPLL, 1, 0x2C }, L2(15), 1125000 },
- { 1, { 1300000, HFPLL, 1, 0x30 }, L2(15), 1150000 },
- { 1, { 1400000, HFPLL, 1, 0x32 }, L2(15), 1162500 },
- { 1, { 1500000, HFPLL, 1, 0x34 }, L2(15), 1175000 },
- { 1, { 1600000, HFPLL, 1, 0x36 }, L2(15), 1200000 },
+ { 0, { 1188000, HFPLL, 1, 0x2C }, L2(15), 1125000 },
+ { 0, { 1242000, HFPLL, 1, 0x2E }, L2(18), 1125000 },
+ { 0, { 1296000, HFPLL, 1, 0x30 }, L2(18), 1125000 },
+ { 1, { 1350000, HFPLL, 1, 0x32 }, L2(18), 1125000 },
+ { 0, { 1404000, HFPLL, 1, 0x34 }, L2(18), 1137500 },
+ { 1, { 1458000, HFPLL, 1, 0x36 }, L2(18), 1137500 },
+ { 1, { 1512000, HFPLL, 1, 0x38 }, L2(18), 1150000 },
+ { 1, { 1566000, HFPLL, 1, 0x3A }, L2(18), 1175000 },
+ { 1, { 1620000, HFPLL, 1, 0x3C }, L2(18), 1190000 },
+ { 1, { 1674000, HFPLL, 1, 0x3E }, L2(18), 1200000 },
+ { 1, { 1728000, HFPLL, 1, 0x40 }, L2(18), 1225000 },
+ { 1, { 1836000, HFPLL, 1, 0x44 }, L2(18), 1250000 },
+ { 1, { 1890000, HFPLL, 1, 0x46 }, L2(18), 1275000 },
+ { 1, { 1944000, HFPLL, 1, 0x48 }, L2(18), 1312500 },
+ { 1, { 1998000, HFPLL, 1, 0x4A }, L2(18), 1325000 },
+ { 1, { 2052000, HFPLL, 1, 0x4C }, L2(18), 1337500 },
{ 0, { 0 } }
};
--
2.9.3
From 9e64678050785692e766e29c11bfe4c7d1e72995 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sun, 11 Dec 2016 20:41:35 -0500
Subject: [PATCH 4/4] Max OC
Change-Id: I6e2089eb1f8de9200964acd6271649f6af70edfd
---
arch/arm/mach-msm/acpuclock-8930.c | 9 +++++----
arch/arm/mach-msm/acpuclock-krait.c | 2 +-
arch/arm/mach-msm/board-8930-regulator-pm8038.c | 4 ++--
arch/arm/mach-msm/board-8930-regulator-pm8917.c | 4 ++--
4 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/arch/arm/mach-msm/acpuclock-8930.c b/arch/arm/mach-msm/acpuclock-8930.c
index 9067efc..693a254 100644
--- a/arch/arm/mach-msm/acpuclock-8930.c
+++ b/arch/arm/mach-msm/acpuclock-8930.c
@@ -52,7 +52,7 @@ static struct scalable scalable_pm8917[] __initdata = {
.aux_clk_sel = 3,
.sec_clk_sel = 2,
.l2cpmr_iaddr = 0x4501,
- .vreg[VREG_CORE] = { "krait0", 1300000 },
+ .vreg[VREG_CORE] = { "krait0", 1400000 },
.vreg[VREG_MEM] = { "krait0_mem", 1150000 },
.vreg[VREG_DIG] = { "krait0_dig", 1150000 },
.vreg[VREG_HFPLL_A] = { "krait0_s8", 2050000 },
@@ -64,7 +64,7 @@ static struct scalable scalable_pm8917[] __initdata = {
.aux_clk_sel = 3,
.sec_clk_sel = 2,
.l2cpmr_iaddr = 0x5501,
- .vreg[VREG_CORE] = { "krait1", 1300000 },
+ .vreg[VREG_CORE] = { "krait1", 1400000 },
.vreg[VREG_MEM] = { "krait1_mem", 1150000 },
.vreg[VREG_DIG] = { "krait1_dig", 1150000 },
.vreg[VREG_HFPLL_A] = { "krait1_s8", 2050000 },
@@ -88,7 +88,7 @@ static struct scalable scalable[] __initdata = {
.aux_clk_sel = 3,
.sec_clk_sel = 2,
.l2cpmr_iaddr = 0x4501,
- .vreg[VREG_CORE] = { "krait0", 1300000 },
+ .vreg[VREG_CORE] = { "krait0", 1400000 },
.vreg[VREG_MEM] = { "krait0_mem", 1150000 },
.vreg[VREG_DIG] = { "krait0_dig", 1150000 },
.vreg[VREG_HFPLL_A] = { "krait0_hfpll", 1800000 },
@@ -99,7 +99,7 @@ static struct scalable scalable[] __initdata = {
.aux_clk_sel = 3,
.sec_clk_sel = 2,
.l2cpmr_iaddr = 0x5501,
- .vreg[VREG_CORE] = { "krait1", 1300000 },
+ .vreg[VREG_CORE] = { "krait1", 1400000 },
.vreg[VREG_MEM] = { "krait1_mem", 1150000 },
.vreg[VREG_DIG] = { "krait1_dig", 1150000 },
.vreg[VREG_HFPLL_A] = { "krait1_hfpll", 1800000 },
@@ -126,6 +126,7 @@ static struct msm_bus_paths bw_level_tbl[] __initdata = {
[8] = BW_MBPS(4532), /* At least 566 MHz on bus. */
[9] = BW_MBPS(4624), /* At least 578 MHz on bus. */
[10] = BW_MBPS(4800), /* At least 600 MHz on bus. */
+ [11] = BW_MBPS(5336), /* At least 667 MHz on bus. */
};
static struct msm_bus_scale_pdata bus_scale_data __initdata = {
diff --git a/arch/arm/mach-msm/acpuclock-krait.c b/arch/arm/mach-msm/acpuclock-krait.c
index f216ee5..cfbf338 100755
--- a/arch/arm/mach-msm/acpuclock-krait.c
+++ b/arch/arm/mach-msm/acpuclock-krait.c
@@ -932,7 +932,7 @@ static void __init bus_init(const struct l2_level *l2_level)
}
#ifdef CONFIG_CPU_FREQ_MSM
-static struct cpufreq_frequency_table freq_table[NR_CPUS][35];
+static struct cpufreq_frequency_table freq_table[NR_CPUS][53];
static void __init cpufreq_table_init(void)
{
diff --git a/arch/arm/mach-msm/board-8930-regulator-pm8038.c b/arch/arm/mach-msm/board-8930-regulator-pm8038.c
index 4cf0f54..b5a6602 100755
--- a/arch/arm/mach-msm/board-8930-regulator-pm8038.c
+++ b/arch/arm/mach-msm/board-8930-regulator-pm8038.c
@@ -541,9 +541,9 @@ msm8930_pm8038_gpio_regulator_pdata[] __devinitdata = {
/* SAW regulator constraints */
struct regulator_init_data msm8930_pm8038_saw_regulator_core0_pdata =
/* ID vreg_name min_uV max_uV */
- SAW_VREG_INIT(S5, "8038_s5", 850000, 1300000);
+ SAW_VREG_INIT(S5, "8038_s5", 850000, 1400000);
struct regulator_init_data msm8930_pm8038_saw_regulator_core1_pdata =
- SAW_VREG_INIT(S6, "8038_s6", 850000, 1300000);
+ SAW_VREG_INIT(S6, "8038_s6", 850000, 1400000);
/* PM8038 regulator constraints */
struct pm8xxx_regulator_platform_data
diff --git a/arch/arm/mach-msm/board-8930-regulator-pm8917.c b/arch/arm/mach-msm/board-8930-regulator-pm8917.c
index b0dedad..ce3a17f 100644
--- a/arch/arm/mach-msm/board-8930-regulator-pm8917.c
+++ b/arch/arm/mach-msm/board-8930-regulator-pm8917.c
@@ -501,9 +501,9 @@ msm8930_pm8917_gpio_regulator_pdata[] __devinitdata = {
/* SAW regulator constraints */
struct regulator_init_data msm8930_pm8917_saw_regulator_core0_pdata =
/* ID vreg_name min_uV max_uV */
- SAW_VREG_INIT(S5, "8917_s5", 850000, 1300000);
+ SAW_VREG_INIT(S5, "8917_s5", 850000, 1400000);
struct regulator_init_data msm8930_pm8917_saw_regulator_core1_pdata =
- SAW_VREG_INIT(S6, "8917_s6", 850000, 1300000);
+ SAW_VREG_INIT(S6, "8917_s6", 850000, 1400000);
/* PM8917 regulator constraints */
struct pm8xxx_regulator_platform_data
--
2.9.3

View File

@ -0,0 +1,41 @@
From 526a26556b9069238ea7eecb9095cc672daef0e5 Mon Sep 17 00:00:00 2001
From: "H. Peter Anvin" <hpa@linux.intel.com>
Date: Thu, 7 Feb 2013 17:14:08 -0800
Subject: [PATCH] timeconst.pl: Eliminate Perl warning
commit 63a3f603413ffe82ad775f2d62a5afff87fd94a0 upstream.
defined(@array) is deprecated in Perl and gives off a warning.
Restructure the code to remove that warning.
[ hpa: it would be interesting to revert to the timeconst.bc script.
It appears that the failures reported by akpm during testing of
that script was due to a known broken version of make, not a problem
with bc. The Makefile rules could probably be restructured to avoid
the make bug, or it is probably old enough that it doesn't matter. ]
Reported-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
kernel/timeconst.pl | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/kernel/timeconst.pl b/kernel/timeconst.pl
index eb51d76..3f42652 100644
--- a/kernel/timeconst.pl
+++ b/kernel/timeconst.pl
@@ -369,10 +369,8 @@ (@)
die "Usage: $0 HZ\n";
}
- @val = @{$canned_values{$hz}};
- if (!defined(@val)) {
- @val = compute_values($hz);
- }
+ $cv = $canned_values{$hz};
+ @val = defined($cv) ? @$cv : compute_values($hz);
output($hz, @val);
}
exit 0;

View File

@ -0,0 +1,28 @@
From cadb44f5ff20d3e32c5eece6b6185a507f4e8bbf Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Tue, 5 Jan 2016 20:06:35 -0500
Subject: [PATCH] Change toolchain
Change-Id: Ib6df0dc6af32c755f828f4cfe9204a87b01c4551
---
core/combo/TARGET_linux-arm.mk | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk
index 5020865..dcc2e9a 100644
--- a/core/combo/TARGET_linux-arm.mk
+++ b/core/combo/TARGET_linux-arm.mk
@@ -38,8 +38,8 @@ endif
$(combo_2nd_arch_prefix)TARGET_NDK_GCC_VERSION := 4.9
ifeq ($(strip $(TARGET_GCC_VERSION_EXP)),)
-$(combo_2nd_arch_prefix)TARGET_GCC_VERSION := 4.9
-$(combo_2nd_arch_prefix)TARGET_LEGACY_GCC_VERSION := 4.8
+$(combo_2nd_arch_prefix)TARGET_GCC_VERSION := 4.9-cortex-a15
+$(combo_2nd_arch_prefix)TARGET_LEGACY_GCC_VERSION := 4.8-cortex-a15
else
$(combo_2nd_arch_prefix)TARGET_GCC_VERSION := $(TARGET_GCC_VERSION_EXP)
endif
--
2.6.4

View File

@ -0,0 +1,26 @@
From d90bf77e8215c26ae50c221ae346894bc8b37568 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Thu, 25 Feb 2016 05:59:06 -0500
Subject: [PATCH] Disable 5.3 opt
Change-Id: I166e24efeeeec3555efbadf590363bc40fb5468c
---
core/archidroid.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/archidroid.mk b/core/archidroid.mk
index 9ab4918..29bd257 100644
--- a/core/archidroid.mk
+++ b/core/archidroid.mk
@@ -45,7 +45,7 @@ ARCHIDROID_GCC_LDFLAGS := -Wl,-O3 -Wl,--as-needed -Wl,--gc-sections -Wl,--relax
# Flags below are applied to specific targets only, use them if your flag is not compatible for both compilers
# We use GCC 5.3 for arm-linux-androideabi, make sure to remove flags below if you decided to stick with 4.9
-ARCHIDROID_GCC_CFLAGS_32 := -Wno-error=bool-compare -Wno-error=logical-not-parentheses -Wno-error=sizeof-array-argument
+#ARCHIDROID_GCC_CFLAGS_32 := -Wno-error=bool-compare -Wno-error=logical-not-parentheses -Wno-error=sizeof-array-argument
# We use GCC 4.9 for aarch64-linux-android, so we don't have any extra flags for it
ARCHIDROID_GCC_CFLAGS_64 :=
--
2.5.0

View File

@ -0,0 +1,26 @@
From 8076f19e43061cbc363c7a01f4485c65a266ab57 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Thu, 25 Feb 2016 19:40:24 -0500
Subject: [PATCH] Enable graphite
Change-Id: I799412c31dd0c30050657fbc6f1d0daec8d4d54c
---
core/archidroid.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/archidroid.mk b/core/archidroid.mk
index 9ab4918..2ace5f1 100644
--- a/core/archidroid.mk
+++ b/core/archidroid.mk
@@ -64,7 +64,7 @@ ARCHIDROID_GCC_CFLAGS_64 :=
# ARCHIDROID_GCC_CFLAGS += -ftracer -funroll-loops
# These flags may cause ICEs in some compilers, but work fine in other ones, test carefully
-# ARCHIDROID_GCC_CFLAGS += -fgraphite -fgraphite-identity
+ARCHIDROID_GCC_CFLAGS += -fgraphite -fgraphite-identity
# The following flags (-floop) require that your GCC has been configured --with-isl
# Additionally, applying any of them will most likely cause ICE in your compiler, so they're disabled
--
2.5.0

View File

@ -0,0 +1,19 @@
From 2b18a46758ef5e6bc377315cd9bf8d08d1dd5b17 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Mon, 4 Jan 2016 07:41:10 -0500
Subject: [PATCH] switch to SMSSecure as the messaging app
---
target/product/aosp_base_telephony.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/product/aosp_base_telephony.mk b/target/product/aosp_base_telephony.mk
index 0d4e333..f43eec5 100644
--- a/target/product/aosp_base_telephony.mk
+++ b/target/product/aosp_base_telephony.mk
@@ -16,4 +16,4 @@
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk)
PRODUCT_PACKAGES += \
- messaging
+ SMSSecure

View File

@ -0,0 +1,26 @@
From 8bff5fb1bf50db8e26ee64d1f15181f67a68fc7b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Domeradzki?=
<JustArchi@users.noreply.github.com>
Date: Mon, 10 Aug 2015 02:01:37 +0200
Subject: [PATCH] Fix O3 SIGBUS
---
main/Android.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/main/Android.mk b/main/Android.mk
index d98d2ef..8cfee24 100644
--- a/main/Android.mk
+++ b/main/Android.mk
@@ -134,7 +134,7 @@ ifeq ($(BOARD_USES_WIPOWER), true)
LOCAL_C_INCLUDES+= $(LOCAL_PATH)/../wipowerif/include
endif
-LOCAL_CFLAGS += -DBUILDCFG $(bdroid_CFLAGS) -Wno-error=maybe-uninitialized -Wno-error=uninitialized -Wno-error=unused-parameter
+LOCAL_CFLAGS += -DBUILDCFG $(bdroid_CFLAGS) -Os -Wno-error=maybe-uninitialized -Wno-error=uninitialized -Wno-error=unused-parameter
LOCAL_CONLYFLAGS := -std=c99
ifeq ($(TARGET_PRODUCT), full_crespo)
--
2.5.0

View File

@ -0,0 +1,26 @@
From d3774f2251a1fcaadd097de56f2494698b576034 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Thu, 25 Feb 2016 09:57:28 -0500
Subject: [PATCH] Disable opt
Change-Id: I53a1075347b33690ad694fb400d06290a19e2666
---
media/libstagefright/id3/ID3.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/media/libstagefright/id3/ID3.cpp b/media/libstagefright/id3/ID3.cpp
index 76d65f0..0ff541a 100644
--- a/media/libstagefright/id3/ID3.cpp
+++ b/media/libstagefright/id3/ID3.cpp
@@ -500,7 +500,7 @@ void ID3::Iterator::getString(String8 *id, String8 *comment) const {
// comment fields (COM/COMM) contain an initial short descriptor, followed by \0,
// followed by more data. The data following the \0 can be retrieved by setting
// "otherdata" to true.
-void ID3::Iterator::getstring(String8 *id, bool otherdata) const {
+void __attribute__((optimize("no-tree-vectorize"))) ID3::Iterator::getstring(String8 *id, bool otherdata) const {
id->setTo("");
size_t size;
--
2.7.1

View File

@ -0,0 +1,91 @@
From c7995a8a49315d0e7378606c9208caa0400afdd2 Mon Sep 17 00:00:00 2001
From: Kyle Repinski <repinski23@gmail.com>
Date: Sun, 19 Apr 2015 01:03:46 -0500
Subject: [PATCH] Fix compiler issues uncovered at higher optimization levels.
amrwbenc: Fix incorrect array-bounds warning/error.
m4v_h263: dec: Fix bogus strict-overflow warning/error.
af: Fix ICE in AudioMixer::track__NoResample.
Change-Id: I2b44072eff6499026034a82107d9dfc6195a6810
---
media/libstagefright/codecs/amrwbenc/src/isp_az.c | 13 ++++++-------
.../codecs/m4v_h263/dec/src/deringing_luma.cpp | 4 ++--
services/audioflinger/AudioMixer.cpp | 2 +-
3 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/media/libstagefright/codecs/amrwbenc/src/isp_az.c b/media/libstagefright/codecs/amrwbenc/src/isp_az.c
index 62e29e7..6423ec8 100644
--- a/media/libstagefright/codecs/amrwbenc/src/isp_az.c
+++ b/media/libstagefright/codecs/amrwbenc/src/isp_az.c
@@ -42,7 +42,7 @@ void Isp_Az(
/* 1 : adaptive scaling enabled */
)
{
- Word32 i, j;
+ Word16 i, j;
Word16 hi, lo;
Word32 f1[NC16k + 1], f2[NC16k];
Word16 nc;
@@ -58,18 +58,17 @@ void Isp_Az(
{
f1[i] = f1[i] << 2;
}
- } else
- Get_isp_pol(&isp[0], f1, nc);
-
- if (nc > 8)
- {
Get_isp_pol_16kHz(&isp[1], f2, (nc - 1));
for (i = 0; i <= nc - 1; i++)
{
f2[i] = f2[i] << 2;
}
- } else
+ }
+ else
+ {
+ Get_isp_pol(&isp[0], f1, nc);
Get_isp_pol(&isp[1], f2, (nc - 1));
+ }
/*-----------------------------------------------------*
* Multiply F2(z) by (1 - z^-2) *
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/deringing_luma.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/deringing_luma.cpp
index b5574b4..1319251 100644
--- a/media/libstagefright/codecs/m4v_h263/dec/src/deringing_luma.cpp
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/deringing_luma.cpp
@@ -78,7 +78,7 @@ void Deringing_Luma(
for (v_blk = 0; v_blk < MBSIZE; v_blk += BLKSIZE)
{
v0 = ((v_blk - 1) >= 1) ? (v_blk - 1) : 1;
- for (h_blk = MB_H; h_blk < MB_H + MBSIZE; h_blk += BLKSIZE)
+ for (h_blk = MB_H; (unsigned int)h_blk < (unsigned int)((unsigned int)MB_H + (unsigned int)MBSIZE); h_blk += BLKSIZE)
{
h0 = ((h_blk - 1) >= 1) ? (h_blk - 1) : 1;
@@ -129,7 +129,7 @@ void Deringing_Luma(
}
blks = 0;
- for (v_blk = MB_V; v_blk < MB_V + MBSIZE; v_blk += BLKSIZE)
+ for (v_blk = MB_V; (unsigned int)v_blk < (unsigned int)((unsigned int)MB_V + (unsigned int)MBSIZE); v_blk += BLKSIZE)
{
v0 = v_blk - 1;
for (h_blk = 0; h_blk < MBSIZE; h_blk += BLKSIZE)
diff --git a/services/audioflinger/AudioMixer.cpp b/services/audioflinger/AudioMixer.cpp
index 806eaf1..a12d595 100644
--- a/services/audioflinger/AudioMixer.cpp
+++ b/services/audioflinger/AudioMixer.cpp
@@ -1934,7 +1934,7 @@ void AudioMixer::track__Resample(track_t* t, TO* out, size_t outFrameCount, TO*
* TA: int32_t (Q4.27)
*/
template <int MIXTYPE, typename TO, typename TI, typename TA>
-void AudioMixer::track__NoResample(track_t* t, TO* out, size_t frameCount,
+void __attribute__((optimize("no-tree-vectorize"))) AudioMixer::track__NoResample(track_t* t, TO* out, size_t frameCount,
TO* temp __unused, TA* aux)
{
ALOGVV("track__NoResample\n");
--
2.7.1

View File

@ -0,0 +1,67 @@
From c293c1e3284e88ad4d6a19af6f9dde6722a487d9 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sat, 19 Mar 2016 10:43:15 -0400
Subject: [PATCH] Aggressive Doze
Change-Id: Ia5d7031f24f84afd3329090de0be5302b47f420e
---
.../com/android/server/DeviceIdleController.java | 26 +++++++++++-----------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/services/core/java/com/android/server/DeviceIdleController.java b/services/core/java/com/android/server/DeviceIdleController.java
index 71650c3..0f541d1 100644
--- a/services/core/java/com/android/server/DeviceIdleController.java
+++ b/services/core/java/com/android/server/DeviceIdleController.java
@@ -554,36 +554,36 @@ public class DeviceIdleController extends SystemService
}
INACTIVE_TIMEOUT = mParser.getLong(KEY_INACTIVE_TIMEOUT,
- !COMPRESS_TIME ? 30 * 60 * 1000L : 3 * 60 * 1000L);
+ 30000L);
SENSING_TIMEOUT = mParser.getLong(KEY_SENSING_TIMEOUT,
- !DEBUG ? 4 * 60 * 1000L : 60 * 1000L);
+ 0L);
LOCATING_TIMEOUT = mParser.getLong(KEY_LOCATING_TIMEOUT,
- !DEBUG ? 30 * 1000L : 15 * 1000L);
+ 0L);
LOCATION_ACCURACY = mParser.getFloat(KEY_LOCATION_ACCURACY, 20);
MOTION_INACTIVE_TIMEOUT = mParser.getLong(KEY_MOTION_INACTIVE_TIMEOUT,
- !COMPRESS_TIME ? 10 * 60 * 1000L : 60 * 1000L);
+ 0L);
IDLE_AFTER_INACTIVE_TIMEOUT = mParser.getLong(KEY_IDLE_AFTER_INACTIVE_TIMEOUT,
- !COMPRESS_TIME ? 30 * 60 * 1000L : 3 * 60 * 1000L);
+ 0L);
IDLE_PENDING_TIMEOUT = mParser.getLong(KEY_IDLE_PENDING_TIMEOUT,
- !COMPRESS_TIME ? 5 * 60 * 1000L : 30 * 1000L);
+ 12000L);
MAX_IDLE_PENDING_TIMEOUT = mParser.getLong(KEY_MAX_IDLE_PENDING_TIMEOUT,
- !COMPRESS_TIME ? 10 * 60 * 1000L : 60 * 1000L);
+ 12000L);
IDLE_PENDING_FACTOR = mParser.getFloat(KEY_IDLE_PENDING_FACTOR,
2f);
IDLE_TIMEOUT = mParser.getLong(KEY_IDLE_TIMEOUT,
- !COMPRESS_TIME ? 60 * 60 * 1000L : 6 * 60 * 1000L);
+ 60000L);
MAX_IDLE_TIMEOUT = mParser.getLong(KEY_MAX_IDLE_TIMEOUT,
- !COMPRESS_TIME ? 6 * 60 * 60 * 1000L : 30 * 60 * 1000L);
+ 21600000L);
IDLE_FACTOR = mParser.getFloat(KEY_IDLE_FACTOR,
2f);
MIN_TIME_TO_ALARM = mParser.getLong(KEY_MIN_TIME_TO_ALARM,
- !COMPRESS_TIME ? 60 * 60 * 1000L : 6 * 60 * 1000L);
+ 600000L);
MAX_TEMP_APP_WHITELIST_DURATION = mParser.getLong(
- KEY_MAX_TEMP_APP_WHITELIST_DURATION, 5 * 60 * 1000L);
+ KEY_MAX_TEMP_APP_WHITELIST_DURATION, 10000L);
MMS_TEMP_APP_WHITELIST_DURATION = mParser.getLong(
- KEY_MMS_TEMP_APP_WHITELIST_DURATION, 60 * 1000L);
+ KEY_MMS_TEMP_APP_WHITELIST_DURATION, 10000L);
SMS_TEMP_APP_WHITELIST_DURATION = mParser.getLong(
- KEY_SMS_TEMP_APP_WHITELIST_DURATION, 20 * 1000L);
+ KEY_SMS_TEMP_APP_WHITELIST_DURATION, 10000L);
}
}
--
2.7.4

View File

@ -0,0 +1,71 @@
From e565d5688ac11ee1440d7622a84ae5a688f7f3b5 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sat, 16 Apr 2016 22:49:51 -0400
Subject: [PATCH] Aggressive Doze
Change-Id: If28d95b48fc283d88999a200112ee579dd9a4bc2
---
.../com/android/server/DeviceIdleController.java | 47 ++++++++--------------
1 file changed, 16 insertions(+), 31 deletions(-)
diff --git a/services/core/java/com/android/server/DeviceIdleController.java b/services/core/java/com/android/server/DeviceIdleController.java
index 0f541d1..44cc490 100644
--- a/services/core/java/com/android/server/DeviceIdleController.java
+++ b/services/core/java/com/android/server/DeviceIdleController.java
@@ -553,37 +553,22 @@ public class DeviceIdleController extends SystemService
Slog.e(TAG, "Bad device idle settings", e);
}
- INACTIVE_TIMEOUT = mParser.getLong(KEY_INACTIVE_TIMEOUT,
- 30000L);
- SENSING_TIMEOUT = mParser.getLong(KEY_SENSING_TIMEOUT,
- 0L);
- LOCATING_TIMEOUT = mParser.getLong(KEY_LOCATING_TIMEOUT,
- 0L);
- LOCATION_ACCURACY = mParser.getFloat(KEY_LOCATION_ACCURACY, 20);
- MOTION_INACTIVE_TIMEOUT = mParser.getLong(KEY_MOTION_INACTIVE_TIMEOUT,
- 0L);
- IDLE_AFTER_INACTIVE_TIMEOUT = mParser.getLong(KEY_IDLE_AFTER_INACTIVE_TIMEOUT,
- 0L);
- IDLE_PENDING_TIMEOUT = mParser.getLong(KEY_IDLE_PENDING_TIMEOUT,
- 12000L);
- MAX_IDLE_PENDING_TIMEOUT = mParser.getLong(KEY_MAX_IDLE_PENDING_TIMEOUT,
- 12000L);
- IDLE_PENDING_FACTOR = mParser.getFloat(KEY_IDLE_PENDING_FACTOR,
- 2f);
- IDLE_TIMEOUT = mParser.getLong(KEY_IDLE_TIMEOUT,
- 60000L);
- MAX_IDLE_TIMEOUT = mParser.getLong(KEY_MAX_IDLE_TIMEOUT,
- 21600000L);
- IDLE_FACTOR = mParser.getFloat(KEY_IDLE_FACTOR,
- 2f);
- MIN_TIME_TO_ALARM = mParser.getLong(KEY_MIN_TIME_TO_ALARM,
- 600000L);
- MAX_TEMP_APP_WHITELIST_DURATION = mParser.getLong(
- KEY_MAX_TEMP_APP_WHITELIST_DURATION, 10000L);
- MMS_TEMP_APP_WHITELIST_DURATION = mParser.getLong(
- KEY_MMS_TEMP_APP_WHITELIST_DURATION, 10000L);
- SMS_TEMP_APP_WHITELIST_DURATION = mParser.getLong(
- KEY_SMS_TEMP_APP_WHITELIST_DURATION, 10000L);
+ INACTIVE_TIMEOUT = 300000L;//5m
+ SENSING_TIMEOUT = 15000L;//15s
+ LOCATING_TIMEOUT = 15000L;//15s
+ LOCATION_ACCURACY = 30f;
+ MOTION_INACTIVE_TIMEOUT = 15000L;//15s
+ IDLE_AFTER_INACTIVE_TIMEOUT = 15000L;//15s
+ IDLE_PENDING_TIMEOUT = 15000L;//15s
+ MAX_IDLE_PENDING_TIMEOUT = 60000L;//60s
+ IDLE_PENDING_FACTOR = 2f;
+ IDLE_TIMEOUT = 600000L;//10m
+ MAX_IDLE_TIMEOUT = 21600000L;//6h
+ IDLE_FACTOR = 2f;
+ MIN_TIME_TO_ALARM = 600000L;//10m
+ MAX_TEMP_APP_WHITELIST_DURATION = 120000L;//2m
+ MMS_TEMP_APP_WHITELIST_DURATION = 60000L;//1m
+ SMS_TEMP_APP_WHITELIST_DURATION = 30000L;//30s
}
}
--
2.8.0

View File

@ -0,0 +1,71 @@
From 23763f4eb6fba1a9031bc5d46fdd81bfc1a35c0c Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sat, 23 Apr 2016 18:46:05 -0400
Subject: [PATCH] Aggressive Doze
Change-Id: If7b7776ca634d9bb63cd77458a5d1c93fe38bc8f
---
.../com/android/server/DeviceIdleController.java | 47 ++++++++--------------
1 file changed, 16 insertions(+), 31 deletions(-)
diff --git a/services/core/java/com/android/server/DeviceIdleController.java b/services/core/java/com/android/server/DeviceIdleController.java
index 71650c3..44cc490 100644
--- a/services/core/java/com/android/server/DeviceIdleController.java
+++ b/services/core/java/com/android/server/DeviceIdleController.java
@@ -553,37 +553,22 @@ public class DeviceIdleController extends SystemService
Slog.e(TAG, "Bad device idle settings", e);
}
- INACTIVE_TIMEOUT = mParser.getLong(KEY_INACTIVE_TIMEOUT,
- !COMPRESS_TIME ? 30 * 60 * 1000L : 3 * 60 * 1000L);
- SENSING_TIMEOUT = mParser.getLong(KEY_SENSING_TIMEOUT,
- !DEBUG ? 4 * 60 * 1000L : 60 * 1000L);
- LOCATING_TIMEOUT = mParser.getLong(KEY_LOCATING_TIMEOUT,
- !DEBUG ? 30 * 1000L : 15 * 1000L);
- LOCATION_ACCURACY = mParser.getFloat(KEY_LOCATION_ACCURACY, 20);
- MOTION_INACTIVE_TIMEOUT = mParser.getLong(KEY_MOTION_INACTIVE_TIMEOUT,
- !COMPRESS_TIME ? 10 * 60 * 1000L : 60 * 1000L);
- IDLE_AFTER_INACTIVE_TIMEOUT = mParser.getLong(KEY_IDLE_AFTER_INACTIVE_TIMEOUT,
- !COMPRESS_TIME ? 30 * 60 * 1000L : 3 * 60 * 1000L);
- IDLE_PENDING_TIMEOUT = mParser.getLong(KEY_IDLE_PENDING_TIMEOUT,
- !COMPRESS_TIME ? 5 * 60 * 1000L : 30 * 1000L);
- MAX_IDLE_PENDING_TIMEOUT = mParser.getLong(KEY_MAX_IDLE_PENDING_TIMEOUT,
- !COMPRESS_TIME ? 10 * 60 * 1000L : 60 * 1000L);
- IDLE_PENDING_FACTOR = mParser.getFloat(KEY_IDLE_PENDING_FACTOR,
- 2f);
- IDLE_TIMEOUT = mParser.getLong(KEY_IDLE_TIMEOUT,
- !COMPRESS_TIME ? 60 * 60 * 1000L : 6 * 60 * 1000L);
- MAX_IDLE_TIMEOUT = mParser.getLong(KEY_MAX_IDLE_TIMEOUT,
- !COMPRESS_TIME ? 6 * 60 * 60 * 1000L : 30 * 60 * 1000L);
- IDLE_FACTOR = mParser.getFloat(KEY_IDLE_FACTOR,
- 2f);
- MIN_TIME_TO_ALARM = mParser.getLong(KEY_MIN_TIME_TO_ALARM,
- !COMPRESS_TIME ? 60 * 60 * 1000L : 6 * 60 * 1000L);
- MAX_TEMP_APP_WHITELIST_DURATION = mParser.getLong(
- KEY_MAX_TEMP_APP_WHITELIST_DURATION, 5 * 60 * 1000L);
- MMS_TEMP_APP_WHITELIST_DURATION = mParser.getLong(
- KEY_MMS_TEMP_APP_WHITELIST_DURATION, 60 * 1000L);
- SMS_TEMP_APP_WHITELIST_DURATION = mParser.getLong(
- KEY_SMS_TEMP_APP_WHITELIST_DURATION, 20 * 1000L);
+ INACTIVE_TIMEOUT = 300000L;//5m
+ SENSING_TIMEOUT = 15000L;//15s
+ LOCATING_TIMEOUT = 15000L;//15s
+ LOCATION_ACCURACY = 30f;
+ MOTION_INACTIVE_TIMEOUT = 15000L;//15s
+ IDLE_AFTER_INACTIVE_TIMEOUT = 15000L;//15s
+ IDLE_PENDING_TIMEOUT = 15000L;//15s
+ MAX_IDLE_PENDING_TIMEOUT = 60000L;//60s
+ IDLE_PENDING_FACTOR = 2f;
+ IDLE_TIMEOUT = 600000L;//10m
+ MAX_IDLE_TIMEOUT = 21600000L;//6h
+ IDLE_FACTOR = 2f;
+ MIN_TIME_TO_ALARM = 600000L;//10m
+ MAX_TEMP_APP_WHITELIST_DURATION = 120000L;//2m
+ MMS_TEMP_APP_WHITELIST_DURATION = 60000L;//1m
+ SMS_TEMP_APP_WHITELIST_DURATION = 30000L;//30s
}
}
--
2.8.0

View File

@ -0,0 +1,40 @@
From bffe81a931165fbc57bbf7a7ff688f6b09b911cd Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Wed, 20 Jul 2016 00:06:16 -0400
Subject: [PATCH] Change default connectivity check URLs
Change-Id: I8d75ab078f179e23b2ae983b7a4e5653f1eca08e
---
.../src/com/android/captiveportallogin/CaptivePortalLoginActivity.java | 2 +-
services/core/java/com/android/server/connectivity/NetworkMonitor.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java
index ed9c111..09a8898 100644
--- a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java
+++ b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java
@@ -86,7 +86,7 @@ public class CaptivePortalLoginActivity extends Activity {
if (server == null) server = DEFAULT_SERVER;
mCm = ConnectivityManager.from(this);
try {
- mURL = new URL("http", server, "/generate_204");
+ mURL = new URL("https://spotco.us/gen204.php");
} catch (MalformedURLException e) {
// System misconfigured, bail out in a way that at least provides network access.
Log.e(TAG, "Invalid captive portal URL, server=" + server);
diff --git a/services/core/java/com/android/server/connectivity/NetworkMonitor.java b/services/core/java/com/android/server/connectivity/NetworkMonitor.java
index 5108564..0ebf739 100644
--- a/services/core/java/com/android/server/connectivity/NetworkMonitor.java
+++ b/services/core/java/com/android/server/connectivity/NetworkMonitor.java
@@ -640,7 +640,7 @@ public class NetworkMonitor extends StateMachine {
HttpURLConnection urlConnection = null;
int httpResponseCode = 599;
try {
- URL url = new URL("http", mServer, "/generate_204");
+ URL url = new URL("https://spotco.us/gen204.php");
// On networks with a PAC instead of fetching a URL that should result in a 204
// reponse, we instead simply fetch the PAC script. This is done for a few reasons:
// 1. At present our PAC code does not yet handle multiple PACs on multiple networks
--
2.7.4

View File

@ -0,0 +1,226 @@
From 322f9019c0ca410c0d72190dd17bc316351d35db Mon Sep 17 00:00:00 2001
From: Martin Brabham <optedoblivion@cyngn.com>
Date: Fri, 9 Jan 2015 16:20:34 -0800
Subject: [PATCH] DNSCrypt: Encrypt dns queries - Add DNS encryption settings
constants. - Listen for settings changes and handle rerouting dns queries -
Handle switching servers
Change-Id: Ic97285ac6924aa0c930ff59709da384e197cd3ca
---
core/java/android/provider/Settings.java | 22 ++++
.../com/android/server/ConnectivityService.java | 116 ++++++++++++++++++---
2 files changed, 123 insertions(+), 15 deletions(-)
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index f6642d8..9905483 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -4058,6 +4058,28 @@ public final class Settings {
public static final class Secure extends NameValueTable {
public static final String SYS_PROP_SETTING_VERSION = "sys.settings_secure_version";
+ // DNS Encryption
+
+ /**
+ * @hide
+ */
+ public static final String DNS_ENCRYPTION_TOGGLE = "dns_enc_toggle";
+
+ /**
+ * @hide
+ */
+ public static final int DNS_ENCRYPTION_TOGGLE_DEFAULT = 0;
+
+ /**
+ * @hide
+ */
+ public static final String DNS_ENCRYPTION_SERVER = "dns_enc_server";
+
+ /**
+ * @hide
+ */
+ public static final String DNS_ENCRYPTION_SERVER_DEFAULT = "opendns";
+
/**
* The content:// style URL for this table
*/
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 2a47460..0e6578f 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -91,6 +91,8 @@ import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
+import android.provider.Settings.Secure;
+import android.provider.Settings.SettingNotFoundException;
import android.security.Credentials;
import android.security.KeyStore;
import android.telephony.TelephonyManager;
@@ -167,6 +169,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
implements PendingIntent.OnFinished {
private static final String TAG = "ConnectivityService";
+ private static final String NETID_UPDATE =
+ "org.codeaurora.NETID_UPDATE";
+
private static final boolean DBG = true;
private static final boolean VDBG = false;
@@ -229,6 +234,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
private static final int ENABLED = 1;
private static final int DISABLED = 0;
+ // DNS Encryption variables
+ private static final String DNSCRYPT_SERVICE = "dnscrypt-proxy";
+ private static final String LOOPBACK_ADDR = "127.0.0.1";
+ private static final String NULL_DOMAIN = "";
+ private boolean mDnsEncryptionEnabled = false;
+ private String mDnsEncryptionServer = Secure.DNS_ENCRYPTION_SERVER_DEFAULT;
+ private Collection<InetAddress> mActualDnses = new ArrayList<InetAddress>();
+ private int mNetId = -1;
+ private String mActualDomains = null;
+
private enum ReapUnvalidatedNetworks {
// Tear down networks that have no chance (e.g. even if validated) of becoming
// the highest scoring network satisfying a NetworkRequest. This should be passed when
@@ -827,6 +842,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
mSettingsObserver.observe(
Settings.Global.getUriFor(Settings.Global.MOBILE_DATA_ALWAYS_ON),
EVENT_CONFIGURE_MOBILE_DATA_ALWAYS_ON);
+
+ // Watch for whether or not to use DNScrypt
+ resolver.registerContentObserver(Settings.Secure.getUriFor(
+ Secure.DNS_ENCRYPTION_TOGGLE), false, this);
+ resolver.registerContentObserver(Settings.Secure.getUriFor(Secure
+ .DNS_ENCRYPTION_SERVER), false, this);
+ onPreferencesChanged();
}
private synchronized int nextNetworkRequestId() {
@@ -3027,7 +3049,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
}
- private static class SettingsObserver extends ContentObserver {
+ private class SettingsObserver extends ContentObserver {
final private HashMap<Uri, Integer> mUriEventMap;
final private Context mContext;
final private Handler mHandler;
@@ -3058,7 +3080,70 @@ public class ConnectivityService extends IConnectivityManager.Stub
} else {
loge("No matching event to send for URI=" + uri);
}
+ onPreferencesChanged();
+ }
+ }
+
+ /**
+ * Called when preference are updated from Settings
+ * {@hide}
+ */
+ private void onPreferencesChanged() {
+ setDnsEncryptionDns();
+ }
+
+ /**
+ * Updates the DNS to either encrypted or regular
+ */
+ private void setDnsEncryptionDns() {
+ try {
+ mDnsEncryptionEnabled = Secure.getIntForUser(mContext.getContentResolver(),
+ Secure.DNS_ENCRYPTION_TOGGLE, UserHandle.USER_CURRENT) != 0;
+ } catch (SettingNotFoundException e) {
+ loge("Exception getting dns enabled setting: " + e);
+ }
+ String serverName = Secure.getStringForUser(mContext.getContentResolver(),
+ Secure.DNS_ENCRYPTION_SERVER, UserHandle.USER_CURRENT);
+ serverName = (TextUtils.isEmpty(serverName)) ? Secure.DNS_ENCRYPTION_SERVER_DEFAULT :
+ serverName;
+
+ // If they aren't equal, then we have a change!
+ boolean changed = !mDnsEncryptionServer.equals(serverName);
+
+ // Set last server name
+ mDnsEncryptionServer = serverName;
+
+ log("DNS Encryption Enabled: " + mDnsEncryptionEnabled);
+ Collection<InetAddress> dnses = mActualDnses;
+ String domains = mActualDomains;
+ if (mDnsEncryptionEnabled) {
+ if (changed) {
+ // If we had a server change, need to restart service to pick up new server
+ SystemProperties.set("ctl.stop", DNSCRYPT_SERVICE);
+ SystemProperties.set("net.dnscrypt_resolver", mDnsEncryptionServer);
+ }
+ SystemProperties.set("ctl.start", DNSCRYPT_SERVICE);
+ dnses = new ArrayList<InetAddress>();
+ dnses.add(NetworkUtils.numericToInetAddress(LOOPBACK_ADDR));
+ domains = NULL_DOMAIN;
+ } else {
+ SystemProperties.set("ctl.stop", DNSCRYPT_SERVICE);
+ }
+ updateDnsesInternal(dnses, mNetId, domains);
+ }
+
+ private void updateDnsesInternal(Collection<InetAddress> dnses, int netId, String domains) {
+ if (DBG) log("Setting Dns servers for network " + netId + " to " + dnses);
+ try {
+ mNetd.setDnsServersForNetwork(netId, NetworkUtils.makeStrings(dnses), domains);
+ } catch (Exception e) {
+ loge("Exception in setDnsServersForNetwork: " + e);
+ }
+ NetworkAgentInfo defaultNai = mNetworkForRequestId.get(mDefaultRequest.requestId);
+ if (defaultNai != null && defaultNai.network.netId == netId) {
+ setDefaultDnsSystemProperties(dnses);
}
+ flushVmDnsCache();
}
private static void log(String s) {
@@ -4122,27 +4207,28 @@ public class ConnectivityService extends IConnectivityManager.Stub
private void updateDnses(LinkProperties newLp, LinkProperties oldLp, int netId,
boolean flush, boolean useDefaultDns) {
- if (oldLp == null || (newLp.isIdenticalDnses(oldLp) == false)) {
- Collection<InetAddress> dnses = newLp.getDnsServers();
+ if (oldLp == null || !newLp.isIdenticalDnses(oldLp)) {
+ Collection<InetAddress> dnses = newLp.getDnsServers();
if (dnses.size() == 0 && mDefaultDns != null && useDefaultDns) {
- dnses = new ArrayList();
+ dnses = new ArrayList<InetAddress>();
dnses.add(mDefaultDns);
if (DBG) {
loge("no dns provided for netId " + netId + ", so using defaults");
}
}
- if (DBG) log("Setting Dns servers for network " + netId + " to " + dnses);
- try {
- mNetd.setDnsServersForNetwork(netId, NetworkUtils.makeStrings(dnses),
- newLp.getDomains());
- } catch (Exception e) {
- loge("Exception in setDnsServersForNetwork: " + e);
- }
- final NetworkAgentInfo defaultNai = getDefaultNetwork();
- if (defaultNai != null && defaultNai.network.netId == netId) {
- setDefaultDnsSystemProperties(dnses);
+
+ // Set tracking fields
+ mNetId = netId;
+ mActualDnses = dnses;
+ mActualDomains = newLp.getDomains();
+
+ String domains = mActualDomains;
+ if (mDnsEncryptionEnabled) {
+ dnses = new ArrayList<InetAddress>();
+ dnses.add(NetworkUtils.numericToInetAddress(LOOPBACK_ADDR));
+ domains = NULL_DOMAIN;
}
- flushVmDnsCache();
+ updateDnsesInternal(dnses, netId, domains);
} else if (flush) {
try {
mNetd.flushNetworkDnsCache(netId);
--
2.7.4

View File

@ -0,0 +1,49 @@
From 9b8ea26004ada2b15d0403f55a23a0c02d16c5b2 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sat, 2 Apr 2016 11:28:50 -0400
Subject: [PATCH] Shutdown after 5 failed unlock attempts
Change-Id: If18654ff5816a1c7b31187b4c511b940772c20cf
---
.../Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java | 5 +++++
packages/SystemUI/AndroidManifest.xml | 1 +
2 files changed, 6 insertions(+)
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
index 827b378..3bb587b 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
@@ -19,6 +19,7 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
+import android.os.PowerManager;
import android.os.RemoteException;
import android.os.UserHandle;
import android.util.AttributeSet;
@@ -294,6 +295,10 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe
if (timeoutMs > 0) {
showTimeoutDialog(timeoutMs);
}
+ if(failedAttempts >= 5) {
+ final PowerManager powerManager = mContext.getSystemService(PowerManager.class);
+ powerManager.shutdown(false, false);
+ }
}
/**
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 1562901..add89a4 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -109,6 +109,7 @@
<uses-permission android:name="android.permission.TRUST_LISTENER" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.RESET_FINGERPRINT_LOCKOUT" />
+ <uses-permission android:name="android.permission.REBOOT" />
<!-- Needed for WallpaperManager.clear in ImageWallpaper.updateWallpaperLocked -->
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
--
2.8.0

View File

@ -0,0 +1,40 @@
From 6ee2fef0118b2e2955bcec974af36c5ed107deb3 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 18 Apr 2016 09:21:48 -0400
Subject: [PATCH] Implement hostname Randomization
Change-Id: I938b7e896716ea4cb79b4a2e9d852dbe968a778d
---
services/core/java/com/android/server/ConnectivityService.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 2a47460..4dccc03 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -146,6 +146,7 @@ import java.io.PrintWriter;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
+import java.security.SecureRandom;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
@@ -646,8 +647,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
mTrackerHandler = new NetworkStateTrackerHandler(mHandlerThread.getLooper());
// setup our unique device name
- String hostname = CMSettings.Secure.getString(context.getContentResolver(),
+ String hostname;
+ if(SystemProperties.getBoolean("persist.privacy.randomize_host", true)) {
+ hostname = Long.toHexString(new SecureRandom().nextLong());
+ } else {
+ hostname = CMSettings.Secure.getString(context.getContentResolver(),
CMSettings.Secure.DEVICE_HOSTNAME);
+ }
if (TextUtils.isEmpty(hostname) &&
TextUtils.isEmpty(SystemProperties.get("net.hostname"))) {
String id = Settings.Secure.getString(context.getContentResolver(),
--
2.8.0

View File

@ -0,0 +1,198 @@
From f00b971d99ae9320cf463f32c860640a4b67b179 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 8 Aug 2016 16:01:07 -0400
Subject: [PATCH] Add radio tile (1/2)
Change-Id: I5d1cb2fede884b9aa044e0de0cf6459d225e0016
---
packages/SystemUI/res/drawable/ic_qs_radio_off.xml | 10 +++
packages/SystemUI/res/drawable/ic_qs_radio_on.xml | 10 +++
packages/SystemUI/res/values/cm_strings.xml | 1 +
.../src/com/android/systemui/qs/RadioTile.java | 92 ++++++++++++++++++++++
.../systemui/statusbar/phone/QSTileHost.java | 4 +
5 files changed, 117 insertions(+)
create mode 100644 packages/SystemUI/res/drawable/ic_qs_radio_off.xml
create mode 100644 packages/SystemUI/res/drawable/ic_qs_radio_on.xml
create mode 100644 packages/SystemUI/src/com/android/systemui/qs/RadioTile.java
diff --git a/packages/SystemUI/res/drawable/ic_qs_radio_off.xml b/packages/SystemUI/res/drawable/ic_qs_radio_off.xml
new file mode 100644
index 0000000..1cb4918
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_radio_off.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="64dp"
+ android:height="64dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M12,5c-3.87,0 -7,3.13 -7,7h2c0,-2.76 2.24,-5 5,-5s5,2.24 5,5h2c0,-3.87 -3.13,-7 -7,-7zM13,14.29c0.88,-0.39 1.5,-1.26 1.5,-2.29 0,-1.38 -1.12,-2.5 -2.5,-2.5S9.5,10.62 9.5,12c0,1.02 0.62,1.9 1.5,2.29v3.3L7.59,21 9,22.41l3,-3 3,3L16.41,21 13,17.59v-3.3zM12,1C5.93,1 1,5.93 1,12h2c0,-4.97 4.03,-9 9,-9s9,4.03 9,9h2c0,-6.07 -4.93,-11 -11,-11z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_radio_on.xml b/packages/SystemUI/res/drawable/ic_qs_radio_on.xml
new file mode 100644
index 0000000..d446deb
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_radio_on.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="64dp"
+ android:height="64dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M12,5c-3.87,0 -7,3.13 -7,7h2c0,-2.76 2.24,-5 5,-5s5,2.24 5,5h2c0,-3.87 -3.13,-7 -7,-7zM13,14.29c0.88,-0.39 1.5,-1.26 1.5,-2.29 0,-1.38 -1.12,-2.5 -2.5,-2.5S9.5,10.62 9.5,12c0,1.02 0.62,1.9 1.5,2.29v3.3L7.59,21 9,22.41l3,-3 3,3L16.41,21 13,17.59v-3.3zM12,1C5.93,1 1,5.93 1,12h2c0,-4.97 4.03,-9 9,-9s9,4.03 9,9h2c0,-6.07 -4.93,-11 -11,-11z" />
+</vector>
diff --git a/packages/SystemUI/res/values/cm_strings.xml b/packages/SystemUI/res/values/cm_strings.xml
index 2996d21..41b65ae 100644
--- a/packages/SystemUI/res/values/cm_strings.xml
+++ b/packages/SystemUI/res/values/cm_strings.xml
@@ -103,6 +103,7 @@
<string name="quick_settings_profiles">System profiles</string>
<string name="quick_settings_profiles_off">Profiles disabled</string>
<string name="quick_settings_heads_up_label">Heads up</string>
+ <string name="quick_settings_radio_power_label">Radio power</string>
<string name="quick_settings_battery_saver_label">Battery saver</string>
<!-- quick settings battery saver label to show when device is charging and tile is disabled -->
<string name="quick_settings_battery_saver_label_charging">Battery saver (charging)</string>
diff --git a/packages/SystemUI/src/com/android/systemui/qs/RadioTile.java b/packages/SystemUI/src/com/android/systemui/qs/RadioTile.java
new file mode 100644
index 0000000..74cc6c0
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/RadioTile.java
@@ -0,0 +1,92 @@
+package com.android.systemui.qs.tiles;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import android.util.Log;
+import com.android.systemui.R;
+import com.android.systemui.qs.QSTile;
+import org.cyanogenmod.internal.util.QSUtils;
+
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneFactory;
+
+public class RadioTile extends QSTile<QSTile.BooleanState> {
+
+ private boolean mListening;
+ private Phone phone = null;
+
+ private BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ refreshState();
+ }
+ };
+
+ public RadioTile(Host host) {
+ super(host);
+ phone = PhoneFactory.getDefaultPhone();
+ }
+
+ @Override
+ protected BooleanState newTileState() {
+ return new BooleanState();
+ }
+
+ @Override
+ protected void handleClick() {
+ boolean newState = !getState().value;
+ setState(newState);
+ refreshState();
+ }
+
+ @Override
+ protected void handleLongClick() {
+ Intent lauchRadioInfo = new Intent();
+ launchRadioInfo.setClassName("com.android.settings", "com.android.settings.RadioInfo");
+ mHost.startActivityDismissingKeyguard(lauchRadioInfo);
+ }
+
+ private void setEnabled(boolean enabled) {
+ phone.setRadioPower(enabled);
+ }
+
+ @Override
+ protected void handleUpdateState(BooleanState state, Object arg) {
+ state.visible = true;
+ final boolean radioPower = arg instanceof Boolean ? (boolean) arg : phone.isRadioOn();
+ state.value = radioPower;
+ state.label = mContext.getString(R.string.quick_settings_radio_power_label);
+ if(state.value) {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_radio_on);
+ } else {
+ state.icon = ResourceIcon.get(R.drawable.ic_qs_radio_off);
+ }
+ }
+
+ @Override
+ public void setListening(boolean listening) {
+ if (mListening == listening) return;
+ mListening = listening;
+ if (listening) {
+ final IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
+ mContext.registerReceiver(mReceiver, filter);
+ } else {
+ mContext.unregisterReceiver(mReceiver);
+ }
+ mSetting.setListening(listening);
+ }
+
+ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(intent.getAction())) {
+ refreshState();
+ }
+ }
+ };
+}
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
index e88ed73..e6116b7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
@@ -59,6 +59,7 @@ import com.android.systemui.qs.tiles.LockscreenToggleTile;
import com.android.systemui.qs.tiles.NfcTile;
import com.android.systemui.qs.tiles.PerfProfileTile;
import com.android.systemui.qs.tiles.ProfilesTile;
+import com.android.systemui.qs.tiles.RadioTile;
import com.android.systemui.qs.tiles.RotationLockTile;
import com.android.systemui.qs.tiles.ScreenTimeoutTile;
import com.android.systemui.qs.tiles.SyncTile;
@@ -371,6 +372,7 @@ public class QSTileHost implements QSTile.Host, Tunable {
else if (tileSpec.equals("lockscreen")) return new LockscreenToggleTile(this);
else if (tileSpec.equals("ambient_display")) return new AmbientDisplayTile(this);
else if (tileSpec.equals("heads_up")) return new HeadsUpTile(this);
+ else if (tileSpec.equals("radio_power")) return new RadioTile(this);
else if (tileSpec.equals("battery_saver")) return new BatterySaverTile(this);
else if (tileSpec.equals("caffeine")) return new CaffeineTile(this);
else if (tileSpec.startsWith(IntentTile.PREFIX)) return IntentTile.create(this,tileSpec);
@@ -468,6 +470,7 @@ public class QSTileHost implements QSTile.Host, Tunable {
else if (spec.equals("lockscreen")) return R.string.quick_settings_lockscreen_label;
else if (spec.equals("ambient_display")) return R.string.quick_settings_ambient_display_label;
else if (spec.equals("heads_up")) return R.string.quick_settings_heads_up_label;
+ else if (spec.equals("radio_power")) return R.string.quick_settings_radio_power_label;
else if (spec.equals("battery_saver")) return R.string.quick_settings_battery_saver_label;
else if (spec.equals("caffeine")) return R.string.quick_settings_caffeine_label;
return 0;
@@ -498,6 +501,7 @@ public class QSTileHost implements QSTile.Host, Tunable {
else if (spec.equals("lockscreen")) return R.drawable.ic_qs_lock_screen_on;
else if (spec.equals("ambient_display")) return R.drawable.ic_qs_ambientdisplay_on;
else if (spec.equals("heads_up")) return R.drawable.ic_qs_heads_up_on;
+ else if (spec.equals("radio_power")) return R.drawable.ic_qs_radio_on;
else if (spec.equals("battery_saver")) return R.drawable.ic_qs_battery_saver_on;
else if (spec.equals("caffeine")) return R.drawable.ic_qs_caffeine_on;
return 0;
--
2.7.4

View File

@ -0,0 +1,26 @@
From 367e1be44a79ed50b95c78f06ede4532294e96f6 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Wed, 24 Feb 2016 08:53:20 -0500
Subject: [PATCH] Remove analytics
Change-Id: Icbf1deb4fd0cd6696f3fa8e2edab2c30960b121b
---
.../src/com/android/providers/settings/DatabaseHelper.java | 2 --
1 file changed, 2 deletions(-)
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 2b5c14f..0b094a0 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -1917,8 +1917,6 @@ class DatabaseHelper extends SQLiteOpenHelper {
}
if (upgradeVersion < 115) {
- moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE,
- new String[] { CMSettings.Secure.STATS_COLLECTION }, true);
if (mUserHandle == UserHandle.USER_OWNER) {
db.beginTransaction();
SQLiteStatement stmt = null;
--
2.7.1

View File

@ -0,0 +1,97 @@
From d3ec926a99694ed258f60f197a85b83b5f0e75f3 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Tue, 22 Mar 2016 15:10:47 -0400
Subject: [PATCH] Allow packages to fake their signature
Change-Id: Iba3b34256161926886c27ef63271795fd8b93f1a
---
core/res/AndroidManifest.xml | 7 +++++++
core/res/res/values/config.xml | 2 ++
core/res/res/values/strings.xml | 5 +++++
.../android/server/pm/PackageManagerService.java | 23 ++++++++++++++++++++--
4 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 50a4b38..9be1bcb 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1654,6 +1654,13 @@
android:description="@string/permdesc_getPackageSize"
android:protectionLevel="normal" />
+ <!-- @hide Allows an application to change the package signature as
+ seen by applications -->
+ <permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_fakePackageSignature"
+ android:description="@string/permdesc_fakePackageSignature" />
+
<!-- @deprecated No longer useful, see
{@link android.content.pm.PackageManager#addPackageToPreferred}
for details. -->
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 5cdce93..ac23bb6 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1298,6 +1298,8 @@
<string-array name="config_locationProviderPackageNames" translatable="false">
<!-- The standard AOSP fused location provider -->
<item>com.android.location.fused</item>
+ <!-- The (faked) microg fused location provider -->
+ <item>com.google.android.gms</item>
</string-array>
<!-- This string array can be overriden to enable test location providers initially. -->
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 1fef7e7..0924463 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -615,6 +615,11 @@
<!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permlab_fakePackageSignature">Spoof package signature</string>
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permdesc_fakePackageSignature">Allows the app to pretend to be a different app. Malicious applications might be able to use this to access private application data. Grant this permission with caution only!</string>
+
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_statusBar">disable or modify status bar</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index d5c58df..7b68c3e 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -2805,8 +2805,27 @@ public class PackageManagerService extends IPackageManager.Stub {
final Set<String> permissions = permissionsState.getPermissions(userId);
final PackageUserState state = ps.readUserState(userId);
- return PackageParser.generatePackageInfo(p, gids, flags,
- ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId);
+ return mayFakeSignature(p, PackageParser.generatePackageInfo(p, gids, flags,
+ ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId),
+ permissions);
+ }
+
+ private PackageInfo mayFakeSignature(PackageParser.Package p, PackageInfo pi,
+ Set<String> permissions) {
+ try {
+ if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")
+ && p.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1
+ && p.mAppMetaData != null) {
+ String sig = p.mAppMetaData.getString("fake-signature");
+ if (sig != null) {
+ pi.signatures = new Signature[] {new Signature(sig)};
+ }
+ }
+ } catch (Throwable t) {
+ // We should never die because of any failures, this is system code!
+ Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t);
+ }
+ return pi;
}
@Override
--
2.7.4

View File

@ -0,0 +1,104 @@
From 7357f8c0c8a6bdc09555ab47dae83f28346b8470 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Mauduit?= <bmauduit@beneth.fr>
Date: Wed, 22 Jun 2016 15:04:56 +0200
Subject: [PATCH 1/1] Add signature Spoofing permission
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is needed by GmsCore (https://microg.org/) to pretend
the existence of the official Play Services to applications calling
Google APIs.
Signed-off-by: Benoît Mauduit <bmauduit@beneth.fr>
---
core/res/AndroidManifest.xml | 7 +++++++
core/res/res/values/config.xml | 2 ++
core/res/res/values/strings.xml | 5 +++++
.../android/server/pm/PackageManagerService.java | 23 ++++++++++++++++++++--
4 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index ea0e39c..a936983 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1654,6 +1654,13 @@
android:description="@string/permdesc_getPackageSize"
android:protectionLevel="normal" />
+ <!-- @hide Allows an application to change the package signature as
+ seen by applications -->
+ <permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_fakePackageSignature"
+ android:description="@string/permdesc_fakePackageSignature" />
+
<!-- @deprecated No longer useful, see
{@link android.content.pm.PackageManager#addPackageToPreferred}
for details. -->
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index c7846cf..916d8a5 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1298,6 +1298,8 @@
<string-array name="config_locationProviderPackageNames" translatable="false">
<!-- The standard AOSP fused location provider -->
<item>com.android.location.fused</item>
+ <!-- The (faked) microg fused location provider -->
+ <item>com.google.android.gms</item>
</string-array>
<!-- This string array can be overriden to enable test location providers initially. -->
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 58135db..e65367a 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -616,6 +616,11 @@
<!-- Permissions -->
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permlab_fakePackageSignature">Spoof package signature</string>
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permdesc_fakePackageSignature">Allows the app to pretend to be a different app. Malicious applications might be able to use this to access private application data. Grant this permission with caution only!</string>
+
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_statusBar">disable or modify status bar</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permdesc_statusBar">Allows the app to disable the status bar or add and remove system icons.</string>
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 0493180..35f49d7 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -2816,8 +2816,27 @@ public class PackageManagerService extends IPackageManager.Stub {
final Set<String> permissions = permissionsState.getPermissions(userId);
final PackageUserState state = ps.readUserState(userId);
- return PackageParser.generatePackageInfo(p, gids, flags,
- ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId);
+ return mayFakeSignature(p, PackageParser.generatePackageInfo(p, gids, flags,
+ ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId),
+ permissions);
+ }
+
+ private PackageInfo mayFakeSignature(PackageParser.Package p, PackageInfo pi,
+ Set<String> permissions) {
+ try {
+ if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")
+ && p.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1
+ && p.mAppMetaData != null) {
+ String sig = p.mAppMetaData.getString("fake-signature");
+ if (sig != null) {
+ pi.signatures = new Signature[] {new Signature(sig)};
+ }
+ }
+ } catch (Throwable t) {
+ // We should never die because of any failures, this is system code!
+ Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t);
+ }
+ return pi;
}
@Override
--
2.8.1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,535 @@
From 7af4441cada12ddb125c2b747eab897729b62961 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Thu, 13 Oct 2016 19:10:14 -0400
Subject: [PATCH] Remove analytics
Change-Id: Idc9e1bd67d81ffbf62fc5cb8680828603f94c886
---
Android.mk | 2 -
.../cyanogenmod/audiofx/AudioFxApplication.java | 11 --
.../audiofx/activity/ActivityMusic.java | 13 --
.../audiofx/activity/EqualizerManager.java | 13 --
.../audiofx/fragment/AudioFxFragment.java | 2 -
.../audiofx/fragment/ControlsFragment.java | 4 -
.../audiofx/fragment/EqualizerFragment.java | 4 -
src/org/cyanogenmod/audiofx/knobs/RadialKnob.java | 3 -
src/org/cyanogenmod/audiofx/stats/AppState.java | 53 -----
src/org/cyanogenmod/audiofx/stats/UserSession.java | 215 ---------------------
10 files changed, 320 deletions(-)
delete mode 100644 src/org/cyanogenmod/audiofx/stats/AppState.java
delete mode 100644 src/org/cyanogenmod/audiofx/stats/UserSession.java
diff --git a/Android.mk b/Android.mk
index e2553d0..d9a1b99 100644
--- a/Android.mk
+++ b/Android.mk
@@ -20,9 +20,7 @@ LOCAL_PROGUARD_ENABLED := disabled
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, res)
LOCAL_AAPT_FLAGS := --auto-add-overlay
-LOCAL_AAPT_FLAGS += --extra-packages com.cyanogen.ambient
-LOCAL_STATIC_JAVA_AAR_LIBRARIES := ambientsdk
LOCAL_PRIVILEGED_MODULE := true
LOCAL_CERTIFICATE := platform
diff --git a/src/org/cyanogenmod/audiofx/AudioFxApplication.java b/src/org/cyanogenmod/audiofx/AudioFxApplication.java
index 9f08a0c..54819fe 100644
--- a/src/org/cyanogenmod/audiofx/AudioFxApplication.java
+++ b/src/org/cyanogenmod/audiofx/AudioFxApplication.java
@@ -18,30 +18,19 @@ package org.cyanogenmod.audiofx;
import android.app.Application;
import android.util.Log;
-import com.cyanogen.ambient.analytics.AnalyticsServices;
-import com.cyanogen.ambient.analytics.Event;
-import com.cyanogen.ambient.common.api.AmbientApiClient;
-
public class AudioFxApplication extends Application {
private static final String TAG = AudioFxApplication.class.getSimpleName();
private static final boolean DEBUG = false;
- private AmbientApiClient mClient;
-
@Override
public void onCreate() {
super.onCreate();
- mClient = new AmbientApiClient.Builder(this)
- .addApi(AnalyticsServices.API)
- .build();
- mClient.connect();
}
public void sendEvent(Event event) {
if (DEBUG) {
Log.i(TAG, "sendEvent() called with event = [" + event + "]");
}
- AnalyticsServices.AnalyticsApi.sendEvent(mClient, event);
}
}
diff --git a/src/org/cyanogenmod/audiofx/activity/ActivityMusic.java b/src/org/cyanogenmod/audiofx/activity/ActivityMusic.java
index 411ba45..54ede87 100644
--- a/src/org/cyanogenmod/audiofx/activity/ActivityMusic.java
+++ b/src/org/cyanogenmod/audiofx/activity/ActivityMusic.java
@@ -28,7 +28,6 @@ import android.view.View;
import android.view.ViewStub;
import android.widget.CheckBox;
import android.widget.CompoundButton;
-import com.cyanogen.ambient.analytics.Event;
import org.cyanogenmod.audiofx.AudioFxApplication;
import org.cyanogenmod.audiofx.Constants;
import org.cyanogenmod.audiofx.R;
@@ -36,8 +35,6 @@ import org.cyanogenmod.audiofx.fragment.AudioFxFragment;
import org.cyanogenmod.audiofx.knobs.KnobCommander;
import org.cyanogenmod.audiofx.service.AudioFxService;
import org.cyanogenmod.audiofx.service.DevicePreferenceManager;
-import org.cyanogenmod.audiofx.stats.AppState;
-import org.cyanogenmod.audiofx.stats.UserSession;
public class ActivityMusic extends Activity {
@@ -59,9 +56,6 @@ public class ActivityMusic extends Activity {
@Override
public void onCheckedChanged(final CompoundButton buttonView,
final boolean isChecked) {
- if (UserSession.getInstance() != null) {
- UserSession.getInstance().deviceEnabledDisabled();
- }
mConfig.setCurrentDeviceEnabled(isChecked);
}
};
@@ -174,20 +168,13 @@ public class ActivityMusic extends Activity {
if (DEBUG) Log.i(TAG, "onResume() called with " + "");
super.onResume();
- // initiate a new session
- new UserSession(mCallingPackage);
}
@Override
protected void onPause() {
super.onPause();
- if (DEBUG) Log.d(TAG, "Session: " + UserSession.getInstance());
- final Event.Builder builder = new Event.Builder("session", "ended");
- UserSession.getInstance().append(builder);
- AppState.appendState(mConfig, KnobCommander.getInstance(this), builder);
- ((AudioFxApplication) getApplicationContext()).sendEvent(builder.build());
}
@Override
diff --git a/src/org/cyanogenmod/audiofx/activity/EqualizerManager.java b/src/org/cyanogenmod/audiofx/activity/EqualizerManager.java
index a9e0a6d..0fc928f 100644
--- a/src/org/cyanogenmod/audiofx/activity/EqualizerManager.java
+++ b/src/org/cyanogenmod/audiofx/activity/EqualizerManager.java
@@ -26,7 +26,6 @@ import org.cyanogenmod.audiofx.Preset;
import org.cyanogenmod.audiofx.R;
import org.cyanogenmod.audiofx.eq.EqUtils;
import org.cyanogenmod.audiofx.service.AudioFxService;
-import org.cyanogenmod.audiofx.stats.UserSession;
import java.util.ArrayList;
import java.util.Arrays;
@@ -274,10 +273,6 @@ public class EqualizerManager {
* @return the index that the levels were copied to
*/
private int addPreset(float[] levels) {
- if (UserSession.getInstance() != null) {
- UserSession.getInstance().presetCreated();
- }
-
final int customPresets = Constants.getCustomPresets(mContext, mNumBands).size();
// format the name so it's like "Custom <N>", start with "Custom 2"
final String name = String.format(mContext.getString(R.string.custom_n), customPresets + 2);
@@ -588,10 +583,6 @@ public class EqualizerManager {
}
public void renameCurrentPreset(String s) {
- if (UserSession.getInstance() != null) {
- UserSession.getInstance().presetRenamed();
- }
-
if (isUserPreset()) {
((Preset.CustomPreset) getCurrentPreset()).setName(s);
}
@@ -602,10 +593,6 @@ public class EqualizerManager {
}
public boolean removePreset(int index) {
- if (UserSession.getInstance() != null) {
- UserSession.getInstance().presetRemoved();
- }
-
if (index > mEQCustomPresetPosition) {
mEqPresets.remove(index);
mConfig.getCallbacks().notifyPresetsChanged();
diff --git a/src/org/cyanogenmod/audiofx/fragment/AudioFxFragment.java b/src/org/cyanogenmod/audiofx/fragment/AudioFxFragment.java
index 582e3d6..89e4b91 100644
--- a/src/org/cyanogenmod/audiofx/fragment/AudioFxFragment.java
+++ b/src/org/cyanogenmod/audiofx/fragment/AudioFxFragment.java
@@ -45,7 +45,6 @@ import org.cyanogenmod.audiofx.activity.ActivityMusic;
import org.cyanogenmod.audiofx.activity.EqualizerManager;
import org.cyanogenmod.audiofx.activity.MasterConfigControl;
import org.cyanogenmod.audiofx.activity.StateCallbacks;
-import org.cyanogenmod.audiofx.stats.UserSession;
import org.cyanogenmod.audiofx.widget.InterceptableLinearLayout;
import java.util.List;
@@ -337,7 +336,6 @@ public class AudioFxFragment extends Fragment implements StateCallbacks.DeviceCh
AudioDeviceInfo device = mMenuItems.get(item);
if (device != null) {
- UserSession.getInstance().deviceChanged();
mDeviceChanging = true;
if (item.isCheckable()) {
item.setChecked(!item.isChecked());
diff --git a/src/org/cyanogenmod/audiofx/fragment/ControlsFragment.java b/src/org/cyanogenmod/audiofx/fragment/ControlsFragment.java
index 4a0eed6..9c9f5eb 100644
--- a/src/org/cyanogenmod/audiofx/fragment/ControlsFragment.java
+++ b/src/org/cyanogenmod/audiofx/fragment/ControlsFragment.java
@@ -29,7 +29,6 @@ import org.cyanogenmod.audiofx.R;
import org.cyanogenmod.audiofx.activity.MasterConfigControl;
import org.cyanogenmod.audiofx.knobs.KnobCommander;
import org.cyanogenmod.audiofx.knobs.KnobContainer;
-import org.cyanogenmod.audiofx.stats.UserSession;
public class ControlsFragment extends AudioFxBaseFragment {
@@ -44,9 +43,6 @@ public class ControlsFragment extends AudioFxBaseFragment {
= new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- if (mConfig.getMaxxVolumeEnabled() != isChecked) {
- UserSession.getInstance().maxxVolumeToggled();
- }
mConfig.setMaxxVolumeEnabled(isChecked);
}
};
diff --git a/src/org/cyanogenmod/audiofx/fragment/EqualizerFragment.java b/src/org/cyanogenmod/audiofx/fragment/EqualizerFragment.java
index 0f95365..7b459cf 100644
--- a/src/org/cyanogenmod/audiofx/fragment/EqualizerFragment.java
+++ b/src/org/cyanogenmod/audiofx/fragment/EqualizerFragment.java
@@ -46,7 +46,6 @@ import org.cyanogenmod.audiofx.eq.EqContainerView;
import org.cyanogenmod.audiofx.preset.InfinitePagerAdapter;
import org.cyanogenmod.audiofx.preset.InfiniteViewPager;
import org.cyanogenmod.audiofx.preset.PresetPagerAdapter;
-import org.cyanogenmod.audiofx.stats.UserSession;
import org.cyanogenmod.audiofx.viewpagerindicator.CirclePageIndicator;
public class EqualizerFragment extends AudioFxBaseFragment
@@ -516,9 +515,6 @@ public class EqualizerFragment extends AudioFxBaseFragment
mSelectedPosition = position;
if (!mDeviceChanging) {
mSelectedPositionBands = mEqManager.getPresetLevels(mSelectedPosition);
- if (UserSession.getInstance() != null) {
- UserSession.getInstance().presetSelected();
- }
}
}
diff --git a/src/org/cyanogenmod/audiofx/knobs/RadialKnob.java b/src/org/cyanogenmod/audiofx/knobs/RadialKnob.java
index 9f35835..b9bd045 100644
--- a/src/org/cyanogenmod/audiofx/knobs/RadialKnob.java
+++ b/src/org/cyanogenmod/audiofx/knobs/RadialKnob.java
@@ -49,7 +49,6 @@ import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.widget.Toast;
import org.cyanogenmod.audiofx.R;
-import org.cyanogenmod.audiofx.stats.UserSession;
public class RadialKnob extends View {
@@ -456,8 +455,6 @@ public class RadialKnob extends View {
}
}
if (mMoved) {
- UserSession.getInstance()
- .knobOptionsAdjusted(((KnobContainer.KnobInfo)getTag()).whichKnob);
}
mLastX = -1;
mLastY = -1;
diff --git a/src/org/cyanogenmod/audiofx/stats/AppState.java b/src/org/cyanogenmod/audiofx/stats/AppState.java
deleted file mode 100644
index 7ca0c9c..0000000
--- a/src/org/cyanogenmod/audiofx/stats/AppState.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2016 The CyanogenMod 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.
- */
-package org.cyanogenmod.audiofx.stats;
-
-import com.cyanogen.ambient.analytics.Event;
-import org.cyanogenmod.audiofx.Preset;
-import org.cyanogenmod.audiofx.activity.MasterConfigControl;
-import org.cyanogenmod.audiofx.eq.EqUtils;
-import org.cyanogenmod.audiofx.knobs.KnobCommander;
-
-public class AppState {
- public static void appendState(MasterConfigControl control,
- KnobCommander knobs, Event.Builder builder) {
- // what's the current output device?
- builder.addField("state_current_device", control.getCurrentDeviceIdentifier());
-
- // what preset? if custom, what name/values?
- builder.addField("state_preset_name", control.getEqualizerManager().getCurrentPreset().getName());
-
- if (control.getEqualizerManager().getCurrentPreset() instanceof Preset.CustomPreset) {
- builder.addField("state_custom_preset_values",
- EqUtils.floatLevelsToString(control.getEqualizerManager().getCurrentPreset().getLevels()));
- }
-
- // knob states
- if (control.hasMaxxAudio()) {
- builder.addField("state_maxx_volume", control.getMaxxVolumeEnabled());
- }
-
- if (knobs.hasBassBoost()) {
- builder.addField("state_knob_bass", knobs.getBassStrength());
- }
- if (knobs.hasTreble()) {
- builder.addField("state_knob_treble", knobs.getTrebleStrength());
- }
- if (knobs.hasVirtualizer()) {
- builder.addField("state_knob_virtualizer", knobs.getVirtualizerStrength());
- }
- }
-}
diff --git a/src/org/cyanogenmod/audiofx/stats/UserSession.java b/src/org/cyanogenmod/audiofx/stats/UserSession.java
deleted file mode 100644
index 285edb3..0000000
--- a/src/org/cyanogenmod/audiofx/stats/UserSession.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright (C) 2016 The CyanogenMod 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.
- */
-package org.cyanogenmod.audiofx.stats;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import com.cyanogen.ambient.analytics.Event;
-import org.cyanogenmod.audiofx.Preset;
-import org.cyanogenmod.audiofx.knobs.KnobCommander;
-
-public class UserSession implements Parcelable {
-
- private static final String SOURCE_NONE = "none";
-
- private static UserSession sSession;
- public static final UserSession getInstance() {
- return sSession;
- }
-
- private String mSource;
- private int mDevicesChanged;
- private int mEnabledDisabledToggles;
- private int mPresetsSelected;
- private int mPresetsCreated;
- private int mPresetsRemoved;
- private int mPresetsRenamed;
- private int mMaxxVolumeToggled;
- private int mTrebleKnobAdjusted;
- private int mBassKnobAdjusted;
- private int mVirtualizerKnobAdjusted;
-
- public UserSession(String incomingPackageSource) {
- if (incomingPackageSource == null) {
- mSource = SOURCE_NONE;
- } else {
- mSource = incomingPackageSource;
- }
- sSession = this;
- }
-
- public void deviceChanged() {
- mDevicesChanged++;
- }
-
- public void deviceEnabledDisabled() {
- mEnabledDisabledToggles++;
- }
-
- public void presetSelected() {
- mPresetsSelected++;
- }
-
- public void presetRemoved() {
- mPresetsRemoved++;
- }
-
- public void presetRenamed() {
- mPresetsRenamed++;
- }
-
- public void presetCreated() {
- mPresetsCreated++;
- }
-
- public void maxxVolumeToggled() {
- mMaxxVolumeToggled++;
- }
-
- public void knobOptionsAdjusted(int knob) {
- switch (knob) {
- case KnobCommander.KNOB_BASS:
- mBassKnobAdjusted++;
- break;
- case KnobCommander.KNOB_TREBLE:
- mTrebleKnobAdjusted++;
- break;
- case KnobCommander.KNOB_VIRTUALIZER:
- mVirtualizerKnobAdjusted++;
- break;
- }
- }
-
- public void append(Event.Builder builder) {
- builder.addField("session_source", mSource);
- if (mDevicesChanged > 0)
- builder.addField("session_devices_changed_count", mDevicesChanged);
- if (mEnabledDisabledToggles > 0)
- builder.addField("session_devices_enabled_disabled_count", mEnabledDisabledToggles);
- if (mPresetsSelected > 0)
- builder.addField("session_presets_changed_count", mPresetsSelected);
- if (mPresetsCreated > 0)
- builder.addField("session_presets_created_count", mPresetsCreated);
- if (mPresetsRemoved > 0)
- builder.addField("session_presets_removed_count", mPresetsRemoved);
- if (mPresetsRenamed > 0)
- builder.addField("session_presets_renamed_count", mPresetsRenamed);
- if (mMaxxVolumeToggled > 0)
- builder.addField("session_maxx_volume_toggled", mMaxxVolumeToggled);
- if (mBassKnobAdjusted > 0)
- builder.addField("session_knobs_bass_adjusted_count", mBassKnobAdjusted);
- if (mVirtualizerKnobAdjusted > 0)
- builder.addField("session_knobs_virtualizer_adjusted_count", mVirtualizerKnobAdjusted);
- if (mTrebleKnobAdjusted > 0)
- builder.addField("session_knobs_treble_adjusted_count", mTrebleKnobAdjusted);
- }
-
- @Override
- public String toString() {
- StringBuilder s = new StringBuilder(getClass().getName() + "[");
- if (mSource != null) {
- s.append("mSource=").append(mSource).append(", ");
- }
- if (mDevicesChanged > 0) {
- s.append("mDevicesChanged=").append(mDevicesChanged).append(", ");
- }
- if (mEnabledDisabledToggles > 0) {
- s.append("mEnabledDisabledToggles=").append(mEnabledDisabledToggles).append(", ");
- }
- if (mPresetsSelected > 0) {
- s.append("mPresetsSelected=").append(mPresetsSelected).append(", ");
- }
- if (mPresetsCreated > 0) {
- s.append("mPresetsCreated=").append(mPresetsCreated).append(", ");
- }
- if (mPresetsRemoved > 0) {
- s.append("mPresetsRemoved=").append(mPresetsRemoved).append(", ");
- }
- if (mPresetsRenamed > 0) {
- s.append("mPresetsRenamed=").append(mPresetsRenamed).append(", ");
- }
- if (mMaxxVolumeToggled > 0) {
- s.append("mMaxxVolumeToggled=").append(mMaxxVolumeToggled).append(", ");
- }
- if (mBassKnobAdjusted > 0) {
- s.append("mBassKnobAdjusted=").append(mBassKnobAdjusted).append(", ");
- }
- if (mVirtualizerKnobAdjusted > 0) {
- s.append("mVirtualizerKnobAdjusted=").append(mVirtualizerKnobAdjusted).append(", ");
- }
- if (mTrebleKnobAdjusted > 0) {
- s.append("mTrebleKnobAdjusted=").append(mTrebleKnobAdjusted).append(", ");
- }
- if (s.charAt(s.length() - 2) == ',') {
- s.delete(s.length() - 2, s.length());
- }
- s.append("]");
-
- return s.toString();
- }
-
- public static final Creator<UserSession> CREATOR = new Creator<UserSession>() {
- @Override
- public UserSession createFromParcel(Parcel in) {
- return new UserSession(in);
- }
-
- @Override
- public UserSession[] newArray(int size) {
- return new UserSession[size];
- }
- };
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- protected UserSession(Parcel in) {
- mSource = in.readString();
- mDevicesChanged = in.readInt();
- mEnabledDisabledToggles = in.readInt();
- mPresetsSelected = in.readInt();
- mPresetsCreated = in.readInt();
- mPresetsRemoved = in.readInt();
- mPresetsRenamed = in.readInt();
- mBassKnobAdjusted = in.readInt();
- mVirtualizerKnobAdjusted = in.readInt();
- mTrebleKnobAdjusted = in.readInt();
- mMaxxVolumeToggled = in.readInt();
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(mSource);
- dest.writeInt(mDevicesChanged);
- dest.writeInt(mEnabledDisabledToggles);
- dest.writeInt(mPresetsSelected);
- dest.writeInt(mPresetsCreated);
- dest.writeInt(mPresetsRemoved);
- dest.writeInt(mPresetsRenamed);
- dest.writeInt(mBassKnobAdjusted);
- dest.writeInt(mVirtualizerKnobAdjusted);
- dest.writeInt(mTrebleKnobAdjusted);
- dest.writeInt(mMaxxVolumeToggled);
- }
-
- private static class State {
- private String mOutputDevice;
- private Preset mPreset;
- private String mKnobsOpts;
- }
-}
--
2.9.3

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,36 @@
From 66f4525e8f6603a9bceb2168a41ab1cdcea9c20e Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sun, 10 Jul 2016 15:19:45 -0400
Subject: [PATCH] Fix build failure
Change-Id: If17279e2d537f3d7f1e5e5df6ed5c444b3449719
---
src/com/android/incallui/AnswerPresenter.java | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/com/android/incallui/AnswerPresenter.java b/src/com/android/incallui/AnswerPresenter.java
index b0619b1..31a824e 100644
--- a/src/com/android/incallui/AnswerPresenter.java
+++ b/src/com/android/incallui/AnswerPresenter.java
@@ -127,6 +127,18 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi>
public void notifyRefreshViceInfo(QtiViceInfo qtiViceInfo) {
}
+public void receiveCallTransferResponse(int result) {
+
+}
+
+public void notifyVopsStatus(boolean result) {
+
+}
+
+public void notifySsacStatus(boolean result) {
+
+}
+
};
/**
--
2.7.4

View File

@ -0,0 +1,604 @@
From b2252cf1a4b22d60dae76300415ad5bbc6cd0a89 Mon Sep 17 00:00:00 2001
From: Martin Brabham <optedoblivion@cyngn.com>
Date: Fri, 9 Jan 2015 14:49:10 -0800
Subject: [PATCH] DNSCrypt: Add settings for starting/stopping and configuring
the DNSCrypt daemon.
Wire up to framework Settings.Secure
Change-Id: I846e30f7121460b1eed9879d9d225ffe1506050b
---
AndroidManifest.xml | 10 ++
res/values/cm_strings.xml | 11 ++
res/xml/dns_crypt_settings.xml | 38 +++++
res/xml/privacy_settings_cyanogenmod.xml | 10 ++
.../dnscrypt/DnsCryptPreferenceActivity.java | 149 ++++++++++++++++++++
.../settings/dnscrypt/LoadConfigFileTask.java | 152 ++++++++++++++++++++
.../dnscrypt/model/DnsCryptServerEntry.java | 155 +++++++++++++++++++++
7 files changed, 525 insertions(+)
create mode 100644 res/xml/dns_crypt_settings.xml
create mode 100644 src/com/android/settings/dnscrypt/DnsCryptPreferenceActivity.java
create mode 100644 src/com/android/settings/dnscrypt/LoadConfigFileTask.java
create mode 100644 src/com/android/settings/dnscrypt/model/DnsCryptServerEntry.java
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index f38e0bc..ed95f32 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2868,6 +2868,16 @@
</intent-filter>
</receiver>
+ <activity
+ android:name=".dnscrypt.DnsCryptPreferenceActivity"
+ android:label="DNS Encryption"
+ android:excludeFromRecents="true">
+ <intent-filter>
+ <action android:name="com.android.settings.action.ACTION_DNSCRYPT_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
<activity android:name=".applications.ProtectedAppsActivity"
android:label="@string/protected_apps"
android:excludeFromRecents="true"
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
index 6b42f4e..51aff3c 100644
--- a/res/values/cm_strings.xml
+++ b/res/values/cm_strings.xml
@@ -1163,4 +1163,15 @@
<string name="restrict_app_cellular_title">Disable app cellular usage</string>
<string name="restrict_app_cellular_summary">Prevent app from using cellular data connection</string>
<string name="privacy_guard_internet_category">Internet</string>
+
+ <!-- DNS Encryption -->
+ <string name="dns_enc_title">DNS encryption</string>
+ <string name="dns_enc_summary">Manage DNS encryption settings</string>
+ <string name="dns_enc_switch_title">Enable DNS encryption</string>
+ <string name="dns_enc_switch_summary">Toggle execution of local DNS encryption service</string>
+ <string name="dns_enc_cat_config_title">Configuration</string>
+ <string name="dns_enc_server_title">DNS resolver list</string>
+ <string name="dns_enc_server_summary">Select which server you want to use</string>
+ <string name="dns_enc_resolver_label">DNS resolver:&#160;</string>
+ <string name="dns_enc_resolvers_loading">Loading encrypted DNS resolver configuration...</string>
</resources>
diff --git a/res/xml/dns_crypt_settings.xml b/res/xml/dns_crypt_settings.xml
new file mode 100644
index 0000000..636f754
--- /dev/null
+++ b/res/xml/dns_crypt_settings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 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.
+-->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+ android:title="@string/radio_controls_title">
+
+ <SwitchPreference
+ android:key="pref_toggle_dnscrypt"
+ android:title="@string/dns_enc_switch_title"
+ android:summary="@string/dns_enc_switch_summary"
+ android:persistent="false"/>
+
+ <PreferenceCategory
+ android:key="pref_cat_config"
+ android:title="@string/dns_enc_cat_config_title">
+ <ListPreference
+ android:key="pref_server_list"
+ android:title="@string/dns_enc_server_title"
+ android:summary="@string/dns_enc_server_summary"
+ android:persistent="false"/>
+ </PreferenceCategory>
+
+</PreferenceScreen>
diff --git a/res/xml/privacy_settings_cyanogenmod.xml b/res/xml/privacy_settings_cyanogenmod.xml
index 256ca00..25221c2 100644
--- a/res/xml/privacy_settings_cyanogenmod.xml
+++ b/res/xml/privacy_settings_cyanogenmod.xml
@@ -47,4 +47,14 @@
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.applications.ProtectedAppsActivity" />
</Preference>
+
+ <PreferenceScreen
+ android:key="key_dns_crypt"
+ android:title="@string/dns_enc_title"
+ android:summary="@string/dns_enc_summary">
+ <intent
+ android:action="com.android.settings.action.ACTION_DNSCRYPT_SETTINGS"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.dnscrypt.DnsCryptPreferenceActivity" />
+ </PreferenceScreen>
</PreferenceScreen>
diff --git a/src/com/android/settings/dnscrypt/DnsCryptPreferenceActivity.java b/src/com/android/settings/dnscrypt/DnsCryptPreferenceActivity.java
new file mode 100644
index 0000000..64f13c7
--- /dev/null
+++ b/src/com/android/settings/dnscrypt/DnsCryptPreferenceActivity.java
@@ -0,0 +1,149 @@
+/*
+* Copyright (C) 2014 The CyanogenMod 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.
+*/
+
+package com.android.settings.dnscrypt;
+
+import android.app.ProgressDialog;
+import android.os.Bundle;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.Preference.OnPreferenceChangeListener;
+import android.preference.PreferenceActivity;
+import android.preference.SwitchPreference;
+import android.provider.Settings;
+import android.util.Log;
+import com.android.settings.R;
+import com.android.settings.dnscrypt.LoadConfigFileTask.ILoadConfigListener;
+
+import java.io.File;
+
+/**
+ * DnsCryptSettingsFragment
+ * <pre>
+ * Screen for configuring and starting stopping encrypted dns daemon
+ * </pre>
+ *
+ * @see {@link android.preference.PreferenceActivity}
+ * @see {@link android.preference.Preference.OnPreferenceChangeListener}
+ */
+public class DnsCryptPreferenceActivity extends PreferenceActivity implements
+ OnPreferenceChangeListener, ILoadConfigListener {
+
+ // Constants
+ private static final String TAG = DnsCryptPreferenceActivity.class.getSimpleName();
+ private static final String PREF_TOGGLE = "pref_toggle_dnscrypt";
+ private static final String PREF_SERVER_LIST = "pref_server_list";
+ private static final String CONFIG_FILE = "/system/etc/dnscrypt-resolvers.csv";
+
+ // Members
+ private SwitchPreference mEncryptionSwitchPreference;
+ private ListPreference mServerListPreference;
+ private LoadConfigFileTask mLoadConfigFileTask;
+ private String mDnsResolverLabel = "DNS provider";
+
+ // Views
+ private ProgressDialog mProgressDialog;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+ getActionBar().setTitle(R.string.dns_enc_title);
+ addPreferencesFromResource(R.xml.dns_crypt_settings);
+ mEncryptionSwitchPreference = (SwitchPreference) findPreference(PREF_TOGGLE);
+ mEncryptionSwitchPreference.setOnPreferenceChangeListener(this);
+ mServerListPreference = (ListPreference) findPreference(PREF_SERVER_LIST);
+ mServerListPreference.setOnPreferenceChangeListener(this);
+ mDnsResolverLabel = getResources().getString(R.string.dns_enc_resolver_label);
+ mProgressDialog = new ProgressDialog(this);
+ mProgressDialog.setTitle(R.string.dns_enc_resolvers_loading);
+ mProgressDialog.show();
+ if (mLoadConfigFileTask == null) {
+ mLoadConfigFileTask =
+ new LoadConfigFileTask(new File(CONFIG_FILE), mProgressDialog, this);
+ mLoadConfigFileTask.execute();
+ }
+ initPreferences();
+ }
+
+ private void initPreferences() {
+ boolean currentCheckedState = (Settings.Secure.getInt(getContentResolver(),
+ Settings.Secure.DNS_ENCRYPTION_TOGGLE,
+ Settings.Secure.DNS_ENCRYPTION_TOGGLE_DEFAULT) == 1);
+ if (mEncryptionSwitchPreference != null) {
+ mEncryptionSwitchPreference.setChecked(currentCheckedState);
+ }
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object o) {
+ if (preference == mEncryptionSwitchPreference) {
+ Boolean newCheckedState = (Boolean) o;
+ mServerListPreference.setEnabled(newCheckedState);
+ int setValue = (newCheckedState) ? 1 : 0;
+ Settings.Secure.putInt(getContentResolver(), Settings.Secure.DNS_ENCRYPTION_TOGGLE,
+ setValue);
+ return true;
+ } else if (preference == mServerListPreference) {
+ String value = (String) o;
+ int i;
+ for (i = 0; i < mServerListPreference.getEntryValues().length; i++) {
+ if (value.equals(mServerListPreference.getEntryValues()[i])) {
+ break;
+ }
+ }
+ try {
+ mServerListPreference.setSummary(mDnsResolverLabel +
+ mServerListPreference.getEntries()[i]);
+ } catch (ArrayIndexOutOfBoundsException oobe) {
+ Log.e(TAG, "Error finding default value!");
+ mServerListPreference.setSummary(R.string.dns_enc_server_summary);
+ }
+ Settings.Secure.putString(getContentResolver(), Settings.Secure
+ .DNS_ENCRYPTION_SERVER, value);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void onConfigLoaded(CharSequence[] entries, CharSequence[] entryValues) {
+ if (mServerListPreference != null && entries != null && entryValues != null) {
+ mServerListPreference.setEntries(entries);
+ mServerListPreference.setEntryValues(entryValues);
+ String value = Settings.Secure.getString(getContentResolver(),
+ Settings.Secure.DNS_ENCRYPTION_SERVER);
+ value = (value == null) ? Settings.Secure.DNS_ENCRYPTION_SERVER_DEFAULT : value;
+ mServerListPreference.setValue(value);
+ int i;
+ for (i = 0; i < mServerListPreference.getEntryValues().length; i++) {
+ if (value.equals(mServerListPreference.getEntryValues()[i])) {
+ break;
+ }
+ }
+ try {
+ mServerListPreference.setSummary(mDnsResolverLabel
+ + mServerListPreference.getEntries()[i]);
+ } catch (ArrayIndexOutOfBoundsException oobe) {
+ Log.e(TAG, "Error finding default value!", oobe);
+ mServerListPreference.setSummary(R.string.dns_enc_server_summary);
+ }
+ mServerListPreference.setEnabled(mEncryptionSwitchPreference.isChecked());
+ }
+ mLoadConfigFileTask = null;
+ mProgressDialog.dismiss();
+ }
+}
diff --git a/src/com/android/settings/dnscrypt/LoadConfigFileTask.java b/src/com/android/settings/dnscrypt/LoadConfigFileTask.java
new file mode 100644
index 0000000..910e6c1
--- /dev/null
+++ b/src/com/android/settings/dnscrypt/LoadConfigFileTask.java
@@ -0,0 +1,152 @@
+/*
+* Copyright (C) 2014 The CyanogenMod 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.
+*/
+
+package com.android.settings.dnscrypt;
+
+import android.app.ProgressDialog;
+import android.os.AsyncTask;
+import android.util.Log;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * LoadConfigFileTask
+ * <pre>
+ * This task will check if the config file exists in /system/etc and if so will load it for
+ * configuration display in Settings
+ * </pre>
+ */
+public class LoadConfigFileTask extends AsyncTask<Void, Integer, Void> {
+
+ // Constants
+ private static final String TAG = LoadConfigFileTask.class.getSimpleName();
+
+ // Members
+ private ILoadConfigListener mListener;
+ private File mConfigFile;
+ private ProgressDialog mProgressDialog;
+ private CharSequence[] mEntries;
+ private CharSequence[] mEntryValues;
+
+ /**
+ * Constructor
+ *
+ * @param configFile {@link java.io.File}
+ * @param progressDialog {@link android.app.ProgressDialog}
+ * @throws IllegalArgumentException {@link java.lang.IllegalArgumentException}
+ */
+ public LoadConfigFileTask(File configFile, ProgressDialog progressDialog, ILoadConfigListener
+ listener)
+ throws IllegalArgumentException {
+ if (configFile == null || !configFile.exists()) {
+ throw new IllegalArgumentException("'configFile' must not be null and must exist!");
+ }
+ mConfigFile = configFile;
+ mProgressDialog = progressDialog;
+ mListener = listener;
+ }
+
+ @Override
+ public void onPreExecute() {
+ if (mProgressDialog != null) {
+ mProgressDialog.show();
+ }
+ }
+
+ @Override
+ public void onProgressUpdate(Integer... progress) {
+ if (mProgressDialog != null) {
+ mProgressDialog.setProgress(progress[0]);
+ }
+ }
+
+ @Override
+ public Void doInBackground(Void... params) {
+
+ if (mConfigFile == null || !mConfigFile.exists()) {
+ Log.w(TAG, "No config file found....such strange!");
+ // [TODO][MSB]: Download that sucker!
+ // [TODO][MSB]: Perform sig check?
+ return null;
+ }
+
+ try {
+ FileInputStream fis = new FileInputStream(mConfigFile);
+ InputStreamReader reader = new InputStreamReader(fis);
+ BufferedReader bufferedReader = new BufferedReader(reader);
+ List<String> configLines = new ArrayList<String>();
+ String line = "";
+ while((line = bufferedReader.readLine()) != null) {
+ configLines.add(line);
+ }
+ mEntries = new CharSequence[configLines.size() - 1];
+ mEntryValues = new CharSequence[configLines.size() - 1];
+ if (mProgressDialog != null) {
+ mProgressDialog.setMax(configLines.size());
+ }
+ boolean skippedTitle = false;
+ int progress = 0;
+ int i = 0;
+ for (String configLine : configLines) {
+ if (!skippedTitle) {
+ skippedTitle = true;
+ progress++;
+ continue;
+ }
+ String[] configParts = configLine.split(",");
+ if (configParts.length > 3) {
+ String name = configParts[0];
+ String fullName = configParts[1];
+ mEntries[i] = fullName;
+ mEntryValues[i] = name;
+ }
+ i++;
+ progress++;
+ publishProgress(progress);
+ }
+ } catch (IOException e) {
+ Log.e(TAG, e.getMessage());
+ }
+ return null;
+ }
+
+ @Override
+ public void onPostExecute(Void result) {
+ if (mListener != null) {
+ mListener.onConfigLoaded(mEntries, mEntryValues);
+ }
+ if (mProgressDialog != null) {
+ mProgressDialog.dismiss();
+ }
+ }
+
+ /**
+ * ILoadConfigListener
+ * <pre>
+ * Callback interface for passing back results
+ * </pre>
+ */
+ public interface ILoadConfigListener {
+ public void onConfigLoaded(CharSequence[] entries, CharSequence[] entryValues);
+ }
+
+}
diff --git a/src/com/android/settings/dnscrypt/model/DnsCryptServerEntry.java b/src/com/android/settings/dnscrypt/model/DnsCryptServerEntry.java
new file mode 100644
index 0000000..c0f2c75
--- /dev/null
+++ b/src/com/android/settings/dnscrypt/model/DnsCryptServerEntry.java
@@ -0,0 +1,155 @@
+/*
+* Copyright (C) 2014 The CyanogenMod 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.
+*/
+
+package com.android.settings.dnscrypt.model;
+
+/**
+ * DnsCryptServerEntry
+ * <pre>
+ * Model object for representing a dns crypt server entry
+ * </pre>
+ */
+public class DnsCryptServerEntry {
+
+ // Members
+ private String mName;
+ private String mFullName;
+ private String mDescription;
+ private String mLocation;
+ private String mCoords;
+ private String mUrl;
+ private String mVersion;
+ private String mDnsSecValidation;
+ private String mNoLogs;
+ private String mNamecoin;
+ private String mResolverAddress;
+ private String mProviderName;
+ private String mProviderPublicKey;
+ private String mProviderPublicKeyTextRecord;
+
+ public String getName() {
+ return mName;
+ }
+
+ public void setName(String name) {
+ mName = name;
+ }
+
+ public String getFullName() {
+ return mFullName;
+ }
+
+ public void setFullName(String fullName) {
+ mFullName = fullName;
+ }
+
+ public String getDescription() {
+ return mDescription;
+ }
+
+ public void setDescription(String description) {
+ mDescription = description;
+ }
+
+ public String getLocation() {
+ return mLocation;
+ }
+
+ public void setLocation(String location) {
+ mLocation = location;
+ }
+
+ public String getCoords() {
+ return mCoords;
+ }
+
+ public void setCoords(String coords) {
+ mCoords = coords;
+ }
+
+ public String getUrl() {
+ return mUrl;
+ }
+
+ public void setUrl(String url) {
+ mUrl = url;
+ }
+
+ public String getVersion() {
+ return mVersion;
+ }
+
+ public void setVersion(String version) {
+ mVersion = version;
+ }
+
+ public String getDnsSecValidation() {
+ return mDnsSecValidation;
+ }
+
+ public void setDnsSecValidation(String dnsSecValidation) {
+ mDnsSecValidation = dnsSecValidation;
+ }
+
+ public String getNoLogs() {
+ return mNoLogs;
+ }
+
+ public void setNoLogs(String noLogs) {
+ mNoLogs = noLogs;
+ }
+
+ public String getNamecoin() {
+ return mNamecoin;
+ }
+
+ public void setNamecoin(String namecoin) {
+ mNamecoin = namecoin;
+ }
+
+ public String getResolverAddress() {
+ return mResolverAddress;
+ }
+
+ public void setResolverAddress(String resolverAddress) {
+ mResolverAddress = resolverAddress;
+ }
+
+ public String getProviderName() {
+ return mProviderName;
+ }
+
+ public void setProviderName(String providerName) {
+ mProviderName = providerName;
+ }
+
+ public String getProviderPublicKey() {
+ return mProviderPublicKey;
+ }
+
+ public void setProviderPublicKey(String providerPublicKey) {
+ mProviderPublicKey = providerPublicKey;
+ }
+
+ public String getProviderPublicKeyTextRecord() {
+ return mProviderPublicKeyTextRecord;
+ }
+
+ public void setProviderPublicKeyTextRecord(String providerPublicKeyTextRecord) {
+ mProviderPublicKeyTextRecord = providerPublicKeyTextRecord;
+ }
+
+}
--
2.7.4

View File

@ -0,0 +1,231 @@
From ef32dacb30b5c938d48ba294ff660b0cd5777dd6 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 18 Apr 2016 09:27:27 -0400
Subject: [PATCH] Implement hostname Randomization
Change-Id: I00bfb9235979c2c80191cb0871716adaa3583e06
---
MAC_Rand.patch | 120 +++++++++++++++++++++++++
res/values/cm_strings.xml | 4 +
res/xml/wireless_settings.xml | 6 ++
src/com/android/settings/WirelessSettings.java | 14 +++
4 files changed, 144 insertions(+)
create mode 100644 MAC_Rand.patch
diff --git a/MAC_Rand.patch b/MAC_Rand.patch
new file mode 100644
index 0000000..48ad1ec
--- /dev/null
+++ b/MAC_Rand.patch
@@ -0,0 +1,120 @@
+From e84a1e030313cbc2875c9d3ee1f016808d33dab3 Mon Sep 17 00:00:00 2001
+From: Tad <tad@spotco.us>
+Date: Mon, 18 Apr 2016 08:53:03 -0400
+Subject: [PATCH] Implement MAC Randomization
+
+Change-Id: Id074d011eac7c33af267de4c1649670c32770cb5
+---
+ res/values/cm_strings.xml | 4 ++++
+ res/xml/wireless_settings.xml | 6 ++++++
+ src/com/android/settings/WirelessSettings.java | 24 +++++++++++++++++++++++-
+ 3 files changed, 33 insertions(+), 1 deletion(-)
+
+diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
+index 128660e..8aa4785 100644
+--- a/res/values/cm_strings.xml
++++ b/res/values/cm_strings.xml
+@@ -1187,4 +1187,8 @@
+
+ <!-- Label for settings shortcut: carrier selection -->
+ <string name="shortcut_carrier_title">Network operators</string>
++
++ <!-- randomize MAC addresses -->
++ <string name="randomize_mac_title">Randomize MAC addresses</string>
++ <string name="randomize_mac_summary">Assign random MAC addresses when network devices are enabled</string>
+ </resources>
+diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
+index 8882003..4a2d5d0 100644
+--- a/res/xml/wireless_settings.xml
++++ b/res/xml/wireless_settings.xml
+@@ -19,6 +19,12 @@
+ android:title="@string/radio_controls_title">
+
+ <SwitchPreference
++ android:key="randomize_mac"
++ android:title="@string/randomize_mac_title"
++ android:summary="@string/randomize_mac_summary"
++ android:persistent="false" />
++
++ <SwitchPreference
+ android:key="toggle_airplane"
+ android:title="@string/airplane_mode"
+ android:persistent="false"
+diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
+index 4a0c9e3..4432940 100644
+--- a/src/com/android/settings/WirelessSettings.java
++++ b/src/com/android/settings/WirelessSettings.java
+@@ -37,6 +37,7 @@ import android.os.SystemProperties;
+ import android.os.UserHandle;
+ import android.os.UserManager;
+ import android.preference.Preference;
++import android.preference.Preference.OnPreferenceChangeListener;
+ import android.preference.PreferenceCategory;
+ import android.preference.PreferenceScreen;
+ import android.preference.SwitchPreference;
+@@ -58,9 +59,11 @@ import java.util.ArrayList;
+ import java.util.Arrays;
+ import java.util.List;
+
+-public class WirelessSettings extends SettingsPreferenceFragment implements Indexable {
++public class WirelessSettings extends SettingsPreferenceFragment
++ implements OnPreferenceChangeListener, Indexable {
+ private static final String TAG = "WirelessSettings";
+
++ private static final String KEY_RANDOMIZE_MAC = "randomize_mac";
+ private static final String KEY_TOGGLE_AIRPLANE = "toggle_airplane";
+ private static final String KEY_NFC_CATEGORY_SETTINGS = "nfc_category_settings";
+ private static final String KEY_TOGGLE_NFC = "toggle_nfc";
+@@ -76,9 +79,12 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
+ private static final String KEY_WFC_SETTINGS = "wifi_calling_settings";
+ private static final String KEY_NFC_PAYMENT_SETTINGS = "nfc_payment_settings";
+
++ private static final String RANDOMIZE_PERSIST_PROP = "persist.privacy.randomize_mac";
++
+ public static final String EXIT_ECM_RESULT = "exit_ecm_result";
+ public static final int REQUEST_CODE_EXIT_ECM = 1;
+
++ private SwitchPreference mRandomizeMac;
+ private AirplaneModeEnabler mAirplaneModeEnabler;
+ private SwitchPreference mAirplaneModePreference;
+ private NfcEnabler mNfcEnabler;
+@@ -232,6 +238,8 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
+ final boolean isSecondaryUser = myUserId != UserHandle.USER_OWNER;
+
+ final Activity activity = getActivity();
++ mRandomizeMac = (SwitchPreference) findPreference(KEY_RANDOMIZE_MAC);
++ mRandomizeMac.setOnPreferenceChangeListener(this);
+ mAirplaneModePreference = (SwitchPreference) findPreference(KEY_TOGGLE_AIRPLANE);
+ SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC);
+ PreferenceScreen androidBeam = (PreferenceScreen) findPreference(KEY_ANDROID_BEAM_SETTINGS);
+@@ -370,6 +378,10 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
+ public void onResume() {
+ super.onResume();
+
++ if (mRandomizeMac != null) {
++ mRandomizeMac.setChecked(SystemProperties.getBoolean(RANDOMIZE_PERSIST_PROP, true));
++ }
++
+ mAirplaneModeEnabler.resume();
+ if (mNfcEnabler != null) {
+ mNfcEnabler.resume();
+@@ -390,6 +402,16 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
+ }
+ }
+
++ @Override
++ public boolean onPreferenceChange(Preference preference, Object newValue) {
++ if (preference == mRandomizeMac) {
++ SystemProperties.set(RANDOMIZE_PERSIST_PROP, (Boolean) newValue ? "1" : "0");
++ return true;
++ }
++
++ return false;
++ }
++
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+--
+2.8.0
+
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
index 8aa4785..cb825c2 100644
--- a/res/values/cm_strings.xml
+++ b/res/values/cm_strings.xml
@@ -1191,4 +1191,8 @@
<!-- randomize MAC addresses -->
<string name="randomize_mac_title">Randomize MAC addresses</string>
<string name="randomize_mac_summary">Assign random MAC addresses when network devices are enabled</string>
+
+ <!-- randomize hostname -->
+ <string name="randomize_hostname_title">Randomize network hostname</string>
+ <string name="randomize_hostname_summary">Assign random network hostname on boot</string>
</resources>
diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index 4a2d5d0..905e8de 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -25,6 +25,12 @@
android:persistent="false" />
<SwitchPreference
+ android:key="randomize_hostname"
+ android:title="@string/randomize_hostname_title"
+ android:summary="@string/randomize_hostname_summary"
+ android:persistent="false" />
+
+ <SwitchPreference
android:key="toggle_airplane"
android:title="@string/airplane_mode"
android:persistent="false"
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 4432940..6ce772e 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -64,6 +64,7 @@ public class WirelessSettings extends SettingsPreferenceFragment
private static final String TAG = "WirelessSettings";
private static final String KEY_RANDOMIZE_MAC = "randomize_mac";
+ private static final String KEY_RANDOMIZE_HOST = "randomize_hostname";
private static final String KEY_TOGGLE_AIRPLANE = "toggle_airplane";
private static final String KEY_NFC_CATEGORY_SETTINGS = "nfc_category_settings";
private static final String KEY_TOGGLE_NFC = "toggle_nfc";
@@ -80,11 +81,13 @@ public class WirelessSettings extends SettingsPreferenceFragment
private static final String KEY_NFC_PAYMENT_SETTINGS = "nfc_payment_settings";
private static final String RANDOMIZE_PERSIST_PROP = "persist.privacy.randomize_mac";
+ private static final String RANDOMIZE_HOST_PERSIST_PROP = "persist.privacy.randomize_host";
public static final String EXIT_ECM_RESULT = "exit_ecm_result";
public static final int REQUEST_CODE_EXIT_ECM = 1;
private SwitchPreference mRandomizeMac;
+ private SwitchPreference mRandomizeHost;
private AirplaneModeEnabler mAirplaneModeEnabler;
private SwitchPreference mAirplaneModePreference;
private NfcEnabler mNfcEnabler;
@@ -240,6 +243,8 @@ public class WirelessSettings extends SettingsPreferenceFragment
final Activity activity = getActivity();
mRandomizeMac = (SwitchPreference) findPreference(KEY_RANDOMIZE_MAC);
mRandomizeMac.setOnPreferenceChangeListener(this);
+ mRandomizeHost = (SwitchPreference) findPreference(KEY_RANDOMIZE_HOST);
+ mRandomizeHost.setOnPreferenceChangeListener(this);
mAirplaneModePreference = (SwitchPreference) findPreference(KEY_TOGGLE_AIRPLANE);
SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC);
PreferenceScreen androidBeam = (PreferenceScreen) findPreference(KEY_ANDROID_BEAM_SETTINGS);
@@ -382,6 +387,10 @@ public class WirelessSettings extends SettingsPreferenceFragment
mRandomizeMac.setChecked(SystemProperties.getBoolean(RANDOMIZE_PERSIST_PROP, true));
}
+ if (mRandomizeHost != null) {
+ mRandomizeHost.setChecked(SystemProperties.getBoolean(RANDOMIZE_HOST_PERSIST_PROP, true));
+ }
+
mAirplaneModeEnabler.resume();
if (mNfcEnabler != null) {
mNfcEnabler.resume();
@@ -409,6 +418,11 @@ public class WirelessSettings extends SettingsPreferenceFragment
return true;
}
+ if (preference == mRandomizeHost) {
+ SystemProperties.set(RANDOMIZE_HOST_PERSIST_PROP, (Boolean) newValue ? "1" : "0");
+ return true;
+ }
+
return false;
}
--
2.8.0

View File

@ -0,0 +1,120 @@
From e84a1e030313cbc2875c9d3ee1f016808d33dab3 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 18 Apr 2016 08:53:03 -0400
Subject: [PATCH] Implement MAC Randomization
Change-Id: Id074d011eac7c33af267de4c1649670c32770cb5
---
res/values/cm_strings.xml | 4 ++++
res/xml/wireless_settings.xml | 6 ++++++
src/com/android/settings/WirelessSettings.java | 24 +++++++++++++++++++++++-
3 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
index 128660e..8aa4785 100644
--- a/res/values/cm_strings.xml
+++ b/res/values/cm_strings.xml
@@ -1187,4 +1187,8 @@
<!-- Label for settings shortcut: carrier selection -->
<string name="shortcut_carrier_title">Network operators</string>
+
+ <!-- randomize MAC addresses -->
+ <string name="randomize_mac_title">Randomize MAC addresses</string>
+ <string name="randomize_mac_summary">Assign random MAC addresses when network devices are enabled</string>
</resources>
diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index 8882003..4a2d5d0 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -19,6 +19,12 @@
android:title="@string/radio_controls_title">
<SwitchPreference
+ android:key="randomize_mac"
+ android:title="@string/randomize_mac_title"
+ android:summary="@string/randomize_mac_summary"
+ android:persistent="false" />
+
+ <SwitchPreference
android:key="toggle_airplane"
android:title="@string/airplane_mode"
android:persistent="false"
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 4a0c9e3..4432940 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -37,6 +37,7 @@ import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.preference.Preference;
+import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
@@ -58,9 +59,11 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-public class WirelessSettings extends SettingsPreferenceFragment implements Indexable {
+public class WirelessSettings extends SettingsPreferenceFragment
+ implements OnPreferenceChangeListener, Indexable {
private static final String TAG = "WirelessSettings";
+ private static final String KEY_RANDOMIZE_MAC = "randomize_mac";
private static final String KEY_TOGGLE_AIRPLANE = "toggle_airplane";
private static final String KEY_NFC_CATEGORY_SETTINGS = "nfc_category_settings";
private static final String KEY_TOGGLE_NFC = "toggle_nfc";
@@ -76,9 +79,12 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
private static final String KEY_WFC_SETTINGS = "wifi_calling_settings";
private static final String KEY_NFC_PAYMENT_SETTINGS = "nfc_payment_settings";
+ private static final String RANDOMIZE_PERSIST_PROP = "persist.privacy.randomize_mac";
+
public static final String EXIT_ECM_RESULT = "exit_ecm_result";
public static final int REQUEST_CODE_EXIT_ECM = 1;
+ private SwitchPreference mRandomizeMac;
private AirplaneModeEnabler mAirplaneModeEnabler;
private SwitchPreference mAirplaneModePreference;
private NfcEnabler mNfcEnabler;
@@ -232,6 +238,8 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
final boolean isSecondaryUser = myUserId != UserHandle.USER_OWNER;
final Activity activity = getActivity();
+ mRandomizeMac = (SwitchPreference) findPreference(KEY_RANDOMIZE_MAC);
+ mRandomizeMac.setOnPreferenceChangeListener(this);
mAirplaneModePreference = (SwitchPreference) findPreference(KEY_TOGGLE_AIRPLANE);
SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC);
PreferenceScreen androidBeam = (PreferenceScreen) findPreference(KEY_ANDROID_BEAM_SETTINGS);
@@ -370,6 +378,10 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
public void onResume() {
super.onResume();
+ if (mRandomizeMac != null) {
+ mRandomizeMac.setChecked(SystemProperties.getBoolean(RANDOMIZE_PERSIST_PROP, true));
+ }
+
mAirplaneModeEnabler.resume();
if (mNfcEnabler != null) {
mNfcEnabler.resume();
@@ -390,6 +402,16 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
}
}
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ if (preference == mRandomizeMac) {
+ SystemProperties.set(RANDOMIZE_PERSIST_PROP, (Boolean) newValue ? "1" : "0");
+ return true;
+ }
+
+ return false;
+ }
+
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
--
2.8.0

View File

@ -0,0 +1,971 @@
From 20b2e611f53c505bfeb5d76176bc0efab9fdf216 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Wed, 24 Feb 2016 08:41:10 -0500
Subject: [PATCH] Remove analytics
Change-Id: I8ef6bc93aa3e8a256bfd137a982d50c15100d4f0
---
AndroidManifest.xml | 26 --
res/xml/anonymous_stats.xml | 32 ---
res/xml/privacy_settings_cyanogenmod.xml | 8 -
.../android/settings/cmstats/AnonymousStats.java | 107 --------
src/com/android/settings/cmstats/PreviewData.java | 55 ----
.../android/settings/cmstats/ReportingService.java | 106 --------
.../settings/cmstats/ReportingServiceManager.java | 123 ---------
.../settings/cmstats/StatsUploadJobService.java | 291 ---------------------
src/com/android/settings/cmstats/Utilities.java | 102 --------
.../settings/cyanogenmod/PrivacySettings.java | 3 -
10 files changed, 853 deletions(-)
delete mode 100644 res/xml/anonymous_stats.xml
delete mode 100644 src/com/android/settings/cmstats/AnonymousStats.java
delete mode 100644 src/com/android/settings/cmstats/PreviewData.java
delete mode 100644 src/com/android/settings/cmstats/ReportingService.java
delete mode 100644 src/com/android/settings/cmstats/ReportingServiceManager.java
delete mode 100644 src/com/android/settings/cmstats/StatsUploadJobService.java
delete mode 100644 src/com/android/settings/cmstats/Utilities.java
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 775dbf0..f0ca92f 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1556,12 +1556,6 @@
<activity android:name=".EncryptionInterstitial"/>
- <service android:label="ReportingService"
- android:enabled="true"
- android:exported="false"
- android:name=".cmstats.ReportingService">
- </service>
-
<!-- Runs in the phone process since it needs access to the Phone object -->
<activity android:name=".deviceinfo.Status"
android:label="@string/device_status_activity_title"
@@ -2674,26 +2668,6 @@
</intent-filter>$
</receiver>
- <!-- Anonymous Statistics -->
- <receiver android:name=".cmstats.ReportingServiceManager"
- android:enabled="true"
- android:exported="false"
- android:label="ReportingServiceManager">
- <intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED" />
- <action android:name="com.android.settings.action.TRIGGER_REPORT_METRICS" />
- </intent-filter>
- </receiver>
-
- <service android:label="ReportingService"
- android:enabled="true"
- android:exported="false"
- android:name=".cmstats.ReportingService">
- </service>
-
- <service android:name=".cmstats.StatsUploadJobService"
- android:permission="android.permission.BIND_JOB_SERVICE" />
-
<!-- Watch for ContactsContract.Profile changes and update the user's photo. -->
<receiver android:name=".users.ProfileUpdateReceiver">
<intent-filter>
diff --git a/res/xml/anonymous_stats.xml b/res/xml/anonymous_stats.xml
deleted file mode 100644
index 0f3b8e2..0000000
--- a/res/xml/anonymous_stats.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The CyanogenMod 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.
--->
-
-<PreferenceScreen
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/anonymous_statistics_title"
- xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
-
- <com.android.settings.cyanogenmod.CMSecureSettingSwitchPreference
- android:key="stats_collection"
- android:title="@string/stats_collection_title"
- android:summary="@string/stats_collection_summary"
- android:defaultValue="true" />
-
- <PreferenceScreen
- android:title="@string/preview_data_title"
- android:fragment="com.android.settings.cmstats.PreviewData" />
-
-</PreferenceScreen>
diff --git a/res/xml/privacy_settings_cyanogenmod.xml b/res/xml/privacy_settings_cyanogenmod.xml
index 256ca00..04f8643 100644
--- a/res/xml/privacy_settings_cyanogenmod.xml
+++ b/res/xml/privacy_settings_cyanogenmod.xml
@@ -29,14 +29,6 @@
android:summary="@string/blacklist_summary"
android:fragment="com.android.settings.blacklist.BlacklistSettings" />
- <!-- Anonymous statistics - (CMStats) -->
- <PreferenceScreen
- android:key="cmstats"
- android:title="@string/anonymous_statistics_title"
- android:summary="@string/anonymous_statistics_summary"
- android:fragment="com.android.settings.cmstats.AnonymousStats" >
- </PreferenceScreen>
-
<!-- Protected Apps! -->
<Preference
android:key="protected_apps_manager"
diff --git a/src/com/android/settings/cmstats/AnonymousStats.java b/src/com/android/settings/cmstats/AnonymousStats.java
deleted file mode 100644
index 232a533..0000000
--- a/src/com/android/settings/cmstats/AnonymousStats.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2015 The CyanogenMod 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.
- */
-
-package com.android.settings.cmstats;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-
-import android.os.UserHandle;
-import android.preference.Preference;
-import android.preference.PreferenceScreen;
-import android.preference.SwitchPreference;
-import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
-
-import cyanogenmod.providers.CMSettings;
-
-import org.cyanogenmod.internal.logging.CMMetricsLogger;
-
-public class AnonymousStats extends SettingsPreferenceFragment {
-
- private static final String PREF_FILE_NAME = "CMStats";
- /* package */ static final String ANONYMOUS_OPT_IN = "pref_anonymous_opt_in";
- /* package */ static final String ANONYMOUS_LAST_CHECKED = "pref_anonymous_checked_in";
-
- /* package */ static final String KEY_LAST_JOB_ID = "last_job_id";
- /* package */ static final int QUEUE_MAX_THRESHOLD = 1000;
-
- public static final String KEY_STATS = "stats_collection";
-
- SwitchPreference mStatsSwitch;
-
- public static SharedPreferences getPreferences(Context context) {
- return context.getSharedPreferences(PREF_FILE_NAME, 0);
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.anonymous_stats);
- mStatsSwitch = (SwitchPreference) findPreference(KEY_STATS);
- }
-
- @Override
- public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
- if (preference == mStatsSwitch) {
- boolean checked = mStatsSwitch.isChecked();
- if (checked) {
- // clear opt out flags
- CMSettings.Secure.putIntForUser(getContentResolver(),
- CMSettings.Secure.STATS_COLLECTION_REPORTED, 0, UserHandle.USER_OWNER);
- }
- // will initiate opt out sequence if necessary
- ReportingServiceManager.setAlarm(getActivity());
- return true;
- }
- return super.onPreferenceTreeClick(preferenceScreen, preference);
- }
-
- public static void updateLastSynced(Context context) {
- getPreferences(context)
- .edit()
- .putLong(ANONYMOUS_LAST_CHECKED,System.currentTimeMillis())
- .commit();
- }
-
- private static int getLastJobId(Context context) {
- return getPreferences(context).getInt(KEY_LAST_JOB_ID, 0);
- }
-
- private static void setLastJobId(Context context, int id) {
- getPreferences(context)
- .edit()
- .putInt(KEY_LAST_JOB_ID, id)
- .commit();
- }
-
- public static int getNextJobId(Context context) {
- int lastId = getLastJobId(context);
- if (lastId >= QUEUE_MAX_THRESHOLD) {
- lastId = 1;
- } else {
- lastId += 1;
- }
- setLastJobId(context, lastId);
- return lastId;
- }
-
- @Override
- protected int getMetricsCategory() {
- return CMMetricsLogger.ANONYMOUS_STATS;
- }
-}
diff --git a/src/com/android/settings/cmstats/PreviewData.java b/src/com/android/settings/cmstats/PreviewData.java
deleted file mode 100644
index 0adacad..0000000
--- a/src/com/android/settings/cmstats/PreviewData.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2012 The CyanogenMod 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.
- */
-
-package com.android.settings.cmstats;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.PreferenceScreen;
-
-import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
-import org.cyanogenmod.internal.logging.CMMetricsLogger;
-
-public class PreviewData extends SettingsPreferenceFragment {
- private static final String UNIQUE_ID = "preview_id";
- private static final String DEVICE = "preview_device";
- private static final String VERSION = "preview_version";
- private static final String COUNTRY = "preview_country";
- private static final String CARRIER = "preview_carrier";
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- addPreferencesFromResource(R.xml.preview_data);
-
- final PreferenceScreen prefSet = getPreferenceScreen();
- final Context context = getActivity();
-
- prefSet.findPreference(UNIQUE_ID).setSummary(Utilities.getUniqueID(context));
- prefSet.findPreference(DEVICE).setSummary(Utilities.getDevice());
- prefSet.findPreference(VERSION).setSummary(Utilities.getModVersion());
- prefSet.findPreference(COUNTRY).setSummary(Utilities.getCountryCode(context));
- prefSet.findPreference(CARRIER).setSummary(Utilities.getCarrier(context));
- }
-
- @Override
- protected int getMetricsCategory() {
- return CMMetricsLogger.PREVIEW_DATA;
- }
-}
diff --git a/src/com/android/settings/cmstats/ReportingService.java b/src/com/android/settings/cmstats/ReportingService.java
deleted file mode 100644
index 8410143..0000000
--- a/src/com/android/settings/cmstats/ReportingService.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2015 The CyanogenMod 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.
- */
-
-package com.android.settings.cmstats;
-
-import android.app.IntentService;
-import android.app.job.JobInfo;
-import android.app.job.JobScheduler;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.os.PersistableBundle;
-import android.os.UserHandle;
-import android.util.Log;
-import cyanogenmod.providers.CMSettings;
-
-import java.util.List;
-
-public class ReportingService extends IntentService {
- /* package */ static final String TAG = "CMStats";
- private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
-
- public static final String EXTRA_OPTING_OUT = "cmstats::opt_out";
-
- public ReportingService() {
- super(ReportingService.class.getSimpleName());
- }
-
- @Override
- protected void onHandleIntent(Intent intent) {
- JobScheduler js = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
-
- String deviceId = Utilities.getUniqueID(getApplicationContext());
- String deviceName = Utilities.getDevice();
- String deviceVersion = Utilities.getModVersion();
- String deviceCountry = Utilities.getCountryCode(getApplicationContext());
- String deviceCarrier = Utilities.getCarrier(getApplicationContext());
- String deviceCarrierId = Utilities.getCarrierId(getApplicationContext());
- boolean optOut = intent.getBooleanExtra(EXTRA_OPTING_OUT, false);
-
- final int cyanogenJobId = AnonymousStats.getNextJobId(getApplicationContext());
- final int cmOrgJobId = AnonymousStats.getNextJobId(getApplicationContext());
-
- if (DEBUG) Log.d(TAG, "scheduling jobs id: " + cyanogenJobId + ", " + cmOrgJobId);
-
- PersistableBundle cyanogenBundle = new PersistableBundle();
- cyanogenBundle.putBoolean(StatsUploadJobService.KEY_OPT_OUT, optOut);
- cyanogenBundle.putString(StatsUploadJobService.KEY_DEVICE_NAME, deviceName);
- cyanogenBundle.putString(StatsUploadJobService.KEY_UNIQUE_ID, deviceId);
- cyanogenBundle.putString(StatsUploadJobService.KEY_VERSION, deviceVersion);
- cyanogenBundle.putString(StatsUploadJobService.KEY_COUNTRY, deviceCountry);
- cyanogenBundle.putString(StatsUploadJobService.KEY_CARRIER, deviceCarrier);
- cyanogenBundle.putString(StatsUploadJobService.KEY_CARRIER_ID, deviceCarrierId);
- cyanogenBundle.putLong(StatsUploadJobService.KEY_TIMESTAMP, System.currentTimeMillis());
-
- // get snapshot and persist it
- PersistableBundle cmBundle = new PersistableBundle(cyanogenBundle);
-
- // set job types
- cyanogenBundle.putInt(StatsUploadJobService.KEY_JOB_TYPE,
- StatsUploadJobService.JOB_TYPE_CYANOGEN);
- cmBundle.putInt(StatsUploadJobService.KEY_JOB_TYPE,
- StatsUploadJobService.JOB_TYPE_CMORG);
-
- // schedule cyanogen stats upload
- js.schedule(new JobInfo.Builder(cyanogenJobId, new ComponentName(getPackageName(),
- StatsUploadJobService.class.getName()))
- .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
- .setMinimumLatency(1000)
- .setExtras(cyanogenBundle)
- .setPersisted(true)
- .build());
-
- // schedule cmorg stats upload
- js.schedule(new JobInfo.Builder(cmOrgJobId, new ComponentName(getPackageName(),
- StatsUploadJobService.class.getName()))
- .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
- .setMinimumLatency(1000)
- .setExtras(cmBundle)
- .setPersisted(true)
- .build());
-
- if (optOut) {
- // we've successfully scheduled the opt out.
- CMSettings.Secure.putIntForUser(getContentResolver(),
- CMSettings.Secure.STATS_COLLECTION_REPORTED, 1, UserHandle.USER_OWNER);
- }
-
- // reschedule
- AnonymousStats.updateLastSynced(this);
- ReportingServiceManager.setAlarm(this);
- }
-}
diff --git a/src/com/android/settings/cmstats/ReportingServiceManager.java b/src/com/android/settings/cmstats/ReportingServiceManager.java
deleted file mode 100644
index bce1372..0000000
--- a/src/com/android/settings/cmstats/ReportingServiceManager.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2012 The CyanogenMod 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.
- */
-
-package com.android.settings.cmstats;
-
-import android.app.AlarmManager;
-import android.app.PendingIntent;
-import android.app.job.JobScheduler;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.UserHandle;
-import android.util.Log;
-import cyanogenmod.providers.CMSettings;
-
-public class ReportingServiceManager extends BroadcastReceiver {
- private static final long MILLIS_PER_HOUR = 60L * 60L * 1000L;
- private static final long MILLIS_PER_DAY = 24L * MILLIS_PER_HOUR;
- private static final long UPDATE_INTERVAL = 1L * MILLIS_PER_DAY;
-
- private static final String TAG = ReportingServiceManager.class.getSimpleName();
-
- public static final String ACTION_LAUNCH_SERVICE =
- "com.android.settings.action.TRIGGER_REPORT_METRICS";
- public static final String EXTRA_FORCE = "force";
-
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
- setAlarm(context);
- } else if (intent.getAction().equals(ACTION_LAUNCH_SERVICE)){
- launchService(context, intent.getBooleanExtra(EXTRA_FORCE, false));
- }
- }
-
- /**
- * opt out if we haven't yet
- */
- public static void initiateOptOut(Context context) {
- final boolean optOutReported = CMSettings.Secure.getIntForUser(context.getContentResolver(),
- CMSettings.Secure.STATS_COLLECTION_REPORTED, 0, UserHandle.USER_OWNER) == 1;
- if (!optOutReported) {
- Intent intent = new Intent();
- intent.setClass(context, ReportingService.class);
- intent.putExtra(ReportingService.EXTRA_OPTING_OUT, true);
- context.startServiceAsUser(intent, UserHandle.OWNER);
- }
- }
-
- public static void setAlarm(Context context) {
- SharedPreferences prefs = AnonymousStats.getPreferences(context);
- if (prefs.contains(AnonymousStats.ANONYMOUS_OPT_IN)) {
- migrate(context, prefs);
- }
- if (!Utilities.isStatsCollectionEnabled(context)) {
- initiateOptOut(context);
- return;
- }
- long lastSynced = prefs.getLong(AnonymousStats.ANONYMOUS_LAST_CHECKED, 0);
- if (lastSynced == 0) {
- launchService(context, true); // service will reschedule the next alarm
- return;
- }
- long millisFromNow = (lastSynced + UPDATE_INTERVAL) - System.currentTimeMillis();
-
- Intent intent = new Intent(ACTION_LAUNCH_SERVICE);
- intent.setClass(context, ReportingServiceManager.class);
-
- AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
- alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + millisFromNow,
- PendingIntent.getBroadcast(context, 0, intent, 0));
- Log.d(TAG, "Next sync attempt in : "
- + (millisFromNow / MILLIS_PER_HOUR) + " hours");
- }
-
- public static void launchService(Context context, boolean force) {
- SharedPreferences prefs = AnonymousStats.getPreferences(context);
-
- if (!Utilities.isStatsCollectionEnabled(context)) {
- return;
- }
-
- if (!force) {
- long lastSynced = prefs.getLong(AnonymousStats.ANONYMOUS_LAST_CHECKED, 0);
- if (lastSynced == 0) {
- setAlarm(context);
- return;
- }
- long timeElapsed = System.currentTimeMillis() - lastSynced;
- if (timeElapsed < UPDATE_INTERVAL) {
- long timeLeft = UPDATE_INTERVAL - timeElapsed;
- Log.d(TAG, "Waiting for next sync : "
- + timeLeft / MILLIS_PER_HOUR + " hours");
- return;
- }
- }
-
- Intent intent = new Intent();
- intent.setClass(context, ReportingService.class);
- context.startServiceAsUser(intent, UserHandle.OWNER);
- }
-
- private static void migrate(Context context, SharedPreferences prefs) {
- Utilities.setStatsCollectionEnabled(context,
- prefs.getBoolean(AnonymousStats.ANONYMOUS_OPT_IN, true));
- prefs.edit().remove(AnonymousStats.ANONYMOUS_OPT_IN).commit();
- }
-
-}
diff --git a/src/com/android/settings/cmstats/StatsUploadJobService.java b/src/com/android/settings/cmstats/StatsUploadJobService.java
deleted file mode 100644
index 580a20f..0000000
--- a/src/com/android/settings/cmstats/StatsUploadJobService.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * Copyright (C) 2015 The CyanogenMod 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.
- */
-
-package com.android.settings.cmstats;
-
-import android.app.job.JobParameters;
-import android.app.job.JobService;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.PersistableBundle;
-import android.util.ArrayMap;
-import android.util.Log;
-import com.android.settings.R;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.Collections;
-import java.util.Map;
-
-public class StatsUploadJobService extends JobService {
-
- private static final String TAG = StatsUploadJobService.class.getSimpleName();
- private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
-
- public static final String KEY_JOB_TYPE = "job_type";
- public static final int JOB_TYPE_CYANOGEN = 1;
- public static final int JOB_TYPE_CMORG = 2;
-
- public static final String KEY_UNIQUE_ID = "uniqueId";
- public static final String KEY_DEVICE_NAME = "deviceName";
- public static final String KEY_VERSION = "version";
- public static final String KEY_COUNTRY = "country";
- public static final String KEY_CARRIER = "carrier";
- public static final String KEY_CARRIER_ID = "carrierId";
- public static final String KEY_TIMESTAMP = "timeStamp";
- public static final String KEY_OPT_OUT = "optOut";
-
- private final Map<JobParameters, StatsUploadTask> mCurrentJobs
- = Collections.synchronizedMap(new ArrayMap<JobParameters, StatsUploadTask>());
-
- @Override
- public boolean onStartJob(JobParameters jobParameters) {
- if (DEBUG)
- Log.d(TAG, "onStartJob() called with " + "jobParameters = [" + jobParameters + "]");
- final StatsUploadTask uploadTask = new StatsUploadTask(jobParameters);
- mCurrentJobs.put(jobParameters, uploadTask);
- uploadTask.execute((Void) null);
- return true;
- }
-
- @Override
- public boolean onStopJob(JobParameters jobParameters) {
- if (DEBUG)
- Log.d(TAG, "onStopJob() called with " + "jobParameters = [" + jobParameters + "]");
-
- final StatsUploadTask cancelledJob;
- cancelledJob = mCurrentJobs.remove(jobParameters);
-
- if (cancelledJob != null) {
- // cancel the ongoing background task
- cancelledJob.cancel(true);
- return true; // reschedule
- }
-
- return false;
- }
-
- private class StatsUploadTask extends AsyncTask<Void, Void, Boolean> {
-
- private JobParameters mJobParams;
-
- public StatsUploadTask(JobParameters jobParams) {
- this.mJobParams = jobParams;
- }
-
- @Override
- protected Boolean doInBackground(Void... params) {
-
- PersistableBundle extras = mJobParams.getExtras();
-
- String deviceId = extras.getString(KEY_UNIQUE_ID);
- String deviceName = extras.getString(KEY_DEVICE_NAME);
- String deviceVersion = extras.getString(KEY_VERSION);
- String deviceCountry = extras.getString(KEY_COUNTRY);
- String deviceCarrier = extras.getString(KEY_CARRIER);
- String deviceCarrierId = extras.getString(KEY_CARRIER_ID);
- long timeStamp = extras.getLong(KEY_TIMESTAMP);
- boolean optOut = extras.getBoolean(KEY_OPT_OUT);
-
- boolean success = false;
- int jobType = extras.getInt(KEY_JOB_TYPE, -1);
- if (!isCancelled()) {
- switch (jobType) {
- case JOB_TYPE_CYANOGEN:
- try {
- JSONObject json = new JSONObject();
- json.put("optOut", optOut);
- json.put("uniqueId", deviceId);
- json.put("deviceName", deviceName);
- json.put("version", deviceVersion);
- json.put("country", deviceCountry);
- json.put("carrier", deviceCarrier);
- json.put("carrierId", deviceCarrierId);
- json.put("timestamp", timeStamp);
-
- success = uploadToCyanogen(json);
- } catch (IOException | JSONException e) {
- Log.e(TAG, "Could not upload stats checkin to cyanogen server", e);
- success = false;
- }
- break;
-
- case JOB_TYPE_CMORG:
- try {
- success = uploadToCM(deviceId, deviceName, deviceVersion, deviceCountry,
- deviceCarrier, deviceCarrierId, optOut);
- } catch (IOException e) {
- Log.e(TAG, "Could not upload stats checkin to commnity server", e);
- success = false;
- }
- break;
- }
- }
- if (DEBUG)
- Log.d(TAG, "job id " + mJobParams.getJobId() + ", has finished with success="
- + success);
- return success;
- }
-
- @Override
- protected void onPostExecute(Boolean success) {
- mCurrentJobs.remove(mJobParams);
- jobFinished(mJobParams, !success);
- }
- }
-
-
- private boolean uploadToCM(String deviceId, String deviceName, String deviceVersion,
- String deviceCountry, String deviceCarrier, String deviceCarrierId,
- boolean optOut)
- throws IOException {
-
- final Uri uri = Uri.parse(getString(R.string.stats_cm_url)).buildUpon()
- .appendQueryParameter("opt_out", optOut ? "1" : "0")
- .appendQueryParameter("device_hash", deviceId)
- .appendQueryParameter("device_name", deviceName)
- .appendQueryParameter("device_version", deviceVersion)
- .appendQueryParameter("device_country", deviceCountry)
- .appendQueryParameter("device_carrier", deviceCarrier)
- .appendQueryParameter("device_carrier_id", deviceCarrierId).build();
- URL url = new URL(uri.toString());
- HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
- try {
- urlConnection.setInstanceFollowRedirects(true);
- urlConnection.setDoOutput(true);
- urlConnection.connect();
-
- final int responseCode = urlConnection.getResponseCode();
- if (DEBUG) Log.d(TAG, "cm server response code=" + responseCode);
- final boolean success = responseCode == HttpURLConnection.HTTP_OK;
- if (!success) {
- Log.w(TAG, "failed sending, server returned: " + getResponse(urlConnection,
- !success));
- }
- return success;
- } finally {
- urlConnection.disconnect();
- }
-
- }
-
- private boolean uploadToCyanogen(JSONObject json)
- throws IOException, JSONException {
- String authToken = getAuthToken();
-
- if (authToken.isEmpty()) {
- Log.w(TAG, "no auth token!");
- }
-
- URL url = new URL(getString(R.string.stats_cyanogen_url));
- HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
- try {
- urlConnection.setInstanceFollowRedirects(true);
- urlConnection.setDoInput(true);
- urlConnection.setDoOutput(true);
-
- urlConnection.setRequestProperty("Accept-Encoding", "identity");
- urlConnection.setRequestProperty("Authorization", authToken);
- urlConnection.setRequestProperty("Content-Type", "application/json");
-
- OutputStream os = urlConnection.getOutputStream();
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
- writer.write(json.toString());
- writer.flush();
- writer.close();
- os.close();
-
- urlConnection.connect();
-
- final int responseCode = urlConnection.getResponseCode();
- final boolean success = responseCode == HttpURLConnection.HTTP_OK;
-
- final String response = getResponse(urlConnection, !success);
- if (DEBUG)
- Log.d(TAG, "server responseCode: " + responseCode +", response=" + response);
-
- if (!success) {
- Log.w(TAG, "failed sending, server returned: " + response);
- }
- return success;
- } finally {
- urlConnection.disconnect();
- }
- }
-
- private String getAuthToken() {
- HttpURLConnection urlConnection = null;
- try {
- URL url = new URL(getString(R.string.stats_cyanogen_token_url));
- urlConnection = (HttpURLConnection) url.openConnection();
- urlConnection.setInstanceFollowRedirects(true);
- urlConnection.setDoInput(true);
-
- urlConnection.setRequestProperty("Accept-Encoding", "identity");
- urlConnection.setRequestProperty("Content-Type", "text/plain");
-
- urlConnection.connect();
-
- final int responseCode = urlConnection.getResponseCode();
- final boolean success = responseCode == HttpURLConnection.HTTP_OK;
- if (DEBUG) Log.d(TAG, "server auth response code=" + responseCode);
- final String response = getResponse(urlConnection, !success);
- if (DEBUG)
- Log.d(TAG, "server auth response=" + response);
-
- if (success) {
- return response;
- }
- } catch (IOException e) {
- Log.e(TAG, "error getting auth token", e);
- } finally {
- if (urlConnection != null) {
- urlConnection.disconnect();
- }
- }
- return "";
- }
-
- private String getResponse(HttpURLConnection httpUrlConnection, boolean errorStream)
- throws IOException {
- InputStream responseStream = new BufferedInputStream(errorStream
- ? httpUrlConnection.getErrorStream()
- : httpUrlConnection.getInputStream());
-
- BufferedReader responseStreamReader = new BufferedReader(
- new InputStreamReader(responseStream));
- String line = "";
- StringBuilder stringBuilder = new StringBuilder();
- while ((line = responseStreamReader.readLine()) != null) {
- stringBuilder.append(line).append("\n");
- }
- responseStreamReader.close();
- responseStream.close();
-
- return stringBuilder.toString();
- }
-
-}
diff --git a/src/com/android/settings/cmstats/Utilities.java b/src/com/android/settings/cmstats/Utilities.java
deleted file mode 100644
index 1e98888..0000000
--- a/src/com/android/settings/cmstats/Utilities.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2012 The CyanogenMod 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.
- */
-
-package com.android.settings.cmstats;
-
-import android.content.Context;
-import android.os.Build;
-import android.os.SystemProperties;
-import android.provider.Settings;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-
-import cyanogenmod.providers.CMSettings;
-
-import java.math.BigInteger;
-import java.net.NetworkInterface;
-import java.security.MessageDigest;
-
-public class Utilities {
- public static String getUniqueID(Context context) {
- final String id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
- return digest(context.getPackageName() + id);
- }
-
- public static String getCarrier(Context context) {
- TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
- String carrier = tm.getNetworkOperatorName();
- if (TextUtils.isEmpty(carrier)) {
- carrier = "Unknown";
- }
- return carrier;
- }
-
- public static String getCarrierId(Context context) {
- TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
- String carrierId = tm.getNetworkOperator();
- if (TextUtils.isEmpty(carrierId)) {
- carrierId = "0";
- }
- return carrierId;
- }
-
- public static String getCountryCode(Context context) {
- TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
- String countryCode = tm.getNetworkCountryIso();
- if (TextUtils.isEmpty(countryCode)) {
- countryCode = "Unknown";
- }
- return countryCode;
- }
-
- public static String getDevice() {
- return SystemProperties.get("ro.cm.device", Build.PRODUCT);
- }
-
- public static String getModVersion() {
- return SystemProperties.get("ro.cm.version", Build.DISPLAY);
- }
-
- public static String digest(String input) {
- try {
- MessageDigest md = MessageDigest.getInstance("MD5");
- return new BigInteger(1, md.digest(input.getBytes())).toString(16).toUpperCase();
- } catch (Exception e) {
- return null;
- }
- }
-
- /**
- * Check to see if global stats are enabled.
- * @param context
- * @return Whether or not stats collection is enabled.
- */
- public static boolean isStatsCollectionEnabled(Context context) {
- return CMSettings.Secure.getInt(context.getContentResolver(),
- CMSettings.Secure.STATS_COLLECTION, 1) != 0;
- }
-
- /**
- * Enabled or disable stats collection
- * @param context
- * @param enabled Boolean that sets collection being enabled.
- */
- public static void setStatsCollectionEnabled(Context context, boolean enabled) {
- int enable = (enabled) ? 1 : 0;
- CMSettings.Secure.putInt(context.getContentResolver(),
- CMSettings.Secure.STATS_COLLECTION, enable);
- }
-}
diff --git a/src/com/android/settings/cyanogenmod/PrivacySettings.java b/src/com/android/settings/cyanogenmod/PrivacySettings.java
index f6a9c15..066063a 100644
--- a/src/com/android/settings/cyanogenmod/PrivacySettings.java
+++ b/src/com/android/settings/cyanogenmod/PrivacySettings.java
@@ -32,7 +32,6 @@ import org.cyanogenmod.internal.logging.CMMetricsLogger;
public class PrivacySettings extends SettingsPreferenceFragment {
private static final String KEY_BLACKLIST = "blacklist";
- private static final String KEY_STATS = "cmstats";
private PreferenceScreen mBlacklist;
@@ -48,8 +47,6 @@ public class PrivacySettings extends SettingsPreferenceFragment {
boolean isOwner = Utils.isUserOwner();
if (!isOwner) {
- PreferenceScreen root = getPreferenceScreen();
- root.removePreference(findPreference(KEY_STATS));
}
// Determine options based on device telephony support
--
2.7.2

View File

@ -0,0 +1,954 @@
From 353e522115eca684a4036f2005f64ab14123218f Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Fri, 8 Apr 2016 20:43:21 -0400
Subject: [PATCH] Remove analytics
Change-Id: I4d38768fc22791f9e5085c56a22f94f335526c31
---
AndroidManifest.xml | 1 -
.../setupwizard/cmstats/SetupStats.java | 162 ---------------------
.../setupwizard/cmstats/StatsUtils.java | 44 ------
.../setupwizard/setup/BluetoothSetupPage.java | 7 -
.../setupwizard/setup/ChooseDataSimPage.java | 4 -
.../setupwizard/setup/CyanogenServicesPage.java | 13 --
.../setupwizard/setup/CyanogenSettingsPage.java | 56 -------
.../setupwizard/setup/DateTimePage.java | 19 ---
.../setupwizard/setup/FingerprintSetupPage.java | 4 -
.../setupwizard/setup/GmsAccountPage.java | 23 ---
.../setupwizard/setup/MobileDataPage.java | 4 -
.../setupwizard/setup/OtherSettingsPage.java | 17 +--
.../cyanogenmod/setupwizard/setup/SetupPage.java | 7 -
.../cyanogenmod/setupwizard/setup/WelcomePage.java | 14 --
.../setupwizard/setup/WifiSetupPage.java | 25 ----
.../setupwizard/ui/SetupPageFragment.java | 3 -
.../setupwizard/ui/SetupWizardActivity.java | 6 -
.../util/EnableAccessibilityController.java | 3 -
18 files changed, 1 insertion(+), 411 deletions(-)
delete mode 100644 src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java
delete mode 100644 src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d8c7617..8e2ec08 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -43,7 +43,6 @@
<uses-permission android:name="android.permission.BACKUP" />
<uses-permission android:name="cyanogenmod.permission.FINISH_SETUP" />
<uses-permission android:name="cyanogenmod.permission.LEGALESE" />
- <uses-permission android:name="com.cyngn.stats.SEND_ANALYTICS" />
<uses-permission android:name="com.cyanogen.permission.REQUEST_KILL_SWITCH_OP" />
<uses-permission android:name="cyanogenmod.permission.WRITE_SETTINGS"/>
<uses-permission android:name="cyanogenmod.permission.WRITE_SECURE_SETTINGS"/>
diff --git a/src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java b/src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java
deleted file mode 100644
index 6eb527f..0000000
--- a/src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (C) 2014 The CyanogenMod 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.
- */
-
-package com.cyanogenmod.setupwizard.cmstats;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.UserHandle;
-import android.util.Log;
-
-import java.util.LinkedList;
-
-
-public class SetupStats {
-
- private static final String TAG = SetupStats.class.getSimpleName();
-
- private static final String ANALYTIC_INTENT = "com.cyngn.stats.action.SEND_ANALYTIC_EVENT";
- private static final String ANALYTIC_PERMISSION = "com.cyngn.stats.SEND_ANALYTICS";
-
- public static final String TRACKING_ID = "tracking_id";
-
- private final LinkedList<Event> mEvents = new LinkedList<Event>();
-
- private static final SetupStats sInstance = new SetupStats();
-
- private static final boolean DEBUG = false;
-
- private SetupStats() {}
-
- public static void addEvent(String category, String action,
- String label, String value) {
- sInstance.mEvents.add(new Event(category, action, label, value));
- }
-
- public static void addEvent(String category, String action) {
- sInstance.mEvents.add(new Event(category, action, null, null));
- }
-
- public static void sendEvents(Context context) {
- while (!sInstance.mEvents.isEmpty()) {
- sInstance.sendEvent(context, sInstance.mEvents.remove());
- }
- }
-
- private void sendEvent(Context context, Event event) {
-
- if (!StatsUtils.isStatsPackageInstalled(context)
- || !StatsUtils.isStatsCollectionEnabled(context)) {
- return;
- }
-
- // Create new intent
- Intent intent = new Intent();
- intent.setAction(ANALYTIC_INTENT);
-
- // add tracking id
- intent.putExtra(TRACKING_ID, context.getPackageName());
- // append
- intent.putExtra(Fields.EVENT_CATEGORY, event.category);
- if (DEBUG) Log.d(TAG, Fields.EVENT_CATEGORY + "=" + event.category);
- intent.putExtra(Fields.EVENT_ACTION, event.action);
- if (DEBUG) Log.d(TAG, Fields.EVENT_ACTION + "=" + event.action);
- // check if exist
- if (event.label != null) {
- intent.putExtra(Fields.EVENT_LABEL, event.label);
- if (DEBUG) Log.d(TAG, Fields.EVENT_LABEL + "=" + event.label);
- }
-
- if (event.value != null) {
- intent.putExtra(Fields.EVENT_VALUE, event.value);
- if (DEBUG) Log.d(TAG, Fields.EVENT_VALUE + "=" + event.value);
- }
-
- // broadcast for internal package
- context.sendBroadcastAsUser(intent,
- new UserHandle(UserHandle.USER_CURRENT), ANALYTIC_PERMISSION);
- }
-
- private static final class Event {
- private final String category;
- private final String action;
- private final String label;
- private final String value;
-
- public Event(String category, String action, String label, String value) {
- this.action = action;
- this.category = category;
- this.label = label;
- this.value = value;
- }
- }
-
- public static final class Fields {
- public static final String EVENT_CATEGORY = "category";
- public static final String EVENT_ACTION = "action";
- public static final String EVENT_LABEL = "label";
- public static final String EVENT_VALUE = "value";
- }
-
- public static final class Categories {
- public static final String APP_LAUNCH = "app_launch";
- public static final String APP_FINISHED = "app_finish";
- public static final String PAGE_LOAD = "page_load";
- public static final String EXTERNAL_PAGE_LOAD = "external_page_load";
- public static final String BUTTON_CLICK = "button_click";
- public static final String SETTING_CHANGED = "setting_changed";
- }
-
- public static final class Action {
- public static final String PAGE_LOADED = "page_loaded";
- public static final String PREVIOUS_BUTTON = "previous_button";
- public static final String NEXT_BUTTON = "next_button";
- public static final String CHANGE_LOCALE = "change_local";
- public static final String EXTERNAL_PAGE_LAUNCH = "external_page_launch";
- public static final String EXTERNAL_PAGE_RESULT = "external_page_result";
- public static final String ENABLE_MOBILE_DATA = "enable_mobile_data";
- public static final String PREFERRED_DATA_SIM = "preferred_data_sim";
- public static final String APPLY_CUSTOM_THEME = "apply_custom_theme";
- public static final String USE_SECURE_SMS = "use_secure_sms";
- public static final String ENABLE_BACKUP = "enable_backup";
- public static final String ENABLE_NAV_KEYS = "enable_nav_keys";
- public static final String ENABLE_LOCATION = "enable_location";
- public static final String ENABLE_NETWORK_LOCATION = "enable_network_location";
- public static final String ENABLE_GPS_LOCATION = "enable_gps_location";
- public static final String DATE_CHANGED = "date_changed";
- public static final String TIME_CHANGED = "time_changed";
- public static final String TIMEZONE_CHANGED = "timezone_changed";
- }
-
- public static final class Label {
- public static final String PAGE = "page";
- public static final String LOCALE = "local";
- public static final String RESULT = "result";
- public static final String WIFI_SETUP = "wifi_setup";
- public static final String BLUETOOTH_SETUP = "bluetooth_setup";
- public static final String CYANOGEN_ACCOUNT = "cyanogen_account_setup";
- public static final String CAPTIVE_PORTAL_LOGIN = "captive_portal_login";
- public static final String EMERGENCY_CALL = "emergency_call";
- public static final String GMS_ACCOUNT = "gms_account";
- public static final String RESTORE = "restore";
- public static final String CHECKED = "checked";
- public static final String VALUE = "value";
- public static final String SLOT = "slot";
- public static final String TOTAL_TIME = "total_time";
- public static final String FINGERPRINT_SETUP = "fingerprint_setup";
- }
-
-}
diff --git a/src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java b/src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java
deleted file mode 100644
index 8be8fad..0000000
--- a/src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java
+++ /dev/null
@@ -1,44 +0,0 @@
-
-/*
- * Copyright (C) 2014 The CyanogenMod 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.
- */
-
-package com.cyanogenmod.setupwizard.cmstats;
-
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-
-import cyanogenmod.providers.CMSettings;
-
-public class StatsUtils {
- private static final String STATS_PACKAGE = "com.cyngn.stats";
-
- public static boolean isStatsCollectionEnabled(Context context) {
- return CMSettings.Secure.getInt(context.getContentResolver(),
- CMSettings.Secure.STATS_COLLECTION, 1) != 0;
- }
-
- public static boolean isStatsPackageInstalled(Context context) {
- try {
- PackageInfo pi = context.getPackageManager().getPackageInfo(STATS_PACKAGE, 0);
- return pi.applicationInfo.enabled
- && ((pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- }
-}
diff --git a/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java b/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java
index 915abec..8609dbb 100644
--- a/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java
@@ -28,7 +28,6 @@ import android.util.Log;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -91,9 +90,6 @@ public class BluetoothSetupPage extends SetupPage {
@Override
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_BLUETOOTH) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.BLUETOOTH_SETUP, "success");
getCallbacks().onNextPage();
} else {
return false;
@@ -111,9 +107,6 @@ public class BluetoothSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.BLUETOOTH_SETUP);
mLoadingFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_BLUETOOTH, options.toBundle());
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java b/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java
index 255cbad..a3282af 100644
--- a/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java
@@ -47,7 +47,6 @@ import com.android.internal.telephony.TelephonyIntents;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -356,9 +355,6 @@ public class ChooseDataSimPage extends SetupPage {
for (int i = 0; i < mCheckBoxes.size(); i++) {
if (subInfoRecord.getSimSlotIndex() == i) {
mCheckBoxes.get(i).setChecked(true);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.PREFERRED_DATA_SIM,
- SetupStats.Label.SLOT, String.valueOf(i + 1));
} else {
mCheckBoxes.get(i).setChecked(false);
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java b/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java
index e71dd79..5bfe3b0 100644
--- a/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java
@@ -32,7 +32,6 @@ import android.util.Log;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -95,10 +94,6 @@ public class CyanogenServicesPage extends SetupPage {
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN) {
if (resultCode == Activity.RESULT_OK || resultCode == Activity.RESULT_FIRST_USER) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CYANOGEN_ACCOUNT,
- resultCode == Activity.RESULT_OK ? "success" : "skipped");
if (SetupWizardUtils.accountExists(mContext,
mContext.getString(R.string.cm_account_type))) {
if (SetupWizardUtils.isDeviceLocked()) {
@@ -108,9 +103,6 @@ public class CyanogenServicesPage extends SetupPage {
}
getCallbacks().onNextPage();
} else if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CYANOGEN_ACCOUNT, "canceled");
getCallbacks().onPreviousPage();
}
}
@@ -136,11 +128,6 @@ public class CyanogenServicesPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats
- .addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE,
- SetupStats.Label.CYANOGEN_ACCOUNT);
mFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN,
options.toBundle());
diff --git a/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java b/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java
index d17d64b..2c95253 100644
--- a/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java
@@ -42,7 +42,6 @@ import android.widget.TextView;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -54,7 +53,6 @@ public class CyanogenSettingsPage extends SetupPage {
public static final String TAG = "CyanogenSettingsPage";
- public static final String KEY_SEND_METRICS = "send_metrics";
public static final String DISABLE_NAV_KEYS = "disable_nav_keys";
public static final String KEY_APPLY_DEFAULT_THEME = "apply_default_theme";
public static final String KEY_BUTTON_BACKLIGHT = "pre_navbar_button_backlight";
@@ -116,37 +114,18 @@ public class CyanogenSettingsPage extends SetupPage {
@Override
public void run() {
if (getData().containsKey(DISABLE_NAV_KEYS)) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_NAV_KEYS,
- SetupStats.Label.CHECKED,
- String.valueOf(getData().getBoolean(DISABLE_NAV_KEYS)));
writeDisableNavkeysOption(mContext, getData().getBoolean(DISABLE_NAV_KEYS));
}
}
});
- handleEnableMetrics();
handleDefaultThemeSetup();
}
- private void handleEnableMetrics() {
- Bundle privacyData = getData();
- if (privacyData != null
- && privacyData.containsKey(KEY_SEND_METRICS)) {
- CMSettings.Secure.putInt(mContext.getContentResolver(),
- CMSettings.Secure.STATS_COLLECTION, privacyData.getBoolean(KEY_SEND_METRICS)
- ? 1 : 0);
- }
- }
-
private void handleDefaultThemeSetup() {
Bundle privacyData = getData();
if (!SetupWizardUtils.getDefaultThemePackageName(mContext).equals(
ThemeConfig.SYSTEM_DEFAULT) && privacyData != null &&
privacyData.getBoolean(KEY_APPLY_DEFAULT_THEME)) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.APPLY_CUSTOM_THEME,
- SetupStats.Label.CHECKED,
- String.valueOf(privacyData.getBoolean(KEY_APPLY_DEFAULT_THEME)));
Log.i(TAG, "Applying default theme");
final ThemeManager tm = ThemeManager.getInstance(mContext);
tm.applyDefaultTheme();
@@ -176,26 +155,14 @@ public class CyanogenSettingsPage extends SetupPage {
private View mKillSwitchView;
private TextView mKillSwitchTitle;
private ImageView mKillSwitchStatus;
- private View mMetricsRow;
private View mDefaultThemeRow;
private View mNavKeysRow;
- private CheckBox mMetrics;
private CheckBox mDefaultTheme;
private CheckBox mNavKeys;
private boolean mHideNavKeysRow = false;
private boolean mHideThemeRow = false;
-
- private View.OnClickListener mMetricsClickListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- boolean checked = !mMetrics.isChecked();
- mMetrics.setChecked(checked);
- mPage.getData().putBoolean(KEY_SEND_METRICS, checked);
- }
- };
-
private View.OnClickListener mDefaultThemeClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -253,19 +220,6 @@ public class CyanogenSettingsPage extends SetupPage {
}
}
- mMetricsRow = mRootView.findViewById(R.id.metrics);
- mMetricsRow.setOnClickListener(mMetricsClickListener);
- String metricsHelpImproveCM =
- getString(R.string.services_help_improve_cm, getString(R.string.os_name));
- String metricsSummary = getString(R.string.services_metrics_label,
- metricsHelpImproveCM, getString(R.string.os_name));
- final SpannableStringBuilder metricsSpan = new SpannableStringBuilder(metricsSummary);
- metricsSpan.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD),
- 0, metricsHelpImproveCM.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- TextView metrics = (TextView) mRootView.findViewById(R.id.enable_metrics_summary);
- metrics.setText(metricsSpan);
- mMetrics = (CheckBox) mRootView.findViewById(R.id.enable_metrics_checkbox);
-
mDefaultThemeRow = mRootView.findViewById(R.id.theme);
mHideThemeRow = hideThemeSwitch(getActivity());
if (mHideThemeRow) {
@@ -314,19 +268,9 @@ public class CyanogenSettingsPage extends SetupPage {
public void onResume() {
super.onResume();
updateDisableNavkeysOption();
- updateMetricsOption();
updateThemeOption();
}
- private void updateMetricsOption() {
- final Bundle myPageBundle = mPage.getData();
- boolean metricsChecked =
- !myPageBundle.containsKey(KEY_SEND_METRICS) || myPageBundle
- .getBoolean(KEY_SEND_METRICS);
- mMetrics.setChecked(metricsChecked);
- myPageBundle.putBoolean(KEY_SEND_METRICS, metricsChecked);
- }
-
private void updateThemeOption() {
if (!mHideThemeRow) {
final Bundle myPageBundle = mPage.getData();
diff --git a/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java b/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java
index 7a5922b..a669163 100644
--- a/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java
@@ -42,7 +42,6 @@ import android.widget.TextView;
import android.widget.TimePicker;
import com.cyanogenmod.setupwizard.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import org.xmlpull.v1.XmlPullParserException;
@@ -136,8 +135,6 @@ public class DateTimePage extends SetupPage {
mDateView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- "date_picker");
showDatePicker();
}
});
@@ -145,8 +142,6 @@ public class DateTimePage extends SetupPage {
mTimeView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- "time_picker");
showTimePicker();
}
});
@@ -167,17 +162,11 @@ public class DateTimePage extends SetupPage {
final Map<?, ?> map = (Map<?, ?>) adapterView.getItemAtPosition(position);
final String tzId = (String) map.get(KEY_ID);
if (mCurrentTimeZone != null && !mCurrentTimeZone.getID().equals(tzId)) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- "timezone_picker");
// Update the system timezone value
final Activity activity = getActivity();
final AlarmManager alarm = (AlarmManager) activity.getSystemService(Context.ALARM_SERVICE);
alarm.setTimeZone(tzId);
mCurrentTimeZone = TimeZone.getTimeZone(tzId);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.TIMEZONE_CHANGED,
- SetupStats.Label.VALUE,
- mCurrentTimeZone.getDisplayName());
}
}
@@ -232,10 +221,6 @@ public class DateTimePage extends SetupPage {
if (activity != null) {
setDate(activity, year, month, day);
updateTimeAndDateDisplay(activity);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.DATE_CHANGED,
- SetupStats.Label.VALUE,
- month+"/"+day+"/"+year);
}
}
@@ -245,10 +230,6 @@ public class DateTimePage extends SetupPage {
if (activity != null) {
setTime(activity, hourOfDay, minute);
updateTimeAndDateDisplay(activity);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.TIME_CHANGED,
- SetupStats.Label.VALUE,
- hourOfDay+":"+minute);
}
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java b/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java
index 890a4f6..c9174c6 100644
--- a/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java
@@ -28,7 +28,6 @@ import android.widget.TextView;
import com.android.internal.widget.LockPatternUtils;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
public class FingerprintSetupPage extends SetupPage {
@@ -113,9 +112,6 @@ public class FingerprintSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(getActivity(),
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.FINGERPRINT_SETUP);
startActivityForResult(intent, SetupWizardApp.REQUEST_CODE_SETUP_FINGERPRINT,
options.toBundle());
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java b/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
index 9bcce42..64b84da 100644
--- a/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
@@ -34,7 +34,6 @@ import android.util.Log;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -116,10 +115,6 @@ public class GmsAccountPage extends SetupPage {
boolean restorePicker = !data.hasExtra(EXTRA_RESTORE_TOKEN)
&& !data.hasExtra(EXTRA_RESTORE_ACCOUNT) &&
data.hasExtra(EXTRA_AUTH_ACCOUNT);
-
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.GMS_ACCOUNT, "success");
launchGmsRestorePage(restorePicker);
} else {
handleResult(requestCode, resultCode);
@@ -140,24 +135,12 @@ public class GmsAccountPage extends SetupPage {
private void handleResult(int requestCode, int resultCode) {
if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS ?
- SetupStats.Label.GMS_ACCOUNT : SetupStats.Label.RESTORE, "canceled");
getCallbacks().onPreviousPage();
} else {
if (resultCode == Activity.RESULT_OK) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS ?
- SetupStats.Label.GMS_ACCOUNT : SetupStats.Label.RESTORE, "success");
getCallbacks().onNextPage();
} else {
if (canSkip()) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS ?
- SetupStats.Label.GMS_ACCOUNT : SetupStats.Label.RESTORE, "skipped");
getCallbacks().onNextPage();
} else {
getCallbacks().onPreviousPage();
@@ -194,9 +177,6 @@ public class GmsAccountPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.RESTORE);
mFragment.startActivityForResult(
intent,
SetupWizardApp.REQUEST_CODE_RESTORE_GMS, options.toBundle());
@@ -240,9 +220,6 @@ public class GmsAccountPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.GMS_ACCOUNT);
mFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_GMS, options.toBundle());
} catch (OperationCanceledException e) {
diff --git a/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java b/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java
index 8940fd3..02ee1b6 100644
--- a/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java
@@ -38,7 +38,6 @@ import android.widget.TextView;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -147,9 +146,6 @@ public class MobileDataPage extends SetupPage {
} else {
onDataStateReady();
}
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_MOBILE_DATA,
- SetupStats.Label.CHECKED, String.valueOf(checked));
}
};
diff --git a/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java b/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java
index 0ed17ff..0bea90b 100644
--- a/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java
@@ -40,7 +40,6 @@ import android.widget.TextView;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -233,9 +232,6 @@ public class OtherSettingsPage extends SetupPage {
private void onToggleBackup(boolean checked) {
try {
mBackupManager.setBackupEnabled(checked);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_BACKUP,
- SetupStats.Label.CHECKED, String.valueOf(checked));
} catch (RemoteException e) {}
updateBackupToggle();
}
@@ -309,9 +305,6 @@ public class OtherSettingsPage extends SetupPage {
}
private void onToggleLocationAccess(boolean checked) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_LOCATION,
- SetupStats.Label.CHECKED, String.valueOf(checked));
if (checked) {
setLocationMode(Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
@@ -321,10 +314,6 @@ public class OtherSettingsPage extends SetupPage {
}
private void onToggleBatterySaving(boolean checked) {
- /* SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_BATTERY_SAVING_LOCATION,
- SetupStats.Label.CHECKED, String.valueOf(checked)); */
-
if (checked) {
setLocationMode(Settings.Secure.LOCATION_MODE_BATTERY_SAVING);
} else {
@@ -333,11 +322,7 @@ public class OtherSettingsPage extends SetupPage {
}
private void onToggleNetwork(boolean checked) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_NETWORK_LOCATION,
- SetupStats.Label.CHECKED, String.valueOf(checked));
-
- if (checked) {
+ if (checked) {
setLocationMode(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);
} else {
setLocationMode(Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
diff --git a/src/com/cyanogenmod/setupwizard/setup/SetupPage.java b/src/com/cyanogenmod/setupwizard/setup/SetupPage.java
index 1a19fb0..9804049 100644
--- a/src/com/cyanogenmod/setupwizard/setup/SetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/SetupPage.java
@@ -26,7 +26,6 @@ import android.transition.Transition;
import android.view.Gravity;
import com.cyanogenmod.setupwizard.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
public abstract class SetupPage implements Page {
@@ -76,18 +75,12 @@ public abstract class SetupPage implements Page {
public void doLoadAction(FragmentManager fragmentManager, int action) {
Fragment fragment = getFragment(fragmentManager, action);
if (action == Page.ACTION_NEXT) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- SetupStats.Action.NEXT_BUTTON, getKey(),
- String.valueOf(System.currentTimeMillis()));
Transition t = new Slide(Gravity.RIGHT);
fragment.setEnterTransition(t);
fragmentManager.beginTransaction()
.replace(R.id.content,fragment, getKey())
.commit();
} else {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- SetupStats.Action.PREVIOUS_BUTTON, getKey(),
- String.valueOf(System.currentTimeMillis()));
Transition t = new Slide(Gravity.LEFT);
fragment.setEnterTransition(t);
fragmentManager.beginTransaction()
diff --git a/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java b/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java
index e09c2a1..eedb24d 100644
--- a/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java
@@ -42,7 +42,6 @@ import android.widget.Toast;
import com.android.internal.telephony.MccTable;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LocalePicker;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -87,7 +86,6 @@ public class WelcomePage extends SetupPage {
return true;
} else {
if (mWelcomeFragment != null) {
- mWelcomeFragment.sendLocaleStats();
}
return super.doNextAction();
}
@@ -102,10 +100,6 @@ public class WelcomePage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK, SetupStats.Label.EMERGENCY_CALL);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.EMERGENCY_CALL);
mContext.startActivity(intent, options.toBundle());
return true;
}
@@ -269,14 +263,6 @@ public class WelcomePage extends SetupPage {
return R.layout.setup_welcome_page;
}
- public void sendLocaleStats() {
- if (!mCurrentLocale.equals(mInitialLocale)) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.CHANGE_LOCALE, SetupStats.Label.LOCALE,
- mCurrentLocale.getDisplayName());
- }
- }
-
public void fetchAndUpdateSimLocale() {
if (mIgnoreSimLocale || isDetached()) {
return;
diff --git a/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java b/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java
index 2d8084a..3a131f7 100644
--- a/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java
@@ -31,7 +31,6 @@ import android.util.Log;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -86,9 +85,6 @@ public class WifiSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.CAPTIVE_PORTAL_LOGIN);
mLoadingFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_CAPTIVE_PORTAL,
options.toBundle());
@@ -157,19 +153,10 @@ public class WifiSetupPage extends SetupPage {
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_WIFI) {
if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.WIFI_SETUP, "canceled");
getCallbacks().onPreviousPage();
} else if (resultCode == Activity.RESULT_OK) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.WIFI_SETUP, "success");
checkForCaptivePortal();
} else {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.WIFI_SETUP, "skipped");
getCallbacks().onNextPage();
}
} else if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_CAPTIVE_PORTAL) {
@@ -179,20 +166,11 @@ public class WifiSetupPage extends SetupPage {
}
String token = data.getStringExtra("response_token");
if (token != null && !token.equals(mResponseToken)) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CAPTIVE_PORTAL_LOGIN, "token_mismatch");
launchWifiSetup();
} else {
if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CAPTIVE_PORTAL_LOGIN, "canceled");
launchWifiSetup();
} else {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CAPTIVE_PORTAL_LOGIN, "success");
getCallbacks().onNextPage();
}
}
@@ -256,9 +234,6 @@ public class WifiSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.WIFI_SETUP);
mLoadingFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_WIFI, options.toBundle());
}
diff --git a/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java b/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java
index b0df440..33c61c7 100644
--- a/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java
+++ b/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java
@@ -26,7 +26,6 @@ import android.view.ViewGroup;
import android.widget.TextView;
import com.cyanogenmod.setupwizard.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.setup.Page;
import com.cyanogenmod.setupwizard.setup.SetupDataCallbacks;
@@ -43,8 +42,6 @@ public abstract class SetupPageFragment extends Fragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
- SetupStats.addEvent(SetupStats.Categories.PAGE_LOAD, SetupStats.Action.PAGE_LOADED,
- mKey, String.valueOf(System.currentTimeMillis()));
}
@Override
diff --git a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
index 6005347..05b2939 100644
--- a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
+++ b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
@@ -43,7 +43,6 @@ import android.widget.ProgressBar;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.setup.CMSetupWizardData;
import com.cyanogenmod.setupwizard.setup.GmsAccountPage;
import com.cyanogenmod.setupwizard.setup.Page;
@@ -106,7 +105,6 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
}
});
if (sLaunchTime == 0) {
- SetupStats.addEvent(SetupStats.Categories.APP_LAUNCH, TAG);
sLaunchTime = System.nanoTime();
}
setContentView(R.layout.setup_main);
@@ -381,9 +379,6 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
@Override
public void finishSetup() {
if (!mIsFinishing) {
- SetupStats.addEvent(SetupStats.Categories.APP_FINISHED, TAG,
- SetupStats.Label.TOTAL_TIME, String.valueOf(
- System.nanoTime() - sLaunchTime));
final SetupWizardApp setupWizardApp = (SetupWizardApp)getApplication();
setupWizardApp.sendStickyBroadcastAsUser(
new Intent(SetupWizardApp.ACTION_FINISHED),
@@ -471,7 +466,6 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
}
final ThemeManager tm = ThemeManager.getInstance(SetupWizardActivity.this);
tm.removeClient(SetupWizardActivity.this);
- SetupStats.sendEvents(SetupWizardActivity.this);
SetupWizardUtils.disableGMSSetupWizard(SetupWizardActivity.this);
final WallpaperManager wallpaperManager =
WallpaperManager.getInstance(SetupWizardActivity.this);
diff --git a/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java b/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java
index 440129b..47d6de5 100644
--- a/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java
+++ b/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java
@@ -39,7 +39,6 @@ import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.IAccessibilityManager;
import com.android.internal.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import java.util.ArrayList;
import java.util.Iterator;
@@ -284,8 +283,6 @@ public class EnableAccessibilityController {
// Turn on accessibility mode last.
Settings.Secure.putIntForUser(resolver, Settings.Secure.ACCESSIBILITY_ENABLED,
1, userId);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- "accessibility_enabled");
} else if (keyguardLocked) {
try {
mAccessibilityManager.temporaryEnableAccessibilityStateUntilKeyguardRemoved(
--
2.8.0

View File

@ -0,0 +1,954 @@
From 4a66cf8f67b5941037ae566db6c74a748a5351a2 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Fri, 8 Apr 2016 20:43:21 -0400
Subject: [PATCH] Remove analytics
Change-Id: I4d38768fc22791f9e5085c56a22f94f335526c31
---
AndroidManifest.xml | 1 -
.../setupwizard/cmstats/SetupStats.java | 162 ---------------------
.../setupwizard/cmstats/StatsUtils.java | 44 ------
.../setupwizard/setup/BluetoothSetupPage.java | 7 -
.../setupwizard/setup/ChooseDataSimPage.java | 4 -
.../setupwizard/setup/CyanogenServicesPage.java | 13 --
.../setupwizard/setup/CyanogenSettingsPage.java | 56 -------
.../setupwizard/setup/DateTimePage.java | 19 ---
.../setupwizard/setup/FingerprintSetupPage.java | 4 -
.../setupwizard/setup/GmsAccountPage.java | 23 ---
.../setupwizard/setup/MobileDataPage.java | 4 -
.../setupwizard/setup/OtherSettingsPage.java | 17 +--
.../cyanogenmod/setupwizard/setup/SetupPage.java | 7 -
.../cyanogenmod/setupwizard/setup/WelcomePage.java | 14 --
.../setupwizard/setup/WifiSetupPage.java | 25 ----
.../setupwizard/ui/SetupPageFragment.java | 3 -
.../setupwizard/ui/SetupWizardActivity.java | 6 -
.../util/EnableAccessibilityController.java | 3 -
18 files changed, 1 insertion(+), 411 deletions(-)
delete mode 100644 src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java
delete mode 100644 src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d8c7617..8e2ec08 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -43,7 +43,6 @@
<uses-permission android:name="android.permission.BACKUP" />
<uses-permission android:name="cyanogenmod.permission.FINISH_SETUP" />
<uses-permission android:name="cyanogenmod.permission.LEGALESE" />
- <uses-permission android:name="com.cyngn.stats.SEND_ANALYTICS" />
<uses-permission android:name="com.cyanogen.permission.REQUEST_KILL_SWITCH_OP" />
<uses-permission android:name="cyanogenmod.permission.WRITE_SETTINGS"/>
<uses-permission android:name="cyanogenmod.permission.WRITE_SECURE_SETTINGS"/>
diff --git a/src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java b/src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java
deleted file mode 100644
index 6eb527f..0000000
--- a/src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (C) 2014 The CyanogenMod 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.
- */
-
-package com.cyanogenmod.setupwizard.cmstats;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.UserHandle;
-import android.util.Log;
-
-import java.util.LinkedList;
-
-
-public class SetupStats {
-
- private static final String TAG = SetupStats.class.getSimpleName();
-
- private static final String ANALYTIC_INTENT = "com.cyngn.stats.action.SEND_ANALYTIC_EVENT";
- private static final String ANALYTIC_PERMISSION = "com.cyngn.stats.SEND_ANALYTICS";
-
- public static final String TRACKING_ID = "tracking_id";
-
- private final LinkedList<Event> mEvents = new LinkedList<Event>();
-
- private static final SetupStats sInstance = new SetupStats();
-
- private static final boolean DEBUG = false;
-
- private SetupStats() {}
-
- public static void addEvent(String category, String action,
- String label, String value) {
- sInstance.mEvents.add(new Event(category, action, label, value));
- }
-
- public static void addEvent(String category, String action) {
- sInstance.mEvents.add(new Event(category, action, null, null));
- }
-
- public static void sendEvents(Context context) {
- while (!sInstance.mEvents.isEmpty()) {
- sInstance.sendEvent(context, sInstance.mEvents.remove());
- }
- }
-
- private void sendEvent(Context context, Event event) {
-
- if (!StatsUtils.isStatsPackageInstalled(context)
- || !StatsUtils.isStatsCollectionEnabled(context)) {
- return;
- }
-
- // Create new intent
- Intent intent = new Intent();
- intent.setAction(ANALYTIC_INTENT);
-
- // add tracking id
- intent.putExtra(TRACKING_ID, context.getPackageName());
- // append
- intent.putExtra(Fields.EVENT_CATEGORY, event.category);
- if (DEBUG) Log.d(TAG, Fields.EVENT_CATEGORY + "=" + event.category);
- intent.putExtra(Fields.EVENT_ACTION, event.action);
- if (DEBUG) Log.d(TAG, Fields.EVENT_ACTION + "=" + event.action);
- // check if exist
- if (event.label != null) {
- intent.putExtra(Fields.EVENT_LABEL, event.label);
- if (DEBUG) Log.d(TAG, Fields.EVENT_LABEL + "=" + event.label);
- }
-
- if (event.value != null) {
- intent.putExtra(Fields.EVENT_VALUE, event.value);
- if (DEBUG) Log.d(TAG, Fields.EVENT_VALUE + "=" + event.value);
- }
-
- // broadcast for internal package
- context.sendBroadcastAsUser(intent,
- new UserHandle(UserHandle.USER_CURRENT), ANALYTIC_PERMISSION);
- }
-
- private static final class Event {
- private final String category;
- private final String action;
- private final String label;
- private final String value;
-
- public Event(String category, String action, String label, String value) {
- this.action = action;
- this.category = category;
- this.label = label;
- this.value = value;
- }
- }
-
- public static final class Fields {
- public static final String EVENT_CATEGORY = "category";
- public static final String EVENT_ACTION = "action";
- public static final String EVENT_LABEL = "label";
- public static final String EVENT_VALUE = "value";
- }
-
- public static final class Categories {
- public static final String APP_LAUNCH = "app_launch";
- public static final String APP_FINISHED = "app_finish";
- public static final String PAGE_LOAD = "page_load";
- public static final String EXTERNAL_PAGE_LOAD = "external_page_load";
- public static final String BUTTON_CLICK = "button_click";
- public static final String SETTING_CHANGED = "setting_changed";
- }
-
- public static final class Action {
- public static final String PAGE_LOADED = "page_loaded";
- public static final String PREVIOUS_BUTTON = "previous_button";
- public static final String NEXT_BUTTON = "next_button";
- public static final String CHANGE_LOCALE = "change_local";
- public static final String EXTERNAL_PAGE_LAUNCH = "external_page_launch";
- public static final String EXTERNAL_PAGE_RESULT = "external_page_result";
- public static final String ENABLE_MOBILE_DATA = "enable_mobile_data";
- public static final String PREFERRED_DATA_SIM = "preferred_data_sim";
- public static final String APPLY_CUSTOM_THEME = "apply_custom_theme";
- public static final String USE_SECURE_SMS = "use_secure_sms";
- public static final String ENABLE_BACKUP = "enable_backup";
- public static final String ENABLE_NAV_KEYS = "enable_nav_keys";
- public static final String ENABLE_LOCATION = "enable_location";
- public static final String ENABLE_NETWORK_LOCATION = "enable_network_location";
- public static final String ENABLE_GPS_LOCATION = "enable_gps_location";
- public static final String DATE_CHANGED = "date_changed";
- public static final String TIME_CHANGED = "time_changed";
- public static final String TIMEZONE_CHANGED = "timezone_changed";
- }
-
- public static final class Label {
- public static final String PAGE = "page";
- public static final String LOCALE = "local";
- public static final String RESULT = "result";
- public static final String WIFI_SETUP = "wifi_setup";
- public static final String BLUETOOTH_SETUP = "bluetooth_setup";
- public static final String CYANOGEN_ACCOUNT = "cyanogen_account_setup";
- public static final String CAPTIVE_PORTAL_LOGIN = "captive_portal_login";
- public static final String EMERGENCY_CALL = "emergency_call";
- public static final String GMS_ACCOUNT = "gms_account";
- public static final String RESTORE = "restore";
- public static final String CHECKED = "checked";
- public static final String VALUE = "value";
- public static final String SLOT = "slot";
- public static final String TOTAL_TIME = "total_time";
- public static final String FINGERPRINT_SETUP = "fingerprint_setup";
- }
-
-}
diff --git a/src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java b/src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java
deleted file mode 100644
index 8be8fad..0000000
--- a/src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java
+++ /dev/null
@@ -1,44 +0,0 @@
-
-/*
- * Copyright (C) 2014 The CyanogenMod 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.
- */
-
-package com.cyanogenmod.setupwizard.cmstats;
-
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-
-import cyanogenmod.providers.CMSettings;
-
-public class StatsUtils {
- private static final String STATS_PACKAGE = "com.cyngn.stats";
-
- public static boolean isStatsCollectionEnabled(Context context) {
- return CMSettings.Secure.getInt(context.getContentResolver(),
- CMSettings.Secure.STATS_COLLECTION, 1) != 0;
- }
-
- public static boolean isStatsPackageInstalled(Context context) {
- try {
- PackageInfo pi = context.getPackageManager().getPackageInfo(STATS_PACKAGE, 0);
- return pi.applicationInfo.enabled
- && ((pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- }
-}
diff --git a/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java b/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java
index 915abec..8609dbb 100644
--- a/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java
@@ -28,7 +28,6 @@ import android.util.Log;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -91,9 +90,6 @@ public class BluetoothSetupPage extends SetupPage {
@Override
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_BLUETOOTH) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.BLUETOOTH_SETUP, "success");
getCallbacks().onNextPage();
} else {
return false;
@@ -111,9 +107,6 @@ public class BluetoothSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.BLUETOOTH_SETUP);
mLoadingFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_BLUETOOTH, options.toBundle());
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java b/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java
index a0a4312..42e7ea2 100644
--- a/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java
@@ -47,7 +47,6 @@ import com.android.internal.telephony.TelephonyIntents;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -356,9 +355,6 @@ public class ChooseDataSimPage extends SetupPage {
for (int i = 0; i < mCheckBoxes.size(); i++) {
if (subInfoRecord.getSimSlotIndex() == i) {
mCheckBoxes.get(i).setChecked(true);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.PREFERRED_DATA_SIM,
- SetupStats.Label.SLOT, String.valueOf(i + 1));
} else {
mCheckBoxes.get(i).setChecked(false);
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java b/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java
index e71dd79..5bfe3b0 100644
--- a/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java
@@ -32,7 +32,6 @@ import android.util.Log;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -95,10 +94,6 @@ public class CyanogenServicesPage extends SetupPage {
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN) {
if (resultCode == Activity.RESULT_OK || resultCode == Activity.RESULT_FIRST_USER) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CYANOGEN_ACCOUNT,
- resultCode == Activity.RESULT_OK ? "success" : "skipped");
if (SetupWizardUtils.accountExists(mContext,
mContext.getString(R.string.cm_account_type))) {
if (SetupWizardUtils.isDeviceLocked()) {
@@ -108,9 +103,6 @@ public class CyanogenServicesPage extends SetupPage {
}
getCallbacks().onNextPage();
} else if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CYANOGEN_ACCOUNT, "canceled");
getCallbacks().onPreviousPage();
}
}
@@ -136,11 +128,6 @@ public class CyanogenServicesPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats
- .addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE,
- SetupStats.Label.CYANOGEN_ACCOUNT);
mFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN,
options.toBundle());
diff --git a/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java b/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java
index d17d64b..2c95253 100644
--- a/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java
@@ -42,7 +42,6 @@ import android.widget.TextView;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -54,7 +53,6 @@ public class CyanogenSettingsPage extends SetupPage {
public static final String TAG = "CyanogenSettingsPage";
- public static final String KEY_SEND_METRICS = "send_metrics";
public static final String DISABLE_NAV_KEYS = "disable_nav_keys";
public static final String KEY_APPLY_DEFAULT_THEME = "apply_default_theme";
public static final String KEY_BUTTON_BACKLIGHT = "pre_navbar_button_backlight";
@@ -116,37 +114,18 @@ public class CyanogenSettingsPage extends SetupPage {
@Override
public void run() {
if (getData().containsKey(DISABLE_NAV_KEYS)) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_NAV_KEYS,
- SetupStats.Label.CHECKED,
- String.valueOf(getData().getBoolean(DISABLE_NAV_KEYS)));
writeDisableNavkeysOption(mContext, getData().getBoolean(DISABLE_NAV_KEYS));
}
}
});
- handleEnableMetrics();
handleDefaultThemeSetup();
}
- private void handleEnableMetrics() {
- Bundle privacyData = getData();
- if (privacyData != null
- && privacyData.containsKey(KEY_SEND_METRICS)) {
- CMSettings.Secure.putInt(mContext.getContentResolver(),
- CMSettings.Secure.STATS_COLLECTION, privacyData.getBoolean(KEY_SEND_METRICS)
- ? 1 : 0);
- }
- }
-
private void handleDefaultThemeSetup() {
Bundle privacyData = getData();
if (!SetupWizardUtils.getDefaultThemePackageName(mContext).equals(
ThemeConfig.SYSTEM_DEFAULT) && privacyData != null &&
privacyData.getBoolean(KEY_APPLY_DEFAULT_THEME)) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.APPLY_CUSTOM_THEME,
- SetupStats.Label.CHECKED,
- String.valueOf(privacyData.getBoolean(KEY_APPLY_DEFAULT_THEME)));
Log.i(TAG, "Applying default theme");
final ThemeManager tm = ThemeManager.getInstance(mContext);
tm.applyDefaultTheme();
@@ -176,26 +155,14 @@ public class CyanogenSettingsPage extends SetupPage {
private View mKillSwitchView;
private TextView mKillSwitchTitle;
private ImageView mKillSwitchStatus;
- private View mMetricsRow;
private View mDefaultThemeRow;
private View mNavKeysRow;
- private CheckBox mMetrics;
private CheckBox mDefaultTheme;
private CheckBox mNavKeys;
private boolean mHideNavKeysRow = false;
private boolean mHideThemeRow = false;
-
- private View.OnClickListener mMetricsClickListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- boolean checked = !mMetrics.isChecked();
- mMetrics.setChecked(checked);
- mPage.getData().putBoolean(KEY_SEND_METRICS, checked);
- }
- };
-
private View.OnClickListener mDefaultThemeClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -253,19 +220,6 @@ public class CyanogenSettingsPage extends SetupPage {
}
}
- mMetricsRow = mRootView.findViewById(R.id.metrics);
- mMetricsRow.setOnClickListener(mMetricsClickListener);
- String metricsHelpImproveCM =
- getString(R.string.services_help_improve_cm, getString(R.string.os_name));
- String metricsSummary = getString(R.string.services_metrics_label,
- metricsHelpImproveCM, getString(R.string.os_name));
- final SpannableStringBuilder metricsSpan = new SpannableStringBuilder(metricsSummary);
- metricsSpan.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD),
- 0, metricsHelpImproveCM.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- TextView metrics = (TextView) mRootView.findViewById(R.id.enable_metrics_summary);
- metrics.setText(metricsSpan);
- mMetrics = (CheckBox) mRootView.findViewById(R.id.enable_metrics_checkbox);
-
mDefaultThemeRow = mRootView.findViewById(R.id.theme);
mHideThemeRow = hideThemeSwitch(getActivity());
if (mHideThemeRow) {
@@ -314,19 +268,9 @@ public class CyanogenSettingsPage extends SetupPage {
public void onResume() {
super.onResume();
updateDisableNavkeysOption();
- updateMetricsOption();
updateThemeOption();
}
- private void updateMetricsOption() {
- final Bundle myPageBundle = mPage.getData();
- boolean metricsChecked =
- !myPageBundle.containsKey(KEY_SEND_METRICS) || myPageBundle
- .getBoolean(KEY_SEND_METRICS);
- mMetrics.setChecked(metricsChecked);
- myPageBundle.putBoolean(KEY_SEND_METRICS, metricsChecked);
- }
-
private void updateThemeOption() {
if (!mHideThemeRow) {
final Bundle myPageBundle = mPage.getData();
diff --git a/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java b/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java
index 7a5922b..a669163 100644
--- a/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java
@@ -42,7 +42,6 @@ import android.widget.TextView;
import android.widget.TimePicker;
import com.cyanogenmod.setupwizard.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import org.xmlpull.v1.XmlPullParserException;
@@ -136,8 +135,6 @@ public class DateTimePage extends SetupPage {
mDateView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- "date_picker");
showDatePicker();
}
});
@@ -145,8 +142,6 @@ public class DateTimePage extends SetupPage {
mTimeView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- "time_picker");
showTimePicker();
}
});
@@ -167,17 +162,11 @@ public class DateTimePage extends SetupPage {
final Map<?, ?> map = (Map<?, ?>) adapterView.getItemAtPosition(position);
final String tzId = (String) map.get(KEY_ID);
if (mCurrentTimeZone != null && !mCurrentTimeZone.getID().equals(tzId)) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- "timezone_picker");
// Update the system timezone value
final Activity activity = getActivity();
final AlarmManager alarm = (AlarmManager) activity.getSystemService(Context.ALARM_SERVICE);
alarm.setTimeZone(tzId);
mCurrentTimeZone = TimeZone.getTimeZone(tzId);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.TIMEZONE_CHANGED,
- SetupStats.Label.VALUE,
- mCurrentTimeZone.getDisplayName());
}
}
@@ -232,10 +221,6 @@ public class DateTimePage extends SetupPage {
if (activity != null) {
setDate(activity, year, month, day);
updateTimeAndDateDisplay(activity);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.DATE_CHANGED,
- SetupStats.Label.VALUE,
- month+"/"+day+"/"+year);
}
}
@@ -245,10 +230,6 @@ public class DateTimePage extends SetupPage {
if (activity != null) {
setTime(activity, hourOfDay, minute);
updateTimeAndDateDisplay(activity);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.TIME_CHANGED,
- SetupStats.Label.VALUE,
- hourOfDay+":"+minute);
}
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java b/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java
index 890a4f6..c9174c6 100644
--- a/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java
@@ -28,7 +28,6 @@ import android.widget.TextView;
import com.android.internal.widget.LockPatternUtils;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
public class FingerprintSetupPage extends SetupPage {
@@ -113,9 +112,6 @@ public class FingerprintSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(getActivity(),
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.FINGERPRINT_SETUP);
startActivityForResult(intent, SetupWizardApp.REQUEST_CODE_SETUP_FINGERPRINT,
options.toBundle());
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java b/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
index eebf3f5..1de9c82 100644
--- a/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
@@ -34,7 +34,6 @@ import android.util.Log;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -138,10 +137,6 @@ public class GmsAccountPage extends SetupPage {
boolean restorePicker = !data.hasExtra(EXTRA_RESTORE_TOKEN)
&& !data.hasExtra(EXTRA_RESTORE_ACCOUNT) &&
data.hasExtra(EXTRA_AUTH_ACCOUNT);
-
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.GMS_ACCOUNT, "success");
launchGmsRestorePage(restorePicker);
} else {
handleResult(requestCode, resultCode);
@@ -169,24 +164,12 @@ public class GmsAccountPage extends SetupPage {
private void handleResult(int requestCode, int resultCode) {
if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS ?
- SetupStats.Label.GMS_ACCOUNT : SetupStats.Label.RESTORE, "canceled");
getCallbacks().onPreviousPage();
} else {
if (resultCode == Activity.RESULT_OK) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS ?
- SetupStats.Label.GMS_ACCOUNT : SetupStats.Label.RESTORE, "success");
getCallbacks().onNextPage();
} else {
if (canSkip()) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS ?
- SetupStats.Label.GMS_ACCOUNT : SetupStats.Label.RESTORE, "skipped");
getCallbacks().onNextPage();
} else {
getCallbacks().onPreviousPage();
@@ -226,9 +209,6 @@ public class GmsAccountPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.RESTORE);
mFragment.startActivityForResult(
intent,
SetupWizardApp.REQUEST_CODE_RESTORE_GMS, options.toBundle());
@@ -275,9 +255,6 @@ public class GmsAccountPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.GMS_ACCOUNT);
mFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_GMS, options.toBundle());
} catch (OperationCanceledException e) {
diff --git a/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java b/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java
index da3872e..36d9ad5 100644
--- a/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java
@@ -38,7 +38,6 @@ import android.widget.TextView;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -147,9 +146,6 @@ public class MobileDataPage extends SetupPage {
} else {
onDataStateReady();
}
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_MOBILE_DATA,
- SetupStats.Label.CHECKED, String.valueOf(checked));
}
};
diff --git a/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java b/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java
index 0ed17ff..0bea90b 100644
--- a/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java
@@ -40,7 +40,6 @@ import android.widget.TextView;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -233,9 +232,6 @@ public class OtherSettingsPage extends SetupPage {
private void onToggleBackup(boolean checked) {
try {
mBackupManager.setBackupEnabled(checked);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_BACKUP,
- SetupStats.Label.CHECKED, String.valueOf(checked));
} catch (RemoteException e) {}
updateBackupToggle();
}
@@ -309,9 +305,6 @@ public class OtherSettingsPage extends SetupPage {
}
private void onToggleLocationAccess(boolean checked) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_LOCATION,
- SetupStats.Label.CHECKED, String.valueOf(checked));
if (checked) {
setLocationMode(Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
@@ -321,10 +314,6 @@ public class OtherSettingsPage extends SetupPage {
}
private void onToggleBatterySaving(boolean checked) {
- /* SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_BATTERY_SAVING_LOCATION,
- SetupStats.Label.CHECKED, String.valueOf(checked)); */
-
if (checked) {
setLocationMode(Settings.Secure.LOCATION_MODE_BATTERY_SAVING);
} else {
@@ -333,11 +322,7 @@ public class OtherSettingsPage extends SetupPage {
}
private void onToggleNetwork(boolean checked) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_NETWORK_LOCATION,
- SetupStats.Label.CHECKED, String.valueOf(checked));
-
- if (checked) {
+ if (checked) {
setLocationMode(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);
} else {
setLocationMode(Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
diff --git a/src/com/cyanogenmod/setupwizard/setup/SetupPage.java b/src/com/cyanogenmod/setupwizard/setup/SetupPage.java
index 1a19fb0..9804049 100644
--- a/src/com/cyanogenmod/setupwizard/setup/SetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/SetupPage.java
@@ -26,7 +26,6 @@ import android.transition.Transition;
import android.view.Gravity;
import com.cyanogenmod.setupwizard.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
public abstract class SetupPage implements Page {
@@ -76,18 +75,12 @@ public abstract class SetupPage implements Page {
public void doLoadAction(FragmentManager fragmentManager, int action) {
Fragment fragment = getFragment(fragmentManager, action);
if (action == Page.ACTION_NEXT) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- SetupStats.Action.NEXT_BUTTON, getKey(),
- String.valueOf(System.currentTimeMillis()));
Transition t = new Slide(Gravity.RIGHT);
fragment.setEnterTransition(t);
fragmentManager.beginTransaction()
.replace(R.id.content,fragment, getKey())
.commit();
} else {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- SetupStats.Action.PREVIOUS_BUTTON, getKey(),
- String.valueOf(System.currentTimeMillis()));
Transition t = new Slide(Gravity.LEFT);
fragment.setEnterTransition(t);
fragmentManager.beginTransaction()
diff --git a/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java b/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java
index e09c2a1..eedb24d 100644
--- a/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java
@@ -42,7 +42,6 @@ import android.widget.Toast;
import com.android.internal.telephony.MccTable;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LocalePicker;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -87,7 +86,6 @@ public class WelcomePage extends SetupPage {
return true;
} else {
if (mWelcomeFragment != null) {
- mWelcomeFragment.sendLocaleStats();
}
return super.doNextAction();
}
@@ -102,10 +100,6 @@ public class WelcomePage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK, SetupStats.Label.EMERGENCY_CALL);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.EMERGENCY_CALL);
mContext.startActivity(intent, options.toBundle());
return true;
}
@@ -269,14 +263,6 @@ public class WelcomePage extends SetupPage {
return R.layout.setup_welcome_page;
}
- public void sendLocaleStats() {
- if (!mCurrentLocale.equals(mInitialLocale)) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.CHANGE_LOCALE, SetupStats.Label.LOCALE,
- mCurrentLocale.getDisplayName());
- }
- }
-
public void fetchAndUpdateSimLocale() {
if (mIgnoreSimLocale || isDetached()) {
return;
diff --git a/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java b/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java
index 2d8084a..3a131f7 100644
--- a/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java
@@ -31,7 +31,6 @@ import android.util.Log;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -86,9 +85,6 @@ public class WifiSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.CAPTIVE_PORTAL_LOGIN);
mLoadingFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_CAPTIVE_PORTAL,
options.toBundle());
@@ -157,19 +153,10 @@ public class WifiSetupPage extends SetupPage {
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_WIFI) {
if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.WIFI_SETUP, "canceled");
getCallbacks().onPreviousPage();
} else if (resultCode == Activity.RESULT_OK) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.WIFI_SETUP, "success");
checkForCaptivePortal();
} else {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.WIFI_SETUP, "skipped");
getCallbacks().onNextPage();
}
} else if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_CAPTIVE_PORTAL) {
@@ -179,20 +166,11 @@ public class WifiSetupPage extends SetupPage {
}
String token = data.getStringExtra("response_token");
if (token != null && !token.equals(mResponseToken)) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CAPTIVE_PORTAL_LOGIN, "token_mismatch");
launchWifiSetup();
} else {
if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CAPTIVE_PORTAL_LOGIN, "canceled");
launchWifiSetup();
} else {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CAPTIVE_PORTAL_LOGIN, "success");
getCallbacks().onNextPage();
}
}
@@ -256,9 +234,6 @@ public class WifiSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.WIFI_SETUP);
mLoadingFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_WIFI, options.toBundle());
}
diff --git a/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java b/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java
index b0df440..33c61c7 100644
--- a/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java
+++ b/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java
@@ -26,7 +26,6 @@ import android.view.ViewGroup;
import android.widget.TextView;
import com.cyanogenmod.setupwizard.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.setup.Page;
import com.cyanogenmod.setupwizard.setup.SetupDataCallbacks;
@@ -43,8 +42,6 @@ public abstract class SetupPageFragment extends Fragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
- SetupStats.addEvent(SetupStats.Categories.PAGE_LOAD, SetupStats.Action.PAGE_LOADED,
- mKey, String.valueOf(System.currentTimeMillis()));
}
@Override
diff --git a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
index 7ba58e0..68255c4 100644
--- a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
+++ b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
@@ -44,7 +44,6 @@ import android.widget.ProgressBar;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.setup.CMSetupWizardData;
import com.cyanogenmod.setupwizard.setup.GmsAccountPage;
import com.cyanogenmod.setupwizard.setup.Page;
@@ -108,7 +107,6 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
}
});
if (sLaunchTime == 0) {
- SetupStats.addEvent(SetupStats.Categories.APP_LAUNCH, TAG);
sLaunchTime = System.nanoTime();
}
setContentView(R.layout.setup_main);
@@ -387,9 +385,6 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
@Override
public void finishSetup() {
if (!mIsFinishing) {
- SetupStats.addEvent(SetupStats.Categories.APP_FINISHED, TAG,
- SetupStats.Label.TOTAL_TIME, String.valueOf(
- System.nanoTime() - sLaunchTime));
final SetupWizardApp setupWizardApp = (SetupWizardApp)getApplication();
setupWizardApp.sendStickyBroadcastAsUser(
new Intent(SetupWizardApp.ACTION_FINISHED),
@@ -479,7 +474,6 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
}
final ThemeManager tm = ThemeManager.getInstance(SetupWizardActivity.this);
tm.unregisterThemeChangeListener(SetupWizardActivity.this);
- SetupStats.sendEvents(SetupWizardActivity.this);
SetupWizardUtils.disableGMSSetupWizard(SetupWizardActivity.this);
final WallpaperManager wallpaperManager =
WallpaperManager.getInstance(SetupWizardActivity.this);
diff --git a/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java b/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java
index 440129b..47d6de5 100644
--- a/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java
+++ b/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java
@@ -39,7 +39,6 @@ import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.IAccessibilityManager;
import com.android.internal.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import java.util.ArrayList;
import java.util.Iterator;
@@ -284,8 +283,6 @@ public class EnableAccessibilityController {
// Turn on accessibility mode last.
Settings.Secure.putIntForUser(resolver, Settings.Secure.ACCESSIBILITY_ENABLED,
1, userId);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- "accessibility_enabled");
} else if (keyguardLocked) {
try {
mAccessibilityManager.temporaryEnableAccessibilityStateUntilKeyguardRemoved(
--
2.8.0

View File

@ -0,0 +1,944 @@
From 149226a0a45a4a65447c4059b6e199dbc345bfde Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Thu, 28 Apr 2016 00:22:37 -0400
Subject: [PATCH] Remove analytics
Change-Id: I1c9a4267c948013a9cd900cf046ed450d945ab4c
---
AndroidManifest.xml | 1 -
.../setupwizard/cmstats/SetupStats.java | 162 ---------------------
.../setupwizard/cmstats/StatsUtils.java | 44 ------
.../setupwizard/setup/BluetoothSetupPage.java | 7 -
.../setupwizard/setup/ChooseDataSimPage.java | 4 -
.../setupwizard/setup/CyanogenServicesPage.java | 13 --
.../setupwizard/setup/CyanogenSettingsPage.java | 56 -------
.../setupwizard/setup/DateTimePage.java | 19 ---
.../setupwizard/setup/FingerprintSetupPage.java | 4 -
.../setupwizard/setup/GmsAccountPage.java | 23 ---
.../setupwizard/setup/MobileDataPage.java | 4 -
.../setupwizard/setup/OtherSettingsPage.java | 14 +-
.../cyanogenmod/setupwizard/setup/SetupPage.java | 7 -
.../cyanogenmod/setupwizard/setup/WelcomePage.java | 14 --
.../setupwizard/setup/WifiSetupPage.java | 25 ----
.../setupwizard/ui/SetupPageFragment.java | 3 -
.../setupwizard/ui/SetupWizardActivity.java | 6 -
.../util/EnableAccessibilityController.java | 3 -
18 files changed, 1 insertion(+), 408 deletions(-)
delete mode 100644 src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java
delete mode 100644 src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d8c7617..8e2ec08 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -43,7 +43,6 @@
<uses-permission android:name="android.permission.BACKUP" />
<uses-permission android:name="cyanogenmod.permission.FINISH_SETUP" />
<uses-permission android:name="cyanogenmod.permission.LEGALESE" />
- <uses-permission android:name="com.cyngn.stats.SEND_ANALYTICS" />
<uses-permission android:name="com.cyanogen.permission.REQUEST_KILL_SWITCH_OP" />
<uses-permission android:name="cyanogenmod.permission.WRITE_SETTINGS"/>
<uses-permission android:name="cyanogenmod.permission.WRITE_SECURE_SETTINGS"/>
diff --git a/src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java b/src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java
deleted file mode 100644
index 6eb527f..0000000
--- a/src/com/cyanogenmod/setupwizard/cmstats/SetupStats.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (C) 2014 The CyanogenMod 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.
- */
-
-package com.cyanogenmod.setupwizard.cmstats;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.UserHandle;
-import android.util.Log;
-
-import java.util.LinkedList;
-
-
-public class SetupStats {
-
- private static final String TAG = SetupStats.class.getSimpleName();
-
- private static final String ANALYTIC_INTENT = "com.cyngn.stats.action.SEND_ANALYTIC_EVENT";
- private static final String ANALYTIC_PERMISSION = "com.cyngn.stats.SEND_ANALYTICS";
-
- public static final String TRACKING_ID = "tracking_id";
-
- private final LinkedList<Event> mEvents = new LinkedList<Event>();
-
- private static final SetupStats sInstance = new SetupStats();
-
- private static final boolean DEBUG = false;
-
- private SetupStats() {}
-
- public static void addEvent(String category, String action,
- String label, String value) {
- sInstance.mEvents.add(new Event(category, action, label, value));
- }
-
- public static void addEvent(String category, String action) {
- sInstance.mEvents.add(new Event(category, action, null, null));
- }
-
- public static void sendEvents(Context context) {
- while (!sInstance.mEvents.isEmpty()) {
- sInstance.sendEvent(context, sInstance.mEvents.remove());
- }
- }
-
- private void sendEvent(Context context, Event event) {
-
- if (!StatsUtils.isStatsPackageInstalled(context)
- || !StatsUtils.isStatsCollectionEnabled(context)) {
- return;
- }
-
- // Create new intent
- Intent intent = new Intent();
- intent.setAction(ANALYTIC_INTENT);
-
- // add tracking id
- intent.putExtra(TRACKING_ID, context.getPackageName());
- // append
- intent.putExtra(Fields.EVENT_CATEGORY, event.category);
- if (DEBUG) Log.d(TAG, Fields.EVENT_CATEGORY + "=" + event.category);
- intent.putExtra(Fields.EVENT_ACTION, event.action);
- if (DEBUG) Log.d(TAG, Fields.EVENT_ACTION + "=" + event.action);
- // check if exist
- if (event.label != null) {
- intent.putExtra(Fields.EVENT_LABEL, event.label);
- if (DEBUG) Log.d(TAG, Fields.EVENT_LABEL + "=" + event.label);
- }
-
- if (event.value != null) {
- intent.putExtra(Fields.EVENT_VALUE, event.value);
- if (DEBUG) Log.d(TAG, Fields.EVENT_VALUE + "=" + event.value);
- }
-
- // broadcast for internal package
- context.sendBroadcastAsUser(intent,
- new UserHandle(UserHandle.USER_CURRENT), ANALYTIC_PERMISSION);
- }
-
- private static final class Event {
- private final String category;
- private final String action;
- private final String label;
- private final String value;
-
- public Event(String category, String action, String label, String value) {
- this.action = action;
- this.category = category;
- this.label = label;
- this.value = value;
- }
- }
-
- public static final class Fields {
- public static final String EVENT_CATEGORY = "category";
- public static final String EVENT_ACTION = "action";
- public static final String EVENT_LABEL = "label";
- public static final String EVENT_VALUE = "value";
- }
-
- public static final class Categories {
- public static final String APP_LAUNCH = "app_launch";
- public static final String APP_FINISHED = "app_finish";
- public static final String PAGE_LOAD = "page_load";
- public static final String EXTERNAL_PAGE_LOAD = "external_page_load";
- public static final String BUTTON_CLICK = "button_click";
- public static final String SETTING_CHANGED = "setting_changed";
- }
-
- public static final class Action {
- public static final String PAGE_LOADED = "page_loaded";
- public static final String PREVIOUS_BUTTON = "previous_button";
- public static final String NEXT_BUTTON = "next_button";
- public static final String CHANGE_LOCALE = "change_local";
- public static final String EXTERNAL_PAGE_LAUNCH = "external_page_launch";
- public static final String EXTERNAL_PAGE_RESULT = "external_page_result";
- public static final String ENABLE_MOBILE_DATA = "enable_mobile_data";
- public static final String PREFERRED_DATA_SIM = "preferred_data_sim";
- public static final String APPLY_CUSTOM_THEME = "apply_custom_theme";
- public static final String USE_SECURE_SMS = "use_secure_sms";
- public static final String ENABLE_BACKUP = "enable_backup";
- public static final String ENABLE_NAV_KEYS = "enable_nav_keys";
- public static final String ENABLE_LOCATION = "enable_location";
- public static final String ENABLE_NETWORK_LOCATION = "enable_network_location";
- public static final String ENABLE_GPS_LOCATION = "enable_gps_location";
- public static final String DATE_CHANGED = "date_changed";
- public static final String TIME_CHANGED = "time_changed";
- public static final String TIMEZONE_CHANGED = "timezone_changed";
- }
-
- public static final class Label {
- public static final String PAGE = "page";
- public static final String LOCALE = "local";
- public static final String RESULT = "result";
- public static final String WIFI_SETUP = "wifi_setup";
- public static final String BLUETOOTH_SETUP = "bluetooth_setup";
- public static final String CYANOGEN_ACCOUNT = "cyanogen_account_setup";
- public static final String CAPTIVE_PORTAL_LOGIN = "captive_portal_login";
- public static final String EMERGENCY_CALL = "emergency_call";
- public static final String GMS_ACCOUNT = "gms_account";
- public static final String RESTORE = "restore";
- public static final String CHECKED = "checked";
- public static final String VALUE = "value";
- public static final String SLOT = "slot";
- public static final String TOTAL_TIME = "total_time";
- public static final String FINGERPRINT_SETUP = "fingerprint_setup";
- }
-
-}
diff --git a/src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java b/src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java
deleted file mode 100644
index 8be8fad..0000000
--- a/src/com/cyanogenmod/setupwizard/cmstats/StatsUtils.java
+++ /dev/null
@@ -1,44 +0,0 @@
-
-/*
- * Copyright (C) 2014 The CyanogenMod 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.
- */
-
-package com.cyanogenmod.setupwizard.cmstats;
-
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-
-import cyanogenmod.providers.CMSettings;
-
-public class StatsUtils {
- private static final String STATS_PACKAGE = "com.cyngn.stats";
-
- public static boolean isStatsCollectionEnabled(Context context) {
- return CMSettings.Secure.getInt(context.getContentResolver(),
- CMSettings.Secure.STATS_COLLECTION, 1) != 0;
- }
-
- public static boolean isStatsPackageInstalled(Context context) {
- try {
- PackageInfo pi = context.getPackageManager().getPackageInfo(STATS_PACKAGE, 0);
- return pi.applicationInfo.enabled
- && ((pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- }
-}
diff --git a/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java b/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java
index 915abec..8609dbb 100644
--- a/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/BluetoothSetupPage.java
@@ -28,7 +28,6 @@ import android.util.Log;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -91,9 +90,6 @@ public class BluetoothSetupPage extends SetupPage {
@Override
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_BLUETOOTH) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.BLUETOOTH_SETUP, "success");
getCallbacks().onNextPage();
} else {
return false;
@@ -111,9 +107,6 @@ public class BluetoothSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.BLUETOOTH_SETUP);
mLoadingFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_BLUETOOTH, options.toBundle());
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java b/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java
index a0a4312..42e7ea2 100644
--- a/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/ChooseDataSimPage.java
@@ -47,7 +47,6 @@ import com.android.internal.telephony.TelephonyIntents;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -356,9 +355,6 @@ public class ChooseDataSimPage extends SetupPage {
for (int i = 0; i < mCheckBoxes.size(); i++) {
if (subInfoRecord.getSimSlotIndex() == i) {
mCheckBoxes.get(i).setChecked(true);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.PREFERRED_DATA_SIM,
- SetupStats.Label.SLOT, String.valueOf(i + 1));
} else {
mCheckBoxes.get(i).setChecked(false);
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java b/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java
index e71dd79..5bfe3b0 100644
--- a/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/CyanogenServicesPage.java
@@ -32,7 +32,6 @@ import android.util.Log;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -95,10 +94,6 @@ public class CyanogenServicesPage extends SetupPage {
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN) {
if (resultCode == Activity.RESULT_OK || resultCode == Activity.RESULT_FIRST_USER) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CYANOGEN_ACCOUNT,
- resultCode == Activity.RESULT_OK ? "success" : "skipped");
if (SetupWizardUtils.accountExists(mContext,
mContext.getString(R.string.cm_account_type))) {
if (SetupWizardUtils.isDeviceLocked()) {
@@ -108,9 +103,6 @@ public class CyanogenServicesPage extends SetupPage {
}
getCallbacks().onNextPage();
} else if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CYANOGEN_ACCOUNT, "canceled");
getCallbacks().onPreviousPage();
}
}
@@ -136,11 +128,6 @@ public class CyanogenServicesPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats
- .addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE,
- SetupStats.Label.CYANOGEN_ACCOUNT);
mFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN,
options.toBundle());
diff --git a/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java b/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java
index d17d64b..2c95253 100644
--- a/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/CyanogenSettingsPage.java
@@ -42,7 +42,6 @@ import android.widget.TextView;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -54,7 +53,6 @@ public class CyanogenSettingsPage extends SetupPage {
public static final String TAG = "CyanogenSettingsPage";
- public static final String KEY_SEND_METRICS = "send_metrics";
public static final String DISABLE_NAV_KEYS = "disable_nav_keys";
public static final String KEY_APPLY_DEFAULT_THEME = "apply_default_theme";
public static final String KEY_BUTTON_BACKLIGHT = "pre_navbar_button_backlight";
@@ -116,37 +114,18 @@ public class CyanogenSettingsPage extends SetupPage {
@Override
public void run() {
if (getData().containsKey(DISABLE_NAV_KEYS)) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_NAV_KEYS,
- SetupStats.Label.CHECKED,
- String.valueOf(getData().getBoolean(DISABLE_NAV_KEYS)));
writeDisableNavkeysOption(mContext, getData().getBoolean(DISABLE_NAV_KEYS));
}
}
});
- handleEnableMetrics();
handleDefaultThemeSetup();
}
- private void handleEnableMetrics() {
- Bundle privacyData = getData();
- if (privacyData != null
- && privacyData.containsKey(KEY_SEND_METRICS)) {
- CMSettings.Secure.putInt(mContext.getContentResolver(),
- CMSettings.Secure.STATS_COLLECTION, privacyData.getBoolean(KEY_SEND_METRICS)
- ? 1 : 0);
- }
- }
-
private void handleDefaultThemeSetup() {
Bundle privacyData = getData();
if (!SetupWizardUtils.getDefaultThemePackageName(mContext).equals(
ThemeConfig.SYSTEM_DEFAULT) && privacyData != null &&
privacyData.getBoolean(KEY_APPLY_DEFAULT_THEME)) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.APPLY_CUSTOM_THEME,
- SetupStats.Label.CHECKED,
- String.valueOf(privacyData.getBoolean(KEY_APPLY_DEFAULT_THEME)));
Log.i(TAG, "Applying default theme");
final ThemeManager tm = ThemeManager.getInstance(mContext);
tm.applyDefaultTheme();
@@ -176,26 +155,14 @@ public class CyanogenSettingsPage extends SetupPage {
private View mKillSwitchView;
private TextView mKillSwitchTitle;
private ImageView mKillSwitchStatus;
- private View mMetricsRow;
private View mDefaultThemeRow;
private View mNavKeysRow;
- private CheckBox mMetrics;
private CheckBox mDefaultTheme;
private CheckBox mNavKeys;
private boolean mHideNavKeysRow = false;
private boolean mHideThemeRow = false;
-
- private View.OnClickListener mMetricsClickListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- boolean checked = !mMetrics.isChecked();
- mMetrics.setChecked(checked);
- mPage.getData().putBoolean(KEY_SEND_METRICS, checked);
- }
- };
-
private View.OnClickListener mDefaultThemeClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -253,19 +220,6 @@ public class CyanogenSettingsPage extends SetupPage {
}
}
- mMetricsRow = mRootView.findViewById(R.id.metrics);
- mMetricsRow.setOnClickListener(mMetricsClickListener);
- String metricsHelpImproveCM =
- getString(R.string.services_help_improve_cm, getString(R.string.os_name));
- String metricsSummary = getString(R.string.services_metrics_label,
- metricsHelpImproveCM, getString(R.string.os_name));
- final SpannableStringBuilder metricsSpan = new SpannableStringBuilder(metricsSummary);
- metricsSpan.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD),
- 0, metricsHelpImproveCM.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- TextView metrics = (TextView) mRootView.findViewById(R.id.enable_metrics_summary);
- metrics.setText(metricsSpan);
- mMetrics = (CheckBox) mRootView.findViewById(R.id.enable_metrics_checkbox);
-
mDefaultThemeRow = mRootView.findViewById(R.id.theme);
mHideThemeRow = hideThemeSwitch(getActivity());
if (mHideThemeRow) {
@@ -314,19 +268,9 @@ public class CyanogenSettingsPage extends SetupPage {
public void onResume() {
super.onResume();
updateDisableNavkeysOption();
- updateMetricsOption();
updateThemeOption();
}
- private void updateMetricsOption() {
- final Bundle myPageBundle = mPage.getData();
- boolean metricsChecked =
- !myPageBundle.containsKey(KEY_SEND_METRICS) || myPageBundle
- .getBoolean(KEY_SEND_METRICS);
- mMetrics.setChecked(metricsChecked);
- myPageBundle.putBoolean(KEY_SEND_METRICS, metricsChecked);
- }
-
private void updateThemeOption() {
if (!mHideThemeRow) {
final Bundle myPageBundle = mPage.getData();
diff --git a/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java b/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java
index 7a5922b..a669163 100644
--- a/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/DateTimePage.java
@@ -42,7 +42,6 @@ import android.widget.TextView;
import android.widget.TimePicker;
import com.cyanogenmod.setupwizard.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import org.xmlpull.v1.XmlPullParserException;
@@ -136,8 +135,6 @@ public class DateTimePage extends SetupPage {
mDateView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- "date_picker");
showDatePicker();
}
});
@@ -145,8 +142,6 @@ public class DateTimePage extends SetupPage {
mTimeView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- "time_picker");
showTimePicker();
}
});
@@ -167,17 +162,11 @@ public class DateTimePage extends SetupPage {
final Map<?, ?> map = (Map<?, ?>) adapterView.getItemAtPosition(position);
final String tzId = (String) map.get(KEY_ID);
if (mCurrentTimeZone != null && !mCurrentTimeZone.getID().equals(tzId)) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- "timezone_picker");
// Update the system timezone value
final Activity activity = getActivity();
final AlarmManager alarm = (AlarmManager) activity.getSystemService(Context.ALARM_SERVICE);
alarm.setTimeZone(tzId);
mCurrentTimeZone = TimeZone.getTimeZone(tzId);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.TIMEZONE_CHANGED,
- SetupStats.Label.VALUE,
- mCurrentTimeZone.getDisplayName());
}
}
@@ -232,10 +221,6 @@ public class DateTimePage extends SetupPage {
if (activity != null) {
setDate(activity, year, month, day);
updateTimeAndDateDisplay(activity);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.DATE_CHANGED,
- SetupStats.Label.VALUE,
- month+"/"+day+"/"+year);
}
}
@@ -245,10 +230,6 @@ public class DateTimePage extends SetupPage {
if (activity != null) {
setTime(activity, hourOfDay, minute);
updateTimeAndDateDisplay(activity);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.TIME_CHANGED,
- SetupStats.Label.VALUE,
- hourOfDay+":"+minute);
}
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java b/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java
index 890a4f6..c9174c6 100644
--- a/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/FingerprintSetupPage.java
@@ -28,7 +28,6 @@ import android.widget.TextView;
import com.android.internal.widget.LockPatternUtils;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
public class FingerprintSetupPage extends SetupPage {
@@ -113,9 +112,6 @@ public class FingerprintSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(getActivity(),
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.FINGERPRINT_SETUP);
startActivityForResult(intent, SetupWizardApp.REQUEST_CODE_SETUP_FINGERPRINT,
options.toBundle());
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java b/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
index 2b4741a..e8b4ef4 100644
--- a/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
@@ -35,7 +35,6 @@ import android.util.Log;
import com.android.setupwizardlib.util.ResultCodes;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -143,10 +142,6 @@ public class GmsAccountPage extends SetupPage {
boolean restorePicker = !data.hasExtra(EXTRA_RESTORE_TOKEN)
&& !data.hasExtra(EXTRA_RESTORE_ACCOUNT) &&
data.hasExtra(EXTRA_AUTH_ACCOUNT);
-
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.GMS_ACCOUNT, "success");
launchGmsRestorePage(restorePicker);
} else {
handleResult(requestCode, resultCode);
@@ -174,24 +169,12 @@ public class GmsAccountPage extends SetupPage {
private void handleResult(int requestCode, int resultCode) {
if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS ?
- SetupStats.Label.GMS_ACCOUNT : SetupStats.Label.RESTORE, "canceled");
getCallbacks().onPreviousPage();
} else {
if (resultCode == Activity.RESULT_OK) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS ?
- SetupStats.Label.GMS_ACCOUNT : SetupStats.Label.RESTORE, "success");
getCallbacks().onNextPage();
} else {
if (canSkip()) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS ?
- SetupStats.Label.GMS_ACCOUNT : SetupStats.Label.RESTORE, "skipped");
getCallbacks().onNextPage();
} else {
getCallbacks().onPreviousPage();
@@ -231,9 +214,6 @@ public class GmsAccountPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.RESTORE);
mFragment.startActivityForResult(
intent,
SetupWizardApp.REQUEST_CODE_RESTORE_GMS, options.toBundle());
@@ -305,9 +285,6 @@ public class GmsAccountPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.GMS_ACCOUNT);
mFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_GMS, options.toBundle());
} catch (OperationCanceledException e) {
diff --git a/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java b/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java
index da3872e..36d9ad5 100644
--- a/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/MobileDataPage.java
@@ -38,7 +38,6 @@ import android.widget.TextView;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -147,9 +146,6 @@ public class MobileDataPage extends SetupPage {
} else {
onDataStateReady();
}
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_MOBILE_DATA,
- SetupStats.Label.CHECKED, String.valueOf(checked));
}
};
diff --git a/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java b/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java
index 7ed23dc..69b0100 100644
--- a/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/OtherSettingsPage.java
@@ -17,7 +17,6 @@
package com.cyanogenmod.setupwizard.setup;
import com.cyanogenmod.setupwizard.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -229,9 +228,6 @@ public class OtherSettingsPage extends SetupPage {
}
private void onToggleLocationAccess(boolean checked) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_LOCATION,
- SetupStats.Label.CHECKED, String.valueOf(checked));
if (checked) {
setLocationMode(Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
@@ -241,10 +237,6 @@ public class OtherSettingsPage extends SetupPage {
}
private void onToggleBatterySaving(boolean checked) {
- /* SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_BATTERY_SAVING_LOCATION,
- SetupStats.Label.CHECKED, String.valueOf(checked)); */
-
if (checked) {
setLocationMode(Settings.Secure.LOCATION_MODE_BATTERY_SAVING);
} else {
@@ -253,11 +245,7 @@ public class OtherSettingsPage extends SetupPage {
}
private void onToggleNetwork(boolean checked) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.ENABLE_NETWORK_LOCATION,
- SetupStats.Label.CHECKED, String.valueOf(checked));
-
- if (checked) {
+ if (checked) {
setLocationMode(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);
} else {
setLocationMode(Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
diff --git a/src/com/cyanogenmod/setupwizard/setup/SetupPage.java b/src/com/cyanogenmod/setupwizard/setup/SetupPage.java
index 1a19fb0..9804049 100644
--- a/src/com/cyanogenmod/setupwizard/setup/SetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/SetupPage.java
@@ -26,7 +26,6 @@ import android.transition.Transition;
import android.view.Gravity;
import com.cyanogenmod.setupwizard.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
public abstract class SetupPage implements Page {
@@ -76,18 +75,12 @@ public abstract class SetupPage implements Page {
public void doLoadAction(FragmentManager fragmentManager, int action) {
Fragment fragment = getFragment(fragmentManager, action);
if (action == Page.ACTION_NEXT) {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- SetupStats.Action.NEXT_BUTTON, getKey(),
- String.valueOf(System.currentTimeMillis()));
Transition t = new Slide(Gravity.RIGHT);
fragment.setEnterTransition(t);
fragmentManager.beginTransaction()
.replace(R.id.content,fragment, getKey())
.commit();
} else {
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK,
- SetupStats.Action.PREVIOUS_BUTTON, getKey(),
- String.valueOf(System.currentTimeMillis()));
Transition t = new Slide(Gravity.LEFT);
fragment.setEnterTransition(t);
fragmentManager.beginTransaction()
diff --git a/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java b/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java
index e09c2a1..eedb24d 100644
--- a/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/WelcomePage.java
@@ -42,7 +42,6 @@ import android.widget.Toast;
import com.android.internal.telephony.MccTable;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LocalePicker;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -87,7 +86,6 @@ public class WelcomePage extends SetupPage {
return true;
} else {
if (mWelcomeFragment != null) {
- mWelcomeFragment.sendLocaleStats();
}
return super.doNextAction();
}
@@ -102,10 +100,6 @@ public class WelcomePage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.BUTTON_CLICK, SetupStats.Label.EMERGENCY_CALL);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.EMERGENCY_CALL);
mContext.startActivity(intent, options.toBundle());
return true;
}
@@ -269,14 +263,6 @@ public class WelcomePage extends SetupPage {
return R.layout.setup_welcome_page;
}
- public void sendLocaleStats() {
- if (!mCurrentLocale.equals(mInitialLocale)) {
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- SetupStats.Action.CHANGE_LOCALE, SetupStats.Label.LOCALE,
- mCurrentLocale.getDisplayName());
- }
- }
-
public void fetchAndUpdateSimLocale() {
if (mIgnoreSimLocale || isDetached()) {
return;
diff --git a/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java b/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java
index 2d8084a..3a131f7 100644
--- a/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java
+++ b/src/com/cyanogenmod/setupwizard/setup/WifiSetupPage.java
@@ -31,7 +31,6 @@ import android.util.Log;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.LoadingFragment;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -86,9 +85,6 @@ public class WifiSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.CAPTIVE_PORTAL_LOGIN);
mLoadingFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_CAPTIVE_PORTAL,
options.toBundle());
@@ -157,19 +153,10 @@ public class WifiSetupPage extends SetupPage {
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_WIFI) {
if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.WIFI_SETUP, "canceled");
getCallbacks().onPreviousPage();
} else if (resultCode == Activity.RESULT_OK) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.WIFI_SETUP, "success");
checkForCaptivePortal();
} else {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.WIFI_SETUP, "skipped");
getCallbacks().onNextPage();
}
} else if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_CAPTIVE_PORTAL) {
@@ -179,20 +166,11 @@ public class WifiSetupPage extends SetupPage {
}
String token = data.getStringExtra("response_token");
if (token != null && !token.equals(mResponseToken)) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CAPTIVE_PORTAL_LOGIN, "token_mismatch");
launchWifiSetup();
} else {
if (resultCode == Activity.RESULT_CANCELED) {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CAPTIVE_PORTAL_LOGIN, "canceled");
launchWifiSetup();
} else {
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_RESULT,
- SetupStats.Label.CAPTIVE_PORTAL_LOGIN, "success");
getCallbacks().onNextPage();
}
}
@@ -256,9 +234,6 @@ public class WifiSetupPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in,
android.R.anim.fade_out);
- SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
- SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
- SetupStats.Label.PAGE, SetupStats.Label.WIFI_SETUP);
mLoadingFragment.startActivityForResult(intent,
SetupWizardApp.REQUEST_CODE_SETUP_WIFI, options.toBundle());
}
diff --git a/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java b/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java
index b0df440..33c61c7 100644
--- a/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java
+++ b/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java
@@ -26,7 +26,6 @@ import android.view.ViewGroup;
import android.widget.TextView;
import com.cyanogenmod.setupwizard.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.setup.Page;
import com.cyanogenmod.setupwizard.setup.SetupDataCallbacks;
@@ -43,8 +42,6 @@ public abstract class SetupPageFragment extends Fragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
- SetupStats.addEvent(SetupStats.Categories.PAGE_LOAD, SetupStats.Action.PAGE_LOADED,
- mKey, String.valueOf(System.currentTimeMillis()));
}
@Override
diff --git a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
index 0d82a74..3e3657d 100644
--- a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
+++ b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
@@ -45,7 +45,6 @@ import android.widget.ProgressBar;
import com.android.setupwizardlib.util.SystemBarHelper;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.setup.CMSetupWizardData;
import com.cyanogenmod.setupwizard.setup.GmsAccountPage;
import com.cyanogenmod.setupwizard.setup.Page;
@@ -93,7 +92,6 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
}
SystemBarHelper.hideSystemBars(getWindow());
if (sLaunchTime == 0) {
- SetupStats.addEvent(SetupStats.Categories.APP_LAUNCH, TAG);
sLaunchTime = System.nanoTime();
}
setContentView(R.layout.setup_main);
@@ -369,9 +367,6 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
@Override
public void finishSetup() {
if (!mIsFinishing) {
- SetupStats.addEvent(SetupStats.Categories.APP_FINISHED, TAG,
- SetupStats.Label.TOTAL_TIME, String.valueOf(
- System.nanoTime() - sLaunchTime));
final SetupWizardApp setupWizardApp = (SetupWizardApp)getApplication();
setupWizardApp.sendStickyBroadcastAsUser(
new Intent(SetupWizardApp.ACTION_FINISHED),
@@ -461,7 +456,6 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
}
final ThemeManager tm = ThemeManager.getInstance(SetupWizardActivity.this);
tm.unregisterThemeChangeListener(SetupWizardActivity.this);
- SetupStats.sendEvents(SetupWizardActivity.this);
SetupWizardUtils.disableGMSSetupWizard(SetupWizardActivity.this);
final WallpaperManager wallpaperManager =
WallpaperManager.getInstance(SetupWizardActivity.this);
diff --git a/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java b/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java
index 440129b..47d6de5 100644
--- a/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java
+++ b/src/com/cyanogenmod/setupwizard/util/EnableAccessibilityController.java
@@ -39,7 +39,6 @@ import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.IAccessibilityManager;
import com.android.internal.R;
-import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import java.util.ArrayList;
import java.util.Iterator;
@@ -284,8 +283,6 @@ public class EnableAccessibilityController {
// Turn on accessibility mode last.
Settings.Secure.putIntForUser(resolver, Settings.Secure.ACCESSIBILITY_ENABLED,
1, userId);
- SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
- "accessibility_enabled");
} else if (keyguardLocked) {
try {
mAccessibilityManager.temporaryEnableAccessibilityStateUntilKeyguardRemoved(
--
2.8.0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,89 @@
From b003454ab2ece62db5ae6c621aa6ec5c93c5c0b5 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sun, 20 Mar 2016 14:40:17 -0400
Subject: [PATCH] Actually fix profiles failing to set users preferred network
type
Change-Id: I325430f971b35b07d6852f3647fa60ec935a5b52
---
src/com/android/phone/PhoneToggler.java | 38 +++++++++++++++++++++++++++++----
1 file changed, 34 insertions(+), 4 deletions(-)
diff --git a/src/com/android/phone/PhoneToggler.java b/src/com/android/phone/PhoneToggler.java
index 90234f9..a38dd68 100644
--- a/src/com/android/phone/PhoneToggler.java
+++ b/src/com/android/phone/PhoneToggler.java
@@ -21,6 +21,8 @@ import android.content.Context;
import android.content.Intent;
import android.telephony.SubscriptionManager;
import android.util.Log;
+import android.os.Handler;
+import android.os.Message;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
@@ -42,6 +44,15 @@ public class PhoneToggler extends BroadcastReceiver {
private static final String LOG_TAG = "PhoneToggler";
private static final boolean DBG = false;
+ private MyHandler mHandler;
+
+ private MyHandler getHandler() {
+ if (mHandler == null) {
+ mHandler = new MyHandler();
+ }
+ return mHandler;
+ }
+
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
@@ -51,8 +62,7 @@ public class PhoneToggler extends BroadcastReceiver {
SubscriptionController subCtrl = SubscriptionController.getInstance();
int networkMode = intent.getExtras().getInt(EXTRA_NETWORK_MODE, -1);
- int subId = intent.getExtras().getInt(EXTRA_SUB_ID,
- SubscriptionManager.getDefaultDataSubId());
+ int subId = SubscriptionManager.getDefaultDataSubId();
// since the caller must be a system app, it's assumed that they have already
// chosen a valid network mode for this subId, so only basic validation is done
@@ -60,8 +70,9 @@ public class PhoneToggler extends BroadcastReceiver {
if (DBG) Log.d(LOG_TAG, "Changing network mode to " + networkMode);
subCtrl.setUserNwMode(subId, networkMode);
try {
- PhoneFactory.getPhone(SubscriptionManager.getPhoneId(subId))
- .setPreferredNetworkType(networkMode, null);
+ Phone phone = PhoneFactory.getPhone(SubscriptionManager.getPhoneId(subId));
+ Message response = getHandler().obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE);
+ phone.setPreferredNetworkType(networkMode, response);
} catch (Throwable t) {
Log.d(LOG_TAG, "error setting preferred network", t);
}
@@ -117,4 +128,23 @@ public class PhoneToggler extends BroadcastReceiver {
}
}
+ private class MyHandler extends Handler {
+ private static final int MESSAGE_SET_PREFERRED_NETWORK_TYPE = 0;
+
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MESSAGE_SET_PREFERRED_NETWORK_TYPE:
+ handleSetPreferredNetworkTypeResponse(msg);
+ break;
+ }
+ }
+
+ private void handleSetPreferredNetworkTypeResponse(Message msg) {
+ if (DBG) {
+ Log.e(LOG_TAG, "handleSetPreferredNetworkTypeResponse() called");
+ }
+ }
+ }
+
}
--
2.7.4

View File

@ -0,0 +1,26 @@
From 978d511140a6391ef82243fe6500e207697b9b41 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 18 Apr 2016 08:54:51 -0400
Subject: [PATCH] Implement MAC Randomization
Change-Id: I3276bfb674801572ab9ff286fb1b036253eaf409
---
rootdir/init.rc | 2 ++
1 file changed, 2 insertions(+)
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 78adacc..8cff499 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -559,6 +559,8 @@ on property:sys.sysctl.extra_free_kbytes=*
on property:sys.sysctl.tcp_def_init_rwnd=*
write /proc/sys/net/ipv4/tcp_default_init_rwnd ${sys.sysctl.tcp_def_init_rwnd}
+on property:persist.privacy.randomize_mac=*
+ write /proc/sys/net/core/randomize_mac ${persist.privacy.randomize_mac}
## Daemon processes to be run by init.
##
--
2.8.0

View File

@ -0,0 +1,47 @@
From 28fec2a2867a8a0fea386038bc366e630ac1ed4e Mon Sep 17 00:00:00 2001
From: Martin Brabham <optedoblivion@cyngn.com>
Date: Thu, 7 May 2015 11:22:13 -0700
Subject: [PATCH] DNSCrypt - Add sepolicy for dnscrypt proxy to run - Add
service entry to init.local.rc
Change-Id: Id2ee42738c10a7a024fcf25edc3a6cbe2fe0bbc8
---
prebuilt/common/etc/init.local.rc | 6 ++++++
sepolicy/dnscryptproxy.te | 8 ++++++++
2 files changed, 14 insertions(+)
create mode 100644 sepolicy/dnscryptproxy.te
diff --git a/prebuilt/common/etc/init.local.rc b/prebuilt/common/etc/init.local.rc
index 1f66b77..8042c29 100644
--- a/prebuilt/common/etc/init.local.rc
+++ b/prebuilt/common/etc/init.local.rc
@@ -128,6 +128,12 @@ on boot
# Persistent properties (only created if persist exists)
mkdir /persist/properties 0770 system system
+# For now default this to opendns until we modify the code to read a system propery
+# dnscrypt proxy
+service dnscrypt-proxy /system/xbin/dnscrypt-proxy
+ class main
+ disabled
+
# sysinit (/system/etc/init.d)
service sysinit /system/bin/sysinit
user root
diff --git a/sepolicy/dnscryptproxy.te b/sepolicy/dnscryptproxy.te
new file mode 100644
index 0000000..3f143c9
--- /dev/null
+++ b/sepolicy/dnscryptproxy.te
@@ -0,0 +1,8 @@
+allow init self:udp_socket { bind setopt write read };
+allow init port:udp_socket name_bind;
+allow init node:udp_socket node_bind;
+
+allow init self:tcp_socket { create ioctl setopt bind listen };
+allow init port:tcp_socket name_bind;
+allow init node:tcp_socket node_bind;
+
--
2.7.4

View File

@ -0,0 +1,25 @@
From a32d4f29bb1ed433326eebe496df7c3b5483e192 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Wed, 24 Feb 2016 09:05:13 -0500
Subject: [PATCH] Remove analytics
Change-Id: I44ad1e35e086eb6287ea1065a1d77474ca6c295a
---
.../vendor/cmsdk/packages/CMSettingsProvider/res/values/defaults.xml | 3 ---
1 file changed, 3 deletions(-)
diff --git a/overlay/common/vendor/cmsdk/packages/CMSettingsProvider/res/values/defaults.xml b/overlay/common/vendor/cmsdk/packages/CMSettingsProvider/res/values/defaults.xml
index eec242d..58fb154 100644
--- a/overlay/common/vendor/cmsdk/packages/CMSettingsProvider/res/values/defaults.xml
+++ b/overlay/common/vendor/cmsdk/packages/CMSettingsProvider/res/values/defaults.xml
@@ -24,7 +24,4 @@
<integer name="def_qs_quick_pulldown">1</integer>
<!-- Defaults for Secure -->
-
- <!-- Default for CMSettings.Secure.STATS_COLLECTION -->
- <bool name="def_stats_collection">true</bool>
</resources>
--
2.7.1

View File

@ -0,0 +1,27 @@
From 3698eabdc4057a2e977ffb4db60bffb1cea062fa Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sun, 19 Jun 2016 15:13:50 -0400
Subject: [PATCH] Bring back the custom wallpaper picker [5/5]
Change-Id: Icb52423c63206927b45b72f1d1785c3574f2c0d6
---
config/common.mk | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/config/common.mk b/config/common.mk
index 75191ba..c2a15ae 100644
--- a/config/common.mk
+++ b/config/common.mk
@@ -154,7 +154,8 @@ PRODUCT_PACKAGES += \
CMSettingsProvider \
ExactCalculator \
LiveLockScreenService \
- WeatherProvider
+ WeatherProvider \
+ WallpaperPicker
# Exchange support
PRODUCT_PACKAGES += \
--
2.7.4

View File

@ -0,0 +1,33 @@
From aceee7358fa39da71425c6db7fe6c984c846128a Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 8 Aug 2016 16:04:56 -0400
Subject: [PATCH] Add radio tile (2/2)
Change-Id: Iacc6ed7ce384d955ff2494e55c318e054b7ff206
---
sdk/src/java/org/cyanogenmod/internal/util/QSConstants.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sdk/src/java/org/cyanogenmod/internal/util/QSConstants.java b/sdk/src/java/org/cyanogenmod/internal/util/QSConstants.java
index c5e62eb..a2b5269 100644
--- a/sdk/src/java/org/cyanogenmod/internal/util/QSConstants.java
+++ b/sdk/src/java/org/cyanogenmod/internal/util/QSConstants.java
@@ -48,6 +48,7 @@ public class QSConstants {
public static final String TILE_SCREEN_TIMEOUT = "screen_timeout";
public static final String TILE_USB_TETHER = "usb_tether";
public static final String TILE_HEADS_UP = "heads_up";
+ public static final String TILE_RADIO_POWER = "radio_power";
public static final String TILE_AMBIENT_DISPLAY = "ambient_display";
public static final String TILE_SYNC = "sync";
public static final String TILE_BATTERY_SAVER = "battery_saver";
@@ -96,6 +97,7 @@ public class QSConstants {
STATIC_TILES_AVAILABLE.add(TILE_SCREEN_TIMEOUT);
STATIC_TILES_AVAILABLE.add(TILE_USB_TETHER);
STATIC_TILES_AVAILABLE.add(TILE_HEADS_UP);
+ STATIC_TILES_AVAILABLE.add(TILE_RADIO_POWER);
STATIC_TILES_AVAILABLE.add(TILE_AMBIENT_DISPLAY);
STATIC_TILES_AVAILABLE.add(TILE_SYNC);
STATIC_TILES_AVAILABLE.add(TILE_BATTERY_SAVER);
--
2.7.4

View File

@ -0,0 +1,135 @@
From b90e97cdb84542a787f1361633a662f57852d9d3 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sat, 2 Apr 2016 11:31:27 -0400
Subject: [PATCH] Remove analytics
Change-Id: I4aa2a69fd7eb68d9ab8a4ba426532944901f2322
---
host/migration/example-cm12.1-settings.txt | 3 +--
host/migration/src/CMSettings.java | 7 -------
packages/CMSettingsProvider/res/values/defaults.xml | 3 ---
.../src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java | 3 ---
.../cmsettings/tests/CMSettingsProviderDefaultsTest.java | 3 ---
sdk/src/java/cyanogenmod/providers/CMSettings.java | 13 -------------
6 files changed, 1 insertion(+), 31 deletions(-)
diff --git a/host/migration/example-cm12.1-settings.txt b/host/migration/example-cm12.1-settings.txt
index 7534be3..9f454aa 100644
--- a/host/migration/example-cm12.1-settings.txt
+++ b/host/migration/example-cm12.1-settings.txt
@@ -64,7 +64,6 @@ Row: 60 name=swap_volume_keys_on_rotation, type=s, value=0, type=s
Row: 61 name=status_bar_brightness_control, type=s, value=0, type=s
Row: 62 name=status_bar_notif_count, type=s, value=1, type=s
Row: 63 name=dev_force_show_navbar, type=s, value=0, type=s
-Row: 64 name=stats_collection, type=s, value=1, type=s
Row: 65 name=advanced_mode, type=s, value=1, type=s
Row: 66 name=default_theme_package, type=s, value=com.cyngn.hexo, type=s
Row: 67 name=default_theme_components, type=s, value=mods_overlays|mods_status_bar|mods_navigation_bar|mods_icons|mods_homescreen|mods_fonts, type=s
@@ -118,4 +117,4 @@ Row: 114 name=ring_home_button_behavior, type=s, value=1, type=s
Row: 115 name=show_alarm_icon, type=s, value=1, type=s
Row: 116 name=status_bar_am_pm, type=s, value=1, type=s
Row: 117 name=status_bar_quick_qs_pulldown, type=s, value=1, type=s
-Row: 118 name=t9_search_input_locale, type=s, value=enUS, type=s
\ No newline at end of file
+Row: 118 name=t9_search_input_locale, type=s, value=enUS, type=s
diff --git a/host/migration/src/CMSettings.java b/host/migration/src/CMSettings.java
index 0d57b0d..b4f5be9 100644
--- a/host/migration/src/CMSettings.java
+++ b/host/migration/src/CMSettings.java
@@ -833,12 +833,6 @@ public final class CMSettings {
public static final String QS_USE_MAIN_TILES = "sysui_qs_main_tiles";
/**
- * Global stats collection
- * @hide
- */
- public static final String STATS_COLLECTION = "stats_collection";
-
- /**
* Boolean value whether to link ringtone and notification volume
*
* @hide
@@ -1021,7 +1015,6 @@ public final class CMSettings {
CMSettings.Secure.DEV_FORCE_SHOW_NAVBAR,
CMSettings.Secure.KEYBOARD_BRIGHTNESS,
CMSettings.Secure.POWER_MENU_ACTIONS,
- CMSettings.Secure.STATS_COLLECTION,
CMSettings.Secure.QS_SHOW_BRIGHTNESS_SLIDER,
CMSettings.Secure.QS_TILES,
CMSettings.Secure.QS_USE_MAIN_TILES,
diff --git a/packages/CMSettingsProvider/res/values/defaults.xml b/packages/CMSettingsProvider/res/values/defaults.xml
index 5d590ad..916bb10 100644
--- a/packages/CMSettingsProvider/res/values/defaults.xml
+++ b/packages/CMSettingsProvider/res/values/defaults.xml
@@ -48,9 +48,6 @@
Comma-delimited, quick settings tiles. See QSConstants.java for a list of all available tiles
<string name="def_qs_tiles">wifi,bt,cell,airplane,rotation,flashlight,location,cast,hotspot,live_display</string> -->
- <!-- Default for CMSettings.Secure.STATS_COLLECTION -->
- <bool name="def_stats_collection">false</bool>
-
<!-- Default for CMSettings.System.STATUS_BAR_BATTERY_STYLE
* 0: Display the battery as icon in portrait mode
* 2: Display the battery as a circle
diff --git a/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java b/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java
index 98064af..fff68da 100644
--- a/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java
+++ b/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMDatabaseHelper.java
@@ -255,9 +255,6 @@ public class CMDatabaseHelper extends SQLiteOpenHelper{
loadBooleanSetting(stmt, CMSettings.Secure.QS_USE_MAIN_TILES,
R.bool.def_sysui_qs_main_tiles);
- loadBooleanSetting(stmt, CMSettings.Secure.STATS_COLLECTION,
- R.bool.def_stats_collection);
-
loadBooleanSetting(stmt, CMSettings.Secure.LOCKSCREEN_VISUALIZER_ENABLED,
R.bool.def_lockscreen_visualizer);
diff --git a/packages/CMSettingsProvider/tests/src/org/cyanogenmod/cmsettings/tests/CMSettingsProviderDefaultsTest.java b/packages/CMSettingsProvider/tests/src/org/cyanogenmod/cmsettings/tests/CMSettingsProviderDefaultsTest.java
index a2c4269..ff5583d 100644
--- a/packages/CMSettingsProvider/tests/src/org/cyanogenmod/cmsettings/tests/CMSettingsProviderDefaultsTest.java
+++ b/packages/CMSettingsProvider/tests/src/org/cyanogenmod/cmsettings/tests/CMSettingsProviderDefaultsTest.java
@@ -90,9 +90,6 @@ public class CMSettingsProviderDefaultsTest extends AndroidTestCase {
CMSettings.Secure.QS_USE_MAIN_TILES,
"R.bool.def_sysui_qs_main_tiles"));
SECURE_SETTINGS_DEFAULTS.add(new Setting(
- CMSettings.Secure.STATS_COLLECTION,
- "R.bool.def_stats_collection"));
- SECURE_SETTINGS_DEFAULTS.add(new Setting(
CMSettings.Secure.LOCKSCREEN_VISUALIZER_ENABLED,
"R.bool.def_lockscreen_visualizer"));
SECURE_SETTINGS_DEFAULTS.add(new Setting(
diff --git a/sdk/src/java/cyanogenmod/providers/CMSettings.java b/sdk/src/java/cyanogenmod/providers/CMSettings.java
index 47cc524..6675da8 100644
--- a/sdk/src/java/cyanogenmod/providers/CMSettings.java
+++ b/sdk/src/java/cyanogenmod/providers/CMSettings.java
@@ -2484,18 +2484,6 @@ public final class CMSettings {
public static final String QS_USE_MAIN_TILES = "sysui_qs_main_tiles";
/**
- * Global stats collection
- * @hide
- */
- public static final String STATS_COLLECTION = "stats_collection";
-
- /**
- * Whether the global stats collection setting has been successfully reported to server
- * @hide
- */
- public static final String STATS_COLLECTION_REPORTED = "stats_collection_reported";
-
- /**
* Whether newly installed apps should run with privacy guard by default
* @hide
*/
@@ -2724,7 +2712,6 @@ public final class CMSettings {
CMSettings.Secure.DEV_FORCE_SHOW_NAVBAR,
CMSettings.Secure.KEYBOARD_BRIGHTNESS,
CMSettings.Secure.POWER_MENU_ACTIONS,
- CMSettings.Secure.STATS_COLLECTION,
CMSettings.Secure.QS_SHOW_BRIGHTNESS_SLIDER,
CMSettings.Secure.QS_TILES,
CMSettings.Secure.QS_USE_MAIN_TILES,
--
2.8.0

View File

@ -0,0 +1,72 @@
From 1287da9da56cc8e074d7d2afed677e65cf77c720 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Mon, 17 Nov 2014 05:28:09 -0500
Subject: [PATCH] add MAC randomization
based on https://grsecurity.net/~spender/random_mac.diff
---
net/core/dev.c | 19 +++++++++++++++++++
net/core/sysctl_net_core.c | 10 ++++++++++
2 files changed, 29 insertions(+)
diff --git a/net/core/dev.c b/net/core/dev.c
index 70145dc..d662c0f 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -178,6 +178,7 @@
static DEFINE_SPINLOCK(ptype_lock);
static struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly;
static struct list_head ptype_all __read_mostly; /* Taps */
+int randomize_mac = 1;
/*
* The @dev_base_head list is protected by @dev_base_lock and the rtnl
@@ -4717,6 +4718,24 @@ int dev_change_flags(struct net_device *dev, unsigned int flags)
rtmsg_ifinfo(RTM_NEWLINK, dev, changes);
__dev_notify_flags(dev, old_flags);
+
+ if (randomize_mac && (changes & IFF_UP) && !(old_flags & IFF_UP)) {
+ /* randomize MAC whenever interface is brought up */
+ struct sockaddr sa;
+ unsigned int mac4;
+ unsigned short mac2;
+
+ mac4 = random32();
+ mac2 = random32();
+ memcpy(sa.sa_data, &mac4, sizeof(mac4));
+ memcpy((char *)sa.sa_data + sizeof(mac4), &mac2, sizeof(mac2));
+ if (!is_valid_ether_addr(sa.sa_data))
+ sa.sa_data[5] = 1;
+ sa.sa_data[0] &= 0xFC;
+ sa.sa_family = dev->type;
+ dev_set_mac_address(dev, &sa);
+ }
+
return ret;
}
EXPORT_SYMBOL(dev_change_flags);
diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c
index 0c28508..42b3ad3 100644
--- a/net/core/sysctl_net_core.c
+++ b/net/core/sysctl_net_core.c
@@ -84,9 +84,19 @@ static int rps_sock_flow_sysctl(ctl_table *table, int write,
}
#endif /* CONFIG_RPS */
+extern int randomize_mac;
+
static struct ctl_table net_core_table[] = {
#ifdef CONFIG_NET
{
+ .procname = "randomize_mac",
+ .data = &randomize_mac,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = proc_dointvec
+ },
+
+ {
.procname = "wmem_max",
.data = &sysctl_wmem_max,
.maxlen = sizeof(int),

View File

@ -0,0 +1,103 @@
From de2ba147b18528eda7ee943865f8569823fbf3f9 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Wed, 23 Nov 2016 16:04:50 -0500
Subject: [PATCH] Add optional automated signing
Change-Id: If5a888f12764c4928f5efbb2fda78f76fb445a2a
---
core/Makefile | 43 +++++++++++++++++++++++++++++++++++++------
1 file changed, 37 insertions(+), 6 deletions(-)
diff --git a/core/Makefile b/core/Makefile
index 1d6bff0..d65fd27 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -418,6 +418,11 @@ ifneq ($(OTA_PACKAGE_SIGNING_KEY),)
DEFAULT_KEY_CERT_PAIR := $(OTA_PACKAGE_SIGNING_KEY)
endif
+ifneq ($(SIGNING_KEY_DIR),)
+ KEY_CERT_DIR := $(SIGNING_KEY_DIR)
+ DEFAULT_KEY_CERT_PAIR := $(SIGNING_KEY_DIR)/releasekey
+endif
+
# Rules that need to be present for the all targets, even
# if they don't do anything.
.PHONY: systemimage
@@ -1030,11 +1035,15 @@ endif
# substitute other keys for this one.
OTA_PUBLIC_KEYS := $(DEFAULT_SYSTEM_DEV_CERTIFICATE).x509.pem
-ifneq ($(OTA_PACKAGE_SIGNING_KEY),)
- OTA_PUBLIC_KEYS := $(OTA_PACKAGE_SIGNING_KEY).x509.pem
- PRODUCT_EXTRA_RECOVERY_KEYS := $(DEFAULT_SYSTEM_DEV_CERTIFICATE)
+ifneq ($(SIGNING_KEY_DIR),)
+ OTA_PUBLIC_KEYS := $(SIGNING_KEY_DIR)/releasekey.x509.pem
+ PRODUCT_EXTRA_RECOVERY_KEYS += $(SIGNING_KEY_DIR)/extra
+else
+ ifneq ($(OTA_PACKAGE_SIGNING_KEY),)
+ OTA_PUBLIC_KEYS := $(OTA_PACKAGE_SIGNING_KEY).x509.pem
+ PRODUCT_EXTRA_RECOVERY_KEYS := $(DEFAULT_SYSTEM_DEV_CERTIFICATE)
+ endif
endif
-
# Generate a file containing the keys that will be read by the
# recovery binary.
RECOVERY_INSTALL_OTA_KEYS := \
@@ -1818,6 +1827,13 @@ $(BUILT_TARGET_FILES_PACKAGE): intermediates := $(intermediates)
$(BUILT_TARGET_FILES_PACKAGE): \
zip_root := $(intermediates)/$(name)
+SIGNED_TARGET_FILES_PACKAGE := $(intermediates)/signed-$(name).zip
+MAYBE_SIGNED_TARGET_FILES_PACKAGE := $(BUILT_TARGET_FILES_PACKAGE)
+
+ifneq ($(SIGNING_KEY_DIR),)
+ MAYBE_SIGNED_TARGET_FILES_PACKAGE := $(SIGNED_TARGET_FILES_PACKAGE)
+endif
+
# $(1): Directory to copy
# $(2): Location to copy it to
# The "ls -A" is to prevent "acp s/* d" from failing if s is empty.
@@ -2182,6 +2198,12 @@ else
OTA_FROM_TARGET_SCRIPT := $(TARGET_RELEASETOOL_OTA_FROM_TARGET_SCRIPT)
endif
+ifeq ($(TARGET_RELEASETOOL_SIGN_TARGET_SCRIPT),)
+ SIGN_TARGET_SCRIPT := ./build/tools/releasetools/sign_target_files_apks
+else
+ SIGN_TARGET_SCRIPT := $(TARGET_RELEASETOOL_SIGN_TARGET_SCRIPT)
+endif
+
ifeq ($(WITH_GMS),true)
$(INTERNAL_OTA_PACKAGE_TARGET): backuptool := false
else
@@ -2209,7 +2231,16 @@ ifneq ($(BLOCK_BASED_OTA),false)
$(INTERNAL_OTA_PACKAGE_TARGET): block_based := --block
endif
-$(INTERNAL_OTA_PACKAGE_TARGET): $(BUILT_TARGET_FILES_PACKAGE)
+$(SIGNED_TARGET_FILES_PACKAGE): $(BUILT_TARGET_FILES_PACKAGE) $(DISTTOOLS)
+ @echo "$(SIGN_TARGET_SCRIPT)" > $(PRODUCT_OUT)/sign_script_path
+ @echo -e ${CL_YLW}"Sign target files:"${CL_RST}" $@"
+ $(hide) $(SIGN_TARGET_SCRIPT) \
+ -d $(KEY_CERT_DIR) \
+ -o \
+ $(BUILT_TARGET_FILES_PACKAGE) \
+ $(SIGNED_TARGET_FILES_PACKAGE)
+
+$(INTERNAL_OTA_PACKAGE_TARGET): $(MAYBE_SIGNED_TARGET_FILES_PACKAGE) $(DISTTOOLS)
@echo "$(OTA_FROM_TARGET_SCRIPT)" > $(PRODUCT_OUT)/ota_script_path
@echo "$(override_device)" > $(PRODUCT_OUT)/ota_override_device
@echo "Package OTA: $@"
@@ -2221,7 +2252,7 @@ $(INTERNAL_OTA_PACKAGE_TARGET): $(BUILT_TARGET_FILES_PACKAGE)
--backup=$(backuptool) \
--override_device=$(override_device) $(override_prop) \
$(if $(OEM_OTA_CONFIG), -o $(OEM_OTA_CONFIG)) \
- $(BUILT_TARGET_FILES_PACKAGE) $@
+ $(MAYBE_SIGNED_TARGET_FILES_PACKAGE) $@
CM_TARGET_PACKAGE := $(PRODUCT_OUT)/cm-$(CM_VERSION).zip
--
2.9.3

View File

@ -0,0 +1,53 @@
From 4edf341b3b70c3bfe391dff53a7e63691c9e7bcb Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 21 Nov 2016 21:30:33 -0500
Subject: [PATCH] Enable LTE
Change-Id: I69afb82cc409bd2590b320f5b85636ee2f1de327
---
device.mk | 2 +-
overlay/frameworks/base/core/res/res/values/config.xml | 2 +-
overlay/packages/services/Telephony/res/values/config.xml | 3 +++
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/device.mk b/device.mk
index 1960be2..69fe0b8 100644
--- a/device.mk
+++ b/device.mk
@@ -234,7 +234,7 @@ PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
rild.libpath=/system/lib/libril-qc-qmi-1.so
PRODUCT_PROPERTY_OVERRIDES += \
- telephony.lteOnCdmaDevice=0
+ telephony.lteOnCdmaDevice=1
ifeq ($(findstring tiny, $(TARGET_PRODUCT)),)
PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index 6c68c1d..6febaf2 100644
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -231,7 +231,7 @@
Empty is viewed as "all". Only used on devices which
don't support RIL_REQUEST_GET_RADIO_CAPABILITY
format is UMTS|LTE|... -->
- <string translatable="false" name="config_radio_access_family">GSM|WCDMA</string>
+ <string translatable="false" name="config_radio_access_family">GPRS|EDGE|UMTS|HSDPA|HSUPA|HSPA|LTE|HSPAP|GSM|WCDMA</string>
<!-- Set to true to add links to Cell Broadcast app from Settings and MMS app. -->
<bool name="config_cellBroadcastAppLinks">true</bool>
diff --git a/overlay/packages/services/Telephony/res/values/config.xml b/overlay/packages/services/Telephony/res/values/config.xml
index af352a4..22c65ea 100644
--- a/overlay/packages/services/Telephony/res/values/config.xml
+++ b/overlay/packages/services/Telephony/res/values/config.xml
@@ -21,4 +21,7 @@
are routed through the android.media.AudioManager class (true) or through
the com.android.internal.telephony.Phone interface (false). -->
<bool name="send_mic_mute_to_AudioManager">true</bool>
+
+ <!-- Show enabled lte option for lte device -->
+ <bool name="config_enabled_lte" translatable="false">true</bool>
</resources>
--
2.9.3

View File

@ -0,0 +1,37 @@
From 65d11ac33d0a3da260668c6dd18e5d28fefb272e Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Wed, 23 Nov 2016 18:38:32 -0500
Subject: [PATCH] TWRP Support
Change-Id: Ib0a86923a40e21cddc1199141c70a7c776de3d1e
---
BoardConfig.mk | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/BoardConfig.mk b/BoardConfig.mk
index ec97bae..ecf5253 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -132,3 +132,19 @@ MALLOC_IMPL := dlmalloc
BOARD_HAS_NO_SELECT_BUTTON := true
BOARD_HARDWARE_CLASS := device/lge/mako/cmhw/
+
+#TWRP
+TW_THEME := portrait_hdpi
+RECOVERY_SDCARD_ON_DATA := true
+RECOVERY_GRAPHICS_USE_LINELENGTH := true
+BOARD_HAS_NO_REAL_SDCARD := true
+PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0
+TW_INCLUDE_JB_CRYPTO := true
+TW_FLASH_FROM_STORAGE := true
+TW_NO_USB_STORAGE := true
+TW_MAX_BRIGHTNESS := 255
+TW_BRIGHTNESS_PATH := /sys/class/leds/lcd-backlight/brightness
+TW_INTERNAL_STORAGE_PATH := "/data/media"
+TW_INTERNAL_STORAGE_MOUNT_POINT := "data"
+TW_EXTERNAL_STORAGE_PATH := "/usb-otg"
+TW_EXTERNAL_STORAGE_MOUNT_POINT := "usb-otg"
--
2.9.3

View File

@ -0,0 +1,37 @@
From 6fdf689f450e577750212ac5f0d3ffce50965651 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Thu, 17 Nov 2016 15:39:23 -0500
Subject: [PATCH] Fix build failure
Change-Id: I94282a3df32daa97992c17476b0eb3e8f21e2499
---
overlay/frameworks/base/core/res/res/values/config.xml | 6 ------
1 file changed, 6 deletions(-)
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index e0358e2..0b0549b 100644
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -421,9 +421,6 @@
format is UMTS|LTE|... -->
<string translatable="false" name="config_radio_access_family">GSM | WCDMA | LTE | CDMA | EVDO</string>
- <!-- Component name of the service providing geofence API support. -->
- <string name="config_geofenceProvider" translatable="false">com.qualcomm.location</string>
-
<string-array name="config_mobile_tcp_buffers">
<item>"lte:2097152,4194304,8388608,262144,524288,1048576"</item>
<item>"lte_ca:2097152,4194304,8388608,262144,524288,1048576"</item>
@@ -442,9 +439,6 @@
rmem_min,rmem_def,rmem_max,wmem_min,wmem_def,wmem_max -->
<string name="config_wifi_tcp_buffers" translatable="false">524288,2097152,4194304,262144,524288,1048576</string>
- <!-- Enable blur support -->
- <bool name="config_ui_blur_enabled">true</bool>
-
<!-- Boolean indicating if current platform supports BLE peripheral mode -->
<bool name="config_bluetooth_le_peripheral_mode_supported">true</bool>
--
2.9.3

View File

@ -0,0 +1,39 @@
From 9e22fca4c687d84ba84428788d55b356069e29c7 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Thu, 17 Nov 2016 15:40:05 -0500
Subject: [PATCH] Remove Sprint DM
Change-Id: I94d44bb4753cac72106f7c49997d69a0ec5556bd
---
proprietary-files.txt | 15 ---------------
1 file changed, 15 deletions(-)
diff --git a/proprietary-files.txt b/proprietary-files.txt
index f97d3e6..3675ce9 100644
--- a/proprietary-files.txt
+++ b/proprietary-files.txt
@@ -290,21 +290,6 @@ lib64/libqti-iop.so
vendor/lib/libqti-iop-client.so
vendor/lib64/libqti-iop-client.so
-# DM/Sprint
--app/DMConfigUpdateLight/DMConfigUpdateLight.apk
--app/HiddenMenuLight/HiddenMenuLight.apk
-lib/libdmengine.so
-lib/libdmjavaplugin.so
--priv-app/CQATest/CQATest.apk
--priv-app/ConnMO/ConnMO.apk
--priv-app/DCMO/DCMO.apk
--priv-app/DMService/DMService.apk
-lib/libdmengine.so:priv-app/DMService/lib/arm/libdmengine.so
-lib/libdmjavaplugin.so:priv-app/DMService/lib/arm/libdmjavaplugin.so
--priv-app/DiagMon/DiagMon.apk
--priv-app/LifetimeData/LifetimeData.apk
--priv-app/SprintDM/SprintDM.apk
-
# DRM
# TZBSP
bin/qseecomd
--
2.9.3

View File

@ -0,0 +1,24 @@
From 44299d2cda16b60235cc682988d59dd3dcd823a5 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Fri, 18 Nov 2016 02:21:47 -0500
Subject: [PATCH] Enable Dex-preopt
Change-Id: I7634ebac4af7a977cff21a6be83bbda11dc943f4
---
BoardConfig.mk | 3 +++
1 file changed, 3 insertions(+)
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 40022b4..250bbb5 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -182,3 +182,6 @@ TARGET_USES_WCNSS_MAC_ADDR_REV := true
WIFI_DRIVER_FW_PATH_STA := "sta"
WIFI_DRIVER_FW_PATH_AP := "ap"
WPA_SUPPLICANT_VERSION := VER_0_8_X
+
+#Dex pre-optimization
+WITH_DEXPREOPT := true
--
2.9.3

View File

@ -0,0 +1,68 @@
From 755b36c6f5e6feaac20112e0819299f63be3553d Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Fri, 18 Nov 2016 18:22:00 -0500
Subject: [PATCH] Remove Widevine and disable DRM server
Change-Id: I24d3ba704d00d85747d851a9a497dd577ad03b5f
---
Android.mk | 10 +---------
proprietary-files.txt | 2 --
system.prop | 2 +-
3 files changed, 2 insertions(+), 12 deletions(-)
diff --git a/Android.mk b/Android.mk
index a69917c..693cba1 100644
--- a/Android.mk
+++ b/Android.mk
@@ -52,14 +52,6 @@ $(IMS_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@rm -rf $@
$(hide) ln -sf /system/vendor/lib64/$(notdir $@) $@
-WV_IMAGES := widevine.b00 widevine.b01 widevine.b02 widevine.b03 widevine.mdt
-WV_SYMLINKS := $(addprefix $(TARGET_OUT_ETC)/firmware/,$(notdir $(WV_IMAGES)))
-$(WV_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
- @echo "Widevine firmware link: $@"
- @mkdir -p $(dir $@)
- @rm -rf $@
- $(hide) ln -sf /firmware/image/$(notdir $@) $@
-
FIRMWARE_FILES := firmware fsg
FIRMWARE_SYMLINKS := $(addprefix $(TARGET_OUT)/rfs/msm/mpss/readonly/,$(notdir $(FIRMWARE_FILES)))
$(FIRMWARE_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@@ -68,6 +60,6 @@ $(FIRMWARE_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@rm -rf $@
$(hide) ln -sf /$(notdir $@) $@
-ALL_DEFAULT_INSTALLED_MODULES += $(PERSIST_WCNSS) $(WCNSS_CFG_INI) $(IMS_SYMLINKS) $(WV_SYMLINKS) $(FIRMWARE_SYMLINKS)
+ALL_DEFAULT_INSTALLED_MODULES += $(PERSIST_WCNSS) $(WCNSS_CFG_INI) $(IMS_SYMLINKS) $(FIRMWARE_SYMLINKS)
endif
diff --git a/proprietary-files.txt b/proprietary-files.txt
index 3675ce9..45dd63b 100644
--- a/proprietary-files.txt
+++ b/proprietary-files.txt
@@ -293,8 +293,6 @@ vendor/lib64/libqti-iop-client.so
# DRM
# TZBSP
bin/qseecomd
-etc/permissions/com.google.widevine.software.drm.xml
-framework/com.google.widevine.software.drm.jar
lib/hw/keystore.qcom.so
lib64/hw/keystore.qcom.so
vendor/lib/libdrmfs.so
diff --git a/system.prop b/system.prop
index 6b1967c..4124bd4 100644
--- a/system.prop
+++ b/system.prop
@@ -56,7 +56,7 @@ dalvik.vm.dex2oat-threads=2
dalvik.vm.image-dex2oat-threads=4
# DRM
-drm.service.enabled=true
+drm.service.enabled=false
# FM
ro.fm.transmitter=false
--
2.9.3

View File

@ -0,0 +1,82 @@
From b433f4cfbd38a8f4ff4ef5251113c21b648f30cf Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 21 Nov 2016 02:28:14 -0500
Subject: [PATCH] Add dm-verity support
Change-Id: I6e17bf595c735a19515d1c3080b075ef3a98f6e8
---
device.mk | 5 +++++
rootdir/fstab-verity.qcom | 23 +++++++++++++++++++++++
rootdir/init.qcom.rc | 6 ++++++
3 files changed, 34 insertions(+)
create mode 100644 rootdir/fstab-verity.qcom
diff --git a/device.mk b/device.mk
index cfb3322..dc5b8ee 100644
--- a/device.mk
+++ b/device.mk
@@ -240,3 +240,8 @@ PRODUCT_PACKAGES += \
libwpa_client \
wpa_supplicant \
wpa_supplicant.conf
+
+#Verity
+PRODUCT_COPY_FILES += device/motorola/clark/rootdir/fstab-verity.qcom:root/fstab.qcom
+PRODUCT_SYSTEM_VERITY_PARTITION := /dev/block/platform/soc.0/f9824900.sdhci/by-name/system
+$(call inherit-product, build/target/product/verity.mk)
diff --git a/rootdir/fstab-verity.qcom b/rootdir/fstab-verity.qcom
new file mode 100644
index 0000000..685e6ee
--- /dev/null
+++ b/rootdir/fstab-verity.qcom
@@ -0,0 +1,23 @@
+# Android fstab file.
+# The filesystem that contains the filesystem checker binary (typically /system) cannot
+# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
+
+#TODO: Add 'check' as fs_mgr_flags with data partition.
+# Currently we dont have e2fsck compiled. So fs check would failed.
+
+#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
+/dev/block/bootdevice/by-name/boot /boot emmc defaults defaults
+/dev/block/bootdevice/by-name/recovery /recovery emmc defaults defaults
+/dev/block/bootdevice/by-name/system /system ext4 ro,barrier=1 wait,verify=/dev/block/bootdevice/by-name/metadata
+/dev/block/bootdevice/by-name/userdata /data f2fs rw,nosuid,nodev,noatime,nodiratime,inline_xattr,inline_data,data_flush wait,check,formattable,encryptable=/dev/block/bootdevice/by-name/metadata
+/dev/block/bootdevice/by-name/userdata /data ext4 rw,nosuid,nodev,noatime,nodiratime,noauto_da_alloc,nobarrier,journal_async_commit wait,check,formattable,encryptable=/dev/block/bootdevice/by-name/metadata
+/dev/block/bootdevice/by-name/cache /cache f2fs rw,nosuid,nodev,noatime,nodiratime,inline_xattr,flush_merge,data_flush wait,check
+/dev/block/bootdevice/by-name/cache /cache ext4 rw,noatime,nosuid,nodev,barrier=1,data=ordered,journal_async_commit wait,check,formattable
+/dev/block/bootdevice/by-name/fsg /fsg ext4 ro,nosuid,nodev,barrier=0,context=u:object_r:fsg_file:s0 wait
+/dev/block/bootdevice/by-name/persist /persist ext4 nosuid,nodev,barrier=1,defcontext=u:object_r:persist_file:s0 wait,notrim
+/dev/block/bootdevice/by-name/modem /firmware ext4 ro,nosuid,nodev,context=u:object_r:firmware_file:s0 wait,notrim
+/dev/block/bootdevice/by-name/bluetooth /bt_firmware ext4 ro,nosuid,nodev,context=u:object_r:bt_firmware_file:s0 wait,notrim
+/dev/block/bootdevice/by-name/misc /misc emmc defaults defaults
+/devices/soc.0/f98a4900.sdhci/mmc_host/* auto auto defaults wait,voldmanaged=sdcard1:auto,encryptable=userdata
+/devices/*/xhci-hcd.0.auto/usb* auto auto defaults voldmanaged=usb:auto
+#/dev/block/zram0 none swap defaults zramsize=536870912,zramstreams=4,notrim
diff --git a/rootdir/init.qcom.rc b/rootdir/init.qcom.rc
index 88b3e38..bc804cc 100755
--- a/rootdir/init.qcom.rc
+++ b/rootdir/init.qcom.rc
@@ -6,6 +6,9 @@ on early-init
mount debugfs debugfs /sys/kernel/debug
on init
+ # Load persistent dm-verity state
+ verity_load_state
+
# Symbols required for motorola blobs
export LD_SHIM_LIBS /system/lib/libjustshoot.so|libshim_camera.so:/system/lib/libjscore.so|libshim_camera.so
@@ -150,6 +153,9 @@ on boot
symlink /firmware/image/modem_pr/mbn_ota /data/misc/radio/modem_config
write /data/misc/radio/copy_complete 1
+ # Update dm-verity state and set partition.*.verified properties
+ verity_update_state
+
on post-fs
mkdir /persist/camera 02755 mot_tcmd mot_tcmd
mkdir /persist/camera/ledcal 0755 camera mot_tcmd
--
2.9.3

View File

@ -0,0 +1,28 @@
From 5f99ec4ec40c3a07a4ebb662603b8a1c52437ccc Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 21 Nov 2016 02:45:59 -0500
Subject: [PATCH] Enable optional FBE
Change-Id: I6ae0d43b3159c91d80bd99108f4492254e07e8d3
---
rootdir/fstab-verity.qcom | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/rootdir/fstab-verity.qcom b/rootdir/fstab-verity.qcom
index 685e6ee..b281f9c 100644
--- a/rootdir/fstab-verity.qcom
+++ b/rootdir/fstab-verity.qcom
@@ -9,8 +9,8 @@
/dev/block/bootdevice/by-name/boot /boot emmc defaults defaults
/dev/block/bootdevice/by-name/recovery /recovery emmc defaults defaults
/dev/block/bootdevice/by-name/system /system ext4 ro,barrier=1 wait,verify=/dev/block/bootdevice/by-name/metadata
-/dev/block/bootdevice/by-name/userdata /data f2fs rw,nosuid,nodev,noatime,nodiratime,inline_xattr,inline_data,data_flush wait,check,formattable,encryptable=/dev/block/bootdevice/by-name/metadata
-/dev/block/bootdevice/by-name/userdata /data ext4 rw,nosuid,nodev,noatime,nodiratime,noauto_da_alloc,nobarrier,journal_async_commit wait,check,formattable,encryptable=/dev/block/bootdevice/by-name/metadata
+/dev/block/bootdevice/by-name/userdata /data f2fs rw,nosuid,nodev,noatime,nodiratime,inline_xattr,inline_data,data_flush wait,check,formattable,forcefdeorfbe=/dev/block/bootdevice/by-name/metadata
+/dev/block/bootdevice/by-name/userdata /data ext4 rw,nosuid,nodev,noatime,nodiratime,noauto_da_alloc,nobarrier,journal_async_commit wait,check,formattable,forcefdeorfbe=/dev/block/bootdevice/by-name/metadata
/dev/block/bootdevice/by-name/cache /cache f2fs rw,nosuid,nodev,noatime,nodiratime,inline_xattr,flush_merge,data_flush wait,check
/dev/block/bootdevice/by-name/cache /cache ext4 rw,noatime,nosuid,nodev,barrier=1,data=ordered,journal_async_commit wait,check,formattable
/dev/block/bootdevice/by-name/fsg /fsg ext4 ro,nosuid,nodev,barrier=0,context=u:object_r:fsg_file:s0 wait
--
2.9.3

View File

@ -0,0 +1,32 @@
From aa91f3c0beab9dbb78041540b59558631f63e30e Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 28 Nov 2016 07:04:58 -0500
Subject: [PATCH] TWRP Support
Change-Id: I9c9caf279898f7f6cab5f2da81715e0a5440ca17
---
BoardConfig.mk | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 250bbb5..9be8f1c 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -185,3 +185,14 @@ WPA_SUPPLICANT_VERSION := VER_0_8_X
#Dex pre-optimization
WITH_DEXPREOPT := true
+
+# TWRP
+TW_THEME := portrait_hdpi
+DEVICE_RESOLUTION := 1440x2560
+TW_INCLUDE_L_CRYPTO := true
+TW_TARGET_USES_QCOM_BSP := true
+TW_NEW_ION_HEAP := true
+TW_INCLUDE_CRYPTO := true
+TW_SCREEN_BLANK_ON_BOOT := true
+TARGET_RECOVERY_QCOM_RTC_FIX := true
+TARGET_RECOVERY_FSTAB = $(DEVICE_PATH)/rootdir/fstab.qcom
--
2.9.3

View File

@ -0,0 +1,48 @@
From 5debdc1dd573384f7a1556a6db2d6960bd7259c5 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Thu, 17 Nov 2016 16:35:14 -0500
Subject: [PATCH] Remove Widevine
Change-Id: I531feb804092b596af47e75530fa88b5c85f628a
---
Android.mk | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/Android.mk b/Android.mk
index dde02c7..08fc62e 100644
--- a/Android.mk
+++ b/Android.mk
@@ -124,30 +124,6 @@ $(MC_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
ALL_DEFAULT_INSTALLED_MODULES += $(MC_SYMLINKS)
-PLAYREADY_IMAGES := \
- playread.b00 playread.b01 playread.b02 playread.b03 playread.mdt
-
-PLAYREADY_SYMLINKS := $(addprefix $(TARGET_OUT_ETC)/firmware/,$(notdir $(PLAYREADY_IMAGES)))
-$(PLAYREADY_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
- @echo "Playready firmware link: $@"
- @mkdir -p $(dir $@)
- @rm -rf $@
- $(hide) ln -sf /firmware/image/$(notdir $@) $@
-
-ALL_DEFAULT_INSTALLED_MODULES += $(PLAYREADY_SYMLINKS)
-
-WV_IMAGES := \
- widevine.b00 widevine.b01 widevine.b02 widevine.b03 widevine.mdt
-
-WV_SYMLINKS := $(addprefix $(TARGET_OUT_ETC)/firmware/,$(notdir $(WV_IMAGES)))
-$(WV_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
- @echo "Widevine firmware link: $@"
- @mkdir -p $(dir $@)
- @rm -rf $@
- $(hide) ln -sf /firmware/image/$(notdir $@) $@
-
-ALL_DEFAULT_INSTALLED_MODULES += $(WV_SYMLINKS)
-
# Create links for audcal data files
$(shell mkdir -p $(TARGET_OUT)/etc/firmware/wcd9320; \
ln -sf /data/misc/audio/wcd9320_anc.bin \
--
2.9.3

View File

@ -0,0 +1,25 @@
From e12aa9baa815d0279aab7756edc4e9c130f0bbff Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Fri, 18 Nov 2016 02:23:46 -0500
Subject: [PATCH] Enable Dex-preopt
Change-Id: Id0ee761ca93a2a4cab0d40959610520b193d0528
---
BoardConfig.mk | 3 +++
1 file changed, 3 insertions(+)
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 35bde5d..ff476f7 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -197,4 +197,7 @@ TARGET_LDPRELOAD := libNimsWrap.so
endif
endif
+#Dex pre-optimization
+WITH_DEXPREOPT := true
+
-include vendor/oneplus/bacon/BoardConfigVendor.mk
--
2.9.3

View File

@ -0,0 +1,27 @@
From d06526ec844bf89e77c518dbcd0deb331babf8dd Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sun, 18 Dec 2016 09:30:44 -0500
Subject: [PATCH] Enable secure_delete by default
Change-Id: Ic2604b78f57998c001df9737ab0fdec2298122c4
---
dist/Android.mk | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dist/Android.mk b/dist/Android.mk
index bf277d2..8113e32 100644
--- a/dist/Android.mk
+++ b/dist/Android.mk
@@ -27,7 +27,8 @@ minimal_sqlite_flags := \
-DSQLITE_OMIT_BUILTIN_TEST \
-DSQLITE_OMIT_COMPILEOPTION_DIAGS \
-DSQLITE_OMIT_LOAD_EXTENSION \
- -DSQLITE_DEFAULT_FILE_PERMISSIONS=0600
+ -DSQLITE_DEFAULT_FILE_PERMISSIONS=0600 \
+ -DSQLITE_SECURE_DELETE
device_sqlite_flags := $(minimal_sqlite_flags) \
-DSQLITE_ENABLE_ICU \
--
2.9.3

View File

@ -0,0 +1,27 @@
From 4211c35467725729615cce8fe3cd25f0de58da2a Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Fri, 18 Nov 2016 12:30:43 -0500
Subject: [PATCH] Allow location providers outside of /system
Change-Id: I405981605aeb00a4482d7191905963fc97a5d424
---
services/core/java/com/android/server/ServiceWatcher.java | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/services/core/java/com/android/server/ServiceWatcher.java b/services/core/java/com/android/server/ServiceWatcher.java
index 383e25a..31ae918 100644
--- a/services/core/java/com/android/server/ServiceWatcher.java
+++ b/services/core/java/com/android/server/ServiceWatcher.java
@@ -92,8 +92,7 @@ public class ServiceWatcher implements ServiceConnection {
String pkg = initialPackageNames.get(i);
try {
HashSet<Signature> set = new HashSet<Signature>();
- Signature[] sigs = pm.getPackageInfo(pkg, PackageManager.MATCH_SYSTEM_ONLY
- | PackageManager.GET_SIGNATURES).signatures;
+ Signature[] sigs = pm.getPackageInfo(pkg, PackageManager.GET_SIGNATURES).signatures;
set.addAll(Arrays.asList(sigs));
sigSets.add(set);
} catch (NameNotFoundException e) {
--
2.9.3

View File

@ -0,0 +1,49 @@
From 4921beaf996a89c9a56b98f213401ceeb2a23082 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Fri, 18 Nov 2016 14:52:59 -0500
Subject: [PATCH] Shutdown after 5 failed unlock attempts
Change-Id: Icc23122e5a25b756872fe132cd0e93684e8bafca
---
.../Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java | 5 +++++
packages/SystemUI/AndroidManifest.xml | 1 +
2 files changed, 6 insertions(+)
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
index aaff265..865956f 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
@@ -22,6 +22,7 @@ import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.os.PowerManager;
import android.os.UserHandle;
import android.util.AttributeSet;
import android.util.Log;
@@ -366,6 +367,10 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe
if (!enableTimesCounter && (timeoutMs > 0)) {
showTimeoutDialog(timeoutMs);
}
+ if (failedAttempts >=5) {
+ final PowerManager powerManager = mContext.getSystemService(PowerManager.class);
+ powerManager.shutdown(false, false);
+ }
}
/**
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 2248baf..b13b0fd 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -112,6 +112,7 @@
<uses-permission android:name="android.permission.TRUST_LISTENER" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.RESET_FINGERPRINT_LOCKOUT" />
+ <uses-permission android:name="android.permission.REBOOT" />
<!-- Needed for WallpaperManager.clear in ImageWallpaper.updateWallpaperLocked -->
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
--
2.9.3

View File

@ -0,0 +1,97 @@
From 44cda6f5e47c33e91980ae35c8bc6d88e4d3763c Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Thu, 24 Nov 2016 13:01:30 -0500
Subject: [PATCH] Allow packages to spoof their signature
Change-Id: I9acf48c7607804890d0d0fa7fe30bb36779cb40d
---
core/res/AndroidManifest.xml | 7 +++++++
core/res/res/values/config.xml | 2 ++
core/res/res/values/strings.xml | 5 +++++
.../android/server/pm/PackageManagerService.java | 23 ++++++++++++++++++++--
4 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index b624305..43eec1f 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1926,6 +1926,13 @@
android:description="@string/permdesc_getPackageSize"
android:protectionLevel="normal" />
+ <!-- @hide Allows an application to change the package signature as
+ seen by applications -->
+ <permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_fakePackageSignature"
+ android:description="@string/permdesc_fakePackageSignature" />
+
<!-- @deprecated No longer useful, see
{@link android.content.pm.PackageManager#addPackageToPreferred}
for details. -->
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 4a95f6e..702e02a 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1383,6 +1383,8 @@
<string-array name="config_locationProviderPackageNames" translatable="false">
<!-- The standard AOSP fused location provider -->
<item>com.android.location.fused</item>
+ <!-- The (faked) microg fused location provider -->
+ <item>com.google.android.gms</item>
</string-array>
<!-- This string array can be overriden to enable test location providers initially. -->
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 345d377..26814f1 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -660,6 +660,11 @@
<!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permlab_fakePackageSignature">Spoof package signature</string>
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permdesc_fakePackageSignature">Allows the app to pretend to be a different app. Malicious applications might be able to use this to access private application data. Grant this permission with caution only!</string>
+
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_statusBar">disable or modify status bar</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index d450288..9194e69 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -3141,8 +3141,27 @@ public class PackageManagerService extends IPackageManager.Stub {
? Collections.<String>emptySet() : permissionsState.getPermissions(userId);
final PackageUserState state = ps.readUserState(userId);
- return PackageParser.generatePackageInfo(p, gids, flags,
- ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId);
+ return mayFakeSignature(p, PackageParser.generatePackageInfo(p, gids, flags,
+ ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId),
+ permissions);
+ }
+
+ private PackageInfo mayFakeSignature(PackageParser.Package p, PackageInfo pi,
+ Set<String> permissions) {
+ try {
+ if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")
+ && p.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1
+ && p.mAppMetaData != null) {
+ String sig = p.mAppMetaData.getString("fake-signature");
+ if (sig != null) {
+ pi.signatures = new Signature[] {new Signature(sig)};
+ }
+ }
+ } catch (Throwable t) {
+ // We should never die because of any failures, this is system code!
+ Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t);
+ }
+ return pi;
}
@Override
--
2.9.3

View File

@ -0,0 +1,54 @@
From c46d22ad7a92e72f4ba9ba3a36e8dbdb566f4a07 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sun, 18 Dec 2016 09:36:07 -0500
Subject: [PATCH] Hide passwords by default
Change-Id: I95e26ff6219f6209d5b9fc7ae92a453b53b0aa76
---
core/java/android/text/method/TextKeyListener.java | 2 +-
core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java | 2 +-
packages/Keyguard/src/com/android/keyguard/PasswordTextView.java | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/core/java/android/text/method/TextKeyListener.java b/core/java/android/text/method/TextKeyListener.java
index 994f3d7..b2ac244 100644
--- a/core/java/android/text/method/TextKeyListener.java
+++ b/core/java/android/text/method/TextKeyListener.java
@@ -291,7 +291,7 @@ public class TextKeyListener extends BaseKeyListener implements SpanWatcher {
boolean cap = System.getInt(resolver, System.TEXT_AUTO_CAPS, 1) > 0;
boolean text = System.getInt(resolver, System.TEXT_AUTO_REPLACE, 1) > 0;
boolean period = System.getInt(resolver, System.TEXT_AUTO_PUNCTUATE, 1) > 0;
- boolean pw = System.getInt(resolver, System.TEXT_SHOW_PASSWORD, 1) > 0;
+ boolean pw = System.getInt(resolver, System.TEXT_SHOW_PASSWORD, 0) > 0;
mPrefs = (cap ? AUTO_CAP : 0) |
(text ? AUTO_TEXT : 0) |
diff --git a/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java b/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
index b2c9dc5..dc5b7f9 100644
--- a/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
+++ b/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
@@ -159,7 +159,7 @@ public class PasswordEntryKeyboardHelper implements OnKeyboardActionListener {
mKeyboardState = KEYBOARD_STATE_NORMAL;
final boolean visiblePassword = Settings.System.getInt(
mContext.getContentResolver(),
- Settings.System.TEXT_SHOW_PASSWORD, 1) != 0;
+ Settings.System.TEXT_SHOW_PASSWORD, 0) != 0;
final boolean enablePreview = false; // TODO: grab from configuration
mKeyboardView.setPreviewEnabled(visiblePassword && enablePreview);
break;
diff --git a/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java b/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
index 48737f9..3f4c381 100644
--- a/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
+++ b/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
@@ -134,7 +134,7 @@ public class PasswordTextView extends View {
mDrawPaint.setColor(0xffffffff);
mDrawPaint.setTypeface(Typeface.create("sans-serif-light", 0));
mShowPassword = Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.TEXT_SHOW_PASSWORD, 1) == 1;
+ Settings.System.TEXT_SHOW_PASSWORD, 0) == 1;
mAppearInterpolator = AnimationUtils.loadInterpolator(mContext,
android.R.interpolator.linear_out_slow_in);
mDisappearInterpolator = AnimationUtils.loadInterpolator(mContext,
--
2.9.3

View File

@ -0,0 +1,26 @@
From 6c9c966622adbfe0ad92ed90d90f93a782c99f02 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sun, 18 Dec 2016 19:10:20 -0500
Subject: [PATCH] Harden signature spoofing
Change-Id: I31e2a20923fff883c87fa6425408971657d3d7b3
---
core/res/AndroidManifest.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 486999b..182acbf 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1937,7 +1937,7 @@
<!-- @hide Allows an application to change the package signature as
seen by applications -->
<permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
- android:protectionLevel="dangerous"
+ android:protectionLevel="signature"
android:label="@string/permlab_fakePackageSignature"
android:description="@string/permdesc_fakePackageSignature" />
--
2.9.3

View File

@ -0,0 +1,757 @@
From ec5d8918e9d3149ce489900f48d6e6ebd2fd5031 Mon Sep 17 00:00:00 2001
From: Paul Reioux <reioux@gmail.com>
Date: Sun, 20 Oct 2013 22:30:36 -0500
Subject: [PATCH 1/5] Voltage Control: initial voltage control for MSM
Snapdragon 800 SOC
Signed-off-by: Paul Reioux <reioux@gmail.com>
Signed-off-by: flar2 <asegaert@gmail.com>
---
arch/arm/mach-msm/Kconfig | 6 +++++
arch/arm/mach-msm/acpuclock-krait.c | 48 +++++++++++++++++++++++++++++++++++++
2 files changed, 54 insertions(+)
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
index ba5a33c..44db2ca 100644
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -1918,6 +1918,12 @@ config MSM_CPU_FREQ_MIN
endif # CPU_FREQ_MSM
+config CPU_VOLTAGE_TABLE
+ bool "Enable CPU Voltage Table via sysfs for adjustements"
+ default n
+ help
+ Krait User Votlage Control
+
config MSM_AVS_HW
bool "Enable Adaptive Voltage Scaling (AVS)"
default n
diff --git a/arch/arm/mach-msm/acpuclock-krait.c b/arch/arm/mach-msm/acpuclock-krait.c
index 84e2fc1..c7eceb1 100644
--- a/arch/arm/mach-msm/acpuclock-krait.c
+++ b/arch/arm/mach-msm/acpuclock-krait.c
@@ -937,6 +937,54 @@ static void __init bus_init(const struct l2_level *l2_level)
dev_err(drv.dev, "initial bandwidth req failed (%d)\n", ret);
}
+#ifdef CONFIG_CPU_VOLTAGE_TABLE
+
+#define HFPLL_MIN_VDD 800000
+#define HFPLL_MAX_VDD 1350000
+
+ssize_t acpuclk_get_vdd_levels_str(char *buf) {
+
+ int i, len = 0;
+
+ if (buf) {
+ mutex_lock(&driver_lock);
+
+ for (i = 0; drv.acpu_freq_tbl[i].speed.khz; i++) {
+ /* updated to use uv required by 8x60 architecture - faux123 */
+ len += sprintf(buf + len, "%8lu: %8d\n", drv.acpu_freq_tbl[i].speed.khz,
+ drv.acpu_freq_tbl[i].vdd_core );
+ }
+
+ mutex_unlock(&driver_lock);
+ }
+ return len;
+}
+
+/* updated to use uv required by 8x60 architecture - faux123 */
+void acpuclk_set_vdd(unsigned int khz, int vdd_uv) {
+
+ int i;
+ unsigned int new_vdd_uv;
+
+ mutex_lock(&driver_lock);
+
+ for (i = 0; drv.acpu_freq_tbl[i].speed.khz; i++) {
+ if (khz == 0)
+ new_vdd_uv = min(max((unsigned int)(drv.acpu_freq_tbl[i].vdd_core + vdd_uv),
+ (unsigned int)HFPLL_MIN_VDD), (unsigned int)HFPLL_MAX_VDD);
+ else if ( drv.acpu_freq_tbl[i].speed.khz == khz)
+ new_vdd_uv = min(max((unsigned int)vdd_uv,
+ (unsigned int)HFPLL_MIN_VDD), (unsigned int)HFPLL_MAX_VDD);
+ else
+ continue;
+
+ drv.acpu_freq_tbl[i].vdd_core = new_vdd_uv;
+ }
+ pr_warn("faux123: user voltage table modified!\n");
+ mutex_unlock(&driver_lock);
+}
+#endif /* CONFIG_CPU_VOTALGE_TABLE */
+
#ifdef CONFIG_CPU_FREQ_MSM
static struct cpufreq_frequency_table freq_table[NR_CPUS][35];
--
2.9.3
From 1e4ac53ff15efeaf4cb3998b9ba009095d582413 Mon Sep 17 00:00:00 2001
From: flar2 <asegaert@gmail.com>
Date: Sat, 9 Nov 2013 00:17:33 -0500
Subject: [PATCH 2/5] Increase voltage limits
Signed-off-by: flar2 <asegaert@gmail.com>
---
arch/arm/boot/dts/msm8974-regulator.dtsi | 8 ++++----
arch/arm/mach-msm/acpuclock-8974.c | 8 ++++----
arch/arm/mach-msm/acpuclock-krait.c | 4 ++--
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/arch/arm/boot/dts/msm8974-regulator.dtsi b/arch/arm/boot/dts/msm8974-regulator.dtsi
index 9de41f4..6a38980 100644
--- a/arch/arm/boot/dts/msm8974-regulator.dtsi
+++ b/arch/arm/boot/dts/msm8974-regulator.dtsi
@@ -477,7 +477,7 @@
<0xf908a800 0x1000>; /* APCS_ALIAS0_KPSS_MDD */
reg-names = "acs", "mdd";
regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1100000>;
+ regulator-max-microvolt = <1200000>;
qcom,headroom-voltage = <150000>;
qcom,retention-voltage = <675000>;
qcom,ldo-default-voltage = <750000>;
@@ -493,7 +493,7 @@
<0xf909a800 0x1000>; /* APCS_ALIAS1_KPSS_MDD */
reg-names = "acs", "mdd";
regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1100000>;
+ regulator-max-microvolt = <1200000>;
qcom,headroom-voltage = <150000>;
qcom,retention-voltage = <675000>;
qcom,ldo-default-voltage = <750000>;
@@ -509,7 +509,7 @@
<0xf90aa800 0x1000>; /* APCS_ALIAS2_KPSS_MDD */
reg-names = "acs", "mdd";
regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1100000>;
+ regulator-max-microvolt = <1200000>;
qcom,headroom-voltage = <150000>;
qcom,retention-voltage = <675000>;
qcom,ldo-default-voltage = <750000>;
@@ -525,7 +525,7 @@
<0xf90ba800 0x1000>; /* APCS_ALIAS3_KPSS_MDD */
reg-names = "acs", "mdd";
regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1100000>;
+ regulator-max-microvolt = <1200000>;
qcom,headroom-voltage = <150000>;
qcom,retention-voltage = <675000>;
qcom,ldo-default-voltage = <750000>;
diff --git a/arch/arm/mach-msm/acpuclock-8974.c b/arch/arm/mach-msm/acpuclock-8974.c
index 694d783..8b7d74e 100644
--- a/arch/arm/mach-msm/acpuclock-8974.c
+++ b/arch/arm/mach-msm/acpuclock-8974.c
@@ -55,7 +55,7 @@ static struct scalable scalable[] __initdata = {
.hfpll_phys_base = 0xF908A000,
.l2cpmr_iaddr = 0x4501,
.sec_clk_sel = 2,
- .vreg[VREG_CORE] = { "krait0", 1100000 },
+ .vreg[VREG_CORE] = { "krait0", 1200000 },
.vreg[VREG_MEM] = { "krait0_mem", 1050000 },
.vreg[VREG_DIG] = { "krait0_dig", LVL_HIGH },
.vreg[VREG_HFPLL_A] = { "krait0_hfpll", 1800000 },
@@ -64,7 +64,7 @@ static struct scalable scalable[] __initdata = {
.hfpll_phys_base = 0xF909A000,
.l2cpmr_iaddr = 0x5501,
.sec_clk_sel = 2,
- .vreg[VREG_CORE] = { "krait1", 1100000 },
+ .vreg[VREG_CORE] = { "krait1", 1200000 },
.vreg[VREG_MEM] = { "krait1_mem", 1050000 },
.vreg[VREG_DIG] = { "krait1_dig", LVL_HIGH },
.vreg[VREG_HFPLL_A] = { "krait1_hfpll", 1800000 },
@@ -73,7 +73,7 @@ static struct scalable scalable[] __initdata = {
.hfpll_phys_base = 0xF90AA000,
.l2cpmr_iaddr = 0x6501,
.sec_clk_sel = 2,
- .vreg[VREG_CORE] = { "krait2", 1100000 },
+ .vreg[VREG_CORE] = { "krait2", 1200000 },
.vreg[VREG_MEM] = { "krait2_mem", 1050000 },
.vreg[VREG_DIG] = { "krait2_dig", LVL_HIGH },
.vreg[VREG_HFPLL_A] = { "krait2_hfpll", 1800000 },
@@ -82,7 +82,7 @@ static struct scalable scalable[] __initdata = {
.hfpll_phys_base = 0xF90BA000,
.l2cpmr_iaddr = 0x7501,
.sec_clk_sel = 2,
- .vreg[VREG_CORE] = { "krait3", 1100000 },
+ .vreg[VREG_CORE] = { "krait3", 1200000 },
.vreg[VREG_MEM] = { "krait3_mem", 1050000 },
.vreg[VREG_DIG] = { "krait3_dig", LVL_HIGH },
.vreg[VREG_HFPLL_A] = { "krait3_hfpll", 1800000 },
diff --git a/arch/arm/mach-msm/acpuclock-krait.c b/arch/arm/mach-msm/acpuclock-krait.c
index c7eceb1..2211ad3 100644
--- a/arch/arm/mach-msm/acpuclock-krait.c
+++ b/arch/arm/mach-msm/acpuclock-krait.c
@@ -939,8 +939,8 @@ static void __init bus_init(const struct l2_level *l2_level)
#ifdef CONFIG_CPU_VOLTAGE_TABLE
-#define HFPLL_MIN_VDD 800000
-#define HFPLL_MAX_VDD 1350000
+#define HFPLL_MIN_VDD 500000
+#define HFPLL_MAX_VDD 1200000
ssize_t acpuclk_get_vdd_levels_str(char *buf) {
--
2.9.3
From 28d7063d0b5a45d328633e4a59d20ac148f1fadd Mon Sep 17 00:00:00 2001
From: flar2 <asegaert@gmail.com>
Date: Sat, 9 Nov 2013 01:27:36 -0500
Subject: [PATCH 3/5] CPU overclocking
Signed-off-by: flar2 <asegaert@gmail.com>
---
arch/arm/mach-msm/acpuclock-8974.c | 42 ++++++++++
arch/arm/mach-msm/acpuclock-krait.c | 148 +++++++++++++++++++++++++++++++++++-
2 files changed, 189 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-msm/acpuclock-8974.c b/arch/arm/mach-msm/acpuclock-8974.c
index 8b7d74e..cb878d9 100644
--- a/arch/arm/mach-msm/acpuclock-8974.c
+++ b/arch/arm/mach-msm/acpuclock-8974.c
@@ -710,6 +710,12 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs0[] __initdata = {
{ 0, { 2112000, HFPLL, 1, 110 }, L2(19), 1070000, 627 },
{ 0, { 2188800, HFPLL, 1, 114 }, L2(19), 1085000, 659 },
{ 1, { 2265600, HFPLL, 1, 118 }, L2(19), 1100000, 691 },
+ { 1, { 2342400, HFPLL, 1, 122 }, L2(19), 1115000, 714 },
+ { 1, { 2419200, HFPLL, 1, 126 }, L2(19), 1130000, 738 },
+ { 1, { 2496000, HFPLL, 1, 130 }, L2(19), 1145000, 761 },
+ { 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1160000, 784 },
+ { 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1175000, 808 },
+ { 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1195000, 831 },
{ 0, { 0 } }
};
@@ -741,6 +747,12 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs1[] __initdata = {
{ 0, { 2112000, HFPLL, 1, 110 }, L2(19), 1045000, 627 },
{ 0, { 2188800, HFPLL, 1, 114 }, L2(19), 1060000, 659 },
{ 1, { 2265600, HFPLL, 1, 118 }, L2(19), 1075000, 691 },
+ { 1, { 2342400, HFPLL, 1, 122 }, L2(19), 1090000, 714 },
+ { 1, { 2419200, HFPLL, 1, 126 }, L2(19), 1105000, 738 },
+ { 1, { 2496000, HFPLL, 1, 130 }, L2(19), 1120000, 761 },
+ { 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1135000, 784 },
+ { 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1150000, 808 },
+ { 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1165000, 831 },
{ 0, { 0 } }
};
@@ -772,6 +784,12 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs2[] __initdata = {
{ 0, { 2112000, HFPLL, 1, 110 }, L2(19), 1020000, 627 },
{ 0, { 2188800, HFPLL, 1, 114 }, L2(19), 1035000, 659 },
{ 1, { 2265600, HFPLL, 1, 118 }, L2(19), 1050000, 691 },
+ { 1, { 2342400, HFPLL, 1, 122 }, L2(19), 1065000, 714 },
+ { 1, { 2419200, HFPLL, 1, 126 }, L2(19), 1080000, 738 },
+ { 1, { 2496000, HFPLL, 1, 130 }, L2(19), 1095000, 761 },
+ { 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1110000, 784 },
+ { 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1125000, 808 },
+ { 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1140000, 831 },
{ 0, { 0 } }
};
@@ -803,6 +821,12 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs3[] __initdata = {
{ 0, { 2112000, HFPLL, 1, 110 }, L2(19), 995000, 627 },
{ 0, { 2188800, HFPLL, 1, 114 }, L2(19), 1010000, 659 },
{ 1, { 2265600, HFPLL, 1, 118 }, L2(19), 1025000, 691 },
+ { 1, { 2342400, HFPLL, 1, 122 }, L2(19), 1040000, 714 },
+ { 1, { 2419200, HFPLL, 1, 126 }, L2(19), 1055000, 738 },
+ { 1, { 2496000, HFPLL, 1, 130 }, L2(19), 1070000, 761 },
+ { 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1085000, 784 },
+ { 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1100000, 808 },
+ { 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1115000, 831 },
{ 0, { 0 } }
};
@@ -834,6 +858,12 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs4[] __initdata = {
{ 0, { 2112000, HFPLL, 1, 110 }, L2(19), 975000, 627 },
{ 0, { 2188800, HFPLL, 1, 114 }, L2(19), 985000, 659 },
{ 1, { 2265600, HFPLL, 1, 118 }, L2(19), 1000000, 691 },
+ { 1, { 2342400, HFPLL, 1, 122 }, L2(19), 1015000, 714 },
+ { 1, { 2419200, HFPLL, 1, 126 }, L2(19), 1030000, 738 },
+ { 1, { 2496000, HFPLL, 1, 130 }, L2(19), 1045000, 761 },
+ { 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1060000, 784 },
+ { 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1075000, 808 },
+ { 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1090000, 831 },
{ 0, { 0 } }
};
@@ -865,6 +895,12 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs5[] __initdata = {
{ 0, { 2112000, HFPLL, 1, 110 }, L2(19), 955000, 627 },
{ 0, { 2188800, HFPLL, 1, 114 }, L2(19), 965000, 659 },
{ 1, { 2265600, HFPLL, 1, 118 }, L2(19), 975000, 691 },
+ { 1, { 2342400, HFPLL, 1, 122 }, L2(19), 990000, 714 },
+ { 1, { 2419200, HFPLL, 1, 126 }, L2(19), 1005000, 738 },
+ { 1, { 2496000, HFPLL, 1, 130 }, L2(19), 1020000, 761 },
+ { 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1035000, 784 },
+ { 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1050000, 808 },
+ { 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1065000, 831 },
{ 0, { 0 } }
};
@@ -896,6 +932,12 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs6[] __initdata = {
{ 0, { 2112000, HFPLL, 1, 110 }, L2(19), 930000, 627 },
{ 0, { 2188800, HFPLL, 1, 114 }, L2(19), 940000, 659 },
{ 1, { 2265600, HFPLL, 1, 118 }, L2(19), 950000, 691 },
+ { 1, { 2342400, HFPLL, 1, 122 }, L2(19), 960000, 714 },
+ { 1, { 2419200, HFPLL, 1, 126 }, L2(19), 975000, 738 },
+ { 1, { 2496000, HFPLL, 1, 130 }, L2(19), 990000, 761 },
+ { 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1005000, 784 },
+ { 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1020000, 808 },
+ { 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1035000, 831 },
{ 0, { 0 } }
};
diff --git a/arch/arm/mach-msm/acpuclock-krait.c b/arch/arm/mach-msm/acpuclock-krait.c
index 2211ad3..bcd3e44 100644
--- a/arch/arm/mach-msm/acpuclock-krait.c
+++ b/arch/arm/mach-msm/acpuclock-krait.c
@@ -45,6 +45,113 @@
#define PRI_SRC_SEL_HFPLL 1
#define PRI_SRC_SEL_HFPLL_DIV2 2
+
+/** elementalx defs **/
+static int uv_bin = 2;
+static uint32_t arg_max_oc0 = 2265600;
+static uint32_t arg_max_oc1 = 2265600;
+static uint32_t arg_max_oc2 = 2265600;
+static uint32_t arg_max_oc3 = 2265600;
+
+int pvs_number = 0;
+module_param(pvs_number, int, 0755);
+
+/* boot arg max_oc */
+static int __init cpufreq_read_arg_max_oc0(char *max_oc0)
+{
+ unsigned long ui_khz;
+ int err;
+ err = strict_strtoul(max_oc0, 0, &ui_khz);
+ if (err) {
+ arg_max_oc0 = 2265600;
+ printk(KERN_INFO "[elementalx]: max_oc0='%i'\n", arg_max_oc0);
+ return 1;
+ }
+
+ arg_max_oc0 = ui_khz;
+
+ return 0;
+}
+__setup("max_oc0=", cpufreq_read_arg_max_oc0);
+
+static int __init cpufreq_read_arg_max_oc1(char *max_oc1)
+{
+ unsigned long ui_khz;
+ int err;
+ err = strict_strtoul(max_oc1, 0, &ui_khz);
+ if (err) {
+ arg_max_oc1 = 2265600;
+ printk(KERN_INFO "[elementalx]: max_oc1='%i'\n", arg_max_oc1);
+ return 1;
+ }
+
+ arg_max_oc1 = ui_khz;
+
+ return 0;
+}
+__setup("max_oc1=", cpufreq_read_arg_max_oc1);
+
+static int __init cpufreq_read_arg_max_oc2(char *max_oc2)
+{
+ unsigned long ui_khz;
+ int err;
+ err = strict_strtoul(max_oc2, 0, &ui_khz);
+ if (err) {
+ arg_max_oc2 = 2265600;
+ printk(KERN_INFO "[elementalx]: max_oc2='%i'\n", arg_max_oc2);
+ return 1;
+ }
+
+ arg_max_oc2 = ui_khz;
+
+ return 0;
+}
+__setup("max_oc2=", cpufreq_read_arg_max_oc2);
+
+static int __init cpufreq_read_arg_max_oc3(char *max_oc3)
+{
+ unsigned long ui_khz;
+ int err;
+ err = strict_strtoul(max_oc3, 0, &ui_khz);
+ if (err) {
+ arg_max_oc3 = 2265600;
+ printk(KERN_INFO "[elementalx]: max_oc3='%i'\n", arg_max_oc3);
+ return 1;
+ }
+
+ arg_max_oc3 = ui_khz;
+
+ return 0;
+}
+__setup("max_oc3=", cpufreq_read_arg_max_oc3);
+
+static int __init get_uv_level(char *vdd_uv)
+{
+ if (strcmp(vdd_uv, "0") == 0) {
+ uv_bin = 0;
+ } else if (strcmp(vdd_uv, "1") == 0) {
+ uv_bin = 1;
+ } else if (strcmp(vdd_uv, "2") == 0) {
+ uv_bin = 2;
+ } else if (strcmp(vdd_uv, "3") == 0) {
+ uv_bin = 3;
+ } else if (strcmp(vdd_uv, "4") == 0) {
+ uv_bin = 4;
+ } else if (strcmp(vdd_uv, "5") == 0) {
+ uv_bin = 5;
+ } else if (strcmp(vdd_uv, "6") == 0) {
+ uv_bin = 6;
+ } else {
+ uv_bin = 0;
+ }
+ return 0;
+}
+
+__setup("vdd_uv=", get_uv_level);
+
+/** end elementalx defs **/
+
+
static DEFINE_MUTEX(driver_lock);
static DEFINE_SPINLOCK(l2_lock);
@@ -992,13 +1099,14 @@ static void __init cpufreq_table_init(void)
{
int cpu;
int freq_cnt = 0;
+ uint32_t limit_max_oc[4] = {arg_max_oc0, arg_max_oc1, arg_max_oc2, arg_max_oc3};
for_each_possible_cpu(cpu) {
int i;
/* Construct the freq_table tables from acpu_freq_tbl. */
for (i = 0, freq_cnt = 0; drv.acpu_freq_tbl[i].speed.khz != 0
&& freq_cnt < ARRAY_SIZE(*freq_table); i++) {
- if (drv.acpu_freq_tbl[i].use_for_scaling) {
+ if (drv.acpu_freq_tbl[i].speed.khz <= limit_max_oc[cpu]) {
freq_table[cpu][freq_cnt].index = freq_cnt;
freq_table[cpu][freq_cnt].frequency
= drv.acpu_freq_tbl[i].speed.khz;
@@ -1109,6 +1217,39 @@ static void __init krait_apply_vmin(struct acpu_level *tbl)
}
}
+static void apply_undervolting(void)
+{
+ if (uv_bin == 6) {
+ drv.acpu_freq_tbl[0].vdd_core = 625000;
+ printk(KERN_INFO "[elementalx]: min_voltage='%i'\n", drv.acpu_freq_tbl[0].vdd_core );
+ }
+
+ if (uv_bin == 5) {
+ drv.acpu_freq_tbl[0].vdd_core = 650000;
+ printk(KERN_INFO "[elementalx]: min_voltage='%i'\n", drv.acpu_freq_tbl[0].vdd_core );
+ }
+
+ if (uv_bin == 4) {
+ drv.acpu_freq_tbl[0].vdd_core = 675000;
+ printk(KERN_INFO "[elementalx]: min_voltage='%i'\n", drv.acpu_freq_tbl[0].vdd_core );
+ }
+
+ if (uv_bin == 3) {
+ drv.acpu_freq_tbl[0].vdd_core = 700000;
+ printk(KERN_INFO "[elementalx]: min_voltage='%i'\n", drv.acpu_freq_tbl[0].vdd_core );
+ }
+
+ if (uv_bin == 2) {
+ drv.acpu_freq_tbl[0].vdd_core = 725000;
+ printk(KERN_INFO "[elementalx]: min_voltage='%i'\n", drv.acpu_freq_tbl[0].vdd_core );
+ }
+
+ if (uv_bin == 1) {
+ drv.acpu_freq_tbl[0].vdd_core = 750000;
+ printk(KERN_INFO "[elementalx]: min_voltage='%i'\n", drv.acpu_freq_tbl[0].vdd_core );
+ }
+}
+
void __init get_krait_bin_format_a(void __iomem *base, struct bin_info *bin)
{
u32 pte_efuse = readl_relaxed(base);
@@ -1143,6 +1284,8 @@ void __init get_krait_bin_format_b(void __iomem *base, struct bin_info *bin)
}
bin->speed_valid = true;
+ pvs_number = bin->pvs;
+
/* Check PVS_BLOW_STATUS */
pte_efuse = readl_relaxed(base + 0x4);
bin->pvs_valid = !!(pte_efuse & BIT(21));
@@ -1229,6 +1372,9 @@ static void __init hw_init(void)
if (krait_needs_vmin())
krait_apply_vmin(drv.acpu_freq_tbl);
+ if (uv_bin)
+ apply_undervolting();
+
l2->hfpll_base = ioremap(l2->hfpll_phys_base, SZ_32);
BUG_ON(!l2->hfpll_base);
--
2.9.3
From cbc2f6c8893c773d4dbdf9d5f538f6b44a02baa4 Mon Sep 17 00:00:00 2001
From: flar2 <asegaert@gmail.com>
Date: Sat, 9 Nov 2013 08:43:31 -0500
Subject: [PATCH 4/5] L2 cache and bus bandwidth overclocking
Signed-off-by: flar2 <asegaert@gmail.com>
---
arch/arm/mach-msm/acpuclock-8974.c | 46 +++++++++++++++++++++++++++++++++++++
arch/arm/mach-msm/acpuclock-krait.c | 2 +-
2 files changed, 47 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-msm/acpuclock-8974.c b/arch/arm/mach-msm/acpuclock-8974.c
index cb878d9..933bd0e 100644
--- a/arch/arm/mach-msm/acpuclock-8974.c
+++ b/arch/arm/mach-msm/acpuclock-8974.c
@@ -28,6 +28,8 @@
#define LVL_NOM RPM_REGULATOR_CORNER_NORMAL
#define LVL_HIGH RPM_REGULATOR_CORNER_SUPER_TURBO
+static int opt_bin = 0;
+
static struct hfpll_data hfpll_data __initdata = {
.mode_offset = 0x00,
.l_offset = 0x04,
@@ -257,6 +259,7 @@ static struct msm_bus_paths bw_level_tbl_v2[] __initdata = {
[6] = BW_MBPS(4912), /* At least 614 MHz on bus. */
[7] = BW_MBPS(6400), /* At least 800 MHz on bus. */
[8] = BW_MBPS(7448), /* At least 931 MHz on bus. */
+ [9] = BW_MBPS(8000), /* At least 1000 MHz on bus. */
};
static struct l2_level l2_freq_tbl_v2[] __initdata = {
@@ -283,6 +286,30 @@ static struct l2_level l2_freq_tbl_v2[] __initdata = {
{ }
};
+static struct l2_level l2_freq_tbl_v2_elementalx[] __initdata = {
+ [0] = { { 300000, PLL_0, 0, 0 }, LVL_LOW, 950000, 0 },
+ [1] = { { 345600, HFPLL, 2, 36 }, LVL_LOW, 950000, 1 },
+ [2] = { { 422400, HFPLL, 2, 44 }, LVL_LOW, 950000, 2 },
+ [3] = { { 499200, HFPLL, 2, 52 }, LVL_LOW, 950000, 3 },
+ [4] = { { 576000, HFPLL, 1, 30 }, LVL_LOW, 950000, 4 },
+ [5] = { { 652800, HFPLL, 1, 34 }, LVL_NOM, 950000, 4 },
+ [6] = { { 729600, HFPLL, 1, 38 }, LVL_NOM, 950000, 4 },
+ [7] = { { 806400, HFPLL, 1, 42 }, LVL_NOM, 950000, 4 },
+ [8] = { { 883200, HFPLL, 1, 46 }, LVL_NOM, 950000, 5 },
+ [9] = { { 960000, HFPLL, 1, 50 }, LVL_NOM, 950000, 5 },
+ [10] = { { 1036800, HFPLL, 1, 54 }, LVL_NOM, 950000, 5 },
+ [11] = { { 1113600, HFPLL, 1, 58 }, LVL_HIGH, 1050000, 6 },
+ [12] = { { 1190400, HFPLL, 1, 62 }, LVL_HIGH, 1050000, 6 },
+ [13] = { { 1267200, HFPLL, 1, 66 }, LVL_HIGH, 1050000, 6 },
+ [14] = { { 1344000, HFPLL, 1, 70 }, LVL_HIGH, 1050000, 6 },
+ [15] = { { 1420800, HFPLL, 1, 74 }, LVL_HIGH, 1050000, 6 },
+ [16] = { { 1497600, HFPLL, 1, 78 }, LVL_HIGH, 1050000, 6 },
+ [17] = { { 1574400, HFPLL, 1, 82 }, LVL_HIGH, 1050000, 7 },
+ [18] = { { 1651200, HFPLL, 1, 86 }, LVL_HIGH, 1050000, 7 },
+ [19] = { { 1804800, HFPLL, 1, 94 }, LVL_HIGH, 1050000, 9 },
+ { }
+};
+
static struct acpu_level acpu_freq_tbl_2g_pvs0[] __initdata = {
{ 1, { 300000, PLL_0, 0, 0 }, L2(0), 815000, 73 },
{ 0, { 345600, HFPLL, 2, 36 }, L2(1), 825000, 85 },
@@ -1003,6 +1030,20 @@ static struct acpuclk_krait_params acpuclk_8974_params __initdata = {
.stby_khz = 300000,
};
+static int __init get_opt_level(char *l2_opt)
+{
+ if (strcmp(l2_opt, "0") == 0) {
+ opt_bin = 0;
+ } else if (strcmp(l2_opt, "1") == 0) {
+ opt_bin = 1;
+ } else {
+ opt_bin = 0;
+ }
+ return 0;
+}
+
+__setup("l2_opt=", get_opt_level);
+
static void __init apply_v1_l2_workaround(void)
{
static struct l2_level resticted_l2_tbl[] __initdata = {
@@ -1042,6 +1083,11 @@ static int __init acpuclk_8974_probe(struct platform_device *pdev)
apply_v1_l2_workaround();
}
+ if (opt_bin == 1) {
+ acpuclk_8974_params.l2_freq_tbl = l2_freq_tbl_v2_elementalx;
+ acpuclk_8974_params.l2_freq_tbl_size = sizeof(l2_freq_tbl_v2_elementalx);
+ }
+
return acpuclk_krait_init(&pdev->dev, &acpuclk_8974_params);
}
diff --git a/arch/arm/mach-msm/acpuclock-krait.c b/arch/arm/mach-msm/acpuclock-krait.c
index bcd3e44..a1c8fbb 100644
--- a/arch/arm/mach-msm/acpuclock-krait.c
+++ b/arch/arm/mach-msm/acpuclock-krait.c
@@ -47,7 +47,7 @@
/** elementalx defs **/
-static int uv_bin = 2;
+static int uv_bin = 0;
static uint32_t arg_max_oc0 = 2265600;
static uint32_t arg_max_oc1 = 2265600;
static uint32_t arg_max_oc2 = 2265600;
--
2.9.3
From bfd08d2e2a997ac4f5b6e8353be663472643b746 Mon Sep 17 00:00:00 2001
From: flar2 <asegaert@gmail.com>
Date: Mon, 11 Nov 2013 00:42:12 -0500
Subject: [PATCH 5/5] More overclocking options
Signed-off-by: flar2 <asegaert@gmail.com>
---
arch/arm/mach-msm/acpuclock-8974.c | 50 ++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/arch/arm/mach-msm/acpuclock-8974.c b/arch/arm/mach-msm/acpuclock-8974.c
index 933bd0e..b436816 100644
--- a/arch/arm/mach-msm/acpuclock-8974.c
+++ b/arch/arm/mach-msm/acpuclock-8974.c
@@ -310,6 +310,29 @@ static struct l2_level l2_freq_tbl_v2_elementalx[] __initdata = {
{ }
};
+static struct l2_level l2_freq_tbl_v2_ultra[] __initdata = {
+ [0] = { { 300000, PLL_0, 0, 0 }, LVL_LOW, 950000, 0 },
+ [1] = { { 345600, HFPLL, 2, 36 }, LVL_LOW, 950000, 1 },
+ [2] = { { 422400, HFPLL, 2, 44 }, LVL_LOW, 950000, 2 },
+ [3] = { { 499200, HFPLL, 2, 52 }, LVL_LOW, 950000, 3 },
+ [4] = { { 576000, HFPLL, 1, 30 }, LVL_LOW, 950000, 4 },
+ [5] = { { 652800, HFPLL, 1, 34 }, LVL_NOM, 950000, 4 },
+ [6] = { { 729600, HFPLL, 1, 38 }, LVL_NOM, 950000, 4 },
+ [7] = { { 806400, HFPLL, 1, 42 }, LVL_NOM, 950000, 4 },
+ [8] = { { 883200, HFPLL, 1, 46 }, LVL_NOM, 950000, 5 },
+ [9] = { { 960000, HFPLL, 1, 50 }, LVL_NOM, 950000, 5 },
+ [10] = { { 1036800, HFPLL, 1, 54 }, LVL_NOM, 950000, 5 },
+ [11] = { { 1113600, HFPLL, 1, 58 }, LVL_HIGH, 1050000, 6 },
+ [12] = { { 1190400, HFPLL, 1, 62 }, LVL_HIGH, 1050000, 6 },
+ [13] = { { 1267200, HFPLL, 1, 66 }, LVL_HIGH, 1050000, 6 },
+ [14] = { { 1344000, HFPLL, 1, 70 }, LVL_HIGH, 1050000, 6 },
+ [15] = { { 1420800, HFPLL, 1, 74 }, LVL_HIGH, 1050000, 6 },
+ [16] = { { 1497600, HFPLL, 1, 78 }, LVL_HIGH, 1050000, 6 },
+ [17] = { { 1574400, HFPLL, 1, 82 }, LVL_HIGH, 1050000, 7 },
+ [18] = { { 1651200, HFPLL, 1, 86 }, LVL_HIGH, 1050000, 7 },
+ [19] = { { 1920000, HFPLL, 1, 100 }, LVL_HIGH, 1050000, 9 },
+ { }
+};
static struct acpu_level acpu_freq_tbl_2g_pvs0[] __initdata = {
{ 1, { 300000, PLL_0, 0, 0 }, L2(0), 815000, 73 },
{ 0, { 345600, HFPLL, 2, 36 }, L2(1), 825000, 85 },
@@ -743,6 +766,9 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs0[] __initdata = {
{ 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1160000, 784 },
{ 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1175000, 808 },
{ 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1195000, 831 },
+ { 1, { 2803200, HFPLL, 1, 146 }, L2(19), 1195000, 854 },
+ { 1, { 2880000, HFPLL, 1, 150 }, L2(19), 1195000, 876 },
+ { 1, { 2956800, HFPLL, 1, 154 }, L2(19), 1195000, 897 },
{ 0, { 0 } }
};
@@ -780,6 +806,9 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs1[] __initdata = {
{ 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1135000, 784 },
{ 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1150000, 808 },
{ 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1165000, 831 },
+ { 1, { 2803200, HFPLL, 1, 146 }, L2(19), 1180000, 854 },
+ { 1, { 2880000, HFPLL, 1, 150 }, L2(19), 1195000, 876 },
+ { 1, { 2956800, HFPLL, 1, 154 }, L2(19), 1195000, 897 },
{ 0, { 0 } }
};
@@ -817,6 +846,9 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs2[] __initdata = {
{ 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1110000, 784 },
{ 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1125000, 808 },
{ 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1140000, 831 },
+ { 1, { 2803200, HFPLL, 1, 146 }, L2(19), 1165000, 854 },
+ { 1, { 2880000, HFPLL, 1, 150 }, L2(19), 1180000, 876 },
+ { 1, { 2956800, HFPLL, 1, 154 }, L2(19), 1195000, 897 },
{ 0, { 0 } }
};
@@ -854,6 +886,9 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs3[] __initdata = {
{ 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1085000, 784 },
{ 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1100000, 808 },
{ 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1115000, 831 },
+ { 1, { 2803200, HFPLL, 1, 146 }, L2(19), 1130000, 854 },
+ { 1, { 2880000, HFPLL, 1, 150 }, L2(19), 1145000, 876 },
+ { 1, { 2956800, HFPLL, 1, 154 }, L2(19), 1160000, 897 },
{ 0, { 0 } }
};
@@ -891,6 +926,9 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs4[] __initdata = {
{ 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1060000, 784 },
{ 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1075000, 808 },
{ 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1090000, 831 },
+ { 1, { 2803200, HFPLL, 1, 146 }, L2(19), 1105000, 854 },
+ { 1, { 2880000, HFPLL, 1, 150 }, L2(19), 1120000, 876 },
+ { 1, { 2956800, HFPLL, 1, 154 }, L2(19), 1135000, 897 },
{ 0, { 0 } }
};
@@ -928,6 +966,9 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs5[] __initdata = {
{ 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1035000, 784 },
{ 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1050000, 808 },
{ 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1065000, 831 },
+ { 1, { 2803200, HFPLL, 1, 146 }, L2(19), 1080000, 854 },
+ { 1, { 2880000, HFPLL, 1, 150 }, L2(19), 1095000, 876 },
+ { 1, { 2956800, HFPLL, 1, 154 }, L2(19), 1110000, 897 },
{ 0, { 0 } }
};
@@ -965,6 +1006,9 @@ static struct acpu_level acpu_freq_tbl_2p3g_pvs6[] __initdata = {
{ 1, { 2572800, HFPLL, 1, 134 }, L2(19), 1005000, 784 },
{ 1, { 2649600, HFPLL, 1, 138 }, L2(19), 1020000, 808 },
{ 1, { 2726400, HFPLL, 1, 142 }, L2(19), 1035000, 831 },
+ { 1, { 2803200, HFPLL, 1, 146 }, L2(19), 1050000, 854 },
+ { 1, { 2880000, HFPLL, 1, 150 }, L2(19), 1065000, 876 },
+ { 1, { 2956800, HFPLL, 1, 154 }, L2(19), 1080000, 897 },
{ 0, { 0 } }
};
@@ -1036,6 +1080,8 @@ static int __init get_opt_level(char *l2_opt)
opt_bin = 0;
} else if (strcmp(l2_opt, "1") == 0) {
opt_bin = 1;
+ } else if (strcmp(l2_opt, "2") == 0) {
+ opt_bin = 2;
} else {
opt_bin = 0;
}
@@ -1087,6 +1133,10 @@ static int __init acpuclk_8974_probe(struct platform_device *pdev)
acpuclk_8974_params.l2_freq_tbl = l2_freq_tbl_v2_elementalx;
acpuclk_8974_params.l2_freq_tbl_size = sizeof(l2_freq_tbl_v2_elementalx);
}
+ if (opt_bin == 2) {
+ acpuclk_8974_params.l2_freq_tbl = l2_freq_tbl_v2_ultra;
+ acpuclk_8974_params.l2_freq_tbl_size = sizeof(l2_freq_tbl_v2_ultra);
+ }
return acpuclk_krait_init(&pdev->dev, &acpuclk_8974_params);
}
--
2.9.3

View File

@ -0,0 +1,609 @@
From 92d396b53cbdf91a7b61a857ca335f39cdb0f8bb Mon Sep 17 00:00:00 2001
From: anarkia1976 <stefano.villa1976@gmail.com>
Date: Sun, 12 Jan 2014 20:26:27 +0100
Subject: [PATCH 1/4] msm: cpu: overclock: added low (162Mhz) and high
(1944Mhz) cpu
---
arch/arm/mach-msm/Kconfig | 12 +++++
arch/arm/mach-msm/acpuclock-8064.c | 91 +++++++++++++++++++++++++++++++++++++
arch/arm/mach-msm/acpuclock-krait.c | 8 +++-
arch/arm/mach-msm/msm_dcvs.c | 5 ++
4 files changed, 115 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
index 5f37d1d..b5ab505 100644
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -1634,6 +1634,18 @@ config MSM_CPU_FREQ_MIN
endif # CPU_FREQ_MSM
+config LOW_CPUCLOCKS
+ bool "Enable ultra low CPU clocks"
+ default n
+ help
+ Ultra low cpu frequencies enabled for CPU and L2 Cache
+
+config CPU_OVERCLOCK
+ bool "Enable CPU Overclocking option"
+ default n
+ help
+ Krait overclocking up to 1.9 GHz
+
config MSM_AVS_HW
bool "Enable Adaptive Voltage Scaling (AVS)"
default n
diff --git a/arch/arm/mach-msm/acpuclock-8064.c b/arch/arm/mach-msm/acpuclock-8064.c
index 8262946..f40edd3 100644
--- a/arch/arm/mach-msm/acpuclock-8064.c
+++ b/arch/arm/mach-msm/acpuclock-8064.c
@@ -47,7 +47,11 @@ static struct scalable scalable[] __initdata = {
.aux_clk_sel = 3,
.sec_clk_sel = 2,
.l2cpmr_iaddr = 0x4501,
+#ifdef CONFIG_CPU_OVERCLOCK
+ .vreg[VREG_CORE] = { "krait0", 1450000 },
+#else
.vreg[VREG_CORE] = { "krait0", 1300000 },
+#endif
.vreg[VREG_MEM] = { "krait0_mem", 1150000 },
.vreg[VREG_DIG] = { "krait0_dig", 1150000 },
.vreg[VREG_HFPLL_A] = { "krait0_hfpll", 1800000 },
@@ -58,7 +62,11 @@ static struct scalable scalable[] __initdata = {
.aux_clk_sel = 3,
.sec_clk_sel = 2,
.l2cpmr_iaddr = 0x5501,
+#ifdef CONFIG_CPU_OVERCLOCK
+ .vreg[VREG_CORE] = { "krait1", 1450000 },
+#else
.vreg[VREG_CORE] = { "krait1", 1300000 },
+#endif
.vreg[VREG_MEM] = { "krait1_mem", 1150000 },
.vreg[VREG_DIG] = { "krait1_dig", 1150000 },
.vreg[VREG_HFPLL_A] = { "krait1_hfpll", 1800000 },
@@ -69,7 +77,11 @@ static struct scalable scalable[] __initdata = {
.aux_clk_sel = 3,
.sec_clk_sel = 2,
.l2cpmr_iaddr = 0x6501,
+#ifdef CONFIG_CPU_OVERCLOCK
+ .vreg[VREG_CORE] = { "krait2", 1450000 },
+#else
.vreg[VREG_CORE] = { "krait2", 1300000 },
+#endif
.vreg[VREG_MEM] = { "krait2_mem", 1150000 },
.vreg[VREG_DIG] = { "krait2_dig", 1150000 },
.vreg[VREG_HFPLL_A] = { "krait2_hfpll", 1800000 },
@@ -80,7 +92,11 @@ static struct scalable scalable[] __initdata = {
.aux_clk_sel = 3,
.sec_clk_sel = 2,
.l2cpmr_iaddr = 0x7501,
+#ifdef CONFIG_CPU_OVERCLOCK
+ .vreg[VREG_CORE] = { "krait3", 1450000 },
+#else
.vreg[VREG_CORE] = { "krait3", 1300000 },
+#endif
.vreg[VREG_MEM] = { "krait3_mem", 1150000 },
.vreg[VREG_DIG] = { "krait3_dig", 1150000 },
.vreg[VREG_HFPLL_A] = { "krait3_hfpll", 1800000 },
@@ -116,6 +132,24 @@ static struct msm_bus_scale_pdata bus_scale_data __initdata = {
};
static struct l2_level l2_freq_tbl[] __initdata = {
+#ifdef CONFIG_LOW_CPUCLOCKS
+ [0] = { { 378000, HFPLL, 2, 0x1C }, 950000, 1050000, 1 },
+ [1] = { { 384000, PLL_8, 0, 0x00 }, 950000, 1050000, 1 },
+ [2] = { { 432000, HFPLL, 2, 0x20 }, 1050000, 1050000, 2 },
+ [3] = { { 486000, HFPLL, 2, 0x24 }, 1050000, 1050000, 2 },
+ [4] = { { 540000, HFPLL, 2, 0x28 }, 1050000, 1050000, 2 },
+ [5] = { { 594000, HFPLL, 1, 0x16 }, 1050000, 1050000, 2 },
+ [6] = { { 648000, HFPLL, 1, 0x18 }, 1050000, 1050000, 4 },
+ [7] = { { 702000, HFPLL, 1, 0x1A }, 1150000, 1150000, 4 },
+ [8] = { { 756000, HFPLL, 1, 0x1C }, 1150000, 1150000, 4 },
+ [9] = { { 810000, HFPLL, 1, 0x1E }, 1150000, 1150000, 4 },
+ [10] = { { 864000, HFPLL, 1, 0x20 }, 1150000, 1150000, 4 },
+ [11] = { { 918000, HFPLL, 1, 0x22 }, 1150000, 1150000, 5 },
+ [12] = { { 972000, HFPLL, 1, 0x24 }, 1150000, 1150000, 5 },
+ [13] = { { 1026000, HFPLL, 1, 0x26 }, 1150000, 1150000, 5 },
+ [14] = { { 1080000, HFPLL, 1, 0x28 }, 1150000, 1150000, 5 },
+ [15] = { { 1134000, HFPLL, 1, 0x2A }, 1150000, 1150000, 5 },
+#else
[0] = { { 384000, PLL_8, 0, 0x00 }, 950000, 1050000, 1 },
[1] = { { 432000, HFPLL, 2, 0x20 }, 1050000, 1050000, 2 },
[2] = { { 486000, HFPLL, 2, 0x24 }, 1050000, 1050000, 2 },
@@ -131,11 +165,19 @@ static struct l2_level l2_freq_tbl[] __initdata = {
[12] = { { 1026000, HFPLL, 1, 0x26 }, 1150000, 1150000, 5 },
[13] = { { 1080000, HFPLL, 1, 0x28 }, 1150000, 1150000, 5 },
[14] = { { 1134000, HFPLL, 1, 0x2A }, 1150000, 1150000, 5 },
+#endif
{ }
};
static struct acpu_level tbl_slow[] __initdata = {
+#ifdef CONFIG_LOW_CPUCLOCKS
+ { 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 875000 },
+ { 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 900000 },
+ //{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 950000 },
+ { 1, { 384000, PLL_8, 0, 0x00 }, L2(1), 925000 },
+#else
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(0), 950000 },
+#endif
{ 0, { 432000, HFPLL, 2, 0x20 }, L2(5), 975000 },
{ 1, { 486000, HFPLL, 2, 0x24 }, L2(5), 975000 },
{ 0, { 540000, HFPLL, 2, 0x28 }, L2(5), 1000000 },
@@ -157,11 +199,25 @@ static struct acpu_level tbl_slow[] __initdata = {
{ 0, { 1404000, HFPLL, 1, 0x34 }, L2(14), 1237500 },
{ 1, { 1458000, HFPLL, 1, 0x36 }, L2(14), 1237500 },
{ 1, { 1512000, HFPLL, 1, 0x38 }, L2(14), 1250000 },
+#ifdef CONFIG_CPU_OVERCLOCK
+ { 1, { 1620000, HFPLL, 1, 0x3C }, L2(15), 1300000 },
+ { 1, { 1728000, HFPLL, 1, 0x40 }, L2(15), 1350000 },
+ { 1, { 1836000, HFPLL, 1, 0x44 }, L2(15), 1400000 },
+ { 1, { 1890000, HFPLL, 1, 0x45 }, L2(15), 1425000 },
+ { 1, { 1944000, HFPLL, 1, 0x46 }, L2(15), 1450000 },
+#endif
{ 0, { 0 } }
};
static struct acpu_level tbl_nom[] __initdata = {
+#ifdef CONFIG_LOW_CPUCLOCKS
+ { 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 825000 },
+ { 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 850000 },
+ //{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 900000 },
+ { 1, { 384000, PLL_8, 0, 0x00 }, L2(1), 875000 },
+#else
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(0), 900000 },
+#endif
{ 0, { 432000, HFPLL, 2, 0x20 }, L2(5), 925000 },
{ 1, { 486000, HFPLL, 2, 0x24 }, L2(5), 925000 },
{ 0, { 540000, HFPLL, 2, 0x28 }, L2(5), 950000 },
@@ -183,11 +239,25 @@ static struct acpu_level tbl_nom[] __initdata = {
{ 0, { 1404000, HFPLL, 1, 0x34 }, L2(14), 1187500 },
{ 1, { 1458000, HFPLL, 1, 0x36 }, L2(14), 1187500 },
{ 1, { 1512000, HFPLL, 1, 0x38 }, L2(14), 1200000 },
+#ifdef CONFIG_CPU_OVERCLOCK
+ { 1, { 1620000, HFPLL, 1, 0x3C }, L2(15), 1250000 },
+ { 1, { 1728000, HFPLL, 1, 0x40 }, L2(15), 1300000 },
+ { 1, { 1836000, HFPLL, 1, 0x44 }, L2(15), 1350000 },
+ { 1, { 1890000, HFPLL, 1, 0x45 }, L2(15), 1375000 },
+ { 1, { 1944000, HFPLL, 1, 0x46 }, L2(15), 1400000 },
+#endif
{ 0, { 0 } }
};
static struct acpu_level tbl_fast[] __initdata = {
+#ifdef CONFIG_LOW_CPUCLOCKS
+ { 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 775000 },
+ { 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 800000 },
+ //{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 850000 },
+ { 1, { 384000, PLL_8, 0, 0x00 }, L2(1), 825000 },
+#else
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(0), 850000 },
+#endif
{ 0, { 432000, HFPLL, 2, 0x20 }, L2(5), 875000 },
{ 1, { 486000, HFPLL, 2, 0x24 }, L2(5), 875000 },
{ 0, { 540000, HFPLL, 2, 0x28 }, L2(5), 900000 },
@@ -209,11 +279,25 @@ static struct acpu_level tbl_fast[] __initdata = {
{ 0, { 1404000, HFPLL, 1, 0x34 }, L2(14), 1137500 },
{ 1, { 1458000, HFPLL, 1, 0x36 }, L2(14), 1137500 },
{ 1, { 1512000, HFPLL, 1, 0x38 }, L2(14), 1150000 },
+#ifdef CONFIG_CPU_OVERCLOCK
+ { 1, { 1620000, HFPLL, 1, 0x3C }, L2(15), 1200000 },
+ { 1, { 1728000, HFPLL, 1, 0x40 }, L2(15), 1250000 },
+ { 1, { 1836000, HFPLL, 1, 0x44 }, L2(15), 1300000 },
+ { 1, { 1890000, HFPLL, 1, 0x45 }, L2(15), 1325000 },
+ { 1, { 1944000, HFPLL, 1, 0x46 }, L2(15), 1350000 },
+#endif
{ 0, { 0 } }
};
static struct acpu_level tbl_faster[] __initdata = {
+#ifdef CONFIG_LOW_CPUCLOCKS
+ { 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 775000 },
+ { 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 800000 },
+ //{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 850000 },
+ { 1, { 384000, PLL_8, 0, 0x00 }, L2(1), 825000 },
+#else
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(0), 850000 },
+#endif
{ 0, { 432000, HFPLL, 2, 0x20 }, L2(5), 875000 },
{ 1, { 486000, HFPLL, 2, 0x24 }, L2(5), 875000 },
{ 0, { 540000, HFPLL, 2, 0x28 }, L2(5), 900000 },
@@ -235,6 +319,13 @@ static struct acpu_level tbl_faster[] __initdata = {
{ 0, { 1404000, HFPLL, 1, 0x34 }, L2(14), 1112500 },
{ 1, { 1458000, HFPLL, 1, 0x36 }, L2(14), 1112500 },
{ 1, { 1512000, HFPLL, 1, 0x38 }, L2(14), 1125000 },
+#ifdef CONFIG_CPU_OVERCLOCK
+ { 1, { 1620000, HFPLL, 1, 0x3C }, L2(15), 1150000 },
+ { 1, { 1728000, HFPLL, 1, 0x40 }, L2(15), 1200000 },
+ { 1, { 1836000, HFPLL, 1, 0x44 }, L2(15), 1250000 },
+ { 1, { 1890000, HFPLL, 1, 0x45 }, L2(15), 1275000 },
+ { 1, { 1944000, HFPLL, 1, 0x46 }, L2(15), 1300000 },
+#endif
{ 0, { 0 } }
};
diff --git a/arch/arm/mach-msm/acpuclock-krait.c b/arch/arm/mach-msm/acpuclock-krait.c
index e3a3f54..97f6f39 100644
--- a/arch/arm/mach-msm/acpuclock-krait.c
+++ b/arch/arm/mach-msm/acpuclock-krait.c
@@ -45,6 +45,12 @@
#define PRI_SRC_SEL_HFPLL 1
#define PRI_SRC_SEL_HFPLL_DIV2 2
+#ifdef CONFIG_LOW_CPUCLOCKS
+#define FREQ_TABLE_SIZE 39
+#else
+#define FREQ_TABLE_SIZE 35
+#endif
+
static DEFINE_MUTEX(driver_lock);
static DEFINE_SPINLOCK(l2_lock);
@@ -913,7 +919,7 @@ static void __init bus_init(const struct l2_level *l2_level)
}
#ifdef CONFIG_CPU_FREQ_MSM
-static struct cpufreq_frequency_table freq_table[NR_CPUS][35];
+static struct cpufreq_frequency_table freq_table[NR_CPUS][FREQ_TABLE_SIZE];
static void __init cpufreq_table_init(void)
{
diff --git a/arch/arm/mach-msm/msm_dcvs.c b/arch/arm/mach-msm/msm_dcvs.c
index 1a919fc..1d5e289 100644
--- a/arch/arm/mach-msm/msm_dcvs.c
+++ b/arch/arm/mach-msm/msm_dcvs.c
@@ -146,7 +146,12 @@ static struct dcvs_core core_list[CORES_MAX];
static struct kobject *cores_kobj;
+#ifdef CONFIG_CPU_OVERCLOCK
+#define DCVS_MAX_NUM_FREQS 20
+#else
#define DCVS_MAX_NUM_FREQS 15
+#endif
+
static struct msm_dcvs_freq_entry cpu_freq_tbl[DCVS_MAX_NUM_FREQS];
static unsigned num_cpu_freqs;
static struct msm_dcvs_platform_data *dcvs_pdata;
--
2.10.2
From f498c327190b1a30c25010e0ba3600470fc9251b Mon Sep 17 00:00:00 2001
From: anarkia1976 <stefano.villa1976@gmail.com>
Date: Wed, 5 Feb 2014 07:15:12 +0100
Subject: [PATCH 2/4] msm: cpu: overclock: added ultra low (81Mhz) cpu clock
frequencies
---
arch/arm/mach-msm/acpuclock-8064.c | 4 ++++
arch/arm/mach-msm/acpuclock-krait.c | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-msm/acpuclock-8064.c b/arch/arm/mach-msm/acpuclock-8064.c
index f40edd3..ba8fe72 100644
--- a/arch/arm/mach-msm/acpuclock-8064.c
+++ b/arch/arm/mach-msm/acpuclock-8064.c
@@ -171,6 +171,7 @@ static struct l2_level l2_freq_tbl[] __initdata = {
static struct acpu_level tbl_slow[] __initdata = {
#ifdef CONFIG_LOW_CPUCLOCKS
+ { 1, { 81000, HFPLL, 2, 0x06 }, L2(0), 750000 },
{ 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 875000 },
{ 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 900000 },
//{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 950000 },
@@ -211,6 +212,7 @@ static struct acpu_level tbl_slow[] __initdata = {
static struct acpu_level tbl_nom[] __initdata = {
#ifdef CONFIG_LOW_CPUCLOCKS
+ { 1, { 81000, HFPLL, 2, 0x06 }, L2(0), 750000 },
{ 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 825000 },
{ 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 850000 },
//{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 900000 },
@@ -251,6 +253,7 @@ static struct acpu_level tbl_nom[] __initdata = {
static struct acpu_level tbl_fast[] __initdata = {
#ifdef CONFIG_LOW_CPUCLOCKS
+ { 1, { 81000, HFPLL, 2, 0x06 }, L2(0), 750000 },
{ 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 775000 },
{ 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 800000 },
//{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 850000 },
@@ -291,6 +294,7 @@ static struct acpu_level tbl_fast[] __initdata = {
static struct acpu_level tbl_faster[] __initdata = {
#ifdef CONFIG_LOW_CPUCLOCKS
+ { 1, { 81000, HFPLL, 2, 0x06 }, L2(0), 750000 },
{ 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 775000 },
{ 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 800000 },
//{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 850000 },
diff --git a/arch/arm/mach-msm/acpuclock-krait.c b/arch/arm/mach-msm/acpuclock-krait.c
index 97f6f39..695b709 100644
--- a/arch/arm/mach-msm/acpuclock-krait.c
+++ b/arch/arm/mach-msm/acpuclock-krait.c
@@ -46,7 +46,7 @@
#define PRI_SRC_SEL_HFPLL_DIV2 2
#ifdef CONFIG_LOW_CPUCLOCKS
-#define FREQ_TABLE_SIZE 39
+#define FREQ_TABLE_SIZE 40
#else
#define FREQ_TABLE_SIZE 35
#endif
--
2.10.2
From 0eb77b9339850d3a7a9854197f2d02756270e5af Mon Sep 17 00:00:00 2001
From: anarkia1976 <stefano.villa1976@gmail.com>
Date: Sun, 12 Jan 2014 21:12:55 +0100
Subject: [PATCH 3/4] ak_mako_defconfig: enable LOW_CPU and CPU_OVERCLOCK
---
arch/arm/configs/cyanogen_mako_defconfig | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm/configs/cyanogen_mako_defconfig b/arch/arm/configs/cyanogen_mako_defconfig
index 316b320..1059cb6 100644
--- a/arch/arm/configs/cyanogen_mako_defconfig
+++ b/arch/arm/configs/cyanogen_mako_defconfig
@@ -451,6 +451,8 @@ CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y
# CONFIG_MSM_IPC_ROUTER_SECURITY is not set
# CONFIG_MSM_DALRPC is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
+CONFIG_LOW_CPUCLOCKS=y
+CONFIG_CPU_OVERCLOCK=y
CONFIG_MSM_AVS_HW=y
# CONFIG_MSM_HW3D is not set
CONFIG_AMSS_7X25_VERSION_2009=y
--
2.10.2
From cc891d49f60d6d0ad4d570c14711db9a568b49e5 Mon Sep 17 00:00:00 2001
From: anarkia1976 <stefano.villa1976@gmail.com>
Date: Wed, 5 Feb 2014 07:12:48 +0100
Subject: [PATCH 4/4] msm: cpu: overclock: use higher bus speed at lower CPU
freqs
Thanks to @bedalus and @mrg666
Bedalus suggested that if lower CPU frequencies can offer higher bus
speed,
GPU use during games wouldn't require higher CPU frequency.
My testing demonstrated 4C drop in CPU temp during 3DMark benchmark.
Still needs to be tested for everyday use.
---
arch/arm/mach-msm/acpuclock-8064.c | 172 +++++++++++++++++++------------------
1 file changed, 88 insertions(+), 84 deletions(-)
diff --git a/arch/arm/mach-msm/acpuclock-8064.c b/arch/arm/mach-msm/acpuclock-8064.c
index ba8fe72..611776e 100644
--- a/arch/arm/mach-msm/acpuclock-8064.c
+++ b/arch/arm/mach-msm/acpuclock-8064.c
@@ -131,6 +131,14 @@ static struct msm_bus_scale_pdata bus_scale_data __initdata = {
.name = "acpuclk-8064",
};
+#ifdef CONFIG_LOW_CPUCLOCKS
+#define L2_BW_MID 6
+#define L2_BW_HIGH 15
+#else
+#define L2_BW_MID 5
+#define L2_BW_HIGH 14
+#endif
+
static struct l2_level l2_freq_tbl[] __initdata = {
#ifdef CONFIG_LOW_CPUCLOCKS
[0] = { { 378000, HFPLL, 2, 0x1C }, 950000, 1050000, 1 },
@@ -174,32 +182,31 @@ static struct acpu_level tbl_slow[] __initdata = {
{ 1, { 81000, HFPLL, 2, 0x06 }, L2(0), 750000 },
{ 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 875000 },
{ 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 900000 },
- //{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 950000 },
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(1), 925000 },
#else
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(0), 950000 },
#endif
- { 0, { 432000, HFPLL, 2, 0x20 }, L2(5), 975000 },
- { 1, { 486000, HFPLL, 2, 0x24 }, L2(5), 975000 },
- { 0, { 540000, HFPLL, 2, 0x28 }, L2(5), 1000000 },
- { 1, { 594000, HFPLL, 1, 0x16 }, L2(5), 1000000 },
- { 0, { 648000, HFPLL, 1, 0x18 }, L2(5), 1025000 },
- { 1, { 702000, HFPLL, 1, 0x1A }, L2(5), 1025000 },
- { 0, { 756000, HFPLL, 1, 0x1C }, L2(5), 1075000 },
- { 1, { 810000, HFPLL, 1, 0x1E }, L2(5), 1075000 },
- { 0, { 864000, HFPLL, 1, 0x20 }, L2(5), 1100000 },
- { 1, { 918000, HFPLL, 1, 0x22 }, L2(5), 1100000 },
- { 0, { 972000, HFPLL, 1, 0x24 }, L2(5), 1125000 },
- { 1, { 1026000, HFPLL, 1, 0x26 }, L2(5), 1125000 },
- { 0, { 1080000, HFPLL, 1, 0x28 }, L2(14), 1175000 },
- { 1, { 1134000, HFPLL, 1, 0x2A }, L2(14), 1175000 },
- { 0, { 1188000, HFPLL, 1, 0x2C }, L2(14), 1200000 },
- { 1, { 1242000, HFPLL, 1, 0x2E }, L2(14), 1200000 },
- { 0, { 1296000, HFPLL, 1, 0x30 }, L2(14), 1225000 },
- { 1, { 1350000, HFPLL, 1, 0x32 }, L2(14), 1225000 },
- { 0, { 1404000, HFPLL, 1, 0x34 }, L2(14), 1237500 },
- { 1, { 1458000, HFPLL, 1, 0x36 }, L2(14), 1237500 },
- { 1, { 1512000, HFPLL, 1, 0x38 }, L2(14), 1250000 },
+ { 0, { 432000, HFPLL, 2, 0x20 }, L2(L2_BW_MID), 975000 },
+ { 1, { 486000, HFPLL, 2, 0x24 }, L2(L2_BW_MID), 975000 },
+ { 0, { 540000, HFPLL, 2, 0x28 }, L2(L2_BW_MID), 1000000 },
+ { 1, { 594000, HFPLL, 1, 0x16 }, L2(L2_BW_MID), 1000000 },
+ { 0, { 648000, HFPLL, 1, 0x18 }, L2(L2_BW_MID), 1025000 },
+ { 1, { 702000, HFPLL, 1, 0x1A }, L2(L2_BW_HIGH), 1025000 },
+ { 0, { 756000, HFPLL, 1, 0x1C }, L2(L2_BW_HIGH), 1075000 },
+ { 1, { 810000, HFPLL, 1, 0x1E }, L2(L2_BW_HIGH), 1075000 },
+ { 0, { 864000, HFPLL, 1, 0x20 }, L2(L2_BW_HIGH), 1100000 },
+ { 1, { 918000, HFPLL, 1, 0x22 }, L2(L2_BW_HIGH), 1100000 },
+ { 0, { 972000, HFPLL, 1, 0x24 }, L2(L2_BW_HIGH), 1125000 },
+ { 1, { 1026000, HFPLL, 1, 0x26 }, L2(L2_BW_HIGH), 1125000 },
+ { 0, { 1080000, HFPLL, 1, 0x28 }, L2(L2_BW_HIGH), 1175000 },
+ { 1, { 1134000, HFPLL, 1, 0x2A }, L2(L2_BW_HIGH), 1175000 },
+ { 0, { 1188000, HFPLL, 1, 0x2C }, L2(L2_BW_HIGH), 1200000 },
+ { 1, { 1242000, HFPLL, 1, 0x2E }, L2(L2_BW_HIGH), 1200000 },
+ { 0, { 1296000, HFPLL, 1, 0x30 }, L2(L2_BW_HIGH), 1225000 },
+ { 1, { 1350000, HFPLL, 1, 0x32 }, L2(L2_BW_HIGH), 1225000 },
+ { 0, { 1404000, HFPLL, 1, 0x34 }, L2(L2_BW_HIGH), 1237500 },
+ { 1, { 1458000, HFPLL, 1, 0x36 }, L2(L2_BW_HIGH), 1237500 },
+ { 1, { 1512000, HFPLL, 1, 0x38 }, L2(L2_BW_HIGH), 1250000 },
#ifdef CONFIG_CPU_OVERCLOCK
{ 1, { 1620000, HFPLL, 1, 0x3C }, L2(15), 1300000 },
{ 1, { 1728000, HFPLL, 1, 0x40 }, L2(15), 1350000 },
@@ -215,32 +222,31 @@ static struct acpu_level tbl_nom[] __initdata = {
{ 1, { 81000, HFPLL, 2, 0x06 }, L2(0), 750000 },
{ 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 825000 },
{ 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 850000 },
- //{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 900000 },
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(1), 875000 },
#else
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(0), 900000 },
#endif
- { 0, { 432000, HFPLL, 2, 0x20 }, L2(5), 925000 },
- { 1, { 486000, HFPLL, 2, 0x24 }, L2(5), 925000 },
- { 0, { 540000, HFPLL, 2, 0x28 }, L2(5), 950000 },
- { 1, { 594000, HFPLL, 1, 0x16 }, L2(5), 950000 },
- { 0, { 648000, HFPLL, 1, 0x18 }, L2(5), 975000 },
- { 1, { 702000, HFPLL, 1, 0x1A }, L2(5), 975000 },
- { 0, { 756000, HFPLL, 1, 0x1C }, L2(5), 1025000 },
- { 1, { 810000, HFPLL, 1, 0x1E }, L2(5), 1025000 },
- { 0, { 864000, HFPLL, 1, 0x20 }, L2(5), 1050000 },
- { 1, { 918000, HFPLL, 1, 0x22 }, L2(5), 1050000 },
- { 0, { 972000, HFPLL, 1, 0x24 }, L2(5), 1075000 },
- { 1, { 1026000, HFPLL, 1, 0x26 }, L2(5), 1075000 },
- { 0, { 1080000, HFPLL, 1, 0x28 }, L2(14), 1125000 },
- { 1, { 1134000, HFPLL, 1, 0x2A }, L2(14), 1125000 },
- { 0, { 1188000, HFPLL, 1, 0x2C }, L2(14), 1150000 },
- { 1, { 1242000, HFPLL, 1, 0x2E }, L2(14), 1150000 },
- { 0, { 1296000, HFPLL, 1, 0x30 }, L2(14), 1175000 },
- { 1, { 1350000, HFPLL, 1, 0x32 }, L2(14), 1175000 },
- { 0, { 1404000, HFPLL, 1, 0x34 }, L2(14), 1187500 },
- { 1, { 1458000, HFPLL, 1, 0x36 }, L2(14), 1187500 },
- { 1, { 1512000, HFPLL, 1, 0x38 }, L2(14), 1200000 },
+ { 0, { 432000, HFPLL, 2, 0x20 }, L2(L2_BW_MID), 925000 },
+ { 1, { 486000, HFPLL, 2, 0x24 }, L2(L2_BW_MID), 925000 },
+ { 0, { 540000, HFPLL, 2, 0x28 }, L2(L2_BW_MID), 950000 },
+ { 1, { 594000, HFPLL, 1, 0x16 }, L2(L2_BW_MID), 950000 },
+ { 0, { 648000, HFPLL, 1, 0x18 }, L2(L2_BW_MID), 975000 },
+ { 1, { 702000, HFPLL, 1, 0x1A }, L2(L2_BW_HIGH), 975000 },
+ { 0, { 756000, HFPLL, 1, 0x1C }, L2(L2_BW_HIGH), 1025000 },
+ { 1, { 810000, HFPLL, 1, 0x1E }, L2(L2_BW_HIGH), 1025000 },
+ { 0, { 864000, HFPLL, 1, 0x20 }, L2(L2_BW_HIGH), 1050000 },
+ { 1, { 918000, HFPLL, 1, 0x22 }, L2(L2_BW_HIGH), 1050000 },
+ { 0, { 972000, HFPLL, 1, 0x24 }, L2(L2_BW_HIGH), 1075000 },
+ { 1, { 1026000, HFPLL, 1, 0x26 }, L2(L2_BW_HIGH), 1075000 },
+ { 0, { 1080000, HFPLL, 1, 0x28 }, L2(L2_BW_HIGH), 1125000 },
+ { 1, { 1134000, HFPLL, 1, 0x2A }, L2(L2_BW_HIGH), 1125000 },
+ { 0, { 1188000, HFPLL, 1, 0x2C }, L2(L2_BW_HIGH), 1150000 },
+ { 1, { 1242000, HFPLL, 1, 0x2E }, L2(L2_BW_HIGH), 1150000 },
+ { 0, { 1296000, HFPLL, 1, 0x30 }, L2(L2_BW_HIGH), 1175000 },
+ { 1, { 1350000, HFPLL, 1, 0x32 }, L2(L2_BW_HIGH), 1175000 },
+ { 0, { 1404000, HFPLL, 1, 0x34 }, L2(L2_BW_HIGH), 1187500 },
+ { 1, { 1458000, HFPLL, 1, 0x36 }, L2(L2_BW_HIGH), 1187500 },
+ { 1, { 1512000, HFPLL, 1, 0x38 }, L2(L2_BW_HIGH), 1200000 },
#ifdef CONFIG_CPU_OVERCLOCK
{ 1, { 1620000, HFPLL, 1, 0x3C }, L2(15), 1250000 },
{ 1, { 1728000, HFPLL, 1, 0x40 }, L2(15), 1300000 },
@@ -256,32 +262,31 @@ static struct acpu_level tbl_fast[] __initdata = {
{ 1, { 81000, HFPLL, 2, 0x06 }, L2(0), 750000 },
{ 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 775000 },
{ 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 800000 },
- //{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 850000 },
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(1), 825000 },
#else
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(0), 850000 },
#endif
- { 0, { 432000, HFPLL, 2, 0x20 }, L2(5), 875000 },
- { 1, { 486000, HFPLL, 2, 0x24 }, L2(5), 875000 },
- { 0, { 540000, HFPLL, 2, 0x28 }, L2(5), 900000 },
- { 1, { 594000, HFPLL, 1, 0x16 }, L2(5), 900000 },
- { 0, { 648000, HFPLL, 1, 0x18 }, L2(5), 925000 },
- { 1, { 702000, HFPLL, 1, 0x1A }, L2(5), 925000 },
- { 0, { 756000, HFPLL, 1, 0x1C }, L2(5), 975000 },
- { 1, { 810000, HFPLL, 1, 0x1E }, L2(5), 975000 },
- { 0, { 864000, HFPLL, 1, 0x20 }, L2(5), 1000000 },
- { 1, { 918000, HFPLL, 1, 0x22 }, L2(5), 1000000 },
- { 0, { 972000, HFPLL, 1, 0x24 }, L2(5), 1025000 },
- { 1, { 1026000, HFPLL, 1, 0x26 }, L2(5), 1025000 },
- { 0, { 1080000, HFPLL, 1, 0x28 }, L2(14), 1075000 },
- { 1, { 1134000, HFPLL, 1, 0x2A }, L2(14), 1075000 },
- { 0, { 1188000, HFPLL, 1, 0x2C }, L2(14), 1100000 },
- { 1, { 1242000, HFPLL, 1, 0x2E }, L2(14), 1100000 },
- { 0, { 1296000, HFPLL, 1, 0x30 }, L2(14), 1125000 },
- { 1, { 1350000, HFPLL, 1, 0x32 }, L2(14), 1125000 },
- { 0, { 1404000, HFPLL, 1, 0x34 }, L2(14), 1137500 },
- { 1, { 1458000, HFPLL, 1, 0x36 }, L2(14), 1137500 },
- { 1, { 1512000, HFPLL, 1, 0x38 }, L2(14), 1150000 },
+ { 0, { 432000, HFPLL, 2, 0x20 }, L2(L2_BW_MID), 875000 },
+ { 1, { 486000, HFPLL, 2, 0x24 }, L2(L2_BW_MID), 875000 },
+ { 0, { 540000, HFPLL, 2, 0x28 }, L2(L2_BW_MID), 900000 },
+ { 1, { 594000, HFPLL, 1, 0x16 }, L2(L2_BW_MID), 900000 },
+ { 0, { 648000, HFPLL, 1, 0x18 }, L2(L2_BW_MID), 925000 },
+ { 1, { 702000, HFPLL, 1, 0x1A }, L2(L2_BW_HIGH), 925000 },
+ { 0, { 756000, HFPLL, 1, 0x1C }, L2(L2_BW_HIGH), 975000 },
+ { 1, { 810000, HFPLL, 1, 0x1E }, L2(L2_BW_HIGH), 975000 },
+ { 0, { 864000, HFPLL, 1, 0x20 }, L2(L2_BW_HIGH), 1000000 },
+ { 1, { 918000, HFPLL, 1, 0x22 }, L2(L2_BW_HIGH), 1000000 },
+ { 0, { 972000, HFPLL, 1, 0x24 }, L2(L2_BW_HIGH), 1025000 },
+ { 1, { 1026000, HFPLL, 1, 0x26 }, L2(L2_BW_HIGH), 1025000 },
+ { 0, { 1080000, HFPLL, 1, 0x28 }, L2(L2_BW_HIGH), 1075000 },
+ { 1, { 1134000, HFPLL, 1, 0x2A }, L2(L2_BW_HIGH), 1075000 },
+ { 0, { 1188000, HFPLL, 1, 0x2C }, L2(L2_BW_HIGH), 1100000 },
+ { 1, { 1242000, HFPLL, 1, 0x2E }, L2(L2_BW_HIGH), 1100000 },
+ { 0, { 1296000, HFPLL, 1, 0x30 }, L2(L2_BW_HIGH), 1125000 },
+ { 1, { 1350000, HFPLL, 1, 0x32 }, L2(L2_BW_HIGH), 1125000 },
+ { 0, { 1404000, HFPLL, 1, 0x34 }, L2(L2_BW_HIGH), 1137500 },
+ { 1, { 1458000, HFPLL, 1, 0x36 }, L2(L2_BW_HIGH), 1137500 },
+ { 1, { 1512000, HFPLL, 1, 0x38 }, L2(L2_BW_HIGH), 1150000 },
#ifdef CONFIG_CPU_OVERCLOCK
{ 1, { 1620000, HFPLL, 1, 0x3C }, L2(15), 1200000 },
{ 1, { 1728000, HFPLL, 1, 0x40 }, L2(15), 1250000 },
@@ -297,28 +302,27 @@ static struct acpu_level tbl_faster[] __initdata = {
{ 1, { 81000, HFPLL, 2, 0x06 }, L2(0), 750000 },
{ 1, { 162000, HFPLL, 2, 0x0C }, L2(0), 775000 },
{ 1, { 270000, HFPLL, 2, 0x14 }, L2(0), 800000 },
- //{ 1, { 378000, HFPLL, 2, 0x1C }, L2(0), 850000 },
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(1), 825000 },
#else
{ 1, { 384000, PLL_8, 0, 0x00 }, L2(0), 850000 },
#endif
- { 0, { 432000, HFPLL, 2, 0x20 }, L2(5), 875000 },
- { 1, { 486000, HFPLL, 2, 0x24 }, L2(5), 875000 },
- { 0, { 540000, HFPLL, 2, 0x28 }, L2(5), 900000 },
- { 1, { 594000, HFPLL, 1, 0x16 }, L2(5), 900000 },
- { 0, { 648000, HFPLL, 1, 0x18 }, L2(5), 925000 },
- { 1, { 702000, HFPLL, 1, 0x1A }, L2(5), 925000 },
- { 0, { 756000, HFPLL, 1, 0x1C }, L2(5), 962500 },
- { 1, { 810000, HFPLL, 1, 0x1E }, L2(5), 962500 },
- { 0, { 864000, HFPLL, 1, 0x20 }, L2(5), 975000 },
- { 1, { 918000, HFPLL, 1, 0x22 }, L2(5), 975000 },
- { 0, { 972000, HFPLL, 1, 0x24 }, L2(5), 1000000 },
- { 1, { 1026000, HFPLL, 1, 0x26 }, L2(5), 1000000 },
- { 0, { 1080000, HFPLL, 1, 0x28 }, L2(14), 1050000 },
- { 1, { 1134000, HFPLL, 1, 0x2A }, L2(14), 1050000 },
- { 0, { 1188000, HFPLL, 1, 0x2C }, L2(14), 1075000 },
- { 1, { 1242000, HFPLL, 1, 0x2E }, L2(14), 1075000 },
- { 0, { 1296000, HFPLL, 1, 0x30 }, L2(14), 1100000 },
+ { 0, { 432000, HFPLL, 2, 0x20 }, L2(L2_BW_MID), 875000 },
+ { 1, { 486000, HFPLL, 2, 0x24 }, L2(L2_BW_MID), 875000 },
+ { 0, { 540000, HFPLL, 2, 0x28 }, L2(L2_BW_MID), 900000 },
+ { 1, { 594000, HFPLL, 1, 0x16 }, L2(L2_BW_MID), 900000 },
+ { 0, { 648000, HFPLL, 1, 0x18 }, L2(L2_BW_MID), 925000 },
+ { 1, { 702000, HFPLL, 1, 0x1A }, L2(L2_BW_HIGH), 925000 },
+ { 0, { 756000, HFPLL, 1, 0x1C }, L2(L2_BW_HIGH), 962500 },
+ { 1, { 810000, HFPLL, 1, 0x1E }, L2(L2_BW_HIGH), 962500 },
+ { 0, { 864000, HFPLL, 1, 0x20 }, L2(L2_BW_HIGH), 975000 },
+ { 1, { 918000, HFPLL, 1, 0x22 }, L2(L2_BW_HIGH), 975000 },
+ { 0, { 972000, HFPLL, 1, 0x24 }, L2(L2_BW_HIGH), 1000000 },
+ { 1, { 1026000, HFPLL, 1, 0x26 }, L2(L2_BW_HIGH), 1000000 },
+ { 0, { 1080000, HFPLL, 1, 0x28 }, L2(L2_BW_HIGH), 1050000 },
+ { 1, { 1134000, HFPLL, 1, 0x2A }, L2(L2_BW_HIGH), 1050000 },
+ { 0, { 1188000, HFPLL, 1, 0x2C }, L2(L2_BW_HIGH), 1075000 },
+ { 1, { 1242000, HFPLL, 1, 0x2E }, L2(L2_BW_HIGH), 1075000 },
+ { 0, { 1296000, HFPLL, 1, 0x30 }, L2(L2_BW_HIGH), 1100000 },
{ 1, { 1350000, HFPLL, 1, 0x32 }, L2(14), 1100000 },
{ 0, { 1404000, HFPLL, 1, 0x34 }, L2(14), 1112500 },
{ 1, { 1458000, HFPLL, 1, 0x36 }, L2(14), 1112500 },
--
2.10.2

Some files were not shown because too many files have changed in this diff Show More