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