Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split Tunneling 'Find another app' Button Missing #7428

Closed
2 tasks done
issuant opened this issue Jan 8, 2025 · 9 comments
Closed
2 tasks done

Split Tunneling 'Find another app' Button Missing #7428

issuant opened this issue Jan 8, 2025 · 9 comments
Labels
Android Issues related to Android bug

Comments

@issuant
Copy link

issuant commented Jan 8, 2025

Is it a bug?

  • I know this is an issue with the app, and contacting Mullvad support is not relevant.

I have checked if others have reported this already

  • I have checked the issue tracker to see if others have reported similar issues.

Current Behavior

On Windows and MacOS (#6543), there is a button to manually add apps, especially system apps, that are not automatically discovered by Mullvad. This button, or an alternative, is missing on Android.

Expected Behavior

The 'Find another app' button should consistently appear across all platforms. If it is a bad fit for mobile, an alternative should be provided.

Steps to Reproduce

  1. Enable Split tunneling on Android.
  2. Scroll down
  3. No button or alternative to manually add apps that were not discovered automatically

Failure Logs

No response

Android version

No response

Device model

No response

Mullvad VPN app version

all

Additional Information

No response

@issuant issuant added the bug label Jan 8, 2025
@Rawa
Copy link
Contributor

Rawa commented Jan 8, 2025

I can't answer for iOS but on Android all the apps are discovered through the android's PackageManager API, and the VPN service does exclusions/inclusions based on the package name. So the reason there is not a "Find another app" on Android is that if the system works as expected it should be an exhaustive list.

@Rawa Rawa added iOS Issues related to iOS Android Issues related to Android and removed iOS Issues related to iOS labels Jan 8, 2025
@Rawa Rawa closed this as completed Jan 8, 2025
@issuant
Copy link
Author

issuant commented Jan 9, 2025

it should be an exhaustive list.

It is not. Over 100 system apps are not in the list, on both Graphene and normal Android. Please reopen.

@Rawa
Copy link
Contributor

Rawa commented Jan 10, 2025

it should be an exhaustive list.

It is not. Over 100 system apps are not in the list, on both Graphene and normal Android. Please reopen.

Do you have an example of an app on graphene that are not in the list?

@issuant
Copy link
Author

issuant commented Jan 10, 2025

I compared the list Mullvad shows against the list the device itself shows when you turn on the ability to view system apps. Over 100 system apps are missing from Mullvad's list. This happens on normal Android too.

@issuant
Copy link
Author

issuant commented Jan 20, 2025

@Rawa

@Rawa
Copy link
Contributor

Rawa commented Jan 20, 2025

Hello @issuant,

The Split Tunneling apps (if "Show system apps") should show all apps that have internet permission (Splitting apps with no internet permission wouldn't make much sense). Without something specific to look into there is nothing to go on here, please provide the package name of an app that has internet permission on stock Pixel device or GrapheneOS device that are missing and I'll look into it.

Here is the source that filters out the apps:

hasInternetPermission(appInfo.packageName) && !isSelfApplication(appInfo.packageName)

It should only accept apps that have internet permission and is not the Mullvad App itself.

@issuant
Copy link
Author

issuant commented Jan 28, 2025

It should only accept apps that have internet permission

That may be the reason but I will wait for #7535.

@issuant
Copy link
Author

issuant commented Mar 11, 2025

@Rawa However Mullvad is getting its list is inadequate. 'Google Location History', com.google.android.gms.location.history, is one system app with internet permission that is missing from Mullvad's list. There are likely more such apps, and this discovery should have happened sooner, but the lack of #7427 and #7535 makes it difficult.

@Rawa
Copy link
Contributor

Rawa commented Mar 11, 2025

Just spent some time checking this, according to my findings it does not have internet permission, and it indeed this package failed on the predicate of verifying that it has internet permission. Where did you see that it has internet permission?

rawa@Davids-MBP-2 ➜  mullvadvpn-app git:(main) ✗ adb shell dumpsys package com.google.android.gms.location.history
Domain verification status:

Key Set Manager:
  [com.google.android.gms.location.history]
      Signing KeySets: 67

Packages:
  Package [com.google.android.gms.location.history] (a21e91c):
    appId=10189
    pkg=Package{d1ef925 com.google.android.gms.location.history}
    codePath=/product/app/LocationHistoryPrebuilt
    resourcePath=/product/app/LocationHistoryPrebuilt
    legacyNativeLibraryDir=/product/app/LocationHistoryPrebuilt/lib
    extractNativeLibs=true
    primaryCpuAbi=null
    secondaryCpuAbi=null
    cpuAbiOverride=null
    versionCode=3 minSdk=28 targetSdk=35
    minExtensionVersions=[]
    versionName=1.2
    hiddenApiEnforcementPolicy=2
    usesNonSdkApi=false
    splits=[base]
    apkSigningVersion=3
    flags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ]
    privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION ALLOW_AUDIO_PLAYBACK_CAPTURE PRODUCT PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING ]
    forceQueryable=false
    pageSizeCompat=0
    scannedAsStoppedSystemApp=false
    supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
    timeStamp=2009-01-01 01:00:00
    lastUpdateTime=2024-11-21 09:51:21
    installerPackageName=null
    installerPackageUid=-1
    initiatingPackageName=null
    originatingPackageName=null
    packageSource=0
    appMetadataFilePath=null
    appMetadataSource=0
    signatures=PackageSignatures{db78afa version:3, signatures:[b93d50e], past signatures:[]}
    installPermissionsFixed=false
    pkgFlags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ]
    privatePkgFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION ALLOW_AUDIO_PLAYBACK_CAPTURE PRODUCT PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING ]
    apexModuleName=null
    requested permissions:
      android.permission.ACCESS_FINE_LOCATION
      android.permission.ACCESS_COARSE_LOCATION
      android.permission.ACTIVITY_RECOGNITION
      android.permission.ACCESS_BACKGROUND_LOCATION
    User 0: ceDataInode=5201 deDataInode=2602 installed=true hidden=false suspended=false distractionFlags=0 stopped=false notLaunched=false enabled=0 instant=false virtual=false quarantined=false
      installReason=0
      dataDir=/data/user/0/com.google.android.gms.location.history
      firstInstallTime=2024-11-21 09:51:21
      uninstallReason=0
      overlay paths:
        /product/overlay/NavigationBarModeGestural/NavigationBarModeGesturalOverlay.apk
        /data/resource-cache/com.android.systemui-neutral-jkcQ.frro
        /data/resource-cache/com.android.systemui-accent-9lL7.frro
        /data/resource-cache/com.android.systemui-dynamic-Ce9M.frro
      legacy overlay paths:
        /product/overlay/NavigationBarModeGestural/NavigationBarModeGesturalOverlay.apk
      runtime permissions:
        android.permission.ACCESS_FINE_LOCATION: granted=true, flags=[ GRANTED_BY_DEFAULT]
        android.permission.ACCESS_COARSE_LOCATION: granted=true, flags=[ GRANTED_BY_DEFAULT]
        android.permission.ACTIVITY_RECOGNITION: granted=true, flags=[ SYSTEM_FIXED|GRANTED_BY_DEFAULT]
        android.permission.ACCESS_BACKGROUND_LOCATION: granted=true, flags=[ GRANTED_BY_DEFAULT|RESTRICTION_SYSTEM_EXEMPT|RESTRICTION_UPGRADE_EXEMPT]

Queries:
  system apps queryable: false
  queries via forceQueryable:
  queries via package name:
  queries via component:
  queryable via interaction:
    User 0:
  queryable via uses-library:

Dexopt state:
  [com.google.android.gms.location.history]
    path: /product/app/LocationHistoryPrebuilt/LocationHistoryPrebuilt.apk
      arm64: [status=verify] [reason=vdex] [primary-abi]
        [location is /data/dalvik-cache/arm64/product@app@[email protected]@classes.vdex]

Compiler stats:
  [com.google.android.gms.location.history]
    (No recorded stats)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Android Issues related to Android bug
Projects
None yet
Development

No branches or pull requests

2 participants