12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_COMMON_SEARCH_TYPES_H_
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_COMMON_SEARCH_TYPES_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The Mode structure encodes the visual states encountered when interacting
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// with the NTP and the Omnibox.
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)struct SearchMode {
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The visual state that applies to the current interaction.
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  enum Type {
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // The default state means anything but the following states.
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    MODE_DEFAULT,
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // On the NTP page and the NTP is ready to be displayed.
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    MODE_NTP,
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // The Omnibox is modified in some way, either on the NTP or not.
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    MODE_SEARCH_SUGGESTIONS,
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // On a search results page.
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    MODE_SEARCH_RESULTS,
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  };
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The kind of page from which the user initiated the current search.
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  enum Origin {
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // The user is searching from some random page.
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ORIGIN_DEFAULT = 0,
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // The user is searching from the NTP.
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ORIGIN_NTP,
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // The user is searching from a search results page.
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ORIGIN_SEARCH,
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  };
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SearchMode() : mode(MODE_DEFAULT), origin(ORIGIN_DEFAULT) {
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SearchMode(Type in_mode, Origin in_origin)
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      : mode(in_mode),
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        origin(in_origin) {
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  bool operator==(const SearchMode& rhs) const {
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return mode == rhs.mode && origin == rhs.origin;
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  bool operator!=(const SearchMode& rhs) const {
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return !(*this == rhs);
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool is_default() const {
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return mode == MODE_DEFAULT;
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool is_ntp() const {
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return mode == MODE_NTP;
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool is_search() const {
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return mode == MODE_SEARCH_SUGGESTIONS || mode == MODE_SEARCH_RESULTS;
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool is_search_results() const {
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return mode == MODE_SEARCH_RESULTS;
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool is_search_suggestions() const {
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return mode == MODE_SEARCH_SUGGESTIONS;
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool is_origin_default() const {
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return origin == ORIGIN_DEFAULT;
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool is_origin_search() const {
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return origin == ORIGIN_SEARCH;
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool is_origin_ntp() const {
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return origin == ORIGIN_NTP;
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  Type mode;
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  Origin origin;
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // CHROME_COMMON_SEARCH_TYPES_H_
91