Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d7a7bbf authored by Hasib Prince's avatar Hasib Prince
Browse files

zero privacy score for some apps

parent efc577d1
Loading
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -20,4 +20,7 @@ package foundation.e.apps.data.blockedApps


import com.google.gson.annotations.SerializedName
import com.google.gson.annotations.SerializedName


data class AppWarningInfo(@SerializedName("not_working_apps") val notWorkingApps: List<String>)
data class AppWarningInfo(
    @SerializedName("not_working_apps") val notWorkingApps: List<String>,
    @SerializedName("zero_privacy_apps") val zeroPrivacyApps: List<String>
)
+4 −1
Original line number Original line Diff line number Diff line
@@ -50,6 +50,9 @@ class BlockedAppRepository @Inject constructor(
    fun isBlockedApp(packageName: String) =
    fun isBlockedApp(packageName: String) =
        blockedAppInfoList?.notWorkingApps?.contains(packageName) ?: false
        blockedAppInfoList?.notWorkingApps?.contains(packageName) ?: false


    fun isPrivacyScoreZero(packageName: String) =
        blockedAppInfoList?.zeroPrivacyApps?.contains(packageName) ?: false

    suspend fun fetchUpdateOfAppWarningList(): Boolean =
    suspend fun fetchUpdateOfAppWarningList(): Boolean =
        suspendCancellableCoroutine { continuation ->
        suspendCancellableCoroutine { continuation ->
            downloadManager.downloadFileInCache(
            downloadManager.downloadFileInCache(
@@ -75,7 +78,7 @@ class BlockedAppRepository @Inject constructor(
            gson.fromJson(blockedAppInfoJson, AppWarningInfo::class.java)
            gson.fromJson(blockedAppInfoJson, AppWarningInfo::class.java)
        } catch (exception: Exception) {
        } catch (exception: Exception) {
            Timber.e(exception.localizedMessage ?: "", exception)
            Timber.e(exception.localizedMessage ?: "", exception)
            AppWarningInfo(listOf())
            AppWarningInfo(listOf(), listOf())
        }
        }
    }
    }
}
}
+19 −7
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@
package foundation.e.apps.data.exodus.repositories
package foundation.e.apps.data.exodus.repositories


import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.blockedApps.BlockedAppRepository
import foundation.e.apps.di.CommonUtilsModule
import foundation.e.apps.di.CommonUtilsModule
import javax.inject.Inject
import javax.inject.Inject
import javax.inject.Singleton
import javax.inject.Singleton
@@ -26,18 +27,29 @@ import kotlin.math.ceil
import kotlin.math.round
import kotlin.math.round


@Singleton
@Singleton
class PrivacyScoreRepositoryImpl @Inject constructor() : PrivacyScoreRepository {
class PrivacyScoreRepositoryImpl @Inject constructor(
    private val blockedAppRepository: BlockedAppRepository
) : PrivacyScoreRepository {


    override fun calculatePrivacyScore(application: Application): Int {
    override fun calculatePrivacyScore(application: Application): Int {
        var privacyScore = -1
        if (blockedAppRepository.isPrivacyScoreZero(application.package_name)) {
            privacyScore = 0
        }

        if (application.permsFromExodus == CommonUtilsModule.LIST_OF_NULL) {
        if (application.permsFromExodus == CommonUtilsModule.LIST_OF_NULL) {
            return -1
            return privacyScore
        }
        }


        if (privacyScore != 0) {
            val calculateTrackersScore = calculateTrackersScore(application.trackers.size)
            val calculateTrackersScore = calculateTrackersScore(application.trackers.size)
            val calculatePermissionsScore = calculatePermissionsScore(
            val calculatePermissionsScore = calculatePermissionsScore(
                countAndroidPermissions(application)
                countAndroidPermissions(application)
            )
            )
        return calculateTrackersScore + calculatePermissionsScore
            privacyScore = calculateTrackersScore + calculatePermissionsScore
        }

        return privacyScore
    }
    }


    private fun calculateTrackersScore(numberOfTrackers: Int): Int {
    private fun calculateTrackersScore(numberOfTrackers: Int): Int {
+10 −1
Original line number Original line Diff line number Diff line
@@ -21,18 +21,27 @@ package foundation.e.apps.exodus
import foundation.e.apps.data.enums.Status
import foundation.e.apps.data.enums.Status
import foundation.e.apps.data.exodus.repositories.PrivacyScoreRepositoryImpl
import foundation.e.apps.data.exodus.repositories.PrivacyScoreRepositoryImpl
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.blockedApps.BlockedAppRepository
import foundation.e.apps.di.CommonUtilsModule
import foundation.e.apps.di.CommonUtilsModule
import org.junit.Assert
import org.junit.Assert
import org.junit.Before
import org.junit.Before
import org.junit.Test
import org.junit.Test
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.any


class PrivacyScoreRepositoryImplTest {
class PrivacyScoreRepositoryImplTest {


    private lateinit var privacyScoreRepository: PrivacyScoreRepositoryImpl
    private lateinit var privacyScoreRepository: PrivacyScoreRepositoryImpl


    @Mock
    private lateinit var blockedAppRepository: BlockedAppRepository

    @Before
    @Before
    fun setup() {
    fun setup() {
        privacyScoreRepository = PrivacyScoreRepositoryImpl()
        MockitoAnnotations.openMocks(this)
        privacyScoreRepository = PrivacyScoreRepositoryImpl(blockedAppRepository)
    }
    }


    @Test
    @Test