instant_types.h revision 424c4d7b64af9d0d8fd9624f381f469654d5e3d2
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.
19typedef int InstantRestrictedID;
20
21// A wrapper to hold Instant suggested text and its metadata. Used to tell the
22// server what suggestion to prefetch.
23struct InstantSuggestion {
24  InstantSuggestion();
25  InstantSuggestion(const string16& in_text,
26                    const std::string& in_metadata);
27  ~InstantSuggestion();
28
29  // Full suggested text.
30  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.
37struct InstantAutocompleteResult {
38  InstantAutocompleteResult();
39  ~InstantAutocompleteResult();
40
41  // The provider name, as returned by AutocompleteProvider::GetName().
42  string16 provider;
43
44  // The type of the result.
45  AutocompleteMatchType::Type type;
46
47  // The description (title), same as AutocompleteMatch::description.
48  string16 description;
49
50  // The URL of the match, same as AutocompleteMatch::destination_url.
51  string16 destination_url;
52
53  // The search query for this match. Only set for matches coming from
54  // SearchProvider. Populated using AutocompleteMatch::contents.
55  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.
72typedef std::pair<InstantRestrictedID, InstantAutocompleteResult>
73    InstantAutocompleteResultIDPair;
74
75// The alignment of the theme background image.
76enum 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.
85enum 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.
93struct 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.
108struct 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
162struct 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  string16 title;
169};
170
171// An InstantMostVisitedItem along with its assigned restricted ID.
172typedef std::pair<InstantRestrictedID, InstantMostVisitedItem>
173    InstantMostVisitedItemIDPair;
174
175#endif  // CHROME_COMMON_INSTANT_TYPES_H_
176