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