Index: chrome/renderer/geolocation_dispatcher.h |
diff --git a/chrome/renderer/geolocation_dispatcher.h b/chrome/renderer/geolocation_dispatcher.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e1a64b0ed527da949c2bf56ae3cdb9d89971959b |
--- /dev/null |
+++ b/chrome/renderer/geolocation_dispatcher.h |
@@ -0,0 +1,75 @@ |
+// 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. |
+ |
+#ifndef CHROME_RENDERER_GEOLOCATION_DISPATCHER_H_ |
+#define CHROME_RENDERER_GEOLOCATION_DISPATCHER_H_ |
+#pragma once |
+ |
+#if defined(ENABLE_CLIENT_BASED_GEOLOCATION) |
+ |
+#include "base/scoped_ptr.h" |
+#include "third_party/WebKit/WebKit/chromium/public/WebGeolocationClient.h" |
+#include "third_party/WebKit/WebKit/chromium/public/WebGeolocationController.h" |
+ |
+class RenderView; |
+struct Geoposition; |
+ |
+namespace WebKit { |
+class WebGeolocationController; |
+class WebGeolocationPermissionRequest; |
+class WebGeolocationPermissionRequestManager; |
+class WebGeolocationPosition; |
+class WebSecurityOrigin; |
+} |
+ |
+namespace IPC { |
+class Message; |
+} |
+ |
+// GeolocationDispatcher is a delegate for Geolocation messages used by |
+// WebKit. |
+// It's the complement of GeolocationDispatcher (owned by RenderViewHost). |
bulach
2010/12/13 14:49:50
s/GeolocationDispatcher/GeolocationDispatcherHost/
|
+class GeolocationDispatcher : public WebKit::WebGeolocationClient { |
+ public: |
+ explicit GeolocationDispatcher(RenderView* render_view); |
+ virtual ~GeolocationDispatcher(); |
+ |
+ // IPC |
+ bool OnMessageReceived(const IPC::Message& message); |
+ |
+ // WebGeolocationClient |
+ virtual void geolocationDestroyed(); |
+ virtual void startUpdating(); |
+ virtual void stopUpdating(); |
+ virtual void setEnableHighAccuracy(bool enable_high_accuracy); |
+ virtual void setController(WebKit::WebGeolocationController* controller); |
+ virtual bool lastPosition(WebKit::WebGeolocationPosition& position); |
+ virtual void requestPermission( |
+ const WebKit::WebGeolocationPermissionRequest& permissionRequest); |
+ virtual void cancelPermissionRequest( |
+ const WebKit::WebGeolocationPermissionRequest& permissionRequest); |
+ |
+ private: |
+ // Permission for using geolocation has been set. |
+ void OnGeolocationPermissionSet(int bridge_id, bool is_allowed); |
+ |
+ // We have an updated geolocation position or error code. |
+ void OnGeolocationPositionUpdated(const Geoposition& geoposition); |
+ |
+ // GeolocationDispatcher is owned by RenderView. Back pointer for IPC. |
+ RenderView* render_view_; |
+ |
+ // The controller_ is valid for the lifetime of the underlying |
+ // WebCore::GeolocationController. geolocationDestroyed() is |
+ // invoked when the underlying object is destroyed. |
+ scoped_ptr< WebKit::WebGeolocationController> controller_; |
+ |
+ scoped_ptr<WebKit::WebGeolocationPermissionRequestManager> |
+ pending_permissions_; |
+ bool enable_high_accuracy_; |
+ bool updating_; |
+}; |
+#endif // ENABLE_CLIENT_BASED_GEOLOCATION |
+ |
+#endif // CHROME_RENDERER_GEOLOCATION_DISPATCHER_H_ |