blob: d332fb7c13fdb1c1ff9f543d0fad92feb9b052d5 [file] [log] [blame]
// 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.
#include "chrome/browser/ui/browser_manager_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
BrowserManagerService::BrowserManagerService(Profile* profile)
: profile_(profile) {}
BrowserManagerService::~BrowserManagerService() = default;
void BrowserManagerService::Shutdown() {
browsers_.clear();
}
void BrowserManagerService::AddBrowser(std::unique_ptr<Browser> browser) {
browsers_.push_back(std::move(browser));
}
void BrowserManagerService::DeleteBrowser(Browser* removed_browser) {
// Extract the Browser from `browsers_` before deleting to avoid UAF risk in
// the case of re-entrancy.
std::unique_ptr<Browser> target_browser;
for (std::unique_ptr<Browser>& browser : browsers_) {
if (browser.get() == removed_browser) {
target_browser = std::move(browser);
break;
}
}
}