tab_model_list.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
1// Copyright (c) 2012 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#ifndef CHROME_BROWSER_UI_ANDROID_TAB_MODEL_TAB_MODEL_LIST_H_
6#define CHROME_BROWSER_UI_ANDROID_TAB_MODEL_TAB_MODEL_LIST_H_
7
8#include <vector>
9
10#include "components/sessions/session_id.h"
11
12class Profile;
13class TabModel;
14
15namespace chrome {
16struct NavigateParams;
17}
18
19namespace content {
20class WebContents;
21}
22
23// Stores a list of all TabModel objects.
24class TabModelList {
25 public:
26  typedef std::vector<TabModel*> TabModelVector;
27  typedef TabModelVector::iterator iterator;
28  typedef TabModelVector::const_iterator const_iterator;
29
30  static void HandlePopupNavigation(chrome::NavigateParams* params);
31  static void AddTabModel(TabModel* tab_model);
32  static void RemoveTabModel(TabModel* tab_model);
33
34  static TabModel* GetTabModelForWebContents(
35      content::WebContents* web_contents);
36  static TabModel* FindTabModelWithId(SessionID::id_type desired_id);
37  static bool IsOffTheRecordSessionActive();
38
39  static const_iterator begin();
40  static const_iterator end();
41  static bool empty();
42  static size_t size();
43
44  static TabModel* get(size_t index);
45
46 private:
47  DISALLOW_IMPLICIT_CONSTRUCTORS(TabModelList);
48};
49
50#endif  // CHROME_BROWSER_UI_ANDROID_TAB_MODEL_TAB_MODEL_LIST_H_
51