Index: third_party/WebKit/Source/modules/geolocation/GeolocationController.h |
diff --git a/third_party/WebKit/Source/modules/geolocation/GeolocationController.h b/third_party/WebKit/Source/modules/geolocation/GeolocationController.h |
index 77365b3f81320101593978bdc788a0ab3fd135a5..c47cae86319cce27aced7ab020c24d4de54d5300 100644 |
--- a/third_party/WebKit/Source/modules/geolocation/GeolocationController.h |
+++ b/third_party/WebKit/Source/modules/geolocation/GeolocationController.h |
@@ -26,6 +26,8 @@ |
#ifndef GeolocationController_h |
#define GeolocationController_h |
+#include "components/geolocation/public/interfaces/geolocation.mojom.h" |
+#include "components/permission/public/interfaces/permission.mojom.h" |
#include "core/frame/LocalFrame.h" |
#include "core/page/PageLifecycleObserver.h" |
#include "modules/ModulesExport.h" |
@@ -34,60 +36,59 @@ |
#include "wtf/HashSet.h" |
#include "wtf/Noncopyable.h" |
+namespace mojo { |
+class ServiceProvider; |
+} |
+ |
namespace blink { |
-class GeolocationClient; |
class GeolocationError; |
class GeolocationPosition; |
-class MODULES_EXPORT GeolocationController final : public NoBaseWillBeGarbageCollectedFinalized<GeolocationController>, public WillBeHeapSupplement<LocalFrame>, public PageLifecycleObserver { |
+class MODULES_EXPORT GeolocationController final : public GarbageCollectedFinalized<GeolocationController>, public PageLifecycleObserver { |
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(GeolocationController); |
WTF_MAKE_NONCOPYABLE(GeolocationController); |
WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED(GeolocationController); |
public: |
+ GeolocationController(Geolocation*); |
virtual ~GeolocationController(); |
- static PassOwnPtrWillBeRawPtr<GeolocationController> create(LocalFrame&, GeolocationClient*); |
- |
- void addObserver(Geolocation*, bool enableHighAccuracy); |
- void removeObserver(Geolocation*); |
+ void startUpdating(bool enableHighAccuracy); |
+ void stopUpdating(); |
- void requestPermission(Geolocation*); |
- void cancelPermissionRequest(Geolocation*); |
+ void requestPermission(); |
+ void cancelPermissionRequest(); |
void positionChanged(GeolocationPosition*); |
void errorOccurred(GeolocationError*); |
GeolocationPosition* lastPosition(); |
- void setClientForTest(GeolocationClient*); |
- bool hasClientForTest() { return m_hasClientForTest; } |
- GeolocationClient* client() { return m_client; } |
- |
// Inherited from PageLifecycleObserver. |
void pageVisibilityChanged() override; |
- static const char* supplementName(); |
- static GeolocationController* from(LocalFrame* frame) { return static_cast<GeolocationController*>(WillBeHeapSupplement<LocalFrame>::from(frame, supplementName())); } |
- |
- // Inherited from Supplement. |
- DECLARE_VIRTUAL_TRACE(); |
+ DECLARE_TRACE(); |
private: |
- GeolocationController(LocalFrame&, GeolocationClient*); |
- |
void startUpdatingIfNeeded(); |
void stopUpdatingIfNeeded(); |
+ void setEnableHighAccuracy(bool); |
+ void QueryNextPosition(); |
+ |
+ void onRequestPermissionDone(permission::Status); |
+ void onQueryNextPositionDone(geolocation::GeopositionPtr); |
+ |
+ mojo::ServiceProvider* serviceProvider() const; |
+ |
+ geolocation::GeolocationServicePtr m_geolocationService; |
+ permission::PermissionServicePtr m_permissionService; |
+ bool m_updating = false; |
+ bool m_enableHighAccuracy = false; |
- RawPtrWillBeMember<GeolocationClient> m_client; |
- bool m_hasClientForTest; |
+ Member<GeolocationPosition> m_lastPosition; |
- PersistentWillBeMember<GeolocationPosition> m_lastPosition; |
- typedef PersistentHeapHashSetWillBeHeapHashSet<Member<Geolocation>> ObserversSet; |
- // All observers; both those requesting high accuracy and those not. |
- ObserversSet m_observers; |
- ObserversSet m_highAccuracyObservers; |
- bool m_isClientUpdating; |
+ // Owns this. |
+ WeakMember<Geolocation> m_geolocation; |
}; |
} // namespace blink |