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)
1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "components/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)
19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace content {
20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class WebContents;
21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Stores a list of all TabModel objects.
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TabModelList {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef std::vector<TabModel*> TabModelVector;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef TabModelVector::iterator iterator;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef TabModelVector::const_iterator const_iterator;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
30424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  static void HandlePopupNavigation(chrome::NavigateParams* params);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void AddTabModel(TabModel* tab_model);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void RemoveTabModel(TabModel* tab_model);
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  static TabModel* GetTabModelForWebContents(
35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      content::WebContents* web_contents);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static TabModel* FindTabModelWithId(SessionID::id_type desired_id);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool IsOffTheRecordSessionActive();
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const_iterator begin();
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const_iterator end();
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool empty();
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static size_t size();
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  static TabModel* get(size_t index);
45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_IMPLICIT_CONSTRUCTORS(TabModelList);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_ANDROID_TAB_MODEL_TAB_MODEL_LIST_H_
51