blob: 4cc41db5b1f6370a3130072942ed87447aeb582d [file] [log] [blame]
// Copyright 2012 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_COMMON_INSTANT_TYPES_H_
#define CHROME_COMMON_INSTANT_TYPES_H_
#include <string>
#include <utility>
#include "base/basictypes.h"
#include "base/strings/string16.h"
#include "chrome/common/autocomplete_match_type.h"
#include "content/public/common/page_transition_types.h"
#include "url/gurl.h"
// ID used by Instant code to refer to objects (e.g. Autocomplete results, Most
// Visited items) that the Instant page needs access to.
typedef int InstantRestrictedID;
// A wrapper to hold Instant suggested text and its metadata. Used to tell the
// server what suggestion to prefetch.
struct InstantSuggestion {
InstantSuggestion();
InstantSuggestion(const base::string16& in_text,
const std::string& in_metadata);
~InstantSuggestion();
// Full suggested text.
base::string16 text;
// JSON metadata from the server response which produced this suggestion.
std::string metadata;
};
// Omnibox dropdown matches provided by the native autocomplete providers.
struct InstantAutocompleteResult {
InstantAutocompleteResult();
~InstantAutocompleteResult();
// The provider name, as returned by AutocompleteProvider::GetName().
base::string16 provider;
// The type of the result.
AutocompleteMatchType::Type type;
// The description (title), same as AutocompleteMatch::description.
base::string16 description;
// The URL of the match, same as AutocompleteMatch::destination_url.
base::string16 destination_url;
// The search query for this match. Only set for matches coming from
// SearchProvider. Populated using AutocompleteMatch::contents.
base::string16 search_query;
// The transition type to use when the user opens this match. Same as
// AutocompleteMatch::transition.
content::PageTransition transition;
// The relevance score of this match, same as AutocompleteMatch::relevance.
int relevance;
// The index of the match in AutocompleteResult. Used to get the instant
// suggestion metadata details. Set to kNoMatchIndex if the
// suggestion is displayed on the Instant NTP and set to a positive value if
// the suggestion is displayed on the Local NTP.
size_t autocomplete_match_index;
};
// An InstantAutocompleteResult along with its assigned restricted ID.
typedef std::pair<InstantRestrictedID, InstantAutocompleteResult>
InstantAutocompleteResultIDPair;
// The alignment of the theme background image.
enum ThemeBackgroundImageAlignment {
THEME_BKGRND_IMAGE_ALIGN_CENTER,
THEME_BKGRND_IMAGE_ALIGN_LEFT,
THEME_BKGRND_IMAGE_ALIGN_TOP,
THEME_BKGRND_IMAGE_ALIGN_RIGHT,
THEME_BKGRND_IMAGE_ALIGN_BOTTOM,
};
// The tiling of the theme background image.
enum ThemeBackgroundImageTiling {
THEME_BKGRND_IMAGE_NO_REPEAT,
THEME_BKGRND_IMAGE_REPEAT_X,
THEME_BKGRND_IMAGE_REPEAT_Y,
THEME_BKGRND_IMAGE_REPEAT,
};
// The RGBA color components for the text and links of the theme.
struct RGBAColor {
RGBAColor();
~RGBAColor();
bool operator==(const RGBAColor& rhs) const;
// The color in RGBA format where the R, G, B and A values
// are between 0 and 255 inclusive and always valid.
uint8 r;
uint8 g;
uint8 b;
uint8 a;
};
// Theme background settings for the NTP.
struct ThemeBackgroundInfo {
ThemeBackgroundInfo();
~ThemeBackgroundInfo();
bool operator==(const ThemeBackgroundInfo& rhs) const;
// True if the default theme is selected.
bool using_default_theme;
// The theme background color in RGBA format always valid.
RGBAColor background_color;
// The theme text color in RGBA format.
RGBAColor text_color;
// The theme link color in RGBA format.
RGBAColor link_color;
// The theme text color light in RGBA format.
RGBAColor text_color_light;
// The theme color for the header in RGBA format.
RGBAColor header_color;
// The theme color for the section border in RGBA format.
RGBAColor section_border_color;
// The theme id for the theme background image.
// Value is only valid if there's a custom theme background image.
std::string theme_id;
// The theme background image horizontal alignment is only valid if |theme_id|
// is valid.
ThemeBackgroundImageAlignment image_horizontal_alignment;
// The theme background image vertical alignment is only valid if |theme_id|
// is valid.
ThemeBackgroundImageAlignment image_vertical_alignment;
// The theme background image tiling is only valid if |theme_id| is valid.
ThemeBackgroundImageTiling image_tiling;
// The theme background image height.
// Value is only valid if |theme_id| is valid.
uint16 image_height;
// True if theme has attribution logo.
// Value is only valid if |theme_id| is valid.
bool has_attribution;
// True if theme has an alternate logo.
bool logo_alternate;
};
struct InstantMostVisitedItem {
// The URL of the Most Visited item.
GURL url;
// The title of the Most Visited page. May be empty, in which case the |url|
// is used as the title.
base::string16 title;
};
// An InstantMostVisitedItem along with its assigned restricted ID.
typedef std::pair<InstantRestrictedID, InstantMostVisitedItem>
InstantMostVisitedItemIDPair;
#endif // CHROME_COMMON_INSTANT_TYPES_H_