diff options
author | Steve Block <steveblock@google.com> | 2012-05-17 18:17:15 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2012-05-22 14:17:23 +0100 |
commit | 5c36c4ca9214cbbe65d12f6b138aef9618d41a99 (patch) | |
tree | 8112a55f7cf8cb505115429d01ee73badf586896 /Source/JavaScriptCore | |
parent | 0e1334bbc130fb9f7b19ea2354693cea34ebb894 (diff) | |
download | external_webkit-5c36c4ca9214cbbe65d12f6b138aef9618d41a99.zip external_webkit-5c36c4ca9214cbbe65d12f6b138aef9618d41a99.tar.gz external_webkit-5c36c4ca9214cbbe65d12f6b138aef9618d41a99.tar.bz2 |
Switch to client-based Geolocation
The motivation for this switch is that it is required to enable
PREEMPT_GEOLOCATION_PERMISSION. See b/4500947.
The switch involves changing lots of Android's WebKit plumbing to use a new
GeolocationClientAndroid in WebKit (called from
WebCore::GeolocationController), rather than the existing
GeolocationServiceAndroid in WebCore/platform (called from
WebCore::Geolocation). This is complicated by the need to support mocking for
LayoutTests.
The pattern used is very similar to that used for DeviceOrientation and
DeviceMotion. This patch ...
- Enables CLIENT_BASED_GEOLOCATION
- Leaves PREEMPT_GEOLOCATION_PERMISSION disabled for now
- Removes GeolocationServiceAndroid
- Adds a new GeolocationClientAndroid
- Just a proxy to real client
- Adds a new GeolocationManager
- Manages switching between the real and mock clients
- Provides the appropriate client to GeolocationClientAndroid
- Plumbs to the real client calls for permissions and for suspending/resuming
- Adds a new GeolocationClientImpl
- The real client
- Based heavily on GeolocationServiceAndroid
- Delegates to GeolocationServiceBridge, as GeolocationServiceAndroid did
- Calls back directly to GeolocationController
- Owns the existing GeolocationPermissions
- Updates WebViewCore to call the GeolocationManager for permissions and for
suspending/resuming
- Removes superfluous ChromeClient methods for permissions
Note that support for mocking will be added in a later change. See bug for
details.
Bug: 6511338
Change-Id: I4cdbf55846e76b37c161834b83135b4dc48dbcdc
Diffstat (limited to 'Source/JavaScriptCore')
-rw-r--r-- | Source/JavaScriptCore/wtf/Platform.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/wtf/Platform.h b/Source/JavaScriptCore/wtf/Platform.h index a1db9d6..76c2ae4 100644 --- a/Source/JavaScriptCore/wtf/Platform.h +++ b/Source/JavaScriptCore/wtf/Platform.h @@ -726,6 +726,7 @@ #define ENABLE_OFFLINE_WEB_APPLICATIONS 1 #define ENABLE_TOUCH_EVENTS 1 #define ENABLE_GEOLOCATION 1 +#define ENABLE_CLIENT_BASED_GEOLOCATION 1 #define ENABLE_INSPECTOR 0 #define ENABLE_EVENT_SOURCE 0 #define ENABLE_DEVICE_ORIENTATION 1 @@ -1284,8 +1285,13 @@ Client based implementations will have option to choose between pre-emptive and nonpre-emptive permission policy. pre-emptive permission policy is enabled by default for all client-based implementations. */ #if ENABLE(CLIENT_BASED_GEOLOCATION) +#if PLATFORM(ANDROID) +// Consider enabling preemptive permissions. See b/4500947. +#define WTF_USE_PREEMPT_GEOLOCATION_PERMISSION 0 +#else #define WTF_USE_PREEMPT_GEOLOCATION_PERMISSION 1 #endif +#endif #if CPU(ARM_THUMB2) #define ENABLE_BRANCH_COMPACTION 1 |