blob: c67057b73cdc5ba1f9210acf00d08e565954a31e [file] [log] [blame]
// Copyright 2019 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.
#import "ios/chrome/browser/main/test_browser.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
#include "ios/chrome/browser/main/browser_observer.h"
#import "ios/chrome/browser/ui/commands/command_dispatcher.h"
#include "ios/chrome/browser/web_state_list/web_state_list.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
TestBrowser::TestBrowser(ChromeBrowserState* browser_state,
WebStateList* web_state_list)
: command_dispatcher_([[CommandDispatcher alloc] init]),
browser_state_(browser_state),
web_state_list_(web_state_list) {}
TestBrowser::TestBrowser(ChromeBrowserState* browser_state)
: command_dispatcher_([[CommandDispatcher alloc] init]),
browser_state_(browser_state) {
owned_web_state_list_ =
std::make_unique<WebStateList>(&web_state_list_delegate_);
web_state_list_ = owned_web_state_list_.get();
}
TestBrowser::TestBrowser()
: command_dispatcher_([[CommandDispatcher alloc] init]) {
// Production code creates the browser state before the WebStateList, so
// that ordering is preserved here.
TestChromeBrowserState::Builder test_cbs_builder;
owned_browser_state_ = test_cbs_builder.Build();
browser_state_ = owned_browser_state_.get();
owned_web_state_list_ =
std::make_unique<WebStateList>(&web_state_list_delegate_);
web_state_list_ = owned_web_state_list_.get();
}
TestBrowser::~TestBrowser() {
for (auto& observer : observers_) {
observer.BrowserDestroyed(this);
}
}
#pragma mark - Browser
ChromeBrowserState* TestBrowser::GetBrowserState() const {
return browser_state_;
}
TabModel* TestBrowser::GetTabModel() const {
return tab_model_;
}
WebStateList* TestBrowser::GetWebStateList() const {
return web_state_list_;
}
CommandDispatcher* TestBrowser::GetCommandDispatcher() const {
return command_dispatcher_;
}
void TestBrowser::AddObserver(BrowserObserver* observer) {
observers_.AddObserver(observer);
}
void TestBrowser::RemoveObserver(BrowserObserver* observer) {
observers_.RemoveObserver(observer);
}