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_COMMON_SEARCH_TYPES_H_
6#define CHROME_COMMON_SEARCH_TYPES_H_
7
8// The Mode structure encodes the visual states encountered when interacting
9// with the NTP and the Omnibox.
10struct SearchMode {
11  // The visual state that applies to the current interaction.
12  enum Type {
13    // The default state means anything but the following states.
14    MODE_DEFAULT,
15
16    // On the NTP page and the NTP is ready to be displayed.
17    MODE_NTP,
18
19    // The Omnibox is modified in some way, either on the NTP or not.
20    MODE_SEARCH_SUGGESTIONS,
21
22    // On a search results page.
23    MODE_SEARCH_RESULTS,
24  };
25
26  // The kind of page from which the user initiated the current search.
27  enum Origin {
28    // The user is searching from some random page.
29    ORIGIN_DEFAULT = 0,
30
31    // The user is searching from the NTP.
32    ORIGIN_NTP,
33
34    // The user is searching from a search results page.
35    ORIGIN_SEARCH,
36  };
37
38  SearchMode() : mode(MODE_DEFAULT), origin(ORIGIN_DEFAULT) {
39  }
40
41  SearchMode(Type in_mode, Origin in_origin)
42      : mode(in_mode),
43        origin(in_origin) {
44  }
45
46  bool operator==(const SearchMode& rhs) const {
47    return mode == rhs.mode && origin == rhs.origin;
48  }
49
50  bool operator!=(const SearchMode& rhs) const {
51    return !(*this == rhs);
52  }
53
54  bool is_default() const {
55    return mode == MODE_DEFAULT;
56  }
57
58  bool is_ntp() const {
59    return mode == MODE_NTP;
60  }
61
62  bool is_search() const {
63    return mode == MODE_SEARCH_SUGGESTIONS || mode == MODE_SEARCH_RESULTS;
64  }
65
66  bool is_search_results() const {
67    return mode == MODE_SEARCH_RESULTS;
68  }
69
70  bool is_search_suggestions() const {
71    return mode == MODE_SEARCH_SUGGESTIONS;
72  }
73
74  bool is_origin_default() const {
75    return origin == ORIGIN_DEFAULT;
76  }
77
78  bool is_origin_search() const {
79    return origin == ORIGIN_SEARCH;
80  }
81
82  bool is_origin_ntp() const {
83    return origin == ORIGIN_NTP;
84  }
85
86  Type mode;
87  Origin origin;
88};
89
90#endif  // CHROME_COMMON_SEARCH_TYPES_H_
91