1 // Copyright (c) 2012 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.
5 // Keep this file in sync with the .proto files in this directory.
7 #include "sync/protocol/proto_enum_conversions.h"
9 #include "base/basictypes.h"
10 #include "base/logging.h"
14 #define ASSERT_ENUM_BOUNDS(enum_parent, enum_type, enum_min, enum_max) \
15 COMPILE_ASSERT(enum_parent::enum_type##_MIN == enum_parent::enum_min, \
16 enum_type##_MIN_not_##enum_min); \
17 COMPILE_ASSERT(enum_parent::enum_type##_MAX == enum_parent::enum_max, \
18 enum_type##_MAX_not_##enum_max);
20 #define ENUM_CASE(enum_parent, enum_value) \
21 case enum_parent::enum_value: return #enum_value
23 const char* GetBrowserTypeString(
24 sync_pb::SessionWindow::BrowserType browser_type
) {
25 ASSERT_ENUM_BOUNDS(sync_pb::SessionWindow
, BrowserType
,
26 TYPE_TABBED
, TYPE_POPUP
);
27 switch (browser_type
) {
28 ENUM_CASE(sync_pb::SessionWindow
, TYPE_TABBED
);
29 ENUM_CASE(sync_pb::SessionWindow
, TYPE_POPUP
);
35 const char* GetPageTransitionString(
36 sync_pb::SyncEnums::PageTransition page_transition
) {
37 ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums
, PageTransition
,
38 LINK
, KEYWORD_GENERATED
);
39 switch (page_transition
) {
40 ENUM_CASE(sync_pb::SyncEnums
, LINK
);
41 ENUM_CASE(sync_pb::SyncEnums
, TYPED
);
42 ENUM_CASE(sync_pb::SyncEnums
, AUTO_BOOKMARK
);
43 ENUM_CASE(sync_pb::SyncEnums
, AUTO_SUBFRAME
);
44 ENUM_CASE(sync_pb::SyncEnums
, MANUAL_SUBFRAME
);
45 ENUM_CASE(sync_pb::SyncEnums
, GENERATED
);
46 ENUM_CASE(sync_pb::SyncEnums
, AUTO_TOPLEVEL
);
47 ENUM_CASE(sync_pb::SyncEnums
, FORM_SUBMIT
);
48 ENUM_CASE(sync_pb::SyncEnums
, RELOAD
);
49 ENUM_CASE(sync_pb::SyncEnums
, KEYWORD
);
50 ENUM_CASE(sync_pb::SyncEnums
, KEYWORD_GENERATED
);
56 const char* GetPageTransitionRedirectTypeString(
57 sync_pb::SyncEnums::PageTransitionRedirectType
58 page_transition_qualifier
) {
59 ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums
, PageTransitionRedirectType
,
60 CLIENT_REDIRECT
, SERVER_REDIRECT
);
61 switch (page_transition_qualifier
) {
62 ENUM_CASE(sync_pb::SyncEnums
, CLIENT_REDIRECT
);
63 ENUM_CASE(sync_pb::SyncEnums
, SERVER_REDIRECT
);
69 const char* GetUpdatesSourceString(
70 sync_pb::GetUpdatesCallerInfo::GetUpdatesSource updates_source
) {
71 ASSERT_ENUM_BOUNDS(sync_pb::GetUpdatesCallerInfo
, GetUpdatesSource
,
72 UNKNOWN
, DATATYPE_REFRESH
);
73 switch (updates_source
) {
74 ENUM_CASE(sync_pb::GetUpdatesCallerInfo
, UNKNOWN
);
75 ENUM_CASE(sync_pb::GetUpdatesCallerInfo
, FIRST_UPDATE
);
76 ENUM_CASE(sync_pb::GetUpdatesCallerInfo
, LOCAL
);
77 ENUM_CASE(sync_pb::GetUpdatesCallerInfo
, NOTIFICATION
);
78 ENUM_CASE(sync_pb::GetUpdatesCallerInfo
, PERIODIC
);
79 ENUM_CASE(sync_pb::GetUpdatesCallerInfo
, SYNC_CYCLE_CONTINUATION
);
80 ENUM_CASE(sync_pb::GetUpdatesCallerInfo
, NEWLY_SUPPORTED_DATATYPE
);
81 ENUM_CASE(sync_pb::GetUpdatesCallerInfo
, MIGRATION
);
82 ENUM_CASE(sync_pb::GetUpdatesCallerInfo
, NEW_CLIENT
);
83 ENUM_CASE(sync_pb::GetUpdatesCallerInfo
, RECONFIGURATION
);
84 ENUM_CASE(sync_pb::GetUpdatesCallerInfo
, DATATYPE_REFRESH
);
90 const char* GetResponseTypeString(
91 sync_pb::CommitResponse::ResponseType response_type
) {
92 ASSERT_ENUM_BOUNDS(sync_pb::CommitResponse
, ResponseType
, SUCCESS
,
94 switch (response_type
) {
95 ENUM_CASE(sync_pb::CommitResponse
, SUCCESS
);
96 ENUM_CASE(sync_pb::CommitResponse
, CONFLICT
);
97 ENUM_CASE(sync_pb::CommitResponse
, RETRY
);
98 ENUM_CASE(sync_pb::CommitResponse
, INVALID_MESSAGE
);
99 ENUM_CASE(sync_pb::CommitResponse
, OVER_QUOTA
);
100 ENUM_CASE(sync_pb::CommitResponse
, TRANSIENT_ERROR
);
106 const char* GetErrorTypeString(sync_pb::SyncEnums::ErrorType error_type
) {
107 ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums
, ErrorType
, SUCCESS
, UNKNOWN
);
108 switch (error_type
) {
109 ENUM_CASE(sync_pb::SyncEnums
, SUCCESS
);
110 ENUM_CASE(sync_pb::SyncEnums
, ACCESS_DENIED
);
111 ENUM_CASE(sync_pb::SyncEnums
, NOT_MY_BIRTHDAY
);
112 ENUM_CASE(sync_pb::SyncEnums
, THROTTLED
);
113 ENUM_CASE(sync_pb::SyncEnums
, AUTH_EXPIRED
);
114 ENUM_CASE(sync_pb::SyncEnums
, USER_NOT_ACTIVATED
);
115 ENUM_CASE(sync_pb::SyncEnums
, AUTH_INVALID
);
116 ENUM_CASE(sync_pb::SyncEnums
, CLEAR_PENDING
);
117 ENUM_CASE(sync_pb::SyncEnums
, TRANSIENT_ERROR
);
118 ENUM_CASE(sync_pb::SyncEnums
, MIGRATION_DONE
);
119 ENUM_CASE(sync_pb::SyncEnums
, UNKNOWN
);
125 const char* GetActionString(sync_pb::SyncEnums::Action action
) {
126 ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums
, Action
,
127 UPGRADE_CLIENT
, UNKNOWN_ACTION
);
129 ENUM_CASE(sync_pb::SyncEnums
, UPGRADE_CLIENT
);
130 ENUM_CASE(sync_pb::SyncEnums
, CLEAR_USER_DATA_AND_RESYNC
);
131 ENUM_CASE(sync_pb::SyncEnums
, ENABLE_SYNC_ON_ACCOUNT
);
132 ENUM_CASE(sync_pb::SyncEnums
, STOP_AND_RESTART_SYNC
);
133 ENUM_CASE(sync_pb::SyncEnums
, DISABLE_SYNC_ON_CLIENT
);
134 ENUM_CASE(sync_pb::SyncEnums
, UNKNOWN_ACTION
);
141 const char* GetDeviceTypeString(
142 sync_pb::SyncEnums::DeviceType device_type
) {
143 ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums
, DeviceType
, TYPE_WIN
, TYPE_TABLET
);
144 switch (device_type
) {
145 ENUM_CASE(sync_pb::SyncEnums
, TYPE_WIN
);
146 ENUM_CASE(sync_pb::SyncEnums
, TYPE_MAC
);
147 ENUM_CASE(sync_pb::SyncEnums
, TYPE_LINUX
);
148 ENUM_CASE(sync_pb::SyncEnums
, TYPE_CROS
);
149 ENUM_CASE(sync_pb::SyncEnums
, TYPE_OTHER
);
150 ENUM_CASE(sync_pb::SyncEnums
, TYPE_PHONE
);
151 ENUM_CASE(sync_pb::SyncEnums
, TYPE_TABLET
);
157 const char* GetFaviconTypeString(
158 sync_pb::SessionTab::FaviconType favicon_type
) {
159 ASSERT_ENUM_BOUNDS(sync_pb::SessionTab
, FaviconType
, TYPE_WEB_FAVICON
,
161 switch (favicon_type
) {
162 ENUM_CASE(sync_pb::SessionTab
, TYPE_WEB_FAVICON
);
168 const char* PassphraseTypeString(
169 sync_pb::NigoriSpecifics::PassphraseType type
) {
170 ASSERT_ENUM_BOUNDS(sync_pb::NigoriSpecifics
, PassphraseType
,
171 IMPLICIT_PASSPHRASE
, CUSTOM_PASSPHRASE
);
173 ENUM_CASE(sync_pb::NigoriSpecifics
, IMPLICIT_PASSPHRASE
);
174 ENUM_CASE(sync_pb::NigoriSpecifics
, KEYSTORE_PASSPHRASE
);
175 ENUM_CASE(sync_pb::NigoriSpecifics
, FROZEN_IMPLICIT_PASSPHRASE
);
176 ENUM_CASE(sync_pb::NigoriSpecifics
, CUSTOM_PASSPHRASE
);
182 #undef ASSERT_ENUM_BOUNDS
185 } // namespace syncer