10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#ifndef COMPONENTS_FAVICON_BASE_FAVICON_TYPES_H_ 60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#define COMPONENTS_FAVICON_BASE_FAVICON_TYPES_H_ 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/memory/ref_counted_memory.h" 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ui/gfx/image/image.h" 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ui/gfx/size.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "url/gurl.h" 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace favicon_base { 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)typedef int64 FaviconID; 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Defines the icon types. They are also stored in icon_type field of favicons 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// table. 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// The values of the IconTypes are used to select the priority in which favicon 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// data is returned in HistoryBackend and ThumbnailDatabase. Data for the 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// largest IconType takes priority if data for multiple IconTypes is available. 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)enum IconType { 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) INVALID_ICON = 0x0, 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) FAVICON = 1 << 0, 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TOUCH_ICON = 1 << 1, 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TOUCH_PRECOMPOSED_ICON = 1 << 2 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Defines a gfx::Image of size desired_size_in_dip composed of image 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// representations for each of the desired scale factors. 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)struct FaviconImageResult { 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) FaviconImageResult(); 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ~FaviconImageResult(); 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // The resulting image. 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) gfx::Image image; 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // The URL of the favicon which contains all of the image representations of 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // |image|. 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // TODO(pkotwicz): Return multiple |icon_urls| to allow |image| to have 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // representations from several favicons once content::FaviconStatus supports 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // multiple URLs. 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) GURL icon_url; 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Defines a favicon bitmap which best matches the desired DIP size and one of 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// the desired scale factors. 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)struct FaviconRawBitmapResult { 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) FaviconRawBitmapResult(); 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ~FaviconRawBitmapResult(); 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Returns true if |bitmap_data| contains a valid bitmap. 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool is_valid() const { return bitmap_data.get() && bitmap_data->size(); } 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Indicates whether |bitmap_data| is expired. 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool expired; 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // The bits of the bitmap. 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) scoped_refptr<base::RefCountedMemory> bitmap_data; 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // The pixel dimensions of |bitmap_data|. 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) gfx::Size pixel_size; 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // The URL of the containing favicon. 6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) GURL icon_url; 6690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // The icon type of the containing favicon. 6890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) IconType icon_type; 6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 7090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 71f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Define type with same structure as FaviconRawBitmapResult for passing data to 7290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// HistoryBackend::SetFavicons(). 73f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)typedef FaviconRawBitmapResult FaviconRawBitmapData; 7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace favicon_base 7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif // COMPONENTS_FAVICON_BASE_FAVICON_TYPES_H_ 78