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

Side by Side Diff: content/browser/frame_host/frame_tree_unittest.cc

Issue 30323002: [DRAFT] Create RenderFrameHostManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/frame_host/frame_tree.h" 5 #include "content/browser/frame_host/frame_tree.h"
6 6
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "content/browser/frame_host/render_frame_host_impl.h" 9 #include "content/browser/frame_host/render_frame_host_impl.h"
10 #include "content/browser/renderer_host/render_view_host_impl.h" 10 #include "content/browser/renderer_host/render_view_host_impl.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 result->append("]"); 44 result->append("]");
45 } 45 }
46 }; 46 };
47 47
48 // The root node never changes during navigation even though its 48 // The root node never changes during navigation even though its
49 // RenderFrameHost does. 49 // RenderFrameHost does.
50 // - Swapping main frame doesn't change root node. 50 // - Swapping main frame doesn't change root node.
51 // - Swapping back to NULL doesn't crash (easier tear-down for interstitials). 51 // - Swapping back to NULL doesn't crash (easier tear-down for interstitials).
52 // - Main frame does not own RenderFrameHost. 52 // - Main frame does not own RenderFrameHost.
53 TEST_F(FrameTreeTest, RootNode) { 53 TEST_F(FrameTreeTest, RootNode) {
54 FrameTree frame_tree; 54 FrameTree frame_tree(NULL, NULL, NULL);
55 55
56 // Initial state has empty node. 56 // Initial state has empty node.
57 FrameTreeNode* root = frame_tree.GetRootForTesting(); 57 FrameTreeNode* root = frame_tree.GetRootForTesting();
58 ASSERT_TRUE(root); 58 ASSERT_TRUE(root);
59 EXPECT_FALSE(frame_tree.GetMainFrame()); 59 EXPECT_FALSE(frame_tree.GetMainFrame());
60 60
61 // Swap in main frame. 61 // Swap in main frame.
62 RenderFrameHostImpl* dummy = reinterpret_cast<RenderFrameHostImpl*>(0x1); 62 RenderFrameHostImpl* dummy = reinterpret_cast<RenderFrameHostImpl*>(0x1);
63 frame_tree.SwapMainFrame(dummy); 63 frame_tree.SwapMainFrame(dummy);
64 EXPECT_EQ(root, frame_tree.GetRootForTesting()); 64 EXPECT_EQ(root, frame_tree.GetRootForTesting());
65 EXPECT_EQ(dummy, frame_tree.GetMainFrame()); 65 EXPECT_EQ(dummy, frame_tree.GetMainFrame());
66 66
67 // Move back to NULL. 67 // Move back to NULL.
68 frame_tree.SwapMainFrame(NULL); 68 frame_tree.SwapMainFrame(NULL);
69 EXPECT_EQ(root, frame_tree.GetRootForTesting()); 69 EXPECT_EQ(root, frame_tree.GetRootForTesting());
70 EXPECT_FALSE(frame_tree.GetMainFrame()); 70 EXPECT_FALSE(frame_tree.GetMainFrame());
71 71
72 // Move back to an invalid pointer, let the FrameTree go out of scope. Test 72 // Move back to an invalid pointer, let the FrameTree go out of scope. Test
73 // should not crash because the main frame isn't owned. 73 // should not crash because the main frame isn't owned.
74 frame_tree.SwapMainFrame(dummy); 74 frame_tree.SwapMainFrame(dummy);
75 } 75 }
76 76
77 // Test that swapping the main frame resets the renderer-assigned frame id. 77 // Test that swapping the main frame resets the renderer-assigned frame id.
78 // - On creation, frame id is unassigned. 78 // - On creation, frame id is unassigned.
79 // - After a swap, frame id is unassigned. 79 // - After a swap, frame id is unassigned.
80 TEST_F(FrameTreeTest, FirstNavigationAfterSwap) { 80 TEST_F(FrameTreeTest, FirstNavigationAfterSwap) {
81 FrameTree frame_tree; 81 FrameTree frame_tree(NULL, NULL, NULL);
82 82
83 EXPECT_TRUE(frame_tree.IsFirstNavigationAfterSwap()); 83 EXPECT_TRUE(frame_tree.IsFirstNavigationAfterSwap());
84 EXPECT_EQ(FrameTreeNode::kInvalidFrameId, 84 EXPECT_EQ(FrameTreeNode::kInvalidFrameId,
85 frame_tree.GetRootForTesting()->frame_id()); 85 frame_tree.GetRootForTesting()->frame_id());
86 frame_tree.OnFirstNavigationAfterSwap(1); 86 frame_tree.OnFirstNavigationAfterSwap(1);
87 EXPECT_FALSE(frame_tree.IsFirstNavigationAfterSwap()); 87 EXPECT_FALSE(frame_tree.IsFirstNavigationAfterSwap());
88 EXPECT_EQ(1, frame_tree.GetRootForTesting()->frame_id()); 88 EXPECT_EQ(1, frame_tree.GetRootForTesting()->frame_id());
89 89
90 frame_tree.SwapMainFrame(NULL); 90 frame_tree.SwapMainFrame(NULL);
91 EXPECT_TRUE(frame_tree.IsFirstNavigationAfterSwap()); 91 EXPECT_TRUE(frame_tree.IsFirstNavigationAfterSwap());
92 EXPECT_EQ(FrameTreeNode::kInvalidFrameId, 92 EXPECT_EQ(FrameTreeNode::kInvalidFrameId,
93 frame_tree.GetRootForTesting()->frame_id()); 93 frame_tree.GetRootForTesting()->frame_id());
94 } 94 }
95 95
96 // Exercise tree manipulation routines. 96 // Exercise tree manipulation routines.
97 // - Add a series of nodes and verify tree structure. 97 // - Add a series of nodes and verify tree structure.
98 // - Remove a series of nodes and verify tree structure. 98 // - Remove a series of nodes and verify tree structure.
99 TEST_F(FrameTreeTest, Shape) { 99 TEST_F(FrameTreeTest, Shape) {
100 FrameTree frame_tree; 100 FrameTree frame_tree(NULL, NULL, NULL);
101 std::string no_children_node("no children node"); 101 std::string no_children_node("no children node");
102 std::string deep_subtree("node with deep subtree"); 102 std::string deep_subtree("node with deep subtree");
103 103
104 // Ensure the top-level node of the FrameTree is initialized by simulating a 104 // Ensure the top-level node of the FrameTree is initialized by simulating a
105 // main frame swap here. 105 // main frame swap here.
106 RenderFrameHostImpl render_frame_host(static_cast<RenderViewHostImpl*>(rvh()), 106 RenderFrameHostImpl render_frame_host(static_cast<RenderViewHostImpl*>(rvh()),
107 &frame_tree, 107 &frame_tree,
108 process()->GetNextRoutingID(), false); 108 process()->GetNextRoutingID(), false);
109 frame_tree.SwapMainFrame(&render_frame_host); 109 frame_tree.SwapMainFrame(&render_frame_host);
110 frame_tree.OnFirstNavigationAfterSwap(5); 110 frame_tree.OnFirstNavigationAfterSwap(5);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 frame_tree.RemoveFrame(5, 15); 164 frame_tree.RemoveFrame(5, 15);
165 ASSERT_EQ("5: [14: [244: [], 245: []], " 165 ASSERT_EQ("5: [14: [244: [], 245: []], "
166 "16: [264: [], 266: [], " 166 "16: [264: [], 266: [], "
167 "267 'node with deep subtree': " 167 "267 'node with deep subtree': "
168 "[365: [455: [555: []]]], 268: []]]", 168 "[365: [455: [555: []]]], 268: []]]",
169 GetTreeState(&frame_tree)); 169 GetTreeState(&frame_tree));
170 } 170 }
171 171
172 } // namespace 172 } // namespace
173 } // namespace content 173 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/frame_tree_node.cc ('k') | content/browser/frame_host/interstitial_page_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698