|  | // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "content/browser/geolocation/location_provider_android.h" | 
|  |  | 
|  | #include "base/time/time.h" | 
|  | #include "content/browser/geolocation/location_api_adapter_android.h" | 
|  | #include "content/public/common/geoposition.h" | 
|  |  | 
|  | namespace content { | 
|  |  | 
|  | // LocationProviderAndroid | 
|  | LocationProviderAndroid::LocationProviderAndroid() { | 
|  | } | 
|  |  | 
|  | LocationProviderAndroid::~LocationProviderAndroid() { | 
|  | StopProvider(); | 
|  | } | 
|  |  | 
|  | void LocationProviderAndroid::NotifyNewGeoposition( | 
|  | const Geoposition& position) { | 
|  | last_position_ = position; | 
|  | NotifyCallback(last_position_); | 
|  | } | 
|  |  | 
|  | bool LocationProviderAndroid::StartProvider(bool high_accuracy) { | 
|  | return AndroidLocationApiAdapter::GetInstance()->Start(this, high_accuracy); | 
|  | } | 
|  |  | 
|  | void LocationProviderAndroid::StopProvider() { | 
|  | AndroidLocationApiAdapter::GetInstance()->Stop(); | 
|  | } | 
|  |  | 
|  | void LocationProviderAndroid::GetPosition(Geoposition* position) { | 
|  | *position = last_position_; | 
|  | } | 
|  |  | 
|  | void LocationProviderAndroid::RequestRefresh() { | 
|  | // Nothing to do here, android framework will call us back on new position. | 
|  | } | 
|  |  | 
|  | void LocationProviderAndroid::OnPermissionGranted() { | 
|  | // Nothing to do here. | 
|  | } | 
|  |  | 
|  | LocationProvider* NewSystemLocationProvider() { | 
|  | return new LocationProviderAndroid; | 
|  | } | 
|  |  | 
|  | }  // namespace content |