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 EXTENSIONS_COMMON_VIEW_TYPE_H_
6#define EXTENSIONS_COMMON_VIEW_TYPE_H_
7
8namespace extensions {
9
10// Icky RTTI used by a few systems to distinguish the host type of a given
11// WebContents.
12//
13// TODO(aa): Remove this and teach those systems to keep track of their own
14// data.
15enum ViewType {
16  VIEW_TYPE_INVALID,
17  VIEW_TYPE_APP_SHELL,
18  VIEW_TYPE_BACKGROUND_CONTENTS,
19  VIEW_TYPE_EXTENSION_BACKGROUND_PAGE,
20  VIEW_TYPE_EXTENSION_DIALOG,
21  VIEW_TYPE_EXTENSION_INFOBAR,
22  VIEW_TYPE_EXTENSION_POPUP,
23  // TODO(jam): remove this once http://crbug.com/137297 is fixed and HTML5
24  // notifications don't use WebContents.
25  VIEW_TYPE_NOTIFICATION,
26  VIEW_TYPE_PANEL,
27  VIEW_TYPE_TAB_CONTENTS,
28  VIEW_TYPE_VIRTUAL_KEYBOARD,
29};
30
31// Constant strings corresponding to the Type enumeration values.  Used
32// when converting JS arguments.
33extern const char kViewTypeAll[];
34extern const char kViewTypeAppShell[];
35extern const char kViewTypeBackgroundPage[];
36extern const char kViewTypeExtensionDialog[];
37extern const char kViewTypeInfobar[];
38extern const char kViewTypeNotification[];
39extern const char kViewTypePanel[];
40extern const char kViewTypePopup[];
41extern const char kViewTypeTabContents[];
42
43}  // namespace extensions
44
45#endif  // EXTENSIONS_COMMON_VIEW_TYPE_H_
46