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.media.MediaRoute2Info; 20 import android.media.MediaRouter2Manager; 21 import android.media.RoutingSessionInfo; 22 23 import org.robolectric.RuntimeEnvironment; 24 import org.robolectric.annotation.Implementation; 25 import org.robolectric.annotation.Implements; 26 import org.robolectric.shadow.api.Shadow; 27 28 import java.util.List; 29 30 @Implements(MediaRouter2Manager.class) 31 public class ShadowRouter2Manager { 32 33 private List<MediaRoute2Info> mAvailableRoutes; 34 private List<MediaRoute2Info> mAllRoutes; 35 private List<MediaRoute2Info> mDeselectableRoutes; 36 private List<RoutingSessionInfo> mActiveSessions; 37 private List<RoutingSessionInfo> mRoutingSessions; 38 39 @Implementation getAvailableRoutes(String packageName)40 protected List<MediaRoute2Info> getAvailableRoutes(String packageName) { 41 return mAvailableRoutes; 42 } 43 setAvailableRoutes(List<MediaRoute2Info> infos)44 public void setAvailableRoutes(List<MediaRoute2Info> infos) { 45 mAvailableRoutes = infos; 46 } 47 48 @Implementation getAllRoutes()49 protected List<MediaRoute2Info> getAllRoutes() { 50 return mAllRoutes; 51 } 52 setAllRoutes(List<MediaRoute2Info> infos)53 public void setAllRoutes(List<MediaRoute2Info> infos) { 54 mAllRoutes = infos; 55 } 56 57 @Implementation getActiveSessions()58 protected List<RoutingSessionInfo> getActiveSessions() { 59 return mActiveSessions; 60 } 61 setActiveSessions(List<RoutingSessionInfo> infos)62 public void setActiveSessions(List<RoutingSessionInfo> infos) { 63 mActiveSessions = infos; 64 } 65 66 @Implementation getRoutingSessions(String packageName)67 protected List<RoutingSessionInfo> getRoutingSessions(String packageName) { 68 return mRoutingSessions; 69 } 70 setRoutingSessions(List<RoutingSessionInfo> infos)71 public void setRoutingSessions(List<RoutingSessionInfo> infos) { 72 mRoutingSessions = infos; 73 } 74 75 @Implementation getDeselectableRoutes(@onNull RoutingSessionInfo sessionInfo)76 public List<MediaRoute2Info> getDeselectableRoutes(@NonNull RoutingSessionInfo sessionInfo) { 77 return mDeselectableRoutes; 78 } 79 setDeselectableRoutes(List<MediaRoute2Info> routes)80 public void setDeselectableRoutes(List<MediaRoute2Info> routes) { 81 mDeselectableRoutes = routes; 82 } 83 getShadow()84 public static ShadowRouter2Manager getShadow() { 85 return (ShadowRouter2Manager) Shadow.extract( 86 MediaRouter2Manager.getInstance(RuntimeEnvironment.application)); 87 } 88 } 89