summaryrefslogtreecommitdiffstats
path: root/sync/protocol
diff options
context:
space:
mode:
authorzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-27 00:05:38 +0000
committerzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-27 00:05:38 +0000
commitc24bb5ce949f28f55a5c01e973b27ca2411879b9 (patch)
tree69113fb736474ff6928958fe96035ebe176d60e9 /sync/protocol
parentf408c258763b34f7af71e569180711b2b440a06b (diff)
downloadchromium_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.cc10
-rw-r--r--sync/protocol/proto_enum_conversions.h6
-rw-r--r--sync/protocol/proto_enum_conversions_unittest.cc11
-rw-r--r--sync/protocol/proto_value_conversions.cc7
-rw-r--r--sync/protocol/session_specifics.proto16
-rw-r--r--sync/protocol/sync_enums.proto12
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;
}