Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(631)

Unified Diff: content/browser/frame_host/frame_tree_unittest.cc

Issue 1104603002: Pick frame to navigate in the browser process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add unit test Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/frame_host/frame_tree_unittest.cc
diff --git a/content/browser/frame_host/frame_tree_unittest.cc b/content/browser/frame_host/frame_tree_unittest.cc
index f24814143326186cf83cf798ab70875c318a4bfd..63deb486044e0ed6369e29a1973ab455f5974e95 100644
--- a/content/browser/frame_host/frame_tree_unittest.cc
+++ b/content/browser/frame_host/frame_tree_unittest.cc
@@ -201,6 +201,46 @@ TEST_F(FrameTreeTest, DISABLED_Shape) {
GetTreeState(frame_tree));
}
+// Ensure frames can be found by frame_tree_node_id, routing ID, or name.
+TEST_F(FrameTreeTest, FindFrames) {
+ // Add a few child frames to the main frame.
+ FrameTree* frame_tree = contents()->GetFrameTree();
+ FrameTreeNode* root = frame_tree->root();
+ main_test_rfh()->OnCreateChildFrame(22, "child0", SandboxFlags::NONE);
+ main_test_rfh()->OnCreateChildFrame(23, "child1", SandboxFlags::NONE);
+ main_test_rfh()->OnCreateChildFrame(24, std::string(), SandboxFlags::NONE);
+ FrameTreeNode* child0 = root->child_at(0);
+ FrameTreeNode* child1 = root->child_at(1);
+ FrameTreeNode* child2 = root->child_at(2);
+
+ // Add one grandchild frame.
+ child1->current_frame_host()->OnCreateChildFrame(33, "grandchild",
+ SandboxFlags::NONE);
+ FrameTreeNode* grandchild = child1->child_at(0);
+
+ // Ensure they can be found by FTN id.
+ EXPECT_EQ(root, frame_tree->FindByID(root->frame_tree_node_id()));
+ EXPECT_EQ(child0, frame_tree->FindByID(child0->frame_tree_node_id()));
+ EXPECT_EQ(child1, frame_tree->FindByID(child1->frame_tree_node_id()));
+ EXPECT_EQ(child2, frame_tree->FindByID(child2->frame_tree_node_id()));
+ EXPECT_EQ(grandchild, frame_tree->FindByID(grandchild->frame_tree_node_id()));
+
+ // Ensure they can be found by routing id.
+ int process_id = main_test_rfh()->GetProcess()->GetID();
+ EXPECT_EQ(root, frame_tree->FindByRoutingID(process_id,
+ main_test_rfh()->GetRoutingID()));
+ EXPECT_EQ(child0, frame_tree->FindByRoutingID(process_id, 22));
+ EXPECT_EQ(child1, frame_tree->FindByRoutingID(process_id, 23));
+ EXPECT_EQ(child2, frame_tree->FindByRoutingID(process_id, 24));
+ EXPECT_EQ(grandchild, frame_tree->FindByRoutingID(process_id, 33));
+
+ // Ensure they can be found by name, if they have one.
+ EXPECT_EQ(root, frame_tree->FindByName(std::string()));
+ EXPECT_EQ(child0, frame_tree->FindByName("child0"));
+ EXPECT_EQ(child1, frame_tree->FindByName("child1"));
+ EXPECT_EQ(grandchild, frame_tree->FindByName("grandchild"));
alexmos 2015/04/23 23:32:54 Would it be worth also checking that lookups for n
Charlie Reis 2015/04/24 18:30:54 Good point. Done.
+}
+
// Do some simple manipulations of the frame tree, making sure that
// WebContentsObservers see a consistent view of the tree as we go.
TEST_F(FrameTreeTest, ObserverWalksTreeDuringFrameCreation) {

Powered by Google App Engine
This is Rietveld 408576698