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.
4
5 // Keep this file in sync with the .proto files in this directory.
6
7 #include "sync/protocol/proto_enum_conversions.h"
8
9 #include "base/basictypes.h"
10 #include "base/logging.h"
11
12 namespace syncer {
13
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);
19
20 #define ENUM_CASE(enum_parent, enum_value) \
21 case enum_parent::enum_value: return #enum_value
22
GetAppListItemTypeString(sync_pb::AppListSpecifics::AppListItemType item_type)23 const char* GetAppListItemTypeString(
24 sync_pb::AppListSpecifics::AppListItemType item_type) {
25 ASSERT_ENUM_BOUNDS(sync_pb::AppListSpecifics, AppListItemType,
26 TYPE_APP, TYPE_URL);
27 switch (item_type) {
28 ENUM_CASE(sync_pb::AppListSpecifics, TYPE_APP);
29 ENUM_CASE(sync_pb::AppListSpecifics, TYPE_REMOVE_DEFAULT_APP);
30 ENUM_CASE(sync_pb::AppListSpecifics, TYPE_FOLDER);
31 ENUM_CASE(sync_pb::AppListSpecifics, TYPE_URL);
32 }
33 NOTREACHED();
34 return "";
35 }
36
GetBrowserTypeString(sync_pb::SessionWindow::BrowserType browser_type)37 const char* GetBrowserTypeString(
38 sync_pb::SessionWindow::BrowserType browser_type) {
39 ASSERT_ENUM_BOUNDS(sync_pb::SessionWindow, BrowserType,
40 TYPE_TABBED, TYPE_POPUP);
41 switch (browser_type) {
42 ENUM_CASE(sync_pb::SessionWindow, TYPE_TABBED);
43 ENUM_CASE(sync_pb::SessionWindow, TYPE_POPUP);
44 }
45 NOTREACHED();
46 return "";
47 }
48
GetPageTransitionString(sync_pb::SyncEnums::PageTransition page_transition)49 const char* GetPageTransitionString(
50 sync_pb::SyncEnums::PageTransition page_transition) {
51 ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, PageTransition,
52 LINK, KEYWORD_GENERATED);
53 switch (page_transition) {
54 ENUM_CASE(sync_pb::SyncEnums, LINK);
55 ENUM_CASE(sync_pb::SyncEnums, TYPED);
56 ENUM_CASE(sync_pb::SyncEnums, AUTO_BOOKMARK);
57 ENUM_CASE(sync_pb::SyncEnums, AUTO_SUBFRAME);
58 ENUM_CASE(sync_pb::SyncEnums, MANUAL_SUBFRAME);
59 ENUM_CASE(sync_pb::SyncEnums, GENERATED);
60 ENUM_CASE(sync_pb::SyncEnums, AUTO_TOPLEVEL);
61 ENUM_CASE(sync_pb::SyncEnums, FORM_SUBMIT);
62 ENUM_CASE(sync_pb::SyncEnums, RELOAD);
63 ENUM_CASE(sync_pb::SyncEnums, KEYWORD);
64 ENUM_CASE(sync_pb::SyncEnums, KEYWORD_GENERATED);
65 }
66 NOTREACHED();
67 return "";
68 }
69
GetPageTransitionRedirectTypeString(sync_pb::SyncEnums::PageTransitionRedirectType page_transition_qualifier)70 const char* GetPageTransitionRedirectTypeString(
71 sync_pb::SyncEnums::PageTransitionRedirectType
72 page_transition_qualifier) {
73 ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, PageTransitionRedirectType,
74 CLIENT_REDIRECT, SERVER_REDIRECT);
75 switch (page_transition_qualifier) {
76 ENUM_CASE(sync_pb::SyncEnums, CLIENT_REDIRECT);
77 ENUM_CASE(sync_pb::SyncEnums, SERVER_REDIRECT);
78 }
79 NOTREACHED();
80 return "";
81 }
82
GetUpdatesSourceString(sync_pb::GetUpdatesCallerInfo::GetUpdatesSource updates_source)83 const char* GetUpdatesSourceString(
84 sync_pb::GetUpdatesCallerInfo::GetUpdatesSource updates_source) {
85 ASSERT_ENUM_BOUNDS(sync_pb::GetUpdatesCallerInfo, GetUpdatesSource,
86 UNKNOWN, DATATYPE_REFRESH);
87 switch (updates_source) {
88 ENUM_CASE(sync_pb::GetUpdatesCallerInfo, UNKNOWN);
89 ENUM_CASE(sync_pb::GetUpdatesCallerInfo, FIRST_UPDATE);
90 ENUM_CASE(sync_pb::GetUpdatesCallerInfo, LOCAL);
91 ENUM_CASE(sync_pb::GetUpdatesCallerInfo, NOTIFICATION);
92 ENUM_CASE(sync_pb::GetUpdatesCallerInfo, PERIODIC);
93 ENUM_CASE(sync_pb::GetUpdatesCallerInfo, SYNC_CYCLE_CONTINUATION);
94 ENUM_CASE(sync_pb::GetUpdatesCallerInfo, NEWLY_SUPPORTED_DATATYPE);
95 ENUM_CASE(sync_pb::GetUpdatesCallerInfo, MIGRATION);
96 ENUM_CASE(sync_pb::GetUpdatesCallerInfo, NEW_CLIENT);
97 ENUM_CASE(sync_pb::GetUpdatesCallerInfo, RECONFIGURATION);
98 ENUM_CASE(sync_pb::GetUpdatesCallerInfo, DATATYPE_REFRESH);
99 }
100 NOTREACHED();
101 return "";
102 }
103
GetUpdatesOriginString(sync_pb::SyncEnums::GetUpdatesOrigin origin)104 const char* GetUpdatesOriginString(
105 sync_pb::SyncEnums::GetUpdatesOrigin origin) {
106 ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, GetUpdatesOrigin,
107 UNKNOWN_ORIGIN, GU_TRIGGER);
108 switch (origin) {
109 ENUM_CASE(sync_pb::SyncEnums, UNKNOWN_ORIGIN);
110 ENUM_CASE(sync_pb::SyncEnums, PERIODIC);
111 ENUM_CASE(sync_pb::SyncEnums, NEWLY_SUPPORTED_DATATYPE);
112 ENUM_CASE(sync_pb::SyncEnums, MIGRATION);
113 ENUM_CASE(sync_pb::SyncEnums, NEW_CLIENT);
114 ENUM_CASE(sync_pb::SyncEnums, RECONFIGURATION);
115 ENUM_CASE(sync_pb::SyncEnums, GU_TRIGGER);
116 }
117 NOTREACHED();
118 return "";
119 }
120
GetResponseTypeString(sync_pb::CommitResponse::ResponseType response_type)121 const char* GetResponseTypeString(
122 sync_pb::CommitResponse::ResponseType response_type) {
123 ASSERT_ENUM_BOUNDS(sync_pb::CommitResponse, ResponseType, SUCCESS,
124 TRANSIENT_ERROR);
125 switch (response_type) {
126 ENUM_CASE(sync_pb::CommitResponse, SUCCESS);
127 ENUM_CASE(sync_pb::CommitResponse, CONFLICT);
128 ENUM_CASE(sync_pb::CommitResponse, RETRY);
129 ENUM_CASE(sync_pb::CommitResponse, INVALID_MESSAGE);
130 ENUM_CASE(sync_pb::CommitResponse, OVER_QUOTA);
131 ENUM_CASE(sync_pb::CommitResponse, TRANSIENT_ERROR);
132 }
133 NOTREACHED();
134 return "";
135 }
136
GetErrorTypeString(sync_pb::SyncEnums::ErrorType error_type)137 const char* GetErrorTypeString(sync_pb::SyncEnums::ErrorType error_type) {
138 ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, ErrorType, SUCCESS, UNKNOWN);
139 switch (error_type) {
140 ENUM_CASE(sync_pb::SyncEnums, SUCCESS);
141 ENUM_CASE(sync_pb::SyncEnums, ACCESS_DENIED);
142 ENUM_CASE(sync_pb::SyncEnums, NOT_MY_BIRTHDAY);
143 ENUM_CASE(sync_pb::SyncEnums, THROTTLED);
144 ENUM_CASE(sync_pb::SyncEnums, AUTH_EXPIRED);
145 ENUM_CASE(sync_pb::SyncEnums, USER_NOT_ACTIVATED);
146 ENUM_CASE(sync_pb::SyncEnums, AUTH_INVALID);
147 ENUM_CASE(sync_pb::SyncEnums, CLEAR_PENDING);
148 ENUM_CASE(sync_pb::SyncEnums, TRANSIENT_ERROR);
149 ENUM_CASE(sync_pb::SyncEnums, MIGRATION_DONE);
150 ENUM_CASE(sync_pb::SyncEnums, DISABLED_BY_ADMIN);
151 ENUM_CASE(sync_pb::SyncEnums, UNKNOWN);
152 }
153 NOTREACHED();
154 return "";
155 }
156
GetActionString(sync_pb::SyncEnums::Action action)157 const char* GetActionString(sync_pb::SyncEnums::Action action) {
158 ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, Action,
159 UPGRADE_CLIENT, UNKNOWN_ACTION);
160 switch (action) {
161 ENUM_CASE(sync_pb::SyncEnums, UPGRADE_CLIENT);
162 ENUM_CASE(sync_pb::SyncEnums, CLEAR_USER_DATA_AND_RESYNC);
163 ENUM_CASE(sync_pb::SyncEnums, ENABLE_SYNC_ON_ACCOUNT);
164 ENUM_CASE(sync_pb::SyncEnums, STOP_AND_RESTART_SYNC);
165 ENUM_CASE(sync_pb::SyncEnums, DISABLE_SYNC_ON_CLIENT);
166 ENUM_CASE(sync_pb::SyncEnums, UNKNOWN_ACTION);
167 }
168 NOTREACHED();
169 return "";
170
171 }
172
GetDeviceTypeString(sync_pb::SyncEnums::DeviceType device_type)173 const char* GetDeviceTypeString(
174 sync_pb::SyncEnums::DeviceType device_type) {
175 ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, DeviceType, TYPE_WIN, TYPE_TABLET);
176 switch (device_type) {
177 ENUM_CASE(sync_pb::SyncEnums, TYPE_WIN);
178 ENUM_CASE(sync_pb::SyncEnums, TYPE_MAC);
179 ENUM_CASE(sync_pb::SyncEnums, TYPE_LINUX);
180 ENUM_CASE(sync_pb::SyncEnums, TYPE_CROS);
181 ENUM_CASE(sync_pb::SyncEnums, TYPE_OTHER);
182 ENUM_CASE(sync_pb::SyncEnums, TYPE_PHONE);
183 ENUM_CASE(sync_pb::SyncEnums, TYPE_TABLET);
184 }
185 NOTREACHED();
186 return "";
187 }
188
GetFaviconTypeString(sync_pb::SessionTab::FaviconType favicon_type)189 const char* GetFaviconTypeString(
190 sync_pb::SessionTab::FaviconType favicon_type) {
191 ASSERT_ENUM_BOUNDS(sync_pb::SessionTab, FaviconType, TYPE_WEB_FAVICON,
192 TYPE_WEB_FAVICON);
193 switch (favicon_type) {
194 ENUM_CASE(sync_pb::SessionTab, TYPE_WEB_FAVICON);
195 }
196 NOTREACHED();
197 return "";
198 }
199
PassphraseTypeString(sync_pb::NigoriSpecifics::PassphraseType type)200 const char* PassphraseTypeString(
201 sync_pb::NigoriSpecifics::PassphraseType type) {
202 ASSERT_ENUM_BOUNDS(sync_pb::NigoriSpecifics, PassphraseType,
203 IMPLICIT_PASSPHRASE, CUSTOM_PASSPHRASE);
204 switch (type) {
205 ENUM_CASE(sync_pb::NigoriSpecifics, IMPLICIT_PASSPHRASE);
206 ENUM_CASE(sync_pb::NigoriSpecifics, KEYSTORE_PASSPHRASE);
207 ENUM_CASE(sync_pb::NigoriSpecifics, FROZEN_IMPLICIT_PASSPHRASE);
208 ENUM_CASE(sync_pb::NigoriSpecifics, CUSTOM_PASSPHRASE);
209 }
210 NOTREACHED();
211 return "";
212 }
213
SingletonEventTypeString(sync_pb::DebugEventInfo::SingletonEventType type)214 const char* SingletonEventTypeString(
215 sync_pb::DebugEventInfo::SingletonEventType type) {
216 ASSERT_ENUM_BOUNDS(sync_pb::DebugEventInfo, SingletonEventType,
217 CONNECTION_STATUS_CHANGE, BOOTSTRAP_TOKEN_UPDATED);
218 switch (type) {
219 ENUM_CASE(sync_pb::DebugEventInfo, CONNECTION_STATUS_CHANGE);
220 ENUM_CASE(sync_pb::DebugEventInfo, UPDATED_TOKEN);
221 ENUM_CASE(sync_pb::DebugEventInfo, PASSPHRASE_REQUIRED);
222 ENUM_CASE(sync_pb::DebugEventInfo, PASSPHRASE_ACCEPTED);
223 ENUM_CASE(sync_pb::DebugEventInfo, INITIALIZATION_COMPLETE);
224 ENUM_CASE(sync_pb::DebugEventInfo, STOP_SYNCING_PERMANENTLY);
225 ENUM_CASE(sync_pb::DebugEventInfo, ENCRYPTION_COMPLETE);
226 ENUM_CASE(sync_pb::DebugEventInfo, ACTIONABLE_ERROR);
227 ENUM_CASE(sync_pb::DebugEventInfo, ENCRYPTED_TYPES_CHANGED);
228 ENUM_CASE(sync_pb::DebugEventInfo, PASSPHRASE_TYPE_CHANGED);
229 ENUM_CASE(sync_pb::DebugEventInfo, KEYSTORE_TOKEN_UPDATED);
230 ENUM_CASE(sync_pb::DebugEventInfo, CONFIGURE_COMPLETE);
231 ENUM_CASE(sync_pb::DebugEventInfo, BOOTSTRAP_TOKEN_UPDATED);
232 }
233 NOTREACHED();
234 return "";
235 }
236
GetBlockedStateString(sync_pb::TabNavigation::BlockedState state)237 const char* GetBlockedStateString(
238 sync_pb::TabNavigation::BlockedState state) {
239 ASSERT_ENUM_BOUNDS(sync_pb::TabNavigation, BlockedState,
240 STATE_ALLOWED, STATE_BLOCKED);
241 switch (state) {
242 ENUM_CASE(sync_pb::TabNavigation, STATE_ALLOWED);
243 ENUM_CASE(sync_pb::TabNavigation, STATE_BLOCKED);
244 }
245 NOTREACHED();
246 return "";
247 }
248
249 #undef ASSERT_ENUM_BOUNDS
250 #undef ENUM_CASE
251
252 } // namespace syncer
253