blob: c729d96a056a636112f5e448d155f922f47c8fd0 [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/browser_impl.h"
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#import "ios/chrome/browser/main/browser_observer.h"
#import "ios/chrome/browser/sessions/session_service_ios.h"
#import "ios/chrome/browser/tabs/tab_model.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
BrowserImpl::BrowserImpl(ios::ChromeBrowserState* browser_state)
: browser_state_(browser_state) {
DCHECK(browser_state_);
tab_model_ =
[[TabModel alloc] initWithSessionService:[SessionServiceIOS sharedService]
browserState:browser_state_];
web_state_list_ = tab_model_.webStateList;
}
BrowserImpl::BrowserImpl(ios::ChromeBrowserState* browser_state,
TabModel* tab_model)
: browser_state_(browser_state), tab_model_(tab_model) {
DCHECK(browser_state_);
DCHECK(tab_model_);
web_state_list_ = tab_model_.webStateList;
}
BrowserImpl::~BrowserImpl() {
for (auto& observer : observers_) {
observer.BrowserDestroyed(this);
}
}
ios::ChromeBrowserState* BrowserImpl::GetBrowserState() const {
return browser_state_;
}
TabModel* BrowserImpl::GetTabModel() const {
return tab_model_;
}
WebStateList* BrowserImpl::GetWebStateList() const {
return web_state_list_;
}
void BrowserImpl::AddObserver(BrowserObserver* observer) {
observers_.AddObserver(observer);
}
void BrowserImpl::RemoveObserver(BrowserObserver* observer) {
observers_.RemoveObserver(observer);
}
// static
std::unique_ptr<Browser> Browser::Create(
ios::ChromeBrowserState* browser_state) {
return std::make_unique<BrowserImpl>(browser_state);
}