| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/manifest/manifest_icon_selector.h" | 5 #include "chrome/browser/manifest/manifest_icon_selector.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <cmath> | 10 #include <cmath> |
| 11 #include <limits> | 11 #include <limits> |
| 12 | 12 |
| 13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
| 14 #include "components/mime_util/mime_util.h" | 14 #include "components/mime_util/mime_util.h" |
| 15 #include "content/public/browser/web_contents.h" | 15 #include "content/public/browser/web_contents.h" |
| 16 #include "ui/display/display.h" | |
| 17 #include "ui/display/screen.h" | |
| 18 | 16 |
| 19 using content::Manifest; | 17 using content::Manifest; |
| 20 | 18 |
| 21 ManifestIconSelector::ManifestIconSelector(int ideal_icon_size_in_px, | 19 ManifestIconSelector::ManifestIconSelector(int ideal_icon_size_in_px, |
| 22 int minimum_icon_size_in_px) | 20 int minimum_icon_size_in_px) |
| 23 : ideal_icon_size_in_px_(ideal_icon_size_in_px), | 21 : ideal_icon_size_in_px_(ideal_icon_size_in_px), |
| 24 minimum_icon_size_in_px_(minimum_icon_size_in_px) { | 22 minimum_icon_size_in_px_(minimum_icon_size_in_px) { |
| 25 } | 23 } |
| 26 | 24 |
| 27 bool ManifestIconSelector::IconSizesContainsPreferredSize( | 25 bool ManifestIconSelector::IconSizesContainsPreferredSize( |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 result.push_back(icons[i]); | 121 result.push_back(icons[i]); |
| 124 } | 122 } |
| 125 } | 123 } |
| 126 | 124 |
| 127 return result; | 125 return result; |
| 128 } | 126 } |
| 129 | 127 |
| 130 // static | 128 // static |
| 131 GURL ManifestIconSelector::FindBestMatchingIcon( | 129 GURL ManifestIconSelector::FindBestMatchingIcon( |
| 132 const std::vector<Manifest::Icon>& unfiltered_icons, | 130 const std::vector<Manifest::Icon>& unfiltered_icons, |
| 133 const int ideal_icon_size_in_dp, | 131 const int ideal_icon_size_in_px, |
| 134 const int minimum_icon_size_in_dp) { | 132 const int minimum_icon_size_in_px) { |
| 135 DCHECK(minimum_icon_size_in_dp <= ideal_icon_size_in_dp); | 133 DCHECK(minimum_icon_size_in_px <= ideal_icon_size_in_px); |
| 136 | |
| 137 const int ideal_icon_size_in_px = | |
| 138 ConvertIconSizeFromDpToPx(ideal_icon_size_in_dp); | |
| 139 const int minimum_icon_size_in_px = | |
| 140 ConvertIconSizeFromDpToPx(minimum_icon_size_in_dp); | |
| 141 | 134 |
| 142 std::vector<Manifest::Icon> icons = | 135 std::vector<Manifest::Icon> icons = |
| 143 ManifestIconSelector::FilterIconsByType(unfiltered_icons); | 136 ManifestIconSelector::FilterIconsByType(unfiltered_icons); |
| 144 | 137 |
| 145 ManifestIconSelector selector(ideal_icon_size_in_px, | 138 ManifestIconSelector selector(ideal_icon_size_in_px, |
| 146 minimum_icon_size_in_px); | 139 minimum_icon_size_in_px); |
| 147 int index = selector.FindBestMatchingIcon(icons); | 140 int index = selector.FindBestMatchingIcon(icons); |
| 148 if (index == -1) | 141 if (index == -1) |
| 149 return GURL(); | 142 return GURL(); |
| 150 return icons[index].src; | 143 return icons[index].src; |
| 151 } | 144 } |
| 152 | |
| 153 // static | |
| 154 int ManifestIconSelector::ConvertIconSizeFromDpToPx(int icon_size_in_dp) { | |
| 155 return static_cast<int>(round( | |
| 156 icon_size_in_dp * | |
| 157 display::Screen::GetScreen()->GetPrimaryDisplay().device_scale_factor())); | |
| 158 } | |
| OLD | NEW |