blob: 173d673284b53876367fb33cc29e82b421d08e91 [file] [log] [blame]
// Copyright 2021 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/autocomplete/tab_matcher_impl.h"
#import <set>
#import "ios/chrome/browser/shared/model/browser/browser.h"
#import "ios/chrome/browser/shared/model/browser/browser_list.h"
#import "ios/chrome/browser/shared/model/browser/browser_list_factory.h"
#import "ios/chrome/browser/shared/model/browser_state/chrome_browser_state.h"
#import "ios/chrome/browser/shared/model/web_state_list/web_state_list.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
TabMatcherImpl::TabMatcherImpl(ChromeBrowserState* browser_state)
: browser_state_{browser_state} {
DCHECK(browser_state);
}
bool TabMatcherImpl::IsTabOpenWithURL(const GURL& url,
const AutocompleteInput* input) const {
BrowserList* browser_list =
BrowserListFactory::GetForBrowserState(browser_state_);
std::set<Browser*> browsers = browser_state_->IsOffTheRecord()
? browser_list->AllIncognitoBrowsers()
: browser_list->AllRegularBrowsers();
for (Browser* browser : browsers) {
if (browser->GetWebStateList()->GetIndexOfInactiveWebStateWithURL(url) !=
WebStateList::kInvalidIndex) {
return true;
}
}
return false;
}