1 /* 2 * Copyright (C) 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.wallpaper.testing; 17 18 19 import com.android.wallpaper.module.NetworkStatusNotifier; 20 21 import java.util.ArrayList; 22 import java.util.List; 23 24 /** 25 * Test implementation of {@link NetworkStatusNotifier} which enables clients to manually notify 26 * listeners of a network status change. 27 */ 28 public class TestNetworkStatusNotifier implements NetworkStatusNotifier { 29 30 private List<Listener> mListeners; 31 @NetworkStatus 32 private int mNetworkStatus; 33 TestNetworkStatusNotifier()34 public TestNetworkStatusNotifier() { 35 mListeners = new ArrayList<>(); 36 mNetworkStatus = NETWORK_CONNECTED; 37 } 38 39 @Override getNetworkStatus()40 public int getNetworkStatus() { 41 return mNetworkStatus; 42 } 43 44 @Override registerListener(Listener listener)45 public void registerListener(Listener listener) { 46 mListeners.add(listener); 47 listener.onNetworkChanged(mNetworkStatus); 48 } 49 50 @Override unregisterListener(Listener listener)51 public void unregisterListener(Listener listener) { 52 mListeners.remove(listener); 53 } 54 setAndNotifyNetworkStatus(@etworkStatus int networkStatus)55 public void setAndNotifyNetworkStatus(@NetworkStatus int networkStatus) { 56 mNetworkStatus = networkStatus; 57 for (Listener listener : mListeners) { 58 listener.onNetworkChanged(mNetworkStatus); 59 } 60 } 61 } 62