// Copyright (c) 2011 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 "chrome/browser/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_NORMAL, TYPE_POPUP); switch (browser_type) { ENUM_CASE(sync_pb::SessionWindow, TYPE_NORMAL); 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, CLEAR_PRIVATE_DATA); 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); } NOTREACHED(); return ""; } #undef ASSERT_ENUM_BOUNDS #undef ENUM_CASE } // namespace