blob: 5e932ab340ddc26e2bec8d6a47cc4e92fdce0e44 [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 <string>
#include <type_traits>
#include "chrome/browser/web_applications/user_display_mode.h"
#include "components/services/app_service/public/cpp/app_types.h"
#include "components/sync/protocol/web_app_specifics.pb.h"
namespace web_app {
bool operator==(UserDisplayMode lhs, UserDisplayMode rhs) {
return static_cast<std::underlying_type<UserDisplayMode>::type>(lhs) ==
static_cast<std::underlying_type<UserDisplayMode>::type>(rhs);
}
bool operator!=(UserDisplayMode lhs, UserDisplayMode rhs) {
return !(lhs == rhs);
}
std::ostream& operator<<(std::ostream& os, UserDisplayMode user_display_mode) {
return os << ConvertUserDisplayModeToString(user_display_mode);
}
std::string ConvertUserDisplayModeToString(UserDisplayMode user_display_mode) {
switch (user_display_mode) {
case UserDisplayMode::kBrowser:
return "browser";
case UserDisplayMode::kStandalone:
return "standalone";
case UserDisplayMode::kTabbed:
return "tabbed";
}
}
::sync_pb::WebAppSpecifics::UserDisplayMode
ConvertUserDisplayModeToWebAppSpecificsUserDisplayMode(
UserDisplayMode user_display_mode) {
switch (user_display_mode) {
case UserDisplayMode::kBrowser:
return ::sync_pb::WebAppSpecifics::BROWSER;
case UserDisplayMode::kTabbed:
return ::sync_pb::WebAppSpecifics::TABBED;
case UserDisplayMode::kStandalone:
return ::sync_pb::WebAppSpecifics::STANDALONE;
}
}
UserDisplayMode CreateUserDisplayModeFromWebAppSpecificsUserDisplayMode(
::sync_pb::WebAppSpecifics::UserDisplayMode display_mode) {
switch (display_mode) {
case ::sync_pb::WebAppSpecifics::BROWSER:
return UserDisplayMode::kBrowser;
case ::sync_pb::WebAppSpecifics::TABBED:
return UserDisplayMode::kTabbed;
case ::sync_pb::WebAppSpecifics::STANDALONE:
return UserDisplayMode::kStandalone;
case ::sync_pb::WebAppSpecifics::UNSPECIFIED:
// The same as `ToMojomDisplayMode`.
return UserDisplayMode::kStandalone;
}
}
} // namespace web_app