blob: 857876189c556d04284e271698eccced7f990aae [file] [log] [blame]
Mike Lockwood7ec434e2009-03-27 07:46:48 -07001/*
2 * Copyright (C) 2009 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
Mike Lockwood00b74272010-03-26 10:41:48 -040017package com.android.server.location;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070018
Mike Lockwood4e50b782009-04-03 08:24:43 -070019import android.location.ILocationManager;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070020import android.location.Location;
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040021import android.location.LocationProvider;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070022import android.os.Bundle;
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040023import android.os.RemoteException;
Dianne Hackborn7e9f4eb2010-09-10 18:43:00 -070024import android.os.WorkSource;
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040025import android.util.Log;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070026import android.util.PrintWriterPrinter;
27
Nick Pelly6fa9ad42012-07-16 12:18:23 -070028
29import java.io.FileDescriptor;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070030import java.io.PrintWriter;
31
Nick Pelly6fa9ad42012-07-16 12:18:23 -070032import com.android.internal.location.ProviderProperties;
33import com.android.internal.location.ProviderRequest;
34
Mike Lockwood7ec434e2009-03-27 07:46:48 -070035/**
36 * A mock location provider used by LocationManagerService to implement test providers.
37 *
38 * {@hide}
39 */
Mike Lockwoodd03ff942010-02-09 08:46:14 -050040public class MockProvider implements LocationProviderInterface {
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040041 private final String mName;
Nick Pelly6fa9ad42012-07-16 12:18:23 -070042 private final ProviderProperties mProperties;
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040043 private final ILocationManager mLocationManager;
Nick Pelly6fa9ad42012-07-16 12:18:23 -070044
Mike Lockwood7ec434e2009-03-27 07:46:48 -070045 private final Location mLocation;
Nick Pelly6fa9ad42012-07-16 12:18:23 -070046 private final Bundle mExtras = new Bundle();
47
Mike Lockwood7ec434e2009-03-27 07:46:48 -070048 private int mStatus;
49 private long mStatusUpdateTime;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070050 private boolean mHasLocation;
51 private boolean mHasStatus;
52 private boolean mEnabled;
53
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040054 private static final String TAG = "MockProvider";
55
Nick Pelly6fa9ad42012-07-16 12:18:23 -070056 public MockProvider(String name, ILocationManager locationManager,
57 ProviderProperties properties) {
58 if (properties == null) throw new NullPointerException("properties is null");
59
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040060 mName = name;
61 mLocationManager = locationManager;
Nick Pelly6fa9ad42012-07-16 12:18:23 -070062 mProperties = properties;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070063 mLocation = new Location(name);
64 }
65
Nick Pelly6fa9ad42012-07-16 12:18:23 -070066 @Override
Mike Lockwoodd03ff942010-02-09 08:46:14 -050067 public String getName() {
68 return mName;
69 }
70
Nick Pelly6fa9ad42012-07-16 12:18:23 -070071 @Override
72 public ProviderProperties getProperties() {
73 return mProperties;
74 }
75
76 @Override
Mike Lockwood7ec434e2009-03-27 07:46:48 -070077 public void disable() {
78 mEnabled = false;
79 }
80
Nick Pelly6fa9ad42012-07-16 12:18:23 -070081 @Override
Mike Lockwood7ec434e2009-03-27 07:46:48 -070082 public void enable() {
83 mEnabled = true;
84 }
85
Nick Pelly6fa9ad42012-07-16 12:18:23 -070086 @Override
Mike Lockwoodd03ff942010-02-09 08:46:14 -050087 public boolean isEnabled() {
88 return mEnabled;
89 }
90
Nick Pelly6fa9ad42012-07-16 12:18:23 -070091 @Override
Mike Lockwood7ec434e2009-03-27 07:46:48 -070092 public int getStatus(Bundle extras) {
93 if (mHasStatus) {
94 extras.clear();
95 extras.putAll(mExtras);
96 return mStatus;
97 } else {
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040098 return LocationProvider.AVAILABLE;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070099 }
100 }
101
Nick Pelly6fa9ad42012-07-16 12:18:23 -0700102 @Override
Mike Lockwood4e50b782009-04-03 08:24:43 -0700103 public long getStatusUpdateTime() {
104 return mStatusUpdateTime;
105 }
106
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700107 public void setLocation(Location l) {
108 mLocation.set(l);
109 mHasLocation = true;
Nick Pelly6fa9ad42012-07-16 12:18:23 -0700110 if (mEnabled) {
111 try {
112 mLocationManager.reportLocation(mLocation, false);
113 } catch (RemoteException e) {
114 Log.e(TAG, "RemoteException calling reportLocation");
115 }
Mike Lockwood15e3d0f2009-05-01 07:53:28 -0400116 }
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700117 }
118
119 public void clearLocation() {
120 mHasLocation = false;
121 }
122
123 public void setStatus(int status, Bundle extras, long updateTime) {
124 mStatus = status;
125 mStatusUpdateTime = updateTime;
126 mExtras.clear();
127 if (extras != null) {
128 mExtras.putAll(extras);
129 }
130 mHasStatus = true;
131 }
132
133 public void clearStatus() {
134 mHasStatus = false;
Mike Lockwood4e50b782009-04-03 08:24:43 -0700135 mStatusUpdateTime = 0;
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700136 }
137
Nick Pelly6fa9ad42012-07-16 12:18:23 -0700138 @Override
139 public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
140 dump(pw, "");
Mike Lockwood15e3d0f2009-05-01 07:53:28 -0400141 }
142
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700143 public void dump(PrintWriter pw, String prefix) {
Mike Lockwood15e3d0f2009-05-01 07:53:28 -0400144 pw.println(prefix + mName);
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700145 pw.println(prefix + "mHasLocation=" + mHasLocation);
146 pw.println(prefix + "mLocation:");
147 mLocation.dump(new PrintWriterPrinter(pw), prefix + " ");
148 pw.println(prefix + "mHasStatus=" + mHasStatus);
149 pw.println(prefix + "mStatus=" + mStatus);
150 pw.println(prefix + "mStatusUpdateTime=" + mStatusUpdateTime);
151 pw.println(prefix + "mExtras=" + mExtras);
152 }
Nick Pelly6fa9ad42012-07-16 12:18:23 -0700153
154 @Override
155 public void setRequest(ProviderRequest request, WorkSource source) { }
156
157 @Override
158 public boolean sendExtraCommand(String command, Bundle extras) {
159 return false;
160 }
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700161}