| Index: chrome/browser/geolocation/core_location_data_provider_mac.h
|
| diff --git a/chrome/browser/geolocation/core_location_data_provider_mac.h b/chrome/browser/geolocation/core_location_data_provider_mac.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8eafd3cd47632e4c48ed19917f14111639a03565
|
| --- /dev/null
|
| +++ b/chrome/browser/geolocation/core_location_data_provider_mac.h
|
| @@ -0,0 +1,53 @@
|
| +// Copyright (c) 2010 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.
|
| +
|
| +// This file declares a CoreLocation data provider class that allows the
|
| +// CoreLocation framework to run on the UI thread, since the Geolocation API's
|
| +// providers all live on the IO thread
|
| +
|
| +#ifndef CHROME_BROWSER_GEOLOCATION_CORE_LOCATION_DATA_PROVIDER_H_
|
| +#define CHROME_BROWSER_GEOLOCATION_CORE_LOCATION_DATA_PROVIDER_H_
|
| +#pragma once
|
| +
|
| +#include "base/ref_counted.h"
|
| +#include "base/scoped_nsobject.h"
|
| +#include "chrome/browser/chrome_thread.h"
|
| +#include "chrome/common/geoposition.h"
|
| +
|
| +#import <Foundation/Foundation.h>
|
| +
|
| +class CoreLocationProviderMac;
|
| +@class CoreLocationWrapperMac;
|
| +
|
| +// Data provider class that allows CoreLocation to run in Chrome's UI thread
|
| +// while existing on any of Chrome's threads (in this case the IO thread)
|
| +class CoreLocationDataProviderMac
|
| + : public base::RefCountedThreadSafe<CoreLocationDataProviderMac> {
|
| + public:
|
| + CoreLocationDataProviderMac();
|
| +
|
| + bool StartUpdating(CoreLocationProviderMac* provider);
|
| + void StopUpdating();
|
| +
|
| + void UpdatePosition(Geoposition *position);
|
| +
|
| + protected:
|
| + friend class base::RefCountedThreadSafe<CoreLocationDataProviderMac>;
|
| + ~CoreLocationDataProviderMac();
|
| +
|
| + private:
|
| + // These must execute in ChromeThread::UI
|
| + void StartUpdatingTask();
|
| + void StopUpdatingTask();
|
| + // This must execute in the origin thread (IO thread)
|
| + void PositionUpdated(Geoposition position);
|
| +
|
| + // The wrapper class that supplies this class with position data
|
| + scoped_nsobject<CoreLocationWrapperMac> wrapper_;
|
| + // The LocationProviderBase class that should receive position data
|
| + CoreLocationProviderMac* provider_;
|
| + ChromeThread::ID origin_thread_id_;
|
| +};
|
| +
|
| +#endif
|
|
|