1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_WEBAPPS_BROWSER_BANNERS_WEB_APP_BANNER_DATA_H_
#define COMPONENTS_WEBAPPS_BROWSER_BANNERS_WEB_APP_BANNER_DATA_H_
#include <string>
#include "components/webapps/browser/installable/installable_data.h"
#include "components/webapps/common/web_app_id.h"
#include "components/webapps/common/web_page_metadata.mojom-forward.h"
#include "components/webapps/common/web_page_metadata.mojom.h"
#include "third_party/blink/public/mojom/manifest/manifest.mojom-forward.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "url/gurl.h"
namespace webapps {
// Holds information about a web app being considered for an installation
// banner / onbeforeinstallprompt event.
struct WebAppBannerData {
WebAppBannerData() = delete;
WebAppBannerData(ManifestId manifest_id,
blink::mojom::ManifestPtr manifest,
mojom::WebPageMetadataPtr metadata,
GURL manifest_url);
WebAppBannerData(ManifestId manifest_id,
const blink::mojom::Manifest& manifest,
const mojom::WebPageMetadata& metadata,
GURL manifest_url);
WebAppBannerData(const WebAppBannerData&);
~WebAppBannerData();
const std::u16string& GetAppName() const;
const blink::mojom::Manifest& manifest() const;
const mojom::WebPageMetadata& web_page_metadata() const;
// The ManifestId for this webpage. This should be used instead of the
// manifest's manifest_id.
const ManifestId manifest_id;
// The URL of the manifest.
const GURL manifest_url;
// The URL of the primary icon.
GURL primary_icon_url;
// The primary icon object.
SkBitmap primary_icon;
// Whether or not the primary icon is maskable.
bool has_maskable_primary_icon = false;
// The screenshots to show in the install UI.
std::vector<Screenshot> screenshots;
private:
// The manifest object. This is never null, it will instead be an empty
// manifest so callers don't have to worry about null checks.
const blink::mojom::ManifestPtr manifest_ptr;
// The web page metadata object. This is never null, it will instead be
// empty so callers don't have to worry about null checks.
const mojom::WebPageMetadataPtr web_page_metadata_ptr;
};
} // namespace webapps
#endif // COMPONENTS_WEBAPPS_BROWSER_BANNERS_WEB_APP_BANNER_DATA_H_
|