blob: 3cbafdd7b192d9fcb38e11cce4a729f225e010f0 [file] [log] [blame]
// Copyright 2022 The Chromium 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 IOS_CHROME_BROWSER_UPGRADE_UPGRADE_CENTER_BROWSER_AGENT_H_
#define IOS_CHROME_BROWSER_UPGRADE_UPGRADE_CENTER_BROWSER_AGENT_H_
#import "ios/chrome/browser/main/browser_observer.h"
#import "ios/chrome/browser/main/browser_user_data.h"
#import "ios/chrome/browser/web_state_list/web_state_list_observer.h"
class Browser;
@class UpgradeCenter;
// Browser agent that handles informing the update center of new tabs.
class UpgradeCenterBrowserAgent
: public BrowserObserver,
public WebStateListObserver,
public BrowserUserData<UpgradeCenterBrowserAgent> {
public:
// Creates an UpgradeCenterBrowserAgent scoped to |browser|.
static void CreateForBrowser(Browser* browser, UpgradeCenter* upgradeCenter);
UpgradeCenterBrowserAgent(const UpgradeCenterBrowserAgent&) = delete;
UpgradeCenterBrowserAgent& operator=(const UpgradeCenterBrowserAgent&) =
delete;
~UpgradeCenterBrowserAgent() override;
private:
friend class BrowserUserData<UpgradeCenterBrowserAgent>;
BROWSER_USER_DATA_KEY_DECL();
UpgradeCenterBrowserAgent(Browser* browser, UpgradeCenter* upgradeCenter);
// BrowserObserver methods
void BrowserDestroyed(Browser* browser) override;
// WebStateListObserver methods
void WebStateInsertedAt(WebStateList* web_state_list,
web::WebState* web_state,
int index,
bool activating) override;
void WillDetachWebStateAt(WebStateList* web_state_list,
web::WebState* web_state,
int index) override;
__strong UpgradeCenter* upgrade_center_ = nullptr;
};
#endif // IOS_CHROME_BROWSER_UPGRADE_UPGRADE_CENTER_BROWSER_AGENT_H_