chromium/ios/chrome/browser/tabs/model/tab_parenting_browser_agent.h

// Copyright 2021 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_TABS_MODEL_TAB_PARENTING_BROWSER_AGENT_H_
#define IOS_CHROME_BROWSER_TABS_MODEL_TAB_PARENTING_BROWSER_AGENT_H_

#import "ios/chrome/browser/shared/model/browser/browser_observer.h"
#import "ios/chrome/browser/shared/model/browser/browser_user_data.h"
#import "ios/chrome/browser/shared/model/web_state_list/web_state_list_observer.h"

class TabParentingBrowserAgent
    : public BrowserObserver,
      public BrowserUserData<TabParentingBrowserAgent>,
      public WebStateListObserver {
 public:
  ~TabParentingBrowserAgent() override;
  TabParentingBrowserAgent(const TabParentingBrowserAgent&) = delete;
  TabParentingBrowserAgent& operator=(const TabParentingBrowserAgent&) = delete;

  // BrowserObserver implementation.
  void BrowserDestroyed(Browser* browser) override;

  // WebStateListObserver implementation.
  void WebStateListDidChange(WebStateList* web_state_list,
                             const WebStateListChange& change,
                             const WebStateListStatus& status) override;

 private:
  friend class BrowserUserData<TabParentingBrowserAgent>;
  BROWSER_USER_DATA_KEY_DECL();

  explicit TabParentingBrowserAgent(Browser* browser);
};

#endif  // IOS_CHROME_BROWSER_TABS_MODEL_TAB_PARENTING_BROWSER_AGENT_H_