chromium/chrome/browser/notifications/scheduler/internal/proto_conversion.h

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_INTERNAL_PROTO_CONVERSION_H_
#define CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_INTERNAL_PROTO_CONVERSION_H_

#include "chrome/browser/notifications/proto/client_state.pb.h"
#include "chrome/browser/notifications/proto/icon.pb.h"
#include "chrome/browser/notifications/proto/notification_entry.pb.h"
#include "chrome/browser/notifications/scheduler/internal/icon_entry.h"
#include "chrome/browser/notifications/scheduler/internal/impression_types.h"
#include "chrome/browser/notifications/scheduler/internal/notification_entry.h"

namespace notifications {

// Converts an icon entry to icon proto.
void IconEntryToProto(IconEntry* entry, notifications::proto::Icon* proto);

// Converts an icon proto to icon entry.
void IconEntryFromProto(proto::Icon* proto, notifications::IconEntry* entry);

// Converts client state to proto.
void ClientStateToProto(ClientState* client_state,
                        notifications::proto::ClientState* proto);

// Converts proto to client state.
void ClientStateFromProto(proto::ClientState* proto,
                          notifications::ClientState* client_state);

// Converts notification entry to proto.
void NotificationEntryToProto(NotificationEntry* entry,
                              proto::NotificationEntry* proto);

// Converts proto to notification entry.
void NotificationEntryFromProto(proto::NotificationEntry* proto,
                                NotificationEntry* entry);

}  // namespace notifications

#endif  // CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_INTERNAL_PROTO_CONVERSION_H_