blob: 2b4d0145a3068e579cf476f9daa6df55587fa024 [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/web_applications/user_display_mode.h"
#include "base/feature_list.h"
#include "build/build_config.h"
#include "components/sync/protocol/web_app_specifics.pb.h"
namespace web_app {
sync_pb::WebAppSpecifics::UserDisplayMode ToWebAppSpecificsUserDisplayMode(
mojom::UserDisplayMode user_display_mode) {
switch (user_display_mode) {
case mojom::UserDisplayMode::kBrowser:
return sync_pb::WebAppSpecifics::BROWSER;
case mojom::UserDisplayMode::kTabbed:
return sync_pb::WebAppSpecifics::TABBED;
case mojom::UserDisplayMode::kStandalone:
return sync_pb::WebAppSpecifics::STANDALONE;
}
}
mojom::UserDisplayMode ToMojomUserDisplayMode(
sync_pb::WebAppSpecifics::UserDisplayMode display_mode) {
switch (display_mode) {
case sync_pb::WebAppSpecifics::BROWSER:
return mojom::UserDisplayMode::kBrowser;
case sync_pb::WebAppSpecifics::TABBED:
return mojom::UserDisplayMode::kTabbed;
case sync_pb::WebAppSpecifics::STANDALONE:
case sync_pb::WebAppSpecifics::UNSPECIFIED:
// Default to standalone if it's an enum value we don't know about.
return mojom::UserDisplayMode::kStandalone;
}
}
sync_pb::WebAppSpecifics::UserDisplayMode
ResolvePlatformSpecificUserDisplayMode(
const sync_pb::WebAppSpecifics& sync_proto) {
sync_pb::WebAppSpecifics_UserDisplayMode resolved_default_udm =
sync_proto.has_user_display_mode_default()
? sync_proto.user_display_mode_default()
: sync_pb::WebAppSpecifics_UserDisplayMode_STANDALONE;
#if BUILDFLAG(IS_CHROMEOS)
return sync_proto.has_user_display_mode_cros()
? sync_proto.user_display_mode_cros()
: resolved_default_udm;
#else
return resolved_default_udm;
#endif // BUILDFLAG(IS_CHROMEOS)
}
void SetPlatformSpecificUserDisplayMode(
sync_pb::WebAppSpecifics::UserDisplayMode user_display_mode,
sync_pb::WebAppSpecifics* sync_proto) {
#if BUILDFLAG(IS_CHROMEOS)
sync_proto->set_user_display_mode_cros(user_display_mode);
#else
sync_proto->set_user_display_mode_default(user_display_mode);
#endif // BUILDFLAG(IS_CHROMEOS)
}
bool HasCurrentPlatformUserDisplayMode(
const sync_pb::WebAppSpecifics& sync_proto) {
#if BUILDFLAG(IS_CHROMEOS)
return sync_proto.has_user_display_mode_cros();
#else
return sync_proto.has_user_display_mode_default();
#endif // BUILDFLAG(IS_CHROMEOS)
}
} // namespace web_app