| // 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; |
| } |