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