device_service_test_base.cc 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "services/device/device_service_test_base.h"
  5. #include <memory>
  6. #include "base/bind.h"
  7. #include "base/memory/ref_counted.h"
  8. #include "base/task/single_thread_task_runner.h"
  9. #include "base/task/thread_pool.h"
  10. #include "build/build_config.h"
  11. #include "services/device/device_service.h"
  12. #include "services/device/public/cpp/geolocation/location_provider.h"
  13. #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
  14. #include "services/network/test/test_network_connection_tracker.h"
  15. #if BUILDFLAG(IS_MAC)
  16. #include "services/device/public/cpp/test/fake_geolocation_manager.h"
  17. #endif
  18. namespace device {
  19. namespace {
  20. // Simply return a nullptr which means no CustomLocationProvider from embedder.
  21. std::unique_ptr<LocationProvider> GetCustomLocationProviderForTest() {
  22. return nullptr;
  23. }
  24. std::unique_ptr<DeviceService> CreateTestDeviceService(
  25. scoped_refptr<base::SingleThreadTaskRunner> file_task_runner,
  26. scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
  27. scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
  28. mojo::PendingReceiver<mojom::DeviceService> receiver,
  29. GeolocationManager* geolocation_manager) {
  30. auto params = std::make_unique<DeviceServiceParams>();
  31. params->file_task_runner = std::move(file_task_runner);
  32. params->io_task_runner = std::move(io_task_runner);
  33. params->url_loader_factory = std::move(url_loader_factory);
  34. params->network_connection_tracker =
  35. network::TestNetworkConnectionTracker::GetInstance();
  36. params->geolocation_api_key = kTestGeolocationApiKey;
  37. params->custom_location_provider_callback =
  38. base::BindRepeating(&GetCustomLocationProviderForTest);
  39. params->geolocation_manager = geolocation_manager;
  40. return CreateDeviceService(std::move(params), std::move(receiver));
  41. }
  42. } // namespace
  43. DeviceServiceTestBase::DeviceServiceTestBase()
  44. : file_task_runner_(base::ThreadPool::CreateSingleThreadTaskRunner(
  45. {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
  46. io_task_runner_(base::ThreadPool::CreateSingleThreadTaskRunner(
  47. {base::TaskPriority::USER_VISIBLE})),
  48. network_connection_tracker_(
  49. network::TestNetworkConnectionTracker::CreateInstance()) {}
  50. DeviceServiceTestBase::~DeviceServiceTestBase() = default;
  51. void DeviceServiceTestBase::SetUp() {
  52. GeolocationManager* geolocation_manager = nullptr;
  53. #if BUILDFLAG(IS_MAC)
  54. fake_geolocation_manager_ = std::make_unique<FakeGeolocationManager>();
  55. geolocation_manager = fake_geolocation_manager_.get();
  56. #endif
  57. service_ = CreateTestDeviceService(
  58. file_task_runner_, io_task_runner_,
  59. base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
  60. &test_url_loader_factory_),
  61. service_remote_.BindNewPipeAndPassReceiver(), geolocation_manager);
  62. }
  63. void DeviceServiceTestBase::DestroyDeviceService() {
  64. service_.reset();
  65. }
  66. } // namespace device