blob: 90f9d2a2d2c3607e88736ea9de9c42a8f7180e70 [file] [log] [blame]
Alan Cuttereb525cd02020-06-20 03:12:421// Copyright 2020 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_PROTO_UTILS_H_
6#define CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_PROTO_UTILS_H_
7
8#include <vector>
9
Carlos Frias514cf672020-08-13 23:53:4310#include "chrome/browser/web_applications/proto/web_app.pb.h"
Alan Cuttereb525cd02020-06-20 03:12:4211#include "chrome/browser/web_applications/web_app.h"
12#include "components/sync/protocol/web_app_specifics.pb.h"
Anton Bikineev46bbb972021-05-15 17:53:5313#include "third_party/abseil-cpp/absl/types/optional.h"
Alan Cuttereb525cd02020-06-20 03:12:4214
Evan Stadefbe5ca52021-08-19 00:51:4315namespace apps {
16struct IconInfo;
17}
18
Alan Cuttereb525cd02020-06-20 03:12:4219namespace web_app {
20
Carlos Frias514cf672020-08-13 23:53:4321enum class RunOnOsLoginMode;
22
Alan Cuttereb525cd02020-06-20 03:12:4223using RepeatedIconInfosProto =
24 const ::google::protobuf::RepeatedPtrField<::sync_pb::WebAppIconInfo>;
25
Anton Bikineev46bbb972021-05-15 17:53:5326absl::optional<std::vector<WebApplicationIconInfo>> ParseWebAppIconInfos(
Alan Cutter1e6a3ac42020-06-24 05:04:1327 const char* container_name_for_logging,
Alan Cuttereb525cd02020-06-20 03:12:4228 RepeatedIconInfosProto icon_infos_proto);
29
Evan Stadefbe5ca52021-08-19 00:51:4330// As above, but uses the type defined in //components. TODO(estade): replace
31// `WebApplicationIconInfo` with `apps::IconInfo` and eliminate this
32// duplication.
33absl::optional<std::vector<apps::IconInfo>> ParseAppIconInfos(
34 const char* container_name_for_logging,
35 RepeatedIconInfosProto icon_infos_proto);
36
Glen Robertson2c6387b2020-07-10 06:31:5937// Use the given |app| to populate a |WebAppSpecifics| sync proto.
38sync_pb::WebAppSpecifics WebAppToSyncProto(const WebApp& app);
39
Glen Robertson2585e8a92020-07-29 08:33:0840// Use the given |icon_info| to populate a |WebAppIconInfo| sync proto.
41sync_pb::WebAppIconInfo WebAppIconInfoToSyncProto(
42 const WebApplicationIconInfo& icon_info);
43
Evan Stadefbe5ca52021-08-19 00:51:4344// As above, but uses the type defined in //components. TODO(estade): replace
45// `WebApplicationIconInfo` with `apps::IconInfo` and eliminate this
46// duplication.
47sync_pb::WebAppIconInfo AppIconInfoToSyncProto(const apps::IconInfo& icon_info);
48
Anton Bikineev46bbb972021-05-15 17:53:5349absl::optional<WebApp::SyncFallbackData> ParseSyncFallbackDataStruct(
Alan Cuttereb525cd02020-06-20 03:12:4250 const sync_pb::WebAppSpecifics& sync_proto);
51
Glen Robertson2c6387b2020-07-10 06:31:5952::sync_pb::WebAppSpecifics::UserDisplayMode ToWebAppSpecificsUserDisplayMode(
53 DisplayMode user_display_mode);
54
Carlos Frias514cf672020-08-13 23:53:4355RunOnOsLoginMode ToRunOnOsLoginMode(WebAppProto::RunOnOsLoginMode mode);
56
57WebAppProto::RunOnOsLoginMode ToWebAppProtoRunOnOsLoginMode(
58 RunOnOsLoginMode mode);
59
Alan Cuttereb525cd02020-06-20 03:12:4260} // namespace web_app
61
62#endif // CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_PROTO_UTILS_H_