commit | 17329fccf83134a098084e70a1213564d71cfa6f | [log] [tgz] |
---|---|---|
author | Andrew Moylan <amoylan@chromium.org> | Mon Sep 25 07:43:30 2017 |
committer | Commit Bot <commit-bot@chromium.org> | Mon Sep 25 07:43:30 2017 |
tree | 840487752f3afa27a8f7fbae5c676ea27bccafc0 | |
parent | 38d1a089f59c250e5598549a09077ca6336799e2 [diff] |
Use fixed endpoint URL for network geolocation This change makes NetworkLocationRequest no longer accept a user-provided endpoint URL for geolocation. Instead, it always uses the Google Maps API geolocate endpoint URL (which is the existing default). In practice, this is the only URL which can be used anyway, as NetworkLocationRequest's implementation is tied closely to the details of that API. With this change, LocationArbitrator always creates exactly one NetworkLocationProvider, instead of creating one NetworkLocationProvider per entry in the access token store. The theoretical possibility of using multiple NetworkLocationProviders with different URLs was not useful in practice because NetworkLocationProvider/NetworkLocationRequest are closely tied specifically to the Google Maps API interface. For more details / motivation / results of looking at internal/external embedders, please see the following design document: https://docs.google.com/document/d/1Bkd06tmAFb9OY0qkq_IeWc4kr3ZDxzhrYkg3mGUMGRE The only cases where a non-default URL appear to be in use (internal or external to Chromium repo) are for embedders manually appending their Googgle API key to the URL. Therefore, this change adds support for setting the geolocation API key if desired. Embedders do this by overriding ContentBrowserClient::GetGeolocationApiKey(). Embedders who have been using the default endpoint URL were automatically using the key taken from google_apis::GetAPIKey(). These embedders will now need to override GetGeolocationApiKey() to return google_apis::GetAPIKey(). This CL does this for Chrome & Chromecast, which are the only two embedders in Chromium that are using NetworkLocationProviders. [Another option would be to make google_apis::GetAPIKey() the default implementation (Chrome and Chromecast then wouldn't need to provide an override). I didn't go for this as content/ has a -"google_apis" DEPS entry and expresses a preference for embedders using google_apis directly.] This change is part of the overall removal of AccessTokenStore, as detailed in the above doc. Misc: - Added an opportunistic integration test checking that, for Chrome, the expected URL and API key does in fact get used. - Removed an unused layer of abstraction in the form of the |NewNetworkLocationProvider| factory function. Bug: 748921,718694 Change-Id: I12bae25908c48cfbe7fb93cc2d25f1a91ce03bd8 Reviewed-on: https://chromium-review.googlesource.com/675023 Commit-Queue: Andrew Moylan <amoylan@chromium.org> Reviewed-by: John Abd-El-Malek <jam@chromium.org> Reviewed-by: Raymes Khoury <raymes@chromium.org> Reviewed-by: Miguel Casas <mcasas@chromium.org> Reviewed-by: Colin Blundell <blundell@chromium.org> Cr-Commit-Position: refs/heads/master@{#504002}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .