Index: chrome/browser/sync/engine/syncapi_unittest.cc |
diff --git a/chrome/browser/sync/engine/syncapi_unittest.cc b/chrome/browser/sync/engine/syncapi_unittest.cc |
index dca4954917b4e6fa2d6e6ecd2cbc6816c4a9aadd..f0681b15119aa36c737f83b5a794eec1bc564bc7 100644 |
--- a/chrome/browser/sync/engine/syncapi_unittest.cc |
+++ b/chrome/browser/sync/engine/syncapi_unittest.cc |
@@ -871,23 +871,24 @@ TEST_F(SyncManagerTest, ProcessMessageGetRootNode) { |
js_backend->RemoveParentJsEventRouter(); |
} |
-void CheckGetNodeByIdReturnArgs(const SyncManager& sync_manager, |
- const JsArgList& return_args, |
- int64 id) { |
+void CheckGetNodesByIdReturnArgs(const SyncManager& sync_manager, |
+ const JsArgList& return_args, |
+ int64 id) { |
EXPECT_EQ(1u, return_args.Get().GetSize()); |
+ ListValue* nodes = NULL; |
+ ASSERT_TRUE(return_args.Get().GetList(0, &nodes)); |
+ ASSERT_TRUE(nodes); |
+ EXPECT_EQ(1u, nodes->GetSize()); |
DictionaryValue* node_info = NULL; |
- EXPECT_TRUE(return_args.Get().GetDictionary(0, &node_info)); |
- if (node_info) { |
- ReadTransaction trans(sync_manager.GetUserShare()); |
- ReadNode node(&trans); |
- node.InitByIdLookup(id); |
- CheckNodeValue(node, *node_info); |
- } else { |
- ADD_FAILURE(); |
- } |
+ EXPECT_TRUE(nodes->GetDictionary(0, &node_info)); |
+ ASSERT_TRUE(node_info); |
+ ReadTransaction trans(sync_manager.GetUserShare()); |
+ ReadNode node(&trans); |
+ node.InitByIdLookup(id); |
+ CheckNodeValue(node, *node_info); |
} |
-TEST_F(SyncManagerTest, ProcessMessageGetNodeById) { |
+TEST_F(SyncManagerTest, ProcessMessageGetNodesById) { |
int64 child_id = |
MakeNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, "testtag"); |
@@ -899,7 +900,7 @@ TEST_F(SyncManagerTest, ProcessMessageGetNodeById) { |
JsArgList return_args; |
EXPECT_CALL(event_router, |
- RouteJsMessageReply("getNodeById", _, &event_handler)) |
+ RouteJsMessageReply("getNodesById", _, &event_handler)) |
.Times(2).WillRepeatedly(SaveArg<1>(&return_args)); |
js_backend->SetParentJsEventRouter(&event_router); |
@@ -907,70 +908,180 @@ TEST_F(SyncManagerTest, ProcessMessageGetNodeById) { |
// Should trigger the reply. |
{ |
ListValue args; |
- args.Append(Value::CreateStringValue("1")); |
- js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); |
+ ListValue* ids = new ListValue(); |
+ args.Append(ids); |
+ ids->Append(Value::CreateStringValue("1")); |
+ js_backend->ProcessMessage("getNodesById", |
+ JsArgList(&args), &event_handler); |
} |
- CheckGetNodeByIdReturnArgs(sync_manager_, return_args, 1); |
+ CheckGetNodesByIdReturnArgs(sync_manager_, return_args, 1); |
// Should trigger another reply. |
{ |
ListValue args; |
- args.Append(Value::CreateStringValue(base::Int64ToString(child_id))); |
- js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); |
+ ListValue* ids = new ListValue(); |
+ args.Append(ids); |
+ ids->Append(Value::CreateStringValue(base::Int64ToString(child_id))); |
+ js_backend->ProcessMessage("getNodesById", |
+ JsArgList(&args), &event_handler); |
} |
- CheckGetNodeByIdReturnArgs(sync_manager_, return_args, child_id); |
+ CheckGetNodesByIdReturnArgs(sync_manager_, return_args, child_id); |
js_backend->RemoveParentJsEventRouter(); |
} |
-TEST_F(SyncManagerTest, ProcessMessageGetNodeByIdFailure) { |
+TEST_F(SyncManagerTest, ProcessMessageGetNodesByIdFailure) { |
browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); |
StrictMock<MockJsEventHandler> event_handler; |
StrictMock<MockJsEventRouter> event_router; |
- ListValue null_args; |
- null_args.Append(Value::CreateNullValue()); |
+ ListValue empty_list_args; |
+ empty_list_args.Append(new ListValue()); |
EXPECT_CALL(event_router, |
- RouteJsMessageReply("getNodeById", HasArgsAsList(null_args), |
+ RouteJsMessageReply("getNodesById", |
+ HasArgsAsList(empty_list_args), |
&event_handler)) |
- .Times(5); |
+ .Times(6); |
js_backend->SetParentJsEventRouter(&event_router); |
{ |
ListValue args; |
- js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); |
+ js_backend->ProcessMessage("getNodesById", |
+ JsArgList(&args), &event_handler); |
} |
{ |
ListValue args; |
- args.Append(Value::CreateStringValue("")); |
- js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); |
+ args.Append(new ListValue()); |
+ js_backend->ProcessMessage("getNodesById", |
+ JsArgList(&args), &event_handler); |
} |
{ |
ListValue args; |
- args.Append(Value::CreateStringValue("nonsense")); |
- js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); |
+ ListValue* ids = new ListValue(); |
+ args.Append(ids); |
+ ids->Append(Value::CreateStringValue("")); |
+ js_backend->ProcessMessage("getNodesById", |
+ JsArgList(&args), &event_handler); |
+ } |
+ |
+ { |
+ ListValue args; |
+ ListValue* ids = new ListValue(); |
+ args.Append(ids); |
+ ids->Append(Value::CreateStringValue("nonsense")); |
+ js_backend->ProcessMessage("getNodesById", |
+ JsArgList(&args), &event_handler); |
+ } |
+ |
+ { |
+ ListValue args; |
+ ListValue* ids = new ListValue(); |
+ args.Append(ids); |
+ ids->Append(Value::CreateStringValue("0")); |
+ js_backend->ProcessMessage("getNodesById", |
+ JsArgList(&args), &event_handler); |
+ } |
+ |
+ { |
+ ListValue args; |
+ ListValue* ids = new ListValue(); |
+ args.Append(ids); |
+ ids->Append(Value::CreateStringValue("9999")); |
+ js_backend->ProcessMessage("getNodesById", |
+ JsArgList(&args), &event_handler); |
+ } |
+ |
+ js_backend->RemoveParentJsEventRouter(); |
+} |
+ |
+TEST_F(SyncManagerTest, ProcessMessageGetChildNodeIds) { |
+ browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); |
+ |
+ StrictMock<MockJsEventHandler> event_handler; |
+ StrictMock<MockJsEventRouter> event_router; |
+ |
+ JsArgList return_args; |
+ |
+ EXPECT_CALL(event_router, |
+ RouteJsMessageReply("getChildNodeIds", _, &event_handler)) |
+ .Times(1).WillRepeatedly(SaveArg<1>(&return_args)); |
+ |
+ js_backend->SetParentJsEventRouter(&event_router); |
+ |
+ // Should trigger the reply. |
+ { |
+ ListValue args; |
+ args.Append(Value::CreateStringValue("1")); |
+ js_backend->ProcessMessage("getChildNodeIds", |
+ JsArgList(&args), &event_handler); |
+ } |
+ |
+ EXPECT_EQ(1u, return_args.Get().GetSize()); |
+ ListValue* nodes = NULL; |
+ ASSERT_TRUE(return_args.Get().GetList(0, &nodes)); |
+ ASSERT_TRUE(nodes); |
+ EXPECT_EQ(5u, nodes->GetSize()); |
+ |
+ js_backend->RemoveParentJsEventRouter(); |
+} |
+ |
+TEST_F(SyncManagerTest, ProcessMessageGetChildNodeIdsFailure) { |
+ browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); |
+ |
+ StrictMock<MockJsEventHandler> event_handler; |
+ StrictMock<MockJsEventRouter> event_router; |
+ |
+ ListValue empty_list_args; |
+ empty_list_args.Append(new ListValue()); |
+ |
+ EXPECT_CALL(event_router, |
+ RouteJsMessageReply("getChildNodeIds", |
+ HasArgsAsList(empty_list_args), |
+ &event_handler)) |
+ .Times(5); |
+ |
+ js_backend->SetParentJsEventRouter(&event_router); |
+ |
+ { |
+ ListValue args; |
+ js_backend->ProcessMessage("getChildNodeIds", |
+ JsArgList(&args), &event_handler); |
+ } |
+ |
+ { |
+ ListValue args; |
+ args.Append(Value::CreateStringValue("")); |
+ js_backend->ProcessMessage("getChildNodeIds", |
+ JsArgList(&args), &event_handler); |
} |
{ |
ListValue args; |
args.Append(Value::CreateStringValue("nonsense")); |
- js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); |
+ js_backend->ProcessMessage("getChildNodeIds", |
+ JsArgList(&args), &event_handler); |
} |
{ |
ListValue args; |
args.Append(Value::CreateStringValue("0")); |
- js_backend->ProcessMessage("getNodeById", JsArgList(&args), &event_handler); |
+ js_backend->ProcessMessage("getChildNodeIds", |
+ JsArgList(&args), &event_handler); |
} |
- // TODO(akalin): Figure out how to test InitByIdLookup() failure. |
+ { |
+ ListValue args; |
+ args.Append(Value::CreateStringValue("9999")); |
+ js_backend->ProcessMessage("getChildNodeIds", |
+ JsArgList(&args), &event_handler); |
+ } |
js_backend->RemoveParentJsEventRouter(); |
} |