blob: 91b47a6b3f9d3ff22b4e7560c9fdfedd4c7e3227 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_NOTIFICATION_STRUCT_TRAITS_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_NOTIFICATION_STRUCT_TRAITS_H_
#include "base/containers/span.h"
#include "mojo/public/cpp/bindings/array_traits_wtf_vector.h"
#include "mojo/public/cpp/bindings/string_traits_wtf.h"
#include "skia/public/interfaces/bitmap_skbitmap_struct_traits.h"
#include "third_party/blink/public/platform/modules/notifications/notification.mojom-blink.h"
#include "third_party/blink/public/platform/modules/notifications/web_notification_action.h"
#include "third_party/blink/renderer/platform/mojo/kurl_struct_traits.h"
#include "third_party/blink/renderer/platform/mojo/string16_mojom_traits.h"
#include "third_party/blink/renderer/platform/platform_export.h"
#include "third_party/blink/renderer/platform/weborigin/kurl.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#include "third_party/skia/include/core/SkBitmap.h"
namespace mojo {
template <>
struct PLATFORM_EXPORT EnumTraits<blink::mojom::NotificationDirection,
blink::WebNotificationData::Direction> {
static blink::mojom::NotificationDirection ToMojom(
blink::WebNotificationData::Direction input);
static bool FromMojom(blink::mojom::NotificationDirection input,
blink::WebNotificationData::Direction* out);
};
template <>
struct PLATFORM_EXPORT EnumTraits<blink::mojom::NotificationActionType,
blink::WebNotificationAction::Type> {
static blink::mojom::NotificationActionType ToMojom(
blink::WebNotificationAction::Type input);
static bool FromMojom(blink::mojom::NotificationActionType input,
blink::WebNotificationAction::Type* out);
};
template <>
struct PLATFORM_EXPORT StructTraits<blink::mojom::NotificationActionDataView,
blink::WebNotificationAction> {
static blink::WebNotificationAction::Type type(
const blink::WebNotificationAction& action) {
return action.type;
}
static WTF::String action(const blink::WebNotificationAction&);
static WTF::String title(const blink::WebNotificationAction&);
static blink::KURL icon(const blink::WebNotificationAction&);
static WTF::String placeholder(const blink::WebNotificationAction&);
static bool Read(blink::mojom::NotificationActionDataView,
blink::WebNotificationAction* output);
};
template <>
struct PLATFORM_EXPORT StructTraits<blink::mojom::NotificationDataDataView,
blink::WebNotificationData> {
static WTF::String title(const blink::WebNotificationData&);
static blink::WebNotificationData::Direction direction(
const blink::WebNotificationData& data) {
return data.direction;
}
static WTF::String lang(const blink::WebNotificationData&);
static WTF::String body(const blink::WebNotificationData&);
static WTF::String tag(const blink::WebNotificationData&);
static blink::KURL image(const blink::WebNotificationData&);
static blink::KURL icon(const blink::WebNotificationData&);
static blink::KURL badge(const blink::WebNotificationData&);
static base::span<const int32_t> vibration_pattern(
const blink::WebNotificationData&);
static double timestamp(const blink::WebNotificationData& data) {
return data.timestamp;
}
static bool renotify(const blink::WebNotificationData& data) {
return data.renotify;
}
static bool silent(const blink::WebNotificationData& data) {
return data.silent;
}
static bool require_interaction(const blink::WebNotificationData& data) {
return data.require_interaction;
}
static base::span<const int8_t> data(const blink::WebNotificationData&);
static base::span<const blink::WebNotificationAction> actions(
const blink::WebNotificationData&);
static bool Read(blink::mojom::NotificationDataDataView,
blink::WebNotificationData* output);
};
} // namespace mojo
#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_NOTIFICATION_STRUCT_TRAITS_H_