| // Copyright (c) 2013 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. |
| |
| #include "chrome/browser/ui/browser_iterator.h" |
| |
| namespace chrome { |
| |
| BrowserIterator::BrowserIterator() |
| : current_browser_list_(BrowserList::GetInstance(HOST_DESKTOP_TYPE_FIRST)), |
| current_iterator_(current_browser_list_->begin()), |
| next_desktop_type_( |
| static_cast<HostDesktopType>(HOST_DESKTOP_TYPE_FIRST + 1)) { |
| NextBrowserListIfAtEnd(); |
| } |
| |
| BrowserIterator::~BrowserIterator() { |
| } |
| |
| void BrowserIterator::Next() { |
| ++current_iterator_; |
| NextBrowserListIfAtEnd(); |
| } |
| |
| void BrowserIterator::NextBrowserListIfAtEnd() { |
| // Make sure either |current_iterator_| is valid or done(). |
| while (current_iterator_ == current_browser_list_->end() && |
| next_desktop_type_ < HOST_DESKTOP_TYPE_COUNT) { |
| current_browser_list_ = BrowserList::GetInstance(next_desktop_type_); |
| current_iterator_ = current_browser_list_->begin(); |
| next_desktop_type_ = static_cast<HostDesktopType>(next_desktop_type_ + 1); |
| } |
| } |
| |
| } // namespace chrome |