15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#ifndef COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_COMMON_H_ 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#define COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_COMMON_H_ 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include <string> 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/memory/ref_counted.h" 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/memory/ref_counted_memory.h" 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/time/time.h" 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "third_party/skia/include/core/SkBitmap.h" 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace search_provider_logos { 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// The maximum number of milliseconds that a logo can be cached. 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuextern const int64 kMaxTimeToLiveMS; 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liustruct LogoMetadata { 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu LogoMetadata(); 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ~LogoMetadata(); 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // For use by the client ---------------------------------------------------- 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // The URL to load when the logo is clicked. 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string on_click_url; 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // The accessibility text for the logo. 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string alt_text; 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // The mime type of the logo image. 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string mime_type; 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // For use by LogoTracker --------------------------------------------------- 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // The URL from which the logo was downloaded (without the fingerprint param). 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string source_url; 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // A fingerprint (i.e. hash) identifying the logo. Used when revalidating the 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // logo with the server. 395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string fingerprint; 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Whether the logo can be shown optimistically after it's expired while a 415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // fresh logo is being downloaded. 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu bool can_show_after_expiration; 435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // When the logo expires. After this time, the logo will not be used and will 445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // be deleted. 455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::Time expiration_time; 465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}; 475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liustruct EncodedLogo { 495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EncodedLogo(); 505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ~EncodedLogo(); 515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // The jpeg- or png-encoded image. 535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu scoped_refptr<base::RefCountedString> encoded_image; 545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Metadata about the logo. 555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu LogoMetadata metadata; 565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}; 575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liustruct Logo { 595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu Logo(); 605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ~Logo(); 615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // The logo image. 635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu SkBitmap image; 645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Metadata about the logo. 655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu LogoMetadata metadata; 665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}; 675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace search_provider_logos 695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#endif // COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_COMMON_H_ 71