Check isWfcProvisionedOnDevice in WifiCallingSettings
On the SIM details page, the preference leading to a page for configuring wifi calling will appear based on the results of the MobileNetworkUtils#isWifiCallingEnabled helper function. That helper uses the ImsManager to check several conditions, among them both isWfcEnabledByPlatform and isWfcProvisionedOnDevice. The page for configuring wifi calling has a tabbed UX, with one tab for each active subscription that supports it. The WifiCallingSettings class gets a list of the active subscriptions to determine which tabs to show, and removes any that don't support wifi calling, but was only using the isWfcEnabledByPlatform test to do so. This is a problem because the code for showing the contents inside the tab, in WifiCallingSettingsForSub, includes a sanity check of isWfcProvisionedOnDevice and calls finish() if that returns false. What this meant in practice is that if you happened to have 2 subscriptions where one returns true for both isWfcEnabledByPlatform and isWfcProvisionedOnDevice, but the other only returned true for isWfcEnabledByPlatform, then you'd never be able to succesfully use the wifi calling page at all because the tab for the subscription you *aren't* trying to configure would always call finish() early. The right long term solution to this problem is probably to remove the tabbed UX entirely from this page, since we probably don't need it given the overall new multi-SIM UX. But there may still be legacy uses and that is likely a bigger change than we want to make right now. As a stopgap, this CL just adds a check of isWfcProvisionedOnDevice to the code for filtering out ineligible subscriptions from the tabbed interface, which we should have always had anyway. Fixes: 135591718 Test: make RunSettingsRoboTests Change-Id: I656c3d3fb30cb6fabcb86685eae38c5f0cd0c6f2
Loading
Please register or sign in to comment