diff options
author | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-27 00:05:38 +0000 |
---|---|---|
committer | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-27 00:05:38 +0000 |
commit | c24bb5ce949f28f55a5c01e973b27ca2411879b9 (patch) | |
tree | 69113fb736474ff6928958fe96035ebe176d60e9 /sync/protocol | |
parent | f408c258763b34f7af71e569180711b2b440a06b (diff) | |
download | chromium_src-c24bb5ce949f28f55a5c01e973b27ca2411879b9.zip chromium_src-c24bb5ce949f28f55a5c01e973b27ca2411879b9.tar.gz chromium_src-c24bb5ce949f28f55a5c01e973b27ca2411879b9.tar.bz2 |
[Sync] Fix tab sync page transition types.
Page transition qualifiers are independent of the transition type core,
but weren't being treated as such. We now set/get them independently.
In addition, we now support the non-redirect specific qualifiers.
BUG=150929
Review URL: https://codereview.chromium.org/10963002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@158938 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/protocol')
-rw-r--r-- | sync/protocol/proto_enum_conversions.cc | 10 | ||||
-rw-r--r-- | sync/protocol/proto_enum_conversions.h | 6 | ||||
-rw-r--r-- | sync/protocol/proto_enum_conversions_unittest.cc | 11 | ||||
-rw-r--r-- | sync/protocol/proto_value_conversions.cc | 7 | ||||
-rw-r--r-- | sync/protocol/session_specifics.proto | 16 | ||||
-rw-r--r-- | sync/protocol/sync_enums.proto | 12 |
6 files changed, 38 insertions, 24 deletions
diff --git a/sync/protocol/proto_enum_conversions.cc b/sync/protocol/proto_enum_conversions.cc index 2287b83..1d0ec19 100644 --- a/sync/protocol/proto_enum_conversions.cc +++ b/sync/protocol/proto_enum_conversions.cc @@ -35,7 +35,7 @@ const char* GetBrowserTypeString( const char* GetPageTransitionString( sync_pb::SyncEnums::PageTransition page_transition) { ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, PageTransition, - LINK, CHAIN_END); + LINK, KEYWORD_GENERATED); switch (page_transition) { ENUM_CASE(sync_pb::SyncEnums, LINK); ENUM_CASE(sync_pb::SyncEnums, TYPED); @@ -48,17 +48,15 @@ const char* GetPageTransitionString( ENUM_CASE(sync_pb::SyncEnums, RELOAD); ENUM_CASE(sync_pb::SyncEnums, KEYWORD); ENUM_CASE(sync_pb::SyncEnums, KEYWORD_GENERATED); - ENUM_CASE(sync_pb::SyncEnums, CHAIN_START); - ENUM_CASE(sync_pb::SyncEnums, CHAIN_END); } NOTREACHED(); return ""; } -const char* GetPageTransitionQualifierString( - sync_pb::SyncEnums::PageTransitionQualifier +const char* GetPageTransitionRedirectTypeString( + sync_pb::SyncEnums::PageTransitionRedirectType page_transition_qualifier) { - ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, PageTransitionQualifier, + ASSERT_ENUM_BOUNDS(sync_pb::SyncEnums, PageTransitionRedirectType, CLIENT_REDIRECT, SERVER_REDIRECT); switch (page_transition_qualifier) { ENUM_CASE(sync_pb::SyncEnums, CLIENT_REDIRECT); diff --git a/sync/protocol/proto_enum_conversions.h b/sync/protocol/proto_enum_conversions.h index cabe91b..c6af25f 100644 --- a/sync/protocol/proto_enum_conversions.h +++ b/sync/protocol/proto_enum_conversions.h @@ -24,9 +24,9 @@ const char* GetBrowserTypeString( const char* GetPageTransitionString( sync_pb::SyncEnums::PageTransition page_transition); -const char* GetPageTransitionQualifierString( - sync_pb::SyncEnums::PageTransitionQualifier - page_transition_qualifier); +const char* GetPageTransitionRedirectTypeString( + sync_pb::SyncEnums::PageTransitionRedirectType + redirect_type); const char* GetUpdatesSourceString( sync_pb::GetUpdatesCallerInfo::GetUpdatesSource updates_source); diff --git a/sync/protocol/proto_enum_conversions_unittest.cc b/sync/protocol/proto_enum_conversions_unittest.cc index de208b9..0b49197 100644 --- a/sync/protocol/proto_enum_conversions_unittest.cc +++ b/sync/protocol/proto_enum_conversions_unittest.cc @@ -33,22 +33,17 @@ TEST_F(ProtoEnumConversionsTest, GetBrowserTypeString) { } TEST_F(ProtoEnumConversionsTest, GetPageTransitionString) { - // We have a gap, so we need to do two ranges. TestEnumStringFunction( GetPageTransitionString, sync_pb::SyncEnums::PageTransition_MIN, - sync_pb::SyncEnums::KEYWORD_GENERATED); - TestEnumStringFunction( - GetPageTransitionString, - sync_pb::SyncEnums::CHAIN_START, sync_pb::SyncEnums::PageTransition_MAX); } TEST_F(ProtoEnumConversionsTest, GetPageTransitionQualifierString) { TestEnumStringFunction( - GetPageTransitionQualifierString, - sync_pb::SyncEnums::PageTransitionQualifier_MIN, - sync_pb::SyncEnums::PageTransitionQualifier_MAX); + GetPageTransitionRedirectTypeString, + sync_pb::SyncEnums::PageTransitionRedirectType_MIN, + sync_pb::SyncEnums::PageTransitionRedirectType_MAX); } TEST_F(ProtoEnumConversionsTest, GetUpdatesSourceString) { diff --git a/sync/protocol/proto_value_conversions.cc b/sync/protocol/proto_value_conversions.cc index 22de2bd..1e59d6a 100644 --- a/sync/protocol/proto_value_conversions.cc +++ b/sync/protocol/proto_value_conversions.cc @@ -162,9 +162,14 @@ DictionaryValue* TabNavigationToValue( SET_STR(title); SET_STR(state); SET_ENUM(page_transition, GetPageTransitionString); - SET_ENUM(navigation_qualifier, GetPageTransitionQualifierString); + SET_ENUM(redirect_type, GetPageTransitionRedirectTypeString); SET_INT32(unique_id); SET_INT64(timestamp); + SET_BOOL(navigation_forward_back); + SET_BOOL(navigation_from_address_bar), + SET_BOOL(navigation_home_page); + SET_BOOL(navigation_chain_start); + SET_BOOL(navigation_chain_end); return value; } diff --git a/sync/protocol/session_specifics.proto b/sync/protocol/session_specifics.proto index c00b8a0..2438ef6 100644 --- a/sync/protocol/session_specifics.proto +++ b/sync/protocol/session_specifics.proto @@ -21,7 +21,7 @@ message SessionSpecifics { optional string session_tag = 1; optional SessionHeader header = 2; optional SessionTab tab = 3; - + // The local tab id used by sync. Unique across all nodes for that client. optional int32 tab_node_id = 4 [default = -1]; } @@ -105,12 +105,24 @@ message TabNavigation { // state of the page. This includes form entries and scroll position for each // frame. optional string state = 5; + // The core transition type. optional SyncEnums.PageTransition page_transition = 6 [default = TYPED]; - optional SyncEnums.PageTransitionQualifier navigation_qualifier = 7; + // If this transition was triggered by a redirect, the redirect type. + optional SyncEnums.PageTransitionRedirectType redirect_type = 7; // The unique navigation id (within this client). optional int32 unique_id = 8; // Timestamp for when this navigation last occurred (in client time). // If the user goes back/foward in history the timestamp may refresh. optional int64 timestamp = 9; + // User used the Forward or Back button to navigate among browsing history. + optional bool navigation_forward_back = 10; + // User used the address bar to trigger this navigation. + optional bool navigation_from_address_bar = 11; + // User is navigating to the home page. + optional bool navigation_home_page = 12; + // The beginning of a navigation chain. + optional bool navigation_chain_start = 13; + // The last transition in a redirect chain. + optional bool navigation_chain_end = 14; } diff --git a/sync/protocol/sync_enums.proto b/sync/protocol/sync_enums.proto index f0381fc..0c43729 100644 --- a/sync/protocol/sync_enums.proto +++ b/sync/protocol/sync_enums.proto @@ -48,12 +48,16 @@ message SyncEnums { RELOAD = 8; KEYWORD = 9; KEYWORD_GENERATED = 10; - CHAIN_START = 12; - CHAIN_END = 13; + // The below two were mistakenly added but never properly used. They are + // actually transition qualifiers, and are set independently of other + // qualifiers and of the main transitions. See session_specifics.proto for + // the list of synced transition qualifiers. + // CHAIN_START = 12; Deprecated. + // CHAIN_END = 13; Deprecated. } - // These qualifiers further define the transition. - enum PageTransitionQualifier { + // Types of redirects that triggered a transition. + enum PageTransitionRedirectType { CLIENT_REDIRECT = 1; SERVER_REDIRECT = 2; } |