| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_CHROME_BROWSER_POLICY_CLOUD_POLICY_CLIENT_OBSERVER_BRIDGE_H_ |
| #define IOS_CHROME_BROWSER_POLICY_CLOUD_POLICY_CLIENT_OBSERVER_BRIDGE_H_ |
| |
| #import <Foundation/Foundation.h> |
| |
| #include "components/policy/core/common/cloud/cloud_policy_client.h" |
| |
| #include "base/scoped_observation.h" |
| |
| // Objective-C protocol mirroring |
| // policy::CloudPolicyClient::Observer. |
| @protocol CloudPolicyClientObserver <NSObject> |
| - (void)cloudPolicyWasFetched:(policy::CloudPolicyClient*)client; |
| - (void)cloudPolicyDidError:(policy::CloudPolicyClient*)client; |
| - (void)cloudPolicyRegistrationChanged:(policy::CloudPolicyClient*)client; |
| @end |
| |
| // Simple observer bridge that forwards all events to its delegate observer. |
| class CloudPolicyClientObserverBridge |
| : public policy::CloudPolicyClient::Observer { |
| public: |
| CloudPolicyClientObserverBridge( |
| id<CloudPolicyClientObserver> observer_delegate, |
| policy::CloudPolicyClient* cloud_policy_client_observer); |
| CloudPolicyClientObserverBridge(const CloudPolicyClientObserverBridge&) = |
| delete; |
| CloudPolicyClientObserverBridge& operator=( |
| const CloudPolicyClientObserverBridge&) = delete; |
| ~CloudPolicyClientObserverBridge() override; |
| |
| // policy::CloudPolicyClient::Observer implementation. |
| void OnPolicyFetched(policy::CloudPolicyClient* client) override; |
| void OnClientError(policy::CloudPolicyClient* client) override; |
| void OnRegistrationStateChanged(policy::CloudPolicyClient* client) override; |
| |
| private: |
| __weak id<CloudPolicyClientObserver> observer_; |
| base::ScopedObservation<policy::CloudPolicyClient, |
| policy::CloudPolicyClient::Observer> |
| scoped_observation_{this}; |
| }; |
| |
| #endif // IOS_CHROME_BROWSER_POLICY_CLOUD_POLICY_CLIENT_OBSERVER_BRIDGE_H_ |