1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/ui/browser_iterator.h" 6 7 namespace chrome { 8 9 BrowserIterator::BrowserIterator() 10 : current_browser_list_(BrowserList::GetInstance(HOST_DESKTOP_TYPE_FIRST)), 11 current_iterator_(current_browser_list_->begin()), 12 next_desktop_type_( 13 static_cast<HostDesktopType>(HOST_DESKTOP_TYPE_FIRST + 1)) { 14 NextBrowserListIfAtEnd(); 15 } 16 17 BrowserIterator::~BrowserIterator() { 18 } 19 20 void BrowserIterator::Next() { 21 ++current_iterator_; 22 NextBrowserListIfAtEnd(); 23 } 24 25 void BrowserIterator::NextBrowserListIfAtEnd() { 26 // Make sure either |current_iterator_| is valid or done(). 27 while (current_iterator_ == current_browser_list_->end() && 28 next_desktop_type_ < HOST_DESKTOP_TYPE_COUNT) { 29 current_browser_list_ = BrowserList::GetInstance(next_desktop_type_); 30 current_iterator_ = current_browser_list_->begin(); 31 next_desktop_type_ = static_cast<HostDesktopType>(next_desktop_type_ + 1); 32 } 33 } 34 35 } // namespace chrome 36