| /* | |
| * Copyright (C) 2009 The Android Open Source Project | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| package com.android.server.location; | |
| import android.location.ILocationManager; | |
| import android.location.Location; | |
| import android.location.LocationProvider; | |
| import android.os.Bundle; | |
| import android.os.RemoteException; | |
| import android.os.WorkSource; | |
| import android.util.Log; | |
| import android.util.PrintWriterPrinter; | |
| import java.io.FileDescriptor; | |
| import java.io.PrintWriter; | |
| import com.android.internal.location.ProviderProperties; | |
| import com.android.internal.location.ProviderRequest; | |
| /** | |
| * A mock location provider used by LocationManagerService to implement test providers. | |
| * | |
| * {@hide} | |
| */ | |
| public class MockProvider implements LocationProviderInterface { | |
| private final String mName; | |
| private final ProviderProperties mProperties; | |
| private final ILocationManager mLocationManager; | |
| private final Location mLocation; | |
| private final Bundle mExtras = new Bundle(); | |
| private int mStatus; | |
| private long mStatusUpdateTime; | |
| private boolean mHasLocation; | |
| private boolean mHasStatus; | |
| private boolean mEnabled; | |
| private static final String TAG = "MockProvider"; | |
| public MockProvider(String name, ILocationManager locationManager, | |
| ProviderProperties properties) { | |
| if (properties == null) throw new NullPointerException("properties is null"); | |
| mName = name; | |
| mLocationManager = locationManager; | |
| mProperties = properties; | |
| mLocation = new Location(name); | |
| } | |
| @Override | |
| public String getName() { | |
| return mName; | |
| } | |
| @Override | |
| public ProviderProperties getProperties() { | |
| return mProperties; | |
| } | |
| @Override | |
| public void disable() { | |
| mEnabled = false; | |
| } | |
| @Override | |
| public void enable() { | |
| mEnabled = true; | |
| } | |
| @Override | |
| public boolean isEnabled() { | |
| return mEnabled; | |
| } | |
| @Override | |
| public int getStatus(Bundle extras) { | |
| if (mHasStatus) { | |
| extras.clear(); | |
| extras.putAll(mExtras); | |
| return mStatus; | |
| } else { | |
| return LocationProvider.AVAILABLE; | |
| } | |
| } | |
| @Override | |
| public long getStatusUpdateTime() { | |
| return mStatusUpdateTime; | |
| } | |
| public void setLocation(Location l) { | |
| mLocation.set(l); | |
| mHasLocation = true; | |
| if (mEnabled) { | |
| try { | |
| mLocationManager.reportLocation(mLocation, false); | |
| } catch (RemoteException e) { | |
| Log.e(TAG, "RemoteException calling reportLocation"); | |
| } | |
| } | |
| } | |
| public void clearLocation() { | |
| mHasLocation = false; | |
| } | |
| public void setStatus(int status, Bundle extras, long updateTime) { | |
| mStatus = status; | |
| mStatusUpdateTime = updateTime; | |
| mExtras.clear(); | |
| if (extras != null) { | |
| mExtras.putAll(extras); | |
| } | |
| mHasStatus = true; | |
| } | |
| public void clearStatus() { | |
| mHasStatus = false; | |
| mStatusUpdateTime = 0; | |
| } | |
| @Override | |
| public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { | |
| dump(pw, ""); | |
| } | |
| public void dump(PrintWriter pw, String prefix) { | |
| pw.println(prefix + mName); | |
| pw.println(prefix + "mHasLocation=" + mHasLocation); | |
| pw.println(prefix + "mLocation:"); | |
| mLocation.dump(new PrintWriterPrinter(pw), prefix + " "); | |
| pw.println(prefix + "mHasStatus=" + mHasStatus); | |
| pw.println(prefix + "mStatus=" + mStatus); | |
| pw.println(prefix + "mStatusUpdateTime=" + mStatusUpdateTime); | |
| pw.println(prefix + "mExtras=" + mExtras); | |
| } | |
| @Override | |
| public void setRequest(ProviderRequest request, WorkSource source) { } | |
| @Override | |
| public boolean sendExtraCommand(String command, Bundle extras) { | |
| return false; | |
| } | |
| } |