blob: 36c43ff1ce1dc9d1f65258660a49b259b0882ac7 [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 Lockwood03ca2162010-04-01 08:10:09 -070019import android.location.Criteria;
Mike Lockwood4e50b782009-04-03 08:24:43 -070020import android.location.ILocationManager;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070021import android.location.Location;
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040022import android.location.LocationProvider;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070023import android.os.Bundle;
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040024import android.os.RemoteException;
Dianne Hackborn7e9f4eb2010-09-10 18:43:00 -070025import android.os.WorkSource;
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040026import android.util.Log;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070027import android.util.PrintWriterPrinter;
28
Nick Pelly6fa9ad42012-07-16 12:18:23 -070029
30import java.io.FileDescriptor;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070031import java.io.PrintWriter;
32
Nick Pelly6fa9ad42012-07-16 12:18:23 -070033import com.android.internal.location.ProviderProperties;
34import com.android.internal.location.ProviderRequest;
35
Mike Lockwood7ec434e2009-03-27 07:46:48 -070036/**
37 * A mock location provider used by LocationManagerService to implement test providers.
38 *
39 * {@hide}
40 */
Mike Lockwoodd03ff942010-02-09 08:46:14 -050041public class MockProvider implements LocationProviderInterface {
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040042 private final String mName;
Nick Pelly6fa9ad42012-07-16 12:18:23 -070043 private final ProviderProperties mProperties;
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040044 private final ILocationManager mLocationManager;
Nick Pelly6fa9ad42012-07-16 12:18:23 -070045
Mike Lockwood7ec434e2009-03-27 07:46:48 -070046 private final Location mLocation;
Nick Pelly6fa9ad42012-07-16 12:18:23 -070047 private final Bundle mExtras = new Bundle();
48
Mike Lockwood7ec434e2009-03-27 07:46:48 -070049 private int mStatus;
50 private long mStatusUpdateTime;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070051 private boolean mHasLocation;
52 private boolean mHasStatus;
53 private boolean mEnabled;
54
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040055 private static final String TAG = "MockProvider";
56
Nick Pelly6fa9ad42012-07-16 12:18:23 -070057 public MockProvider(String name, ILocationManager locationManager,
58 ProviderProperties properties) {
59 if (properties == null) throw new NullPointerException("properties is null");
60
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040061 mName = name;
62 mLocationManager = locationManager;
Nick Pelly6fa9ad42012-07-16 12:18:23 -070063 mProperties = properties;
Mike Lockwood7ec434e2009-03-27 07:46:48 -070064 mLocation = new Location(name);
65 }
66
Nick Pelly6fa9ad42012-07-16 12:18:23 -070067 @Override
Mike Lockwoodd03ff942010-02-09 08:46:14 -050068 public String getName() {
69 return mName;
70 }
71
Nick Pelly6fa9ad42012-07-16 12:18:23 -070072 @Override
73 public ProviderProperties getProperties() {
74 return mProperties;
75 }
76
77 @Override
Mike Lockwood7ec434e2009-03-27 07:46:48 -070078 public void disable() {
79 mEnabled = false;
80 }
81
Nick Pelly6fa9ad42012-07-16 12:18:23 -070082 @Override
Mike Lockwood7ec434e2009-03-27 07:46:48 -070083 public void enable() {
84 mEnabled = true;
85 }
86
Nick Pelly6fa9ad42012-07-16 12:18:23 -070087 @Override
Mike Lockwoodd03ff942010-02-09 08:46:14 -050088 public boolean isEnabled() {
89 return mEnabled;
90 }
91
Nick Pelly6fa9ad42012-07-16 12:18:23 -070092 @Override
Mike Lockwood7ec434e2009-03-27 07:46:48 -070093 public int getStatus(Bundle extras) {
94 if (mHasStatus) {
95 extras.clear();
96 extras.putAll(mExtras);
97 return mStatus;
98 } else {
Mike Lockwood15e3d0f2009-05-01 07:53:28 -040099 return LocationProvider.AVAILABLE;
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700100 }
101 }
102
Nick Pelly6fa9ad42012-07-16 12:18:23 -0700103 @Override
Mike Lockwood4e50b782009-04-03 08:24:43 -0700104 public long getStatusUpdateTime() {
105 return mStatusUpdateTime;
106 }
107
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700108 public void setLocation(Location l) {
109 mLocation.set(l);
110 mHasLocation = true;
Nick Pelly6fa9ad42012-07-16 12:18:23 -0700111 if (mEnabled) {
112 try {
113 mLocationManager.reportLocation(mLocation, false);
114 } catch (RemoteException e) {
115 Log.e(TAG, "RemoteException calling reportLocation");
116 }
Mike Lockwood15e3d0f2009-05-01 07:53:28 -0400117 }
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700118 }
119
120 public void clearLocation() {
121 mHasLocation = false;
122 }
123
124 public void setStatus(int status, Bundle extras, long updateTime) {
125 mStatus = status;
126 mStatusUpdateTime = updateTime;
127 mExtras.clear();
128 if (extras != null) {
129 mExtras.putAll(extras);
130 }
131 mHasStatus = true;
132 }
133
134 public void clearStatus() {
135 mHasStatus = false;
Mike Lockwood4e50b782009-04-03 08:24:43 -0700136 mStatusUpdateTime = 0;
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700137 }
138
Nick Pelly6fa9ad42012-07-16 12:18:23 -0700139 @Override
140 public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
141 dump(pw, "");
Mike Lockwood15e3d0f2009-05-01 07:53:28 -0400142 }
143
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700144 public void dump(PrintWriter pw, String prefix) {
Mike Lockwood15e3d0f2009-05-01 07:53:28 -0400145 pw.println(prefix + mName);
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700146 pw.println(prefix + "mHasLocation=" + mHasLocation);
147 pw.println(prefix + "mLocation:");
148 mLocation.dump(new PrintWriterPrinter(pw), prefix + " ");
149 pw.println(prefix + "mHasStatus=" + mHasStatus);
150 pw.println(prefix + "mStatus=" + mStatus);
151 pw.println(prefix + "mStatusUpdateTime=" + mStatusUpdateTime);
152 pw.println(prefix + "mExtras=" + mExtras);
153 }
Nick Pelly6fa9ad42012-07-16 12:18:23 -0700154
155 @Override
156 public void setRequest(ProviderRequest request, WorkSource source) { }
157
158 @Override
159 public boolean sendExtraCommand(String command, Bundle extras) {
160 return false;
161 }
Mike Lockwood7ec434e2009-03-27 07:46:48 -0700162}