146bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski/* 246bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski * Copyright (C) 2016 The Android Open Source Project 346bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski * 446bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 546bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski * except in compliance with the License. You may obtain a copy of the License at 646bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski * 746bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski * http://www.apache.org/licenses/LICENSE-2.0 846bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski * 946bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski * Unless required by applicable law or agreed to in writing, software distributed under the 1046bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 1146bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski * KIND, either express or implied. See the License for the specific language governing 1246bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski * permissions and limitations under the License. 1346bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski */ 1446bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 1546bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskipackage com.android.systemui.qs; 1646bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 173cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monkimport static junit.framework.Assert.assertEquals; 183cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk 19509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franksimport static org.mockito.ArgumentMatchers.anyInt; 203cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monkimport static org.mockito.Mockito.mock; 213cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monkimport static org.mockito.Mockito.when; 223cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk 2346bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport android.content.Context; 24509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franksimport android.content.pm.UserInfo; 253cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monkimport android.os.Handler; 2646bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport android.os.Looper; 27509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franksimport android.os.UserManager; 28509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franksimport android.provider.Settings; 2946bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport android.support.test.runner.AndroidJUnit4; 3046bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport android.test.suitebuilder.annotation.SmallTest; 3146bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport android.text.SpannableStringBuilder; 329aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Manimport android.view.LayoutInflater; 3346bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport android.view.View; 3446bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport android.view.ViewGroup; 3546bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport android.widget.TextView; 3646bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 379c7844cb91b43929d0a86b1c90aa1efb37f5463aJason Monkimport com.android.systemui.Dependency; 3846bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport com.android.systemui.R; 3946bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport com.android.systemui.SysuiTestCase; 4046bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport com.android.systemui.statusbar.policy.SecurityController; 41340b0e5216b4fcc435e0459b1ca46155a572100dJason Monkimport android.testing.LayoutInflaterBuilder; 42340b0e5216b4fcc435e0459b1ca46155a572100dJason Monkimport android.testing.TestableImageView; 433cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk 4446bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport org.junit.Before; 4546bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport org.junit.Test; 4646bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowskiimport org.junit.runner.RunWith; 47509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franksimport org.mockito.Mockito; 4846bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 49774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss/* 50774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss * Compile and run the whole SystemUI test suite: 51774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss runtest --path frameworks/base/packages/SystemUI/tests 52774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss * 53774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss * Compile and run just this class: 54774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss runtest --path \ 55774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss frameworks/base/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java 56774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss*/ 57774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 5846bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski@SmallTest 5946bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski@RunWith(AndroidJUnit4.class) 60e5b770e47d44a40d412c7d42010b2cf67920d9e3Jason Monkpublic class QSSecurityFooterTest extends SysuiTestCase { 6146bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 6246bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski private final String MANAGING_ORGANIZATION = "organization"; 6346bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski private final String DEVICE_OWNER_PACKAGE = "TestDPC"; 6446bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski private final String VPN_PACKAGE = "TestVPN"; 65774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss private final String VPN_PACKAGE_2 = "TestVPN 2"; 6646bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 673cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk private ViewGroup mRootView; 683cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk private TextView mFooterText; 693cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk private TestableImageView mFooterIcon; 70e5b770e47d44a40d412c7d42010b2cf67920d9e3Jason Monk private QSSecurityFooter mFooter; 7146bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski private SecurityController mSecurityController = mock(SecurityController.class); 72509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks private UserManager mUserManager; 7346bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 7446bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski @Before 7546bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski public void setUp() { 76340b0e5216b4fcc435e0459b1ca46155a572100dJason Monk mDependency.injectTestDependency(SecurityController.class, mSecurityController); 77340b0e5216b4fcc435e0459b1ca46155a572100dJason Monk mDependency.injectTestDependency(Dependency.BG_LOOPER, Looper.getMainLooper()); 783cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk mContext.addMockSystemService(Context.LAYOUT_INFLATER_SERVICE, 793cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk new LayoutInflaterBuilder(mContext) 803cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk .replace("ImageView", TestableImageView.class) 813cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk .build()); 82509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks mUserManager = Mockito.mock(UserManager.class); 83509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks mContext.addMockSystemService(Context.USER_SERVICE, mUserManager); 843cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk Handler h = new Handler(Looper.getMainLooper()); 85e5b770e47d44a40d412c7d42010b2cf67920d9e3Jason Monk h.post(() -> mFooter = new QSSecurityFooter(null, mContext)); 863cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk waitForIdleSync(h); 873cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk mRootView = (ViewGroup) mFooter.getView(); 883cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk mFooterText = (TextView) mRootView.findViewById(R.id.footer_text); 893cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk mFooterIcon = (TestableImageView) mRootView.findViewById(R.id.footer_icon); 909c7844cb91b43929d0a86b1c90aa1efb37f5463aJason Monk mFooter.setHostEnvironment(null); 9146bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski } 9246bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 9346bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski @Test 9446bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski public void testUnmanaged() { 9546bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski when(mSecurityController.isDeviceManaged()).thenReturn(false); 9646bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski mFooter.refreshState(); 9746bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 9846bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski waitForIdleSync(mFooter.mHandler); 993cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk assertEquals(View.GONE, mRootView.getVisibility()); 10046bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski } 10146bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 10246bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski @Test 10346bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski public void testManagedNoOwnerName() { 10446bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski when(mSecurityController.isDeviceManaged()).thenReturn(true); 10546bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski when(mSecurityController.getDeviceOwnerOrganizationName()).thenReturn(null); 10646bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski mFooter.refreshState(); 10746bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 10846bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski waitForIdleSync(mFooter.mHandler); 109774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString(R.string.quick_settings_disclosure_management), 110774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 1113cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk assertEquals(View.VISIBLE, mRootView.getVisibility()); 112774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(View.VISIBLE, mFooterIcon.getVisibility()); 113774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss // -1 == never set. 114774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(-1, mFooterIcon.getLastImageResource()); 11546bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski } 11646bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 11746bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski @Test 11846bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski public void testManagedOwnerName() { 11946bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski when(mSecurityController.isDeviceManaged()).thenReturn(true); 12046bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski when(mSecurityController.getDeviceOwnerOrganizationName()) 12146bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski .thenReturn(MANAGING_ORGANIZATION); 12246bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski mFooter.refreshState(); 12346bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 12446bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski waitForIdleSync(mFooter.mHandler); 125774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString(R.string.quick_settings_disclosure_named_management, 126774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss MANAGING_ORGANIZATION), 1273cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk mFooterText.getText()); 1283cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk assertEquals(View.VISIBLE, mRootView.getVisibility()); 129774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(View.VISIBLE, mFooterIcon.getVisibility()); 130774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss // -1 == never set. 131774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(-1, mFooterIcon.getLastImageResource()); 13246bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski } 13346bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 13446bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski @Test 135509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks public void testManagedDemoMode() { 136509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks when(mSecurityController.isDeviceManaged()).thenReturn(true); 137509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks when(mSecurityController.getDeviceOwnerOrganizationName()).thenReturn(null); 138509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks final UserInfo mockUserInfo = Mockito.mock(UserInfo.class); 139509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks when(mockUserInfo.isDemo()).thenReturn(true); 140509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks when(mUserManager.getUserInfo(anyInt())).thenReturn(mockUserInfo); 141509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_DEMO_MODE, 1); 142509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks 143509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks mFooter.refreshState(); 144509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks 145509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks waitForIdleSync(mFooter.mHandler); 146509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks assertEquals(View.GONE, mRootView.getVisibility()); 147509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks } 148509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks 149509711105d6514f93891c6cf29a028ec4b87f3d4Christine Franks @Test 150a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss public void testNetworkLoggingEnabled() { 151a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss when(mSecurityController.isDeviceManaged()).thenReturn(true); 152a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss when(mSecurityController.isNetworkLoggingEnabled()).thenReturn(true); 153a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss mFooter.refreshState(); 154a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss 155a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss waitForIdleSync(mFooter.mHandler); 156774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString(R.string.quick_settings_disclosure_management_monitoring), 157774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 1583cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk assertEquals(View.VISIBLE, mFooterIcon.getVisibility()); 159774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss // -1 == never set. 160774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(-1, mFooterIcon.getLastImageResource()); 161774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 162774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss // Same situation, but with organization name set 163774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getDeviceOwnerOrganizationName()) 164774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss .thenReturn(MANAGING_ORGANIZATION); 165774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 166774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 167774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 168774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString( 169774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss R.string.quick_settings_disclosure_named_management_monitoring, 170774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss MANAGING_ORGANIZATION), 171774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 172a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss } 173a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss 174a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss @Test 175774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss public void testManagedCACertsInstalled() { 176774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.isDeviceManaged()).thenReturn(true); 177774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.hasCACertInCurrentUser()).thenReturn(true); 178774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 179774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 180774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 181774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString(R.string.quick_settings_disclosure_management_monitoring), 182774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 183774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss } 184774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 185774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss @Test 186774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss public void testManagedOneVpnEnabled() { 187a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss when(mSecurityController.isDeviceManaged()).thenReturn(true); 188a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss when(mSecurityController.isVpnEnabled()).thenReturn(true); 189774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getPrimaryVpnName()).thenReturn(VPN_PACKAGE); 190a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss mFooter.refreshState(); 191a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss 192a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss waitForIdleSync(mFooter.mHandler); 193774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString(R.string.quick_settings_disclosure_management_named_vpn, 194774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss VPN_PACKAGE), 195774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 1963cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk assertEquals(View.VISIBLE, mFooterIcon.getVisibility()); 197774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(R.drawable.ic_qs_vpn, mFooterIcon.getLastImageResource()); 198774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 199774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss // Same situation, but with organization name set 200774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getDeviceOwnerOrganizationName()) 201774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss .thenReturn(MANAGING_ORGANIZATION); 202774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 203774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 204774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 205774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString( 206774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss R.string.quick_settings_disclosure_named_management_named_vpn, 207774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss MANAGING_ORGANIZATION, VPN_PACKAGE), 208774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 209774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss } 210774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 211774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss @Test 212774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss public void testManagedTwoVpnsEnabled() { 213774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.isDeviceManaged()).thenReturn(true); 214774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.isVpnEnabled()).thenReturn(true); 215774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getPrimaryVpnName()).thenReturn(VPN_PACKAGE); 216774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getWorkProfileVpnName()).thenReturn(VPN_PACKAGE_2); 217774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 218774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 219774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 220774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString(R.string.quick_settings_disclosure_management_vpns), 221774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 222774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(View.VISIBLE, mFooterIcon.getVisibility()); 223774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(R.drawable.ic_qs_vpn, mFooterIcon.getLastImageResource()); 224774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 225774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss // Same situation, but with organization name set 226774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getDeviceOwnerOrganizationName()) 227774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss .thenReturn(MANAGING_ORGANIZATION); 228774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 229774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 230774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 231774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString(R.string.quick_settings_disclosure_named_management_vpns, 232774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss MANAGING_ORGANIZATION), 233774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 234a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss } 235a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss 236a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss @Test 237a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss public void testNetworkLoggingAndVpnEnabled() { 238a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss when(mSecurityController.isDeviceManaged()).thenReturn(true); 239a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss when(mSecurityController.isNetworkLoggingEnabled()).thenReturn(true); 240a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss when(mSecurityController.isVpnEnabled()).thenReturn(true); 241774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getPrimaryVpnName()).thenReturn("VPN Test App"); 242a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss mFooter.refreshState(); 243a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss 244a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss waitForIdleSync(mFooter.mHandler); 2453cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk assertEquals(View.VISIBLE, mFooterIcon.getVisibility()); 246774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(R.drawable.ic_qs_vpn, mFooterIcon.getLastImageResource()); 247774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString(R.string.quick_settings_disclosure_management_monitoring), 248774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 249774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss } 250774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 251774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss @Test 252774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss public void testWorkProfileCACertsInstalled() { 253774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.isDeviceManaged()).thenReturn(false); 254774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.hasCACertInWorkProfile()).thenReturn(true); 255774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 256774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 257774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 2583cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk // -1 == never set. 2593cfedd78b1e3704481de27d7354cb29b2fb43781Jason Monk assertEquals(-1, mFooterIcon.getLastImageResource()); 260774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString( 261774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss R.string.quick_settings_disclosure_managed_profile_monitoring), 262774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 263774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 264774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss // Same situation, but with organization name set 265774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getWorkProfileOrganizationName()) 266774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss .thenReturn(MANAGING_ORGANIZATION); 267774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 268774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 269774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 270774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString( 271774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss R.string.quick_settings_disclosure_named_managed_profile_monitoring, 272774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss MANAGING_ORGANIZATION), 273774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 274774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss } 275774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 276774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss @Test 277774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss public void testCACertsInstalled() { 278774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.isDeviceManaged()).thenReturn(false); 279774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.hasCACertInCurrentUser()).thenReturn(true); 280774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 281774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 282774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 283774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss // -1 == never set. 284774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(-1, mFooterIcon.getLastImageResource()); 285774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString(R.string.quick_settings_disclosure_monitoring), 286774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 287774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss } 288774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 289774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss @Test 290774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss public void testTwoVpnsEnabled() { 291774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.isVpnEnabled()).thenReturn(true); 292774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getPrimaryVpnName()).thenReturn(VPN_PACKAGE); 293774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getWorkProfileVpnName()).thenReturn(VPN_PACKAGE_2); 294774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 295774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 296774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 297774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(R.drawable.ic_qs_vpn, mFooterIcon.getLastImageResource()); 298774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString(R.string.quick_settings_disclosure_vpns), 299774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 300774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss } 301774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 302774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss @Test 303774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss public void testWorkProfileVpnEnabled() { 304774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.isVpnEnabled()).thenReturn(true); 305774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getWorkProfileVpnName()).thenReturn(VPN_PACKAGE_2); 306774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 307774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 308774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 309774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(R.drawable.ic_qs_vpn, mFooterIcon.getLastImageResource()); 310774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString( 311774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss R.string.quick_settings_disclosure_managed_profile_named_vpn, 312774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss VPN_PACKAGE_2), 313774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 314774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss } 315774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 316774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss @Test 317774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss public void testVpnEnabled() { 318774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.isVpnEnabled()).thenReturn(true); 319774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.getPrimaryVpnName()).thenReturn(VPN_PACKAGE); 320774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 321774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 322774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 323774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(R.drawable.ic_qs_vpn, mFooterIcon.getLastImageResource()); 324774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString(R.string.quick_settings_disclosure_named_vpn, 325774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss VPN_PACKAGE), 326774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 327774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 328774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss when(mSecurityController.hasWorkProfile()).thenReturn(true); 329774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooter.refreshState(); 330774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss 331774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss waitForIdleSync(mFooter.mHandler); 332774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss assertEquals(mContext.getString( 333774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss R.string.quick_settings_disclosure_personal_profile_named_vpn, 334774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss VPN_PACKAGE), 335774c6542cd429e33a8dcecd9c775d61f3675cdafphweiss mFooterText.getText()); 336a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss } 337a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss 338a4e169ed68ee57aa249e5e79fcd6bff5df46199ephweiss @Test 3390330f881447b053f88de6d30c99bfe4feed3c91dphweiss public void testGetManagementMessage() { 3400330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(null, mFooter.getManagementMessage(false, MANAGING_ORGANIZATION)); 3410330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(mContext.getString(R.string.monitoring_description_named_management, 3420330f881447b053f88de6d30c99bfe4feed3c91dphweiss MANAGING_ORGANIZATION), 3430330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getManagementMessage(true, MANAGING_ORGANIZATION)); 3440330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(mContext.getString(R.string.monitoring_description_management), 3450330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getManagementMessage(true, null)); 34646bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski } 34746bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 34846bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski @Test 3490330f881447b053f88de6d30c99bfe4feed3c91dphweiss public void testGetCaCertsMessage() { 3500330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(null, mFooter.getCaCertsMessage(true, false, false)); 3510330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(null, mFooter.getCaCertsMessage(false, false, false)); 3520330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(mContext.getString(R.string.monitoring_description_management_ca_certificate), 3530330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getCaCertsMessage(true, true, true)); 3540330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(mContext.getString(R.string.monitoring_description_management_ca_certificate), 3550330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getCaCertsMessage(true, false, true)); 3560330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(mContext.getString( 3570330f881447b053f88de6d30c99bfe4feed3c91dphweiss R.string.monitoring_description_managed_profile_ca_certificate), 3580330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getCaCertsMessage(false, false, true)); 3590330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(mContext.getString( 3600330f881447b053f88de6d30c99bfe4feed3c91dphweiss R.string.monitoring_description_ca_certificate), 3610330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getCaCertsMessage(false, true, false)); 36246bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski } 36346bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 36446bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski @Test 3650330f881447b053f88de6d30c99bfe4feed3c91dphweiss public void testGetNetworkLoggingMessage() { 3660330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(null, mFooter.getNetworkLoggingMessage(false)); 3670330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(mContext.getString(R.string.monitoring_description_management_network_logging), 3680330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getNetworkLoggingMessage(true)); 36946bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski } 37046bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 37146bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski @Test 3720330f881447b053f88de6d30c99bfe4feed3c91dphweiss public void testGetVpnMessage() { 3730330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(null, mFooter.getVpnMessage(true, true, null, null)); 3740330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(addLink(mContext.getString(R.string.monitoring_description_two_named_vpns, 3750330f881447b053f88de6d30c99bfe4feed3c91dphweiss VPN_PACKAGE, VPN_PACKAGE_2)), 3760330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getVpnMessage(true, true, VPN_PACKAGE, VPN_PACKAGE_2)); 3770330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(addLink(mContext.getString(R.string.monitoring_description_two_named_vpns, 3780330f881447b053f88de6d30c99bfe4feed3c91dphweiss VPN_PACKAGE, VPN_PACKAGE_2)), 3790330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getVpnMessage(false, true, VPN_PACKAGE, VPN_PACKAGE_2)); 3800330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(addLink(mContext.getString(R.string.monitoring_description_named_vpn, 3810330f881447b053f88de6d30c99bfe4feed3c91dphweiss VPN_PACKAGE)), 3820330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getVpnMessage(true, false, VPN_PACKAGE, null)); 3830330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(addLink(mContext.getString(R.string.monitoring_description_named_vpn, 3840330f881447b053f88de6d30c99bfe4feed3c91dphweiss VPN_PACKAGE)), 3850330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getVpnMessage(false, false, VPN_PACKAGE, null)); 3860330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(addLink(mContext.getString(R.string.monitoring_description_named_vpn, 3870330f881447b053f88de6d30c99bfe4feed3c91dphweiss VPN_PACKAGE_2)), 3880330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getVpnMessage(true, true, null, VPN_PACKAGE_2)); 3890330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(addLink(mContext.getString( 3900330f881447b053f88de6d30c99bfe4feed3c91dphweiss R.string.monitoring_description_managed_profile_named_vpn, 3910330f881447b053f88de6d30c99bfe4feed3c91dphweiss VPN_PACKAGE_2)), 3920330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getVpnMessage(false, true, null, VPN_PACKAGE_2)); 3930330f881447b053f88de6d30c99bfe4feed3c91dphweiss assertEquals(addLink(mContext.getString( 3940330f881447b053f88de6d30c99bfe4feed3c91dphweiss R.string.monitoring_description_personal_profile_named_vpn, 3950330f881447b053f88de6d30c99bfe4feed3c91dphweiss VPN_PACKAGE)), 3960330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.getVpnMessage(false, true, VPN_PACKAGE, null)); 39746bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski } 39846bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski 3999aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man @Test 4009aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man public void testConfigSubtitleVisibility() { 4019aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man View view = LayoutInflater.from(mContext) 4029aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man .inflate(R.layout.quick_settings_footer_dialog, null); 4039aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man 4049aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man // Device Management subtitle should be shown when there is Device Management section only 4059aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man // Other sections visibility will be set somewhere else so it will not be tested here 4069aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man mFooter.configSubtitleVisibility(true, false, false, false, view); 4079aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.VISIBLE, 4089aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.device_management_subtitle).getVisibility()); 4099aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man 4109aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man // If there are multiple sections, all subtitles should be shown 4119aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man mFooter.configSubtitleVisibility(true, true, false, false, view); 4129aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.VISIBLE, 4139aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.device_management_subtitle).getVisibility()); 4149aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.VISIBLE, 4159aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.ca_certs_subtitle).getVisibility()); 4169aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man 4179aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man // If there are multiple sections, all subtitles should be shown 4189aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man mFooter.configSubtitleVisibility(true, true, true, true, view); 4199aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.VISIBLE, 4209aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.device_management_subtitle).getVisibility()); 4219aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.VISIBLE, 4229aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.ca_certs_subtitle).getVisibility()); 4239aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.VISIBLE, 4249aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.network_logging_subtitle).getVisibility()); 4259aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.VISIBLE, 4269aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.vpn_subtitle).getVisibility()); 4279aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man 4289aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man // If there are multiple sections, all subtitles should be shown, event if there is no 4299aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man // Device Management section 4309aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man mFooter.configSubtitleVisibility(false, true, true, true, view); 4319aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.VISIBLE, 4329aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.ca_certs_subtitle).getVisibility()); 4339aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.VISIBLE, 4349aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.network_logging_subtitle).getVisibility()); 4359aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.VISIBLE, 4369aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.vpn_subtitle).getVisibility()); 4379aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man 4389aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man // If there is only 1 section, the title should be hidden 4399aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man mFooter.configSubtitleVisibility(false, true, false, false, view); 4409aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.GONE, 4419aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.ca_certs_subtitle).getVisibility()); 4429aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man mFooter.configSubtitleVisibility(false, false, true, false, view); 4439aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.GONE, 4449aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.network_logging_subtitle).getVisibility()); 4459aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man mFooter.configSubtitleVisibility(false, false, false, true, view); 4469aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man assertEquals(View.GONE, 4479aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man view.findViewById(R.id.vpn_subtitle).getVisibility()); 4489aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man } 4499aaa8cfc919db3b0fcb9ca3254ce1408981bcf48Winston Man 4500330f881447b053f88de6d30c99bfe4feed3c91dphweiss private CharSequence addLink(CharSequence description) { 45146bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski final SpannableStringBuilder message = new SpannableStringBuilder(); 4520330f881447b053f88de6d30c99bfe4feed3c91dphweiss message.append(description); 4530330f881447b053f88de6d30c99bfe4feed3c91dphweiss message.append(mContext.getString(R.string.monitoring_description_vpn_settings_separator)); 4540330f881447b053f88de6d30c99bfe4feed3c91dphweiss message.append(mContext.getString(R.string.monitoring_description_vpn_settings), 4550330f881447b053f88de6d30c99bfe4feed3c91dphweiss mFooter.new VpnSpan(), 0); 45646bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski return message; 45746bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski } 45846bea2e685915fe45d372389b0a90815e6067febBartosz Fabianowski} 459