OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.device.geolocation; | 5 package org.chromium.device.geolocation; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.location.Location; |
8 | 9 |
| 10 import org.chromium.base.Log; |
9 import org.chromium.base.ThreadUtils; | 11 import org.chromium.base.ThreadUtils; |
10 import org.chromium.base.VisibleForTesting; | 12 import org.chromium.base.VisibleForTesting; |
11 import org.chromium.base.annotations.CalledByNative; | 13 import org.chromium.base.annotations.CalledByNative; |
12 import org.chromium.base.annotations.MainDex; | 14 import org.chromium.base.annotations.MainDex; |
13 | 15 |
14 import java.util.concurrent.FutureTask; | 16 import java.util.concurrent.FutureTask; |
15 | 17 |
16 /** | 18 /** |
17 * Implements the Java side of LocationProviderAndroid. | 19 * Implements the Java side of LocationProviderAndroid. |
18 * Delegates all real functionality to the implementation | 20 * Delegates all real functionality to the implementation |
19 * returned from LocationProviderFactory. | 21 * returned from LocationProviderFactory. |
20 * See detailed documentation on | 22 * See detailed documentation on |
21 * content/browser/geolocation/location_api_adapter_android.h. | 23 * content/browser/geolocation/location_api_adapter_android.h. |
22 * Based on android.webkit.GeolocationService.java | 24 * Based on android.webkit.GeolocationService.java |
23 */ | 25 */ |
24 @MainDex | 26 @MainDex |
25 @VisibleForTesting | 27 @VisibleForTesting |
26 public class LocationProviderAdapter { | 28 public class LocationProviderAdapter { |
| 29 private static final String TAG = "cr_LocationProvider"; |
| 30 |
27 // Delegate handling the real work in the main thread. | 31 // Delegate handling the real work in the main thread. |
28 private LocationProviderFactory.LocationProvider mImpl; | 32 private LocationProviderFactory.LocationProvider mImpl; |
29 | 33 |
30 private LocationProviderAdapter(Context context) { | 34 private LocationProviderAdapter(Context context) { |
31 mImpl = LocationProviderFactory.create(context); | 35 mImpl = LocationProviderFactory.create(context); |
32 } | 36 } |
33 | 37 |
34 @CalledByNative | 38 @CalledByNative |
35 public static LocationProviderAdapter create(Context context) { | 39 public static LocationProviderAdapter create(Context context) { |
36 return new LocationProviderAdapter(context); | 40 return new LocationProviderAdapter(context); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 | 72 |
69 /** | 73 /** |
70 * Returns true if we are currently listening for location updates, false if
not. | 74 * Returns true if we are currently listening for location updates, false if
not. |
71 * Must be called only in the UI thread. | 75 * Must be called only in the UI thread. |
72 */ | 76 */ |
73 public boolean isRunning() { | 77 public boolean isRunning() { |
74 assert ThreadUtils.runningOnUiThread(); | 78 assert ThreadUtils.runningOnUiThread(); |
75 return mImpl.isRunning(); | 79 return mImpl.isRunning(); |
76 } | 80 } |
77 | 81 |
78 public static void newLocationAvailable(double latitude, double longitude, d
ouble timestamp, | 82 public static void onNewLocationAvailable(Location location) { |
79 boolean hasAltitude, double altitude, boolean hasAccuracy, double ac
curacy, | 83 nativeNewLocationAvailable(location.getLatitude(), location.getLongitude
(), |
80 boolean hasHeading, double heading, boolean hasSpeed, double speed)
{ | 84 location.getTime() / 1000.0, location.hasAltitude(), location.ge
tAltitude(), |
81 nativeNewLocationAvailable(latitude, longitude, timestamp, hasAltitude,
altitude, | 85 location.hasAccuracy(), location.getAccuracy(), location.hasBear
ing(), |
82 hasAccuracy, accuracy, hasHeading, heading, hasSpeed, speed); | 86 location.getBearing(), location.hasSpeed(), location.getSpeed())
; |
83 } | 87 } |
84 | 88 |
85 public static void newErrorAvailable(String message) { | 89 public static void newErrorAvailable(String message) { |
| 90 Log.e(TAG, "newErrorAvailable %s", message); |
86 nativeNewErrorAvailable(message); | 91 nativeNewErrorAvailable(message); |
87 } | 92 } |
88 | 93 |
89 // Native functions | 94 // Native functions |
90 private static native void nativeNewLocationAvailable(double latitude, doubl
e longitude, | 95 private static native void nativeNewLocationAvailable(double latitude, doubl
e longitude, |
91 double timeStamp, boolean hasAltitude, double altitude, boolean hasA
ccuracy, | 96 double timeStamp, boolean hasAltitude, double altitude, boolean hasA
ccuracy, |
92 double accuracy, boolean hasHeading, double heading, boolean hasSpee
d, double speed); | 97 double accuracy, boolean hasHeading, double heading, boolean hasSpee
d, double speed); |
93 private static native void nativeNewErrorAvailable(String message); | 98 private static native void nativeNewErrorAvailable(String message); |
94 } | 99 } |
OLD | NEW |