Home | History | Annotate | Download | only in common
      1 // Copyright 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_INSTANT_TYPES_H_
      6 #define CHROME_COMMON_INSTANT_TYPES_H_
      7 
      8 #include <string>
      9 #include <utility>
     10 
     11 #include "base/basictypes.h"
     12 #include "base/strings/string16.h"
     13 #include "chrome/common/autocomplete_match_type.h"
     14 #include "content/public/common/page_transition_types.h"
     15 #include "url/gurl.h"
     16 
     17 // ID used by Instant code to refer to objects (e.g. Autocomplete results, Most
     18 // Visited items) that the Instant page needs access to.
     19 typedef int InstantRestrictedID;
     20 
     21 // A wrapper to hold Instant suggested text and its metadata. Used to tell the
     22 // server what suggestion to prefetch.
     23 struct InstantSuggestion {
     24   InstantSuggestion();
     25   InstantSuggestion(const base::string16& in_text,
     26                     const std::string& in_metadata);
     27   ~InstantSuggestion();
     28 
     29   // Full suggested text.
     30   base::string16 text;
     31 
     32   // JSON metadata from the server response which produced this suggestion.
     33   std::string metadata;
     34 };
     35 
     36 // Omnibox dropdown matches provided by the native autocomplete providers.
     37 struct InstantAutocompleteResult {
     38   InstantAutocompleteResult();
     39   ~InstantAutocompleteResult();
     40 
     41   // The provider name, as returned by AutocompleteProvider::GetName().
     42   base::string16 provider;
     43 
     44   // The type of the result.
     45   AutocompleteMatchType::Type type;
     46 
     47   // The description (title), same as AutocompleteMatch::description.
     48   base::string16 description;
     49 
     50   // The URL of the match, same as AutocompleteMatch::destination_url.
     51   base::string16 destination_url;
     52 
     53   // The search query for this match. Only set for matches coming from
     54   // SearchProvider. Populated using AutocompleteMatch::contents.
     55   base::string16 search_query;
     56 
     57   // The transition type to use when the user opens this match. Same as
     58   // AutocompleteMatch::transition.
     59   content::PageTransition transition;
     60 
     61   // The relevance score of this match, same as AutocompleteMatch::relevance.
     62   int relevance;
     63 
     64   // The index of the match in AutocompleteResult. Used to get the instant
     65   // suggestion metadata details. Set to kNoMatchIndex if the
     66   // suggestion is displayed on the Instant NTP and set to a positive value if
     67   // the suggestion is displayed on the Local NTP.
     68   size_t autocomplete_match_index;
     69 };
     70 
     71 // An InstantAutocompleteResult along with its assigned restricted ID.
     72 typedef std::pair<InstantRestrictedID, InstantAutocompleteResult>
     73     InstantAutocompleteResultIDPair;
     74 
     75 // The alignment of the theme background image.
     76 enum ThemeBackgroundImageAlignment {
     77   THEME_BKGRND_IMAGE_ALIGN_CENTER,
     78   THEME_BKGRND_IMAGE_ALIGN_LEFT,
     79   THEME_BKGRND_IMAGE_ALIGN_TOP,
     80   THEME_BKGRND_IMAGE_ALIGN_RIGHT,
     81   THEME_BKGRND_IMAGE_ALIGN_BOTTOM,
     82 };
     83 
     84 // The tiling of the theme background image.
     85 enum ThemeBackgroundImageTiling {
     86   THEME_BKGRND_IMAGE_NO_REPEAT,
     87   THEME_BKGRND_IMAGE_REPEAT_X,
     88   THEME_BKGRND_IMAGE_REPEAT_Y,
     89   THEME_BKGRND_IMAGE_REPEAT,
     90 };
     91 
     92 // The RGBA color components for the text and links of the theme.
     93 struct RGBAColor {
     94   RGBAColor();
     95   ~RGBAColor();
     96 
     97   bool operator==(const RGBAColor& rhs) const;
     98 
     99   // The color in RGBA format where the R, G, B and A values
    100   // are between 0 and 255 inclusive and always valid.
    101   uint8 r;
    102   uint8 g;
    103   uint8 b;
    104   uint8 a;
    105 };
    106 
    107 // Theme background settings for the NTP.
    108 struct ThemeBackgroundInfo {
    109   ThemeBackgroundInfo();
    110   ~ThemeBackgroundInfo();
    111 
    112   bool operator==(const ThemeBackgroundInfo& rhs) const;
    113 
    114   // True if the default theme is selected.
    115   bool using_default_theme;
    116 
    117   // The theme background color in RGBA format always valid.
    118   RGBAColor background_color;
    119 
    120   // The theme text color in RGBA format.
    121   RGBAColor text_color;
    122 
    123   // The theme link color in RGBA format.
    124   RGBAColor link_color;
    125 
    126   // The theme text color light in RGBA format.
    127   RGBAColor text_color_light;
    128 
    129   // The theme color for the header in RGBA format.
    130   RGBAColor header_color;
    131 
    132   // The theme color for the section border in RGBA format.
    133   RGBAColor section_border_color;
    134 
    135   // The theme id for the theme background image.
    136   // Value is only valid if there's a custom theme background image.
    137   std::string theme_id;
    138 
    139   // The theme background image horizontal alignment is only valid if |theme_id|
    140   // is valid.
    141   ThemeBackgroundImageAlignment image_horizontal_alignment;
    142 
    143   // The theme background image vertical alignment is only valid if |theme_id|
    144   // is valid.
    145   ThemeBackgroundImageAlignment image_vertical_alignment;
    146 
    147   // The theme background image tiling is only valid if |theme_id| is valid.
    148   ThemeBackgroundImageTiling image_tiling;
    149 
    150   // The theme background image height.
    151   // Value is only valid if |theme_id| is valid.
    152   uint16 image_height;
    153 
    154   // True if theme has attribution logo.
    155   // Value is only valid if |theme_id| is valid.
    156   bool has_attribution;
    157 
    158   // True if theme has an alternate logo.
    159   bool logo_alternate;
    160 };
    161 
    162 struct InstantMostVisitedItem {
    163   // The URL of the Most Visited item.
    164   GURL url;
    165 
    166   // The title of the Most Visited page.  May be empty, in which case the |url|
    167   // is used as the title.
    168   base::string16 title;
    169 };
    170 
    171 // An InstantMostVisitedItem along with its assigned restricted ID.
    172 typedef std::pair<InstantRestrictedID, InstantMostVisitedItem>
    173     InstantMostVisitedItemIDPair;
    174 
    175 #endif  // CHROME_COMMON_INSTANT_TYPES_H_
    176