1 /*
2  * Copyright 2019 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 package com.android.settingslib.testutils.shadow;
17 
18 import android.annotation.NonNull;
19 import android.annotation.Nullable;
20 import android.media.MediaRoute2Info;
21 import android.media.MediaRouter2Manager;
22 import android.media.RoutingSessionInfo;
23 
24 import org.robolectric.RuntimeEnvironment;
25 import org.robolectric.annotation.Implementation;
26 import org.robolectric.annotation.Implements;
27 import org.robolectric.shadow.api.Shadow;
28 
29 import java.util.List;
30 
31 @Implements(MediaRouter2Manager.class)
32 public class ShadowRouter2Manager {
33 
34     private List<MediaRoute2Info> mAvailableRoutes;
35     private List<MediaRoute2Info> mAllRoutes;
36     private List<MediaRoute2Info> mDeselectableRoutes;
37     private List<RoutingSessionInfo> mRemoteSessions;
38     private List<RoutingSessionInfo> mRoutingSessions;
39     private RoutingSessionInfo mSystemRoutingSession;
40 
41     @Implementation
getAvailableRoutes(String packageName)42     protected List<MediaRoute2Info> getAvailableRoutes(String packageName) {
43         return mAvailableRoutes;
44     }
45 
setAvailableRoutes(List<MediaRoute2Info> infos)46     public void setAvailableRoutes(List<MediaRoute2Info> infos) {
47         mAvailableRoutes = infos;
48     }
49 
50     @Implementation
getAllRoutes()51     protected List<MediaRoute2Info> getAllRoutes() {
52         return mAllRoutes;
53     }
54 
setAllRoutes(List<MediaRoute2Info> infos)55     public void setAllRoutes(List<MediaRoute2Info> infos) {
56         mAllRoutes = infos;
57     }
58 
59     @Implementation
getRemoteSessions()60     protected List<RoutingSessionInfo> getRemoteSessions() {
61         return mRemoteSessions;
62     }
63 
setRemoteSessions(List<RoutingSessionInfo> infos)64     public void setRemoteSessions(List<RoutingSessionInfo> infos) {
65         mRemoteSessions = infos;
66     }
67 
68     @Implementation
getRoutingSessions(String packageName)69     protected List<RoutingSessionInfo> getRoutingSessions(String packageName) {
70         return mRoutingSessions;
71     }
72 
setRoutingSessions(List<RoutingSessionInfo> infos)73     public void setRoutingSessions(List<RoutingSessionInfo> infos) {
74         mRoutingSessions = infos;
75     }
76 
77     @Implementation
getSystemRoutingSession(@ullable String packageName)78     public RoutingSessionInfo getSystemRoutingSession(@Nullable String packageName) {
79         return mSystemRoutingSession;
80     }
81 
setSystemRoutingSession(RoutingSessionInfo sessionInfo)82     public void setSystemRoutingSession(RoutingSessionInfo sessionInfo) {
83         mSystemRoutingSession = sessionInfo;
84     }
85 
86     @Implementation
getDeselectableRoutes(@onNull RoutingSessionInfo sessionInfo)87     public List<MediaRoute2Info> getDeselectableRoutes(@NonNull RoutingSessionInfo sessionInfo) {
88         return mDeselectableRoutes;
89     }
90 
setDeselectableRoutes(List<MediaRoute2Info> routes)91     public void setDeselectableRoutes(List<MediaRoute2Info> routes) {
92         mDeselectableRoutes = routes;
93     }
94 
getShadow()95     public static ShadowRouter2Manager getShadow() {
96         return (ShadowRouter2Manager) Shadow.extract(
97                 MediaRouter2Manager.getInstance(RuntimeEnvironment.application));
98     }
99 
100     @Implementation
getTransferableRoutes(String packageName)101     protected List<MediaRoute2Info> getTransferableRoutes(String packageName) {
102         return mAvailableRoutes;
103     }
104 
setTransferableRoutes(List<MediaRoute2Info> infos)105     public void setTransferableRoutes(List<MediaRoute2Info> infos) {
106         mAvailableRoutes = infos;
107     }
108 }
109