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}
18 files changed