1// Copyright (c) 2010 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_TABS_TAB_HANDLER_H_
6#define CHROME_BROWSER_TABS_TAB_HANDLER_H_
7#pragma once
8
9class Browser;
10class Profile;
11class TabStripModel;
12
13class TabHandlerDelegate {
14 public:
15  virtual Profile* GetProfile() const = 0;
16
17  // TODO(beng): remove once decoupling with Browser is complete.
18  virtual Browser* AsBrowser() = 0;
19};
20
21// An interface implemented by an object that can perform tab related
22// functionality for a Browser. This functionality includes mapping individual
23// TabContentses into indices for an index-based tab organization scheme for
24// example.
25class TabHandler {
26 public:
27  virtual ~TabHandler() {}
28
29  // Creates a TabHandler implementation and returns it, transferring ownership
30  // to the caller.
31  static TabHandler* CreateTabHandler(TabHandlerDelegate* delegate);
32
33  // TODO(beng): remove once decoupling with Browser is complete.
34  virtual TabStripModel* GetTabStripModel() const = 0;
35};
36
37#endif  // CHROME_BROWSER_TABS_TAB_HANDLER_H_
38