chromium/ios/chrome/browser/follow/model/follow_service_observer.h

// 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_FOLLOW_MODEL_FOLLOW_SERVICE_OBSERVER_H_
#define IOS_CHROME_BROWSER_FOLLOW_MODEL_FOLLOW_SERVICE_OBSERVER_H_

#include "base/observer_list_types.h"
#include "ios/chrome/browser/follow/model/followed_web_site.h"

// Observer class notified about FollowService changes.
class FollowServiceObserver : public base::CheckedObserver {
 public:
  FollowServiceObserver();

  FollowServiceObserver(const FollowServiceObserver&) = delete;
  FollowServiceObserver& operator=(const FollowServiceObserver&) = delete;

  ~FollowServiceObserver() override;

  // Invoked when a website is followed.
  virtual void OnWebSiteFollowed(FollowedWebSite* web_site) = 0;

  // Invoked when a website is unfollowed.
  virtual void OnWebSiteUnfollowed(FollowedWebSite* web_site) = 0;

  // Invoked when followed websites are loaded.
  virtual void OnFollowedWebSitesLoaded() = 0;
};

#endif  // IOS_CHROME_BROWSER_FOLLOW_MODEL_FOLLOW_SERVICE_OBSERVER_H_