Once all the blocking bugs are fixed, these interfaces (and their implementations) should no longer be used and can be eliminated.
Once AccessTokenStore is eliminated, GeolocationDelegate will only be used to override the system provider. We need to keep this functionality, as it's used at least by Qt: https://www.google.com/url?q=https://code.woboq.org/qt5/qtwebengine/src/core/content_browser_client_qt.cpp.html%23_ZN15QtWebEngineCore12_GLOBAL__N_121GeolocationDelegateQt30OverrideSystemLocationProviderEv&sa=D&ust=1506679470748000&usg=AFQjCNGRtz1iXhia6Iwx_L5Ak-01ouirOQ Our plan for moving this functionality away from GeolocationDelegate is to inject it into the DeviceService constructor via ContentBrowserClient in a manner similar to the injection of the URLRequestContextGetter. Some initial thoughts from amoylan@: base::Bind(&ContentBrowserClient::GetCustomSystemLocationProvider(), Unretained(GetContentClient()->browser())) in to Geolocation, initially via a static setter. The ContentBrowserClient::GetCustomSystemLocationProvider would want to proclaim itself to be callable from any thread to avoid introducing a new async stage in geolocation startup, which seems fine.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b67a7910293e914232d55cf76b4712b485f3bd69 commit b67a7910293e914232d55cf76b4712b485f3bd69 Author: Ke He <ke.he@intel.com> Date: Mon Nov 27 23:25:55 2017 Eliminate GeolocationDelegate. In this CL we remove the GeolocationDelegate but keep its functionality by inject a GetCustomeSystemLocationProviderCallback to constructor of the Device Service. 1) Add the GetCustomSystemLocationProvider() in ContentBrowserClient for embedder to override, and inject it to DeviceService constructor. 2) Move the location_provider.h to public/cpp. 3) Change the unittest of LocationArbitrator accordingly. BUG= 725057 Change-Id: I605d282cac2082f69526675a8e7dff3a46bafd74 Reviewed-on: https://chromium-review.googlesource.com/768614 Reviewed-by: John Abd-El-Malek <jam@chromium.org> Reviewed-by: Tim Volodine <timvolodine@chromium.org> Reviewed-by: Colin Blundell <blundell@chromium.org> Commit-Queue: Ke He <ke.he@intel.com> Cr-Commit-Position: refs/heads/master@{#519446} [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/content/browser/service_manager/service_manager_context.cc [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/content/public/browser/DEPS [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/content/public/browser/content_browser_client.cc [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/content/public/browser/content_browser_client.h [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/BUILD.gn [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/fake_location_provider.h [delete] https://crrev.com/414a100e00163ba2ed3b66c0094ca52709ec3b24/device/geolocation/geolocation_delegate.cc [delete] https://crrev.com/414a100e00163ba2ed3b66c0094ca52709ec3b24/device/geolocation/geolocation_delegate.h [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/geolocation_provider.h [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/geolocation_provider_impl.cc [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/geolocation_provider_impl.h [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/location_arbitrator.cc [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/location_arbitrator.h [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/location_arbitrator_unittest.cc [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/location_provider_android.h [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/network_location_provider.h [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/public/cpp/BUILD.gn [rename] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/device/geolocation/public/cpp/location_provider.h [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/services/device/BUILD.gn [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/services/device/device_service.cc [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/services/device/device_service.h [modify] https://crrev.com/b67a7910293e914232d55cf76b4712b485f3bd69/services/device/device_service_test_base.cc
Comment 1 by blundell@chromium.org
, May 22 2017Labels: DeviceService OS-All
Status: Available (was: Untriaged)