Home | History | Annotate | Download | only in protocol
      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 
     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 
     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 
     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 
     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 
     83 const char* GetUpdatesSourceString(
     84     sync_pb::GetUpdatesCallerInfo::GetUpdatesSource updates_source) {
     85   ASSERT_ENUM_BOUNDS(sync_pb::GetUpdatesCallerInfo, GetUpdatesSource,
     86                      UNKNOWN, PROGRAMMATIC);
     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     ENUM_CASE(sync_pb::GetUpdatesCallerInfo, RETRY);
    100     ENUM_CASE(sync_pb::GetUpdatesCallerInfo, PROGRAMMATIC);
    101   }
    102   NOTREACHED();
    103   return "";
    104 }
    105 
    106 const char* GetUpdatesOriginString(
    107     sync_pb::SyncEnums::GetUpdatesOrigin origin) {
    108   ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, GetUpdatesOrigin,
    109                      UNKNOWN_ORIGIN, PROGRAMMATIC);
    110   switch (origin) {
    111     ENUM_CASE(sync_pb::SyncEnums, UNKNOWN_ORIGIN);
    112     ENUM_CASE(sync_pb::SyncEnums, PERIODIC);
    113     ENUM_CASE(sync_pb::SyncEnums, NEWLY_SUPPORTED_DATATYPE);
    114     ENUM_CASE(sync_pb::SyncEnums, MIGRATION);
    115     ENUM_CASE(sync_pb::SyncEnums, NEW_CLIENT);
    116     ENUM_CASE(sync_pb::SyncEnums, RECONFIGURATION);
    117     ENUM_CASE(sync_pb::SyncEnums, GU_TRIGGER);
    118     ENUM_CASE(sync_pb::SyncEnums, RETRY);
    119     ENUM_CASE(sync_pb::SyncEnums, PROGRAMMATIC);
    120   }
    121   NOTREACHED();
    122   return "";
    123 }
    124 
    125 const char* GetResponseTypeString(
    126     sync_pb::CommitResponse::ResponseType response_type) {
    127   ASSERT_ENUM_BOUNDS(sync_pb::CommitResponse, ResponseType, SUCCESS,
    128                      TRANSIENT_ERROR);
    129   switch (response_type) {
    130     ENUM_CASE(sync_pb::CommitResponse, SUCCESS);
    131     ENUM_CASE(sync_pb::CommitResponse, CONFLICT);
    132     ENUM_CASE(sync_pb::CommitResponse, RETRY);
    133     ENUM_CASE(sync_pb::CommitResponse, INVALID_MESSAGE);
    134     ENUM_CASE(sync_pb::CommitResponse, OVER_QUOTA);
    135     ENUM_CASE(sync_pb::CommitResponse, TRANSIENT_ERROR);
    136   }
    137   NOTREACHED();
    138   return "";
    139 }
    140 
    141 const char* GetErrorTypeString(sync_pb::SyncEnums::ErrorType error_type) {
    142   ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, ErrorType, SUCCESS, UNKNOWN);
    143   switch (error_type) {
    144     ENUM_CASE(sync_pb::SyncEnums, SUCCESS);
    145     ENUM_CASE(sync_pb::SyncEnums, ACCESS_DENIED);
    146     ENUM_CASE(sync_pb::SyncEnums, NOT_MY_BIRTHDAY);
    147     ENUM_CASE(sync_pb::SyncEnums, THROTTLED);
    148     ENUM_CASE(sync_pb::SyncEnums, AUTH_EXPIRED);
    149     ENUM_CASE(sync_pb::SyncEnums, USER_NOT_ACTIVATED);
    150     ENUM_CASE(sync_pb::SyncEnums, AUTH_INVALID);
    151     ENUM_CASE(sync_pb::SyncEnums, CLEAR_PENDING);
    152     ENUM_CASE(sync_pb::SyncEnums, TRANSIENT_ERROR);
    153     ENUM_CASE(sync_pb::SyncEnums, MIGRATION_DONE);
    154     ENUM_CASE(sync_pb::SyncEnums, DISABLED_BY_ADMIN);
    155     ENUM_CASE(sync_pb::SyncEnums, USER_ROLLBACK);
    156     ENUM_CASE(sync_pb::SyncEnums, UNKNOWN);
    157   }
    158   NOTREACHED();
    159   return "";
    160 }
    161 
    162 const char* GetActionString(sync_pb::SyncEnums::Action action) {
    163   ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, Action,
    164                      UPGRADE_CLIENT, UNKNOWN_ACTION);
    165   switch (action) {
    166     ENUM_CASE(sync_pb::SyncEnums, UPGRADE_CLIENT);
    167     ENUM_CASE(sync_pb::SyncEnums, CLEAR_USER_DATA_AND_RESYNC);
    168     ENUM_CASE(sync_pb::SyncEnums, ENABLE_SYNC_ON_ACCOUNT);
    169     ENUM_CASE(sync_pb::SyncEnums, STOP_AND_RESTART_SYNC);
    170     ENUM_CASE(sync_pb::SyncEnums, DISABLE_SYNC_ON_CLIENT);
    171     ENUM_CASE(sync_pb::SyncEnums, UNKNOWN_ACTION);
    172   }
    173   NOTREACHED();
    174   return "";
    175 
    176 }
    177 
    178 const char* GetLaunchTypeString(sync_pb::AppSpecifics::LaunchType launch_type) {
    179   ASSERT_ENUM_BOUNDS(sync_pb::AppSpecifics, LaunchType, PINNED, WINDOW);
    180   switch (launch_type) {
    181     ENUM_CASE(sync_pb::AppSpecifics, PINNED);
    182     ENUM_CASE(sync_pb::AppSpecifics, REGULAR);
    183     ENUM_CASE(sync_pb::AppSpecifics, FULLSCREEN);
    184     ENUM_CASE(sync_pb::AppSpecifics, WINDOW);
    185   }
    186   NOTREACHED();
    187   return "";
    188 }
    189 
    190 const char* GetDeviceTypeString(
    191     sync_pb::SyncEnums::DeviceType device_type) {
    192   ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, DeviceType, TYPE_WIN, TYPE_TABLET);
    193   switch (device_type) {
    194     ENUM_CASE(sync_pb::SyncEnums, TYPE_WIN);
    195     ENUM_CASE(sync_pb::SyncEnums, TYPE_MAC);
    196     ENUM_CASE(sync_pb::SyncEnums, TYPE_LINUX);
    197     ENUM_CASE(sync_pb::SyncEnums, TYPE_CROS);
    198     ENUM_CASE(sync_pb::SyncEnums, TYPE_OTHER);
    199     ENUM_CASE(sync_pb::SyncEnums, TYPE_PHONE);
    200     ENUM_CASE(sync_pb::SyncEnums, TYPE_TABLET);
    201   }
    202   NOTREACHED();
    203   return "";
    204 }
    205 
    206 const char* GetFaviconTypeString(
    207     sync_pb::SessionTab::FaviconType favicon_type) {
    208   ASSERT_ENUM_BOUNDS(sync_pb::SessionTab, FaviconType, TYPE_WEB_FAVICON,
    209                      TYPE_WEB_FAVICON);
    210   switch (favicon_type) {
    211     ENUM_CASE(sync_pb::SessionTab, TYPE_WEB_FAVICON);
    212   }
    213   NOTREACHED();
    214   return "";
    215 }
    216 
    217 const char* PassphraseTypeString(
    218     sync_pb::NigoriSpecifics::PassphraseType type) {
    219   ASSERT_ENUM_BOUNDS(sync_pb::NigoriSpecifics, PassphraseType,
    220                      IMPLICIT_PASSPHRASE, CUSTOM_PASSPHRASE);
    221   switch (type) {
    222     ENUM_CASE(sync_pb::NigoriSpecifics, IMPLICIT_PASSPHRASE);
    223     ENUM_CASE(sync_pb::NigoriSpecifics, KEYSTORE_PASSPHRASE);
    224     ENUM_CASE(sync_pb::NigoriSpecifics, FROZEN_IMPLICIT_PASSPHRASE);
    225     ENUM_CASE(sync_pb::NigoriSpecifics, CUSTOM_PASSPHRASE);
    226   }
    227   NOTREACHED();
    228   return "";
    229 }
    230 
    231 const char* SingletonDebugEventTypeString(
    232     sync_pb::SyncEnums::SingletonDebugEventType type) {
    233   ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, SingletonDebugEventType,
    234                      CONNECTION_STATUS_CHANGE, BOOTSTRAP_TOKEN_UPDATED);
    235   switch (type) {
    236     ENUM_CASE(sync_pb::SyncEnums, CONNECTION_STATUS_CHANGE);
    237     ENUM_CASE(sync_pb::SyncEnums, UPDATED_TOKEN);
    238     ENUM_CASE(sync_pb::SyncEnums, PASSPHRASE_REQUIRED);
    239     ENUM_CASE(sync_pb::SyncEnums, PASSPHRASE_ACCEPTED);
    240     ENUM_CASE(sync_pb::SyncEnums, INITIALIZATION_COMPLETE);
    241     ENUM_CASE(sync_pb::SyncEnums, STOP_SYNCING_PERMANENTLY);
    242     ENUM_CASE(sync_pb::SyncEnums, ENCRYPTION_COMPLETE);
    243     ENUM_CASE(sync_pb::SyncEnums, ACTIONABLE_ERROR);
    244     ENUM_CASE(sync_pb::SyncEnums, ENCRYPTED_TYPES_CHANGED);
    245     ENUM_CASE(sync_pb::SyncEnums, PASSPHRASE_TYPE_CHANGED);
    246     ENUM_CASE(sync_pb::SyncEnums, KEYSTORE_TOKEN_UPDATED);
    247     ENUM_CASE(sync_pb::SyncEnums, CONFIGURE_COMPLETE);
    248     ENUM_CASE(sync_pb::SyncEnums, BOOTSTRAP_TOKEN_UPDATED);
    249   }
    250   NOTREACHED();
    251   return "";
    252 }
    253 
    254 const char* GetBlockedStateString(
    255     sync_pb::TabNavigation::BlockedState state) {
    256   ASSERT_ENUM_BOUNDS(sync_pb::TabNavigation, BlockedState,
    257                      STATE_ALLOWED, STATE_BLOCKED);
    258   switch (state) {
    259     ENUM_CASE(sync_pb::TabNavigation, STATE_ALLOWED);
    260     ENUM_CASE(sync_pb::TabNavigation, STATE_BLOCKED);
    261   }
    262   NOTREACHED();
    263   return "";
    264 }
    265 
    266 #undef ASSERT_ENUM_BOUNDS
    267 #undef ENUM_CASE
    268 
    269 }  // namespace syncer
    270