| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_MODULAR_TESTS_INTL_PROPERTY_PROVIDER_TEST_CLIENT_H_ |
| #define SRC_MODULAR_TESTS_INTL_PROPERTY_PROVIDER_TEST_CLIENT_H_ |
| |
| #include <fuchsia/intl/cpp/fidl.h> |
| #include <fuchsia/modular/cpp/fidl.h> |
| #include <fuchsia/modular/testing/cpp/fidl.h> |
| #include <lib/modular/testing/cpp/fake_component.h> |
| #include <lib/syslog/cpp/macros.h> |
| |
| namespace modular_tests { |
| |
| // Simple client reused by various tests to ensure they can get i18n services from the environment. |
| class IntlPropertyProviderTestClient { |
| public: |
| IntlPropertyProviderTestClient(const modular_testing::FakeComponent* fake_component) |
| : fake_component_(fake_component) {} |
| |
| zx_status_t Connect() { |
| auto status = fake_component_->component_context()->svc()->Connect(client_.NewRequest()); |
| client_.set_error_handler([this](zx_status_t status) { |
| FX_LOGS(ERROR) << "fuchsia::intl::PropertyProvider connection status: " << status; |
| has_error_ = true; |
| }); |
| return status; |
| } |
| |
| void LoadProfile() { |
| client_->GetProfile( |
| [this](fuchsia::intl::Profile new_profile) { profile_ = std::move(new_profile); }); |
| } |
| |
| fuchsia::intl::Profile* Profile() { return HasProfile() ? &(profile_.value()) : nullptr; } |
| |
| bool HasProfile() const { return !!profile_; } |
| bool HasError() const { return has_error_; } |
| |
| private: |
| const modular_testing::FakeComponent* fake_component_; // not owned |
| fuchsia::intl::PropertyProviderPtr client_; |
| std::optional<fuchsia::intl::Profile> profile_; |
| bool has_error_ = false; |
| }; |
| |
| } // namespace modular_tests |
| |
| #endif // SRC_MODULAR_TESTS_INTL_PROPERTY_PROVIDER_TEST_CLIENT_H_ |