Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: device/geolocation/android/java/org/chromium/device/geolocation/MockLocationProvider.java

Issue 2679323004: Android: Restructure geolocation folder structure (Closed)
Patch Set: Update deps Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.device.geolocation;
6
7 import android.os.Handler;
8 import android.os.HandlerThread;
9 import android.os.Message;
10
11 /**
12 * A mock location provider. When started, runs a background thread that periodi cally
13 * posts location updates. This does not involve any system Location APIs and th us
14 * does not require any special permissions in the test app or on the device.
15 */
16 public class MockLocationProvider implements LocationProviderFactory.LocationPro vider {
17 private boolean mIsRunning;
18 private Handler mHandler;
19 private HandlerThread mHandlerThread;
20 private final Object mLock = new Object();
21
22 private static final int UPDATE_LOCATION_MSG = 100;
23
24 public MockLocationProvider() {
25 }
26
27 public void stopUpdates() {
28 if (mHandlerThread != null) {
29 mHandlerThread.quit();
30 }
31 }
32
33 @Override
34 public void start(boolean enableHighAccuracy) {
35 if (mIsRunning) return;
36
37 if (mHandlerThread == null) {
38 startMockLocationProviderThread();
39 }
40
41 mIsRunning = true;
42 synchronized (mLock) {
43 mHandler.sendEmptyMessage(UPDATE_LOCATION_MSG);
44 }
45 }
46
47 @Override
48 public void stop() {
49 if (!mIsRunning) return;
50 mIsRunning = false;
51 synchronized (mLock) {
52 mHandler.removeMessages(UPDATE_LOCATION_MSG);
53 }
54 }
55
56 @Override
57 public boolean isRunning() {
58 return mIsRunning;
59 }
60
61 private void startMockLocationProviderThread() {
62 assert mHandlerThread == null;
63 assert mHandler == null;
64
65 mHandlerThread = new HandlerThread("MockLocationProviderImpl");
66 mHandlerThread.start();
67 mHandler = new Handler(mHandlerThread.getLooper()) {
68 @Override
69 public void handleMessage(Message msg) {
70 synchronized (mLock) {
71 if (msg.what == UPDATE_LOCATION_MSG) {
72 newLocation();
73 sendEmptyMessageDelayed(UPDATE_LOCATION_MSG, 250);
74 }
75 }
76 }
77 };
78 }
79
80 private void newLocation() {
81 LocationProviderAdapter.newLocationAvailable(
82 0, 0, System.currentTimeMillis() / 1000.0,
83 false, 0,
84 true, 0.5,
85 false, 0,
86 false, 0);
87 }
88 };
89
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698