| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/webapps/browser/android/webapp_icon.h" |
| |
| #include "components/webapps/browser/android/webapps_icon_utils.h" |
| |
| namespace webapps { |
| |
| WebappIcon::WebappIcon(const GURL& icon_url) : url_(icon_url) {} |
| |
| WebappIcon::WebappIcon(const GURL& icon_url, |
| bool is_maskable, |
| webapk::Image::Usage usage) |
| : url_(icon_url), |
| purpose_(is_maskable ? webapk::Image::MASKABLE : webapk::Image::ANY) { |
| AddUsage(usage); |
| } |
| |
| WebappIcon::~WebappIcon() = default; |
| |
| void WebappIcon::AddUsage(webapk::Image::Usage usage) { |
| usages_.insert(usage); |
| } |
| |
| int WebappIcon::GetIdealSizeInPx() const { |
| // The ideal size is the biggest one this icon serves. |
| int ideal_size = 0; |
| for (const auto& usage : usages_) { |
| ideal_size = std::max( |
| ideal_size, |
| WebappsIconUtils::GetIdealIconSizeForIconType(usage, purpose_)); |
| } |
| return ideal_size; |
| } |
| |
| void WebappIcon::SetData(std::string&& data) { |
| unsafe_data_ = std::move(data); |
| has_unsafe_data_ = true; |
| } |
| |
| std::string&& WebappIcon::ExtractData() { |
| return std::move(unsafe_data_); |
| } |
| |
| } // namespace webapps |