// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_COMMON_SEARCH_TYPES_H_ #define CHROME_COMMON_SEARCH_TYPES_H_ // The Mode structure encodes the visual states encountered when interacting // with the NTP and the Omnibox. struct SearchMode { // The visual state that applies to the current interaction. enum Type { // The default state means anything but the following states. MODE_DEFAULT, // On the NTP page and the NTP is ready to be displayed. MODE_NTP, // The Omnibox is modified in some way, either on the NTP or not. MODE_SEARCH_SUGGESTIONS, // On a search results page. MODE_SEARCH_RESULTS, }; // The kind of page from which the user initiated the current search. enum Origin { // The user is searching from some random page. ORIGIN_DEFAULT = 0, // The user is searching from the NTP. ORIGIN_NTP, // The user is searching from a search results page. ORIGIN_SEARCH, }; SearchMode() : mode(MODE_DEFAULT), origin(ORIGIN_DEFAULT) { } SearchMode(Type in_mode, Origin in_origin) : mode(in_mode), origin(in_origin) { } bool operator==(const SearchMode& rhs) const { return mode == rhs.mode && origin == rhs.origin; } bool operator!=(const SearchMode& rhs) const { return !(*this == rhs); } bool is_default() const { return mode == MODE_DEFAULT; } bool is_ntp() const { return mode == MODE_NTP; } bool is_search() const { return mode == MODE_SEARCH_SUGGESTIONS || mode == MODE_SEARCH_RESULTS; } bool is_search_results() const { return mode == MODE_SEARCH_RESULTS; } bool is_search_suggestions() const { return mode == MODE_SEARCH_SUGGESTIONS; } bool is_origin_default() const { return origin == ORIGIN_DEFAULT; } bool is_origin_search() const { return origin == ORIGIN_SEARCH; } bool is_origin_ntp() const { return origin == ORIGIN_NTP; } Type mode; Origin origin; }; #endif // CHROME_COMMON_SEARCH_TYPES_H_