blob: 24bb9a1e4fad465efa5f7ed3b1ba5294bd1af25d [file] [log] [blame]
// Copyright (c) 2012 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.
// Keep this file in sync with the .proto files in this directory.
#include "sync/protocol/proto_enum_conversions.h"
#include "base/basictypes.h"
#include "base/logging.h"
namespace browser_sync {
#define ASSERT_ENUM_BOUNDS(enum_parent, enum_type, enum_min, enum_max) \
COMPILE_ASSERT(enum_parent::enum_type##_MIN == enum_parent::enum_min, \
enum_type##_MIN_not_##enum_min); \
COMPILE_ASSERT(enum_parent::enum_type##_MAX == enum_parent::enum_max, \
enum_type##_MAX_not_##enum_max);
#define ENUM_CASE(enum_parent, enum_value) \
case enum_parent::enum_value: return #enum_value
const char* GetBrowserTypeString(
sync_pb::SessionWindow::BrowserType browser_type) {
ASSERT_ENUM_BOUNDS(sync_pb::SessionWindow, BrowserType,
TYPE_TABBED, TYPE_POPUP);
switch (browser_type) {
ENUM_CASE(sync_pb::SessionWindow, TYPE_TABBED);
ENUM_CASE(sync_pb::SessionWindow, TYPE_POPUP);
}
NOTREACHED();
return "";
}
const char* GetPageTransitionString(
sync_pb::TabNavigation::PageTransition page_transition) {
ASSERT_ENUM_BOUNDS(sync_pb::TabNavigation, PageTransition,
LINK, CHAIN_END);
switch (page_transition) {
ENUM_CASE(sync_pb::TabNavigation, LINK);
ENUM_CASE(sync_pb::TabNavigation, TYPED);
ENUM_CASE(sync_pb::TabNavigation, AUTO_BOOKMARK);
ENUM_CASE(sync_pb::TabNavigation, AUTO_SUBFRAME);
ENUM_CASE(sync_pb::TabNavigation, MANUAL_SUBFRAME);
ENUM_CASE(sync_pb::TabNavigation, GENERATED);
ENUM_CASE(sync_pb::TabNavigation, START_PAGE);
ENUM_CASE(sync_pb::TabNavigation, FORM_SUBMIT);
ENUM_CASE(sync_pb::TabNavigation, RELOAD);
ENUM_CASE(sync_pb::TabNavigation, KEYWORD);
ENUM_CASE(sync_pb::TabNavigation, KEYWORD_GENERATED);
ENUM_CASE(sync_pb::TabNavigation, CHAIN_START);
ENUM_CASE(sync_pb::TabNavigation, CHAIN_END);
}
NOTREACHED();
return "";
}
const char* GetPageTransitionQualifierString(
sync_pb::TabNavigation::PageTransitionQualifier
page_transition_qualifier) {
ASSERT_ENUM_BOUNDS(sync_pb::TabNavigation, PageTransitionQualifier,
CLIENT_REDIRECT, SERVER_REDIRECT);
switch (page_transition_qualifier) {
ENUM_CASE(sync_pb::TabNavigation, CLIENT_REDIRECT);
ENUM_CASE(sync_pb::TabNavigation, SERVER_REDIRECT);
}
NOTREACHED();
return "";
}
const char* GetUpdatesSourceString(
sync_pb::GetUpdatesCallerInfo::GetUpdatesSource updates_source) {
ASSERT_ENUM_BOUNDS(sync_pb::GetUpdatesCallerInfo, GetUpdatesSource,
UNKNOWN, DATATYPE_REFRESH);
switch (updates_source) {
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, UNKNOWN);
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, FIRST_UPDATE);
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, LOCAL);
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, NOTIFICATION);
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, PERIODIC);
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, SYNC_CYCLE_CONTINUATION);
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, CLEAR_PRIVATE_DATA);
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, NEWLY_SUPPORTED_DATATYPE);
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, MIGRATION);
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, NEW_CLIENT);
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, RECONFIGURATION);
ENUM_CASE(sync_pb::GetUpdatesCallerInfo, DATATYPE_REFRESH);
}
NOTREACHED();
return "";
}
const char* GetResponseTypeString(
sync_pb::CommitResponse::ResponseType response_type) {
ASSERT_ENUM_BOUNDS(sync_pb::CommitResponse, ResponseType, SUCCESS,
TRANSIENT_ERROR);
switch (response_type) {
ENUM_CASE(sync_pb::CommitResponse, SUCCESS);
ENUM_CASE(sync_pb::CommitResponse, CONFLICT);
ENUM_CASE(sync_pb::CommitResponse, RETRY);
ENUM_CASE(sync_pb::CommitResponse, INVALID_MESSAGE);
ENUM_CASE(sync_pb::CommitResponse, OVER_QUOTA);
ENUM_CASE(sync_pb::CommitResponse, TRANSIENT_ERROR);
}
NOTREACHED();
return "";
}
const char* GetErrorTypeString(sync_pb::SyncEnums::ErrorType error_type) {
ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, ErrorType, SUCCESS, UNKNOWN);
switch (error_type) {
ENUM_CASE(sync_pb::SyncEnums, SUCCESS);
ENUM_CASE(sync_pb::SyncEnums, ACCESS_DENIED);
ENUM_CASE(sync_pb::SyncEnums, NOT_MY_BIRTHDAY);
ENUM_CASE(sync_pb::SyncEnums, THROTTLED);
ENUM_CASE(sync_pb::SyncEnums, AUTH_EXPIRED);
ENUM_CASE(sync_pb::SyncEnums, USER_NOT_ACTIVATED);
ENUM_CASE(sync_pb::SyncEnums, AUTH_INVALID);
ENUM_CASE(sync_pb::SyncEnums, CLEAR_PENDING);
ENUM_CASE(sync_pb::SyncEnums, TRANSIENT_ERROR);
ENUM_CASE(sync_pb::SyncEnums, MIGRATION_DONE);
ENUM_CASE(sync_pb::SyncEnums, UNKNOWN);
}
NOTREACHED();
return "";
}
const char* GetActionString(sync_pb::SyncEnums::Action action) {
ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, Action,
UPGRADE_CLIENT, UNKNOWN_ACTION);
switch (action) {
ENUM_CASE(sync_pb::SyncEnums, UPGRADE_CLIENT);
ENUM_CASE(sync_pb::SyncEnums, CLEAR_USER_DATA_AND_RESYNC);
ENUM_CASE(sync_pb::SyncEnums, ENABLE_SYNC_ON_ACCOUNT);
ENUM_CASE(sync_pb::SyncEnums, STOP_AND_RESTART_SYNC);
ENUM_CASE(sync_pb::SyncEnums, DISABLE_SYNC_ON_CLIENT);
ENUM_CASE(sync_pb::SyncEnums, UNKNOWN_ACTION);
}
NOTREACHED();
return "";
}
const char* GetDeviceTypeString(
sync_pb::SessionHeader::DeviceType device_type) {
ASSERT_ENUM_BOUNDS(sync_pb::SessionHeader, DeviceType, TYPE_WIN, TYPE_TABLET);
switch (device_type) {
ENUM_CASE(sync_pb::SessionHeader, TYPE_WIN);
ENUM_CASE(sync_pb::SessionHeader, TYPE_MAC);
ENUM_CASE(sync_pb::SessionHeader, TYPE_LINUX);
ENUM_CASE(sync_pb::SessionHeader, TYPE_CROS);
ENUM_CASE(sync_pb::SessionHeader, TYPE_OTHER);
ENUM_CASE(sync_pb::SessionHeader, TYPE_PHONE);
ENUM_CASE(sync_pb::SessionHeader, TYPE_TABLET);
}
NOTREACHED();
return "";
}
const char* GetFaviconTypeString(
sync_pb::SessionTab::FaviconType favicon_type) {
ASSERT_ENUM_BOUNDS(sync_pb::SessionTab, FaviconType, TYPE_WEB_FAVICON,
TYPE_WEB_FAVICON);
switch (favicon_type) {
ENUM_CASE(sync_pb::SessionTab, TYPE_WEB_FAVICON);
}
NOTREACHED();
return "";
}
#undef ASSERT_ENUM_BOUNDS
#undef ENUM_CASE
} // namespace