text: // Copyright 2015 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_BROWSER_ANDROID_CONTEXTUALSEARCH_RESOLVED_SEARCH_TERM_H_
  #define CHROME_BROWSER_ANDROID_CONTEXTUALSEARCH_RESOLVED_SEARCH_TERM_H_
  
  #include <string>
  
  #include "base/macros.h"
  
  // A Java counterpart will be generated for this enum.
  // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.contextualsearch
  enum QuickActionCategory {
    QUICK_ACTION_CATEGORY_NONE,
    QUICK_ACTION_CATEGORY_ADDRESS,
    QUICK_ACTION_CATEGORY_EMAIL,
    QUICK_ACTION_CATEGORY_EVENT,
    QUICK_ACTION_CATEGORY_PHONE,
    QUICK_ACTION_CATEGORY_BOUNDARY
  };
  
  // Encapsulates the various parts of a Resolved Search Term, which tells
  // Contextual Search what to search for and how that term appears in the
  // surrounding text.
  struct ResolvedSearchTerm {
   public:
    explicit ResolvedSearchTerm(int response_code);
    ResolvedSearchTerm(bool is_invalid,
                       int response_code,
                       const std::string& search_term,
                       const std::string& display_text,
                       const std::string& alternate_term,
                       const std::string& mid,
                       bool prevent_preload,
                       int selection_start_adjust,
                       int selection_end_adjust,
                       const std::string& context_language,
                       const std::string& thumbnail_url,
                       const std::string& caption,
                       const std::string& quick_action_uri,
                       const QuickActionCategory& quick_action_category);
    ~ResolvedSearchTerm();
  
    const bool is_invalid;
    const int response_code;
    // Use strings, rather than just references, to keep this complete.
    const std::string search_term;
    const std::string display_text;
    const std::string alternate_term;
    const std::string mid;  // Mid (entity ID), or empty.
    const bool prevent_preload;
    const int selection_start_adjust;
    const int selection_end_adjust;
    const std::string context_language;
    const std::string thumbnail_url;
    const std::string caption;
    const std::string quick_action_uri;
    const QuickActionCategory quick_action_category;
  
    DISALLOW_COPY_AND_ASSIGN(ResolvedSearchTerm);
  };
  
  #endif  // CHROME_BROWSER_ANDROID_CONTEXTUALSEARCH_RESOLVED_SEARCH_TERM_H_
  