1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ASH_BROWSER_DELEGATE_BROWSER_CONTROLLER_IMPL_H_
#define CHROME_BROWSER_ASH_BROWSER_DELEGATE_BROWSER_CONTROLLER_IMPL_H_
#include <memory>
#include "base/observer_list.h"
#include "base/scoped_observation.h"
#include "chrome/browser/ash/browser_delegate/browser_controller.h"
#include "chrome/browser/ui/browser_list_observer.h"
#include "third_party/abseil-cpp/absl/container/flat_hash_map.h"
class Browser;
class BrowserList;
namespace ash {
class BrowserDelegate;
class BrowserDelegateImpl;
class BrowserControllerImpl : public BrowserController,
public BrowserListObserver {
public:
BrowserControllerImpl();
~BrowserControllerImpl() override;
// BrowserController:
BrowserDelegate* GetDelegate(Browser* browser) override;
BrowserDelegate* GetLastUsedBrowser() override;
BrowserDelegate* GetLastUsedVisibleBrowser() override;
BrowserDelegate* GetLastUsedVisibleOnTheRecordBrowser() override;
BrowserDelegate* FindWebApp(const user_manager::User& user,
webapps::AppId app_id,
BrowserType browser_type,
const GURL& url) override;
BrowserDelegate* NewTabWithPostData(const user_manager::User& user,
const GURL& url,
base::span<const uint8_t> post_data,
std::string_view extra_headers) override;
BrowserDelegate* CreateWebApp(const user_manager::User& user,
webapps::AppId app_id,
BrowserType browser_type,
const CreateParams& params) override;
BrowserDelegate* CreateCustomTab(
const user_manager::User& user,
std::unique_ptr<content::WebContents> contents) override;
void AddObserver(Observer* observer) override;
void RemoveObserver(Observer* observer) override;
// BrowserListObserver:
void OnBrowserRemoved(Browser* browser) override;
private:
BrowserDelegate* GetBrowserDelegate(Browser* browser);
absl::flat_hash_map<Browser*, std::unique_ptr<BrowserDelegateImpl>> browsers_;
base::ObserverList<Observer> observers_;
base::ScopedObservation<BrowserList, BrowserListObserver> observation_{this};
};
} // namespace ash
#endif // CHROME_BROWSER_ASH_BROWSER_DELEGATE_BROWSER_CONTROLLER_IMPL_H_
|