in_process_instance.cc 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // Copyright 2019 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 "chromeos/services/network_config/in_process_instance.h"
  5. #include "base/no_destructor.h"
  6. #include "chromeos/ash/components/network/network_handler.h"
  7. #include "chromeos/services/network_config/cros_network_config.h"
  8. #include "mojo/public/cpp/bindings/receiver_set.h"
  9. namespace chromeos {
  10. namespace network_config {
  11. namespace {
  12. mojom::CrosNetworkConfig* g_network_config_override;
  13. mojo::ReceiverSet<mojom::CrosNetworkConfig>& GetOverrideReceivers() {
  14. static base::NoDestructor<mojo::ReceiverSet<mojom::CrosNetworkConfig>>
  15. receivers;
  16. return *receivers;
  17. }
  18. } // namespace
  19. void BindToInProcessInstance(
  20. mojo::PendingReceiver<mojom::CrosNetworkConfig> receiver) {
  21. if (g_network_config_override) {
  22. GetOverrideReceivers().Add(g_network_config_override, std::move(receiver));
  23. return;
  24. }
  25. if (!NetworkHandler::IsInitialized()) {
  26. DVLOG(1) << "Ignoring request to bind Network Config service because no "
  27. << "NetworkHandler has been initialized.";
  28. return;
  29. }
  30. static base::NoDestructor<CrosNetworkConfig> instance;
  31. instance->BindReceiver(std::move(receiver));
  32. }
  33. void OverrideInProcessInstanceForTesting(
  34. mojom::CrosNetworkConfig* network_config) {
  35. g_network_config_override = network_config;
  36. // Wipe out the set of override receivers any time a new override is set.
  37. GetOverrideReceivers().Clear();
  38. }
  39. } // namespace network_config
  40. } // namespace chromeos