blob: d6f8d486fab6305fec6a5eac11330859745e766e [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.media.router.caf;
import android.content.Context;
import android.support.v7.media.MediaRouteSelector;
import android.support.v7.media.MediaRouter;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
import java.util.List;
/** Shadow implementation for {@link MediaRouter}. */
@Implements(MediaRouter.class)
public class ShadowMediaRouter {
private static ShadowImplementation sImpl;
@Implementation
public static MediaRouter getInstance(Context context) {
return ReflectionHelpers.callConstructor(MediaRouter.class);
}
@Implementation
public List<MediaRouter.RouteInfo> getRoutes() {
return sImpl.getRoutes();
}
@Implementation
public void selectRoute(MediaRouter.RouteInfo route) {
sImpl.selectRoute(route);
}
@Implementation
public MediaRouter.RouteInfo getDefaultRoute() {
return sImpl.getDefaultRoute();
}
@Implementation
public void addCallback(MediaRouteSelector selector, MediaRouter.Callback callback, int flags) {
sImpl.addCallback(selector, callback, flags);
}
@Implementation
public void addCallback(MediaRouteSelector selector, MediaRouter.Callback callback) {
sImpl.addCallback(selector, callback);
}
@Implementation
public void removeCallback(MediaRouter.Callback callback) {
sImpl.removeCallback(callback);
}
@Implementation
public void unselect(int reason) {
sImpl.unselect(reason);
}
public static void setImplementation(ShadowImplementation impl) {
sImpl = impl;
}
/** The implementation skeleton for the implementation backing the shadow. */
public static class ShadowImplementation {
public List<MediaRouter.RouteInfo> getRoutes() {
return new ArrayList<>();
}
public void selectRoute(MediaRouter.RouteInfo route) {}
public MediaRouter.RouteInfo getDefaultRoute() {
return null;
}
public void addCallback(
MediaRouteSelector selector, MediaRouter.Callback callback, int flags) {}
public void addCallback(MediaRouteSelector selector, MediaRouter.Callback callback) {}
public void removeCallback(MediaRouter.Callback callback) {}
public void unselect(int reason) {}
}
}