• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package foo.bar.proxy;
18 
19 import static android.accessibilityservice.cts.utils.MultiProcessUtils.ACCESSIBILITY_SERVICE_STATE;
20 import static android.accessibilityservice.cts.utils.MultiProcessUtils.EXTRA_ENABLED;
21 import static android.accessibilityservice.cts.utils.MultiProcessUtils.EXTRA_ENABLED_SERVICES;
22 import static android.accessibilityservice.cts.utils.MultiProcessUtils.SEPARATE_PROCESS_ACTIVITY_TITLE;
23 import static android.accessibilityservice.cts.utils.MultiProcessUtils.TOUCH_EXPLORATION_STATE;
24 
25 import android.accessibilityservice.AccessibilityServiceInfo;
26 import android.app.Activity;
27 import android.content.Intent;
28 import android.os.Bundle;
29 import android.view.accessibility.AccessibilityManager;
30 
31 import java.util.List;
32 
33 /**
34  * Activity used in AccessibilityDisplayProxyTest.
35  */
36 public class NonProxySeparateAppActivity extends Activity {
37     @Override
onCreate(Bundle savedInstanceState)38     public void onCreate(Bundle savedInstanceState) {
39         super.onCreate(savedInstanceState);
40         setContentView(R.layout.non_proxy_separate_app_activity);
41         setTitle(SEPARATE_PROCESS_ACTIVITY_TITLE);
42         final AccessibilityManager a11yManager = getSystemService(AccessibilityManager.class);
43         final AccessibilityManager.AccessibilityServicesStateChangeListener
44                 servicesStateChangeListener = manager -> {
45                     final List<AccessibilityServiceInfo> enabled =
46                             manager.getEnabledAccessibilityServiceList(
47                                     AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
48                     final CharSequence[] enabledServiceList = new CharSequence[enabled.size()];
49                     for (int i = 0; i < enabled.size(); i++) {
50                         enabledServiceList[i] = enabled.get(i).getResolveInfo().serviceInfo.name;
51                     }
52                     sendBroadcast(createIntentWithAction(ACCESSIBILITY_SERVICE_STATE)
53                             .putExtra(EXTRA_ENABLED_SERVICES, enabledServiceList.clone()));
54                 };
55 
56         final AccessibilityManager.TouchExplorationStateChangeListener touchExplorationListener =
57                 enabled -> sendBroadcast(createIntentWithAction(TOUCH_EXPLORATION_STATE)
58                         .putExtra(EXTRA_ENABLED, enabled));
59 
60         a11yManager.addAccessibilityServicesStateChangeListener(servicesStateChangeListener);
61         a11yManager.addTouchExplorationStateChangeListener(touchExplorationListener);
62     }
63 
createIntentWithAction(String broadcastAction)64     private Intent createIntentWithAction(String broadcastAction) {
65         return new Intent(broadcastAction)
66                 .setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
67     }
68 }
69