15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_ANDROID_TAB_MODEL_TAB_MODEL_LIST_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_ANDROID_TAB_MODEL_TAB_MODEL_LIST_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sessions/session_id.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TabModel;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace chrome {
16424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)struct NavigateParams;
17424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}
18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Stores a list of all TabModel objects.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TabModelList {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef std::vector<TabModel*> TabModelVector;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef TabModelVector::iterator iterator;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef TabModelVector::const_iterator const_iterator;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  static void HandlePopupNavigation(chrome::NavigateParams* params);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void AddTabModel(TabModel* tab_model);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void RemoveTabModel(TabModel* tab_model);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static TabModel* GetTabModelWithProfile(Profile* profile);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static TabModel* FindTabModelWithId(SessionID::id_type desired_id);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool IsOffTheRecordSessionActive();
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const_iterator begin();
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const_iterator end();
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool empty();
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static size_t size();
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_IMPLICIT_CONSTRUCTORS(TabModelList);
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_ANDROID_TAB_MODEL_TAB_MODEL_LIST_H_
44