1 // Copyright 2015 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 #include "components/favicon/content/favicon_url_util.h"
6 
7 #include <algorithm>
8 #include <iterator>
9 
10 #include "components/favicon/core/favicon_url.h"
11 #include "components/favicon_base/favicon_types.h"
12 
13 namespace favicon {
14 namespace {
15 
IconTypeFromContentIconType(blink::mojom::FaviconIconType icon_type)16 favicon_base::IconType IconTypeFromContentIconType(
17     blink::mojom::FaviconIconType icon_type) {
18   switch (icon_type) {
19     case blink::mojom::FaviconIconType::kFavicon:
20       return favicon_base::IconType::kFavicon;
21     case blink::mojom::FaviconIconType::kTouchIcon:
22       return favicon_base::IconType::kTouchIcon;
23     case blink::mojom::FaviconIconType::kTouchPrecomposedIcon:
24       return favicon_base::IconType::kTouchPrecomposedIcon;
25     case blink::mojom::FaviconIconType::kInvalid:
26       return favicon_base::IconType::kInvalid;
27   }
28   NOTREACHED();
29   return favicon_base::IconType::kInvalid;
30 }
31 
32 }  // namespace
33 
FaviconURLFromContentFaviconURL(const blink::mojom::FaviconURL & favicon_url)34 FaviconURL FaviconURLFromContentFaviconURL(
35     const blink::mojom::FaviconURL& favicon_url) {
36   return FaviconURL(favicon_url.icon_url,
37                     IconTypeFromContentIconType(favicon_url.icon_type),
38                     favicon_url.icon_sizes);
39 }
40 
FaviconURLsFromContentFaviconURLs(const std::vector<blink::mojom::FaviconURL> & favicon_urls)41 std::vector<FaviconURL> FaviconURLsFromContentFaviconURLs(
42     const std::vector<blink::mojom::FaviconURL>& favicon_urls) {
43   std::vector<FaviconURL> result;
44   result.reserve(favicon_urls.size());
45   std::transform(favicon_urls.begin(), favicon_urls.end(),
46                  std::back_inserter(result), FaviconURLFromContentFaviconURL);
47   return result;
48 }
49 
50 }  // namespace favicon
51