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

Side by Side Diff: chrome/browser/geolocation/gps_location_provider_linux.h

Issue 3092015: Add CoreLocation support to Chrome (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Final rearrangements and merge with trunk Created 10 years, 3 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
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // This file declares GPS providers that run on linux. Currently, just uses 5 // This file declares GPS providers that run on linux. Currently, just uses
6 // the libgps (gpsd) API. Public for testing only - for normal usage this 6 // the libgps (gpsd) API. Public for testing only - for normal usage this
7 // header should not be required, as location_provider.h declares the needed 7 // header should not be required, as location_provider.h declares the needed
8 // factory function. 8 // factory function.
9 9
10 #ifndef CHROME_BROWSER_GEOLOCATION_GPS_LOCATION_PROVIDER_LINUX_H_ 10 #ifndef CHROME_BROWSER_GEOLOCATION_GPS_LOCATION_PROVIDER_LINUX_H_
11 #define CHROME_BROWSER_GEOLOCATION_GPS_LOCATION_PROVIDER_LINUX_H_ 11 #define CHROME_BROWSER_GEOLOCATION_GPS_LOCATION_PROVIDER_LINUX_H_
12 #pragma once 12 #pragma once
13 13
14 #include "base/scoped_ptr.h" 14 #include "base/scoped_ptr.h"
15 #include "base/task.h" 15 #include "base/task.h"
16 #include "chrome/browser/geolocation/location_provider.h" 16 #include "chrome/browser/geolocation/location_provider.h"
17 #include "chrome/common/geoposition.h" 17 #include "chrome/common/geoposition.h"
18 18
19 class LibGps; 19 class LibGps;
20 20
21 // Location provider for Linux, that uses libgps/gpsd to obtain position fixes. 21 // Location provider for Linux, that uses libgps/gpsd to obtain position fixes.
22 // TODO(joth): Currently this runs entirely in the client thread (i.e. Chrome's 22 // TODO(joth): Currently this runs entirely in the client thread (i.e. Chrome's
23 // IO thread). As the older libgps API is not designed to support polling, 23 // IO thread). As the older libgps API is not designed to support polling,
24 // there's a chance it could block, so better move this into its own worker 24 // there's a chance it could block, so better move this into its own worker
25 // thread. 25 // thread.
26 class GpsLocationProviderLinux : public LocationProviderBase { 26 class GpsLocationProviderLinux : public LocationProviderBase {
27 public: 27 public:
28 typedef LibGps* (*LibGpsFactory)(); 28 typedef LibGps* (*LibGpsFactory)();
29 // |factory| will be used to create the gpsd client library wrapper. (Note 29 // |factory| will be used to create the gpsd client library wrapper. (Note
30 // NewGpsLocationProvider() will use the default factory). 30 // NewSystemLocationProvider() will use the default factory).
31 explicit GpsLocationProviderLinux(LibGpsFactory libgps_factory); 31 explicit GpsLocationProviderLinux(LibGpsFactory libgps_factory);
32 virtual ~GpsLocationProviderLinux(); 32 virtual ~GpsLocationProviderLinux();
33 33
34 // LocationProvider 34 // LocationProvider
35 virtual bool StartProvider(bool high_accuracy); 35 virtual bool StartProvider(bool high_accuracy);
36 virtual void StopProvider(); 36 virtual void StopProvider();
37 virtual void GetPosition(Geoposition* position); 37 virtual void GetPosition(Geoposition* position);
38 virtual void UpdatePosition(); 38 virtual void UpdatePosition();
39 virtual void OnPermissionGranted(const GURL& requesting_frame); 39 virtual void OnPermissionGranted(const GURL& requesting_frame);
40 40
41 private: 41 private:
42 // Task which run in the child thread. 42 // Task which run in the child thread.
43 void DoGpsPollTask(); 43 void DoGpsPollTask();
44 44
45 // Will schedule a poll; i.e. enqueue DoGpsPollTask deferred task. 45 // Will schedule a poll; i.e. enqueue DoGpsPollTask deferred task.
46 void ScheduleNextGpsPoll(int interval); 46 void ScheduleNextGpsPoll(int interval);
47 47
48 const LibGpsFactory libgps_factory_; 48 const LibGpsFactory libgps_factory_;
49 scoped_ptr<LibGps> gps_; 49 scoped_ptr<LibGps> gps_;
50 Geoposition position_; 50 Geoposition position_;
51 51
52 // Holder for the tasks which run on the thread; takes care of cleanup. 52 // Holder for the tasks which run on the thread; takes care of cleanup.
53 ScopedRunnableMethodFactory<GpsLocationProviderLinux> task_factory_; 53 ScopedRunnableMethodFactory<GpsLocationProviderLinux> task_factory_;
54 }; 54 };
55 55
56 #endif // CHROME_BROWSER_GEOLOCATION_GPS_LOCATION_PROVIDER_LINUX_H_ 56 #endif // CHROME_BROWSER_GEOLOCATION_GPS_LOCATION_PROVIDER_LINUX_H_
OLDNEW
« no previous file with comments | « chrome/browser/geolocation/core_location_provider_mac.mm ('k') | chrome/browser/geolocation/location_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698