blob: 7cc71250cf9fd77884cf96ac97caaca77cced068 [file] [log] [blame]
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/tabs/ios_synced_window_delegate_getter.h"
#import <vector>
#import "base/check.h"
#import "ios/chrome/browser/application_context/application_context.h"
#import "ios/chrome/browser/browser_state/chrome_browser_state.h"
#import "ios/chrome/browser/browser_state/chrome_browser_state_manager.h"
#import "ios/chrome/browser/main/browser_list.h"
#import "ios/chrome/browser/main/browser_list_factory.h"
#import "ios/chrome/browser/tabs/synced_window_delegate_browser_agent.h"
#import "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
IOSSyncedWindowDelegatesGetter::IOSSyncedWindowDelegatesGetter() {}
IOSSyncedWindowDelegatesGetter::~IOSSyncedWindowDelegatesGetter() {}
IOSSyncedWindowDelegatesGetter::SyncedWindowDelegateMap
IOSSyncedWindowDelegatesGetter::GetSyncedWindowDelegates() {
SyncedWindowDelegateMap synced_window_delegates;
std::vector<ChromeBrowserState*> browser_states =
GetApplicationContext()
->GetChromeBrowserStateManager()
->GetLoadedBrowserStates();
for (auto* browser_state : browser_states) {
DCHECK(!browser_state->IsOffTheRecord());
BrowserList* browsers =
BrowserListFactory::GetForBrowserState(browser_state);
for (Browser* browser : browsers->AllRegularBrowsers()) {
if (browser->GetWebStateList()->GetActiveWebState()) {
sync_sessions::SyncedWindowDelegate* synced_window_delegate =
SyncedWindowDelegateBrowserAgent::FromBrowser(browser);
synced_window_delegates[synced_window_delegate->GetSessionId()] =
synced_window_delegate;
}
}
}
return synced_window_delegates;
}
const sync_sessions::SyncedWindowDelegate*
IOSSyncedWindowDelegatesGetter::FindById(SessionID session_id) {
for (const auto& iter : GetSyncedWindowDelegates()) {
if (session_id == iter.second->GetSessionId())
return iter.second;
}
return nullptr;
}