Chromium Code Reviews| 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" | 16 #include "ui/display/display.h" |
|
dominickn
2016/12/19 06:23:32
Nit: remove display.h and screen.h includes.
| |
| 17 #include "ui/display/screen.h" | 17 #include "ui/display/screen.h" |
| 18 | 18 |
| 19 using content::Manifest; | 19 using content::Manifest; |
| 20 | 20 |
| 21 ManifestIconSelector::ManifestIconSelector(int ideal_icon_size_in_px, | 21 ManifestIconSelector::ManifestIconSelector(int ideal_icon_size_in_px, |
| 22 int minimum_icon_size_in_px) | 22 int minimum_icon_size_in_px) |
| 23 : ideal_icon_size_in_px_(ideal_icon_size_in_px), | 23 : ideal_icon_size_in_px_(ideal_icon_size_in_px), |
| 24 minimum_icon_size_in_px_(minimum_icon_size_in_px) { | 24 minimum_icon_size_in_px_(minimum_icon_size_in_px) { |
| 25 } | 25 } |
| 26 | 26 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 123 result.push_back(icons[i]); | 123 result.push_back(icons[i]); |
| 124 } | 124 } |
| 125 } | 125 } |
| 126 | 126 |
| 127 return result; | 127 return result; |
| 128 } | 128 } |
| 129 | 129 |
| 130 // static | 130 // static |
| 131 GURL ManifestIconSelector::FindBestMatchingIcon( | 131 GURL ManifestIconSelector::FindBestMatchingIcon( |
| 132 const std::vector<Manifest::Icon>& unfiltered_icons, | 132 const std::vector<Manifest::Icon>& unfiltered_icons, |
| 133 const int ideal_icon_size_in_dp, | 133 const int ideal_icon_size_in_px, |
| 134 const int minimum_icon_size_in_dp) { | 134 const int minimum_icon_size_in_px) { |
| 135 DCHECK(minimum_icon_size_in_dp <= ideal_icon_size_in_dp); | 135 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 | 136 |
| 142 std::vector<Manifest::Icon> icons = | 137 std::vector<Manifest::Icon> icons = |
| 143 ManifestIconSelector::FilterIconsByType(unfiltered_icons); | 138 ManifestIconSelector::FilterIconsByType(unfiltered_icons); |
| 144 | 139 |
| 145 ManifestIconSelector selector(ideal_icon_size_in_px, | 140 ManifestIconSelector selector(ideal_icon_size_in_px, |
| 146 minimum_icon_size_in_px); | 141 minimum_icon_size_in_px); |
| 147 int index = selector.FindBestMatchingIcon(icons); | 142 int index = selector.FindBestMatchingIcon(icons); |
| 148 if (index == -1) | 143 if (index == -1) |
| 149 return GURL(); | 144 return GURL(); |
| 150 return icons[index].src; | 145 return icons[index].src; |
| 151 } | 146 } |
| 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 |