1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_CHROMEOS_STATUS_STATUS_AREA_HOST_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_CHROMEOS_STATUS_STATUS_AREA_HOST_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/native_widget_types.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace views {
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass View;
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace views
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Profile;
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos {
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This class is an abstraction decoupling StatusAreaView from its host
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// window.
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass StatusAreaHost {
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Different text styles for different types of backgrounds.
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  enum TextStyle {
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    kWhitePlain,
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    kWhiteHaloed,
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    kGrayEmbossed
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  };
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // The type of screen the host window is on.
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  enum ScreenMode {
32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    kLoginMode,  // The host is for the OOBE/login screens.
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    kBrowserMode,  // The host is for browser.
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    kScreenLockerMode,  // The host is for screen locker.
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  };
36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the Profile if this status area is inside the browser and has a
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // profile. Otherwise, returns NULL.
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual Profile* GetProfile() const = 0;
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns native window hosting the status area.
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual gfx::NativeWindow GetNativeWindow() const = 0;
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Indicates if options dialog related to the button specified should be
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // shown.
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual bool ShouldOpenButtonOptions(
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      const views::View* button_view) const = 0;
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Opens options dialog related to the button specified.
50513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  virtual void OpenButtonOptions(const views::View* button_view) = 0;
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Executes browser command.
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void ExecuteBrowserCommand(int id) const = 0;
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Returns the text style.
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual TextStyle GetTextStyle() const = 0;
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // Returns the type of screen.
5972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  virtual ScreenMode GetScreenMode() const = 0;
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected:
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~StatusAreaHost() {}
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace chromeos
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_CHROMEOS_STATUS_STATUS_AREA_HOST_H_
68