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

Side by Side Diff: chrome/browser/extensions/api/web_navigation/frame_navigation_state_unittest.cc

Issue 2541063002: Revert of Remove about:srcdoc url conversion. (Closed)
Patch Set: Created 4 years 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/macros.h" 5 #include "base/macros.h"
6 #include "base/values.h" 6 #include "base/values.h"
7 #include "chrome/browser/extensions/api/web_navigation/frame_navigation_state.h" 7 #include "chrome/browser/extensions/api/web_navigation/frame_navigation_state.h"
8 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 8 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
9 #include "chrome/test/base/testing_profile.h" 9 #include "chrome/test/base/testing_profile.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 21 matching lines...) Expand all
32 32
33 // Test that a frame is correctly tracked, and removed once the tab contents 33 // Test that a frame is correctly tracked, and removed once the tab contents
34 // goes away. 34 // goes away.
35 TEST_F(FrameNavigationStateTest, TrackFrame) { 35 TEST_F(FrameNavigationStateTest, TrackFrame) {
36 const GURL url1("http://www.google.com/"); 36 const GURL url1("http://www.google.com/");
37 const GURL url2("http://mail.google.com/"); 37 const GURL url2("http://mail.google.com/");
38 38
39 // Create a main frame. 39 // Create a main frame.
40 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh())); 40 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh()));
41 EXPECT_FALSE(navigation_state_.IsValidFrame(main_rfh())); 41 EXPECT_FALSE(navigation_state_.IsValidFrame(main_rfh()));
42 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url1, false, false); 42 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url1, false, false,
43 false);
43 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh())); 44 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh()));
44 EXPECT_TRUE(navigation_state_.IsValidFrame(main_rfh())); 45 EXPECT_TRUE(navigation_state_.IsValidFrame(main_rfh()));
45 46
46 // Add a sub frame. 47 // Add a sub frame.
47 content::RenderFrameHost* sub_frame = 48 content::RenderFrameHost* sub_frame =
48 content::RenderFrameHostTester::For(main_rfh())->AppendChild("child"); 49 content::RenderFrameHostTester::For(main_rfh())->AppendChild("child");
49 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame)); 50 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame));
50 EXPECT_FALSE(navigation_state_.IsValidFrame(sub_frame)); 51 EXPECT_FALSE(navigation_state_.IsValidFrame(sub_frame));
51 navigation_state_.StartTrackingDocumentLoad(sub_frame, url2, false, false); 52 navigation_state_.StartTrackingDocumentLoad(sub_frame, url2, false, false,
53 false);
52 EXPECT_TRUE(navigation_state_.CanSendEvents(sub_frame)); 54 EXPECT_TRUE(navigation_state_.CanSendEvents(sub_frame));
53 EXPECT_TRUE(navigation_state_.IsValidFrame(sub_frame)); 55 EXPECT_TRUE(navigation_state_.IsValidFrame(sub_frame));
54 56
55 // Check frame state. 57 // Check frame state.
56 EXPECT_EQ(url1, navigation_state_.GetUrl(main_rfh())); 58 EXPECT_EQ(url1, navigation_state_.GetUrl(main_rfh()));
57 EXPECT_EQ(url2, navigation_state_.GetUrl(sub_frame)); 59 EXPECT_EQ(url2, navigation_state_.GetUrl(sub_frame));
58 60
59 // Drop the frames. 61 // Drop the frames.
60 navigation_state_.FrameHostDeleted(sub_frame); 62 navigation_state_.FrameHostDeleted(sub_frame);
61 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame)); 63 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame));
62 EXPECT_FALSE(navigation_state_.IsValidFrame(sub_frame)); 64 EXPECT_FALSE(navigation_state_.IsValidFrame(sub_frame));
63 65
64 navigation_state_.FrameHostDeleted(main_rfh()); 66 navigation_state_.FrameHostDeleted(main_rfh());
65 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh())); 67 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh()));
66 EXPECT_FALSE(navigation_state_.IsValidFrame(main_rfh())); 68 EXPECT_FALSE(navigation_state_.IsValidFrame(main_rfh()));
67 } 69 }
68 70
69 // Test that no events can be sent for a frame after an error occurred, but 71 // Test that no events can be sent for a frame after an error occurred, but
70 // before a new navigation happened in this frame. 72 // before a new navigation happened in this frame.
71 TEST_F(FrameNavigationStateTest, ErrorState) { 73 TEST_F(FrameNavigationStateTest, ErrorState) {
72 const GURL url("http://www.google.com/"); 74 const GURL url("http://www.google.com/");
73 75
74 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url, false, false); 76 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url, false, false,
77 false);
75 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh())); 78 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh()));
76 EXPECT_FALSE(navigation_state_.GetErrorOccurredInFrame(main_rfh())); 79 EXPECT_FALSE(navigation_state_.GetErrorOccurredInFrame(main_rfh()));
77 80
78 // After an error occurred, no further events should be sent. 81 // After an error occurred, no further events should be sent.
79 navigation_state_.SetErrorOccurredInFrame(main_rfh()); 82 navigation_state_.SetErrorOccurredInFrame(main_rfh());
80 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh())); 83 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh()));
81 EXPECT_TRUE(navigation_state_.GetErrorOccurredInFrame(main_rfh())); 84 EXPECT_TRUE(navigation_state_.GetErrorOccurredInFrame(main_rfh()));
82 85
83 // Navigations to a network error page should be ignored. 86 // Navigations to a network error page should be ignored.
84 navigation_state_.StartTrackingDocumentLoad(main_rfh(), GURL(), false, true); 87 navigation_state_.StartTrackingDocumentLoad(main_rfh(), GURL(), false, true,
88 false);
85 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh())); 89 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh()));
86 EXPECT_TRUE(navigation_state_.GetErrorOccurredInFrame(main_rfh())); 90 EXPECT_TRUE(navigation_state_.GetErrorOccurredInFrame(main_rfh()));
87 91
88 // However, when the frame navigates again, it should send events again. 92 // However, when the frame navigates again, it should send events again.
89 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url, false, false); 93 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url, false, false,
94 false);
90 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh())); 95 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh()));
91 EXPECT_FALSE(navigation_state_.GetErrorOccurredInFrame(main_rfh())); 96 EXPECT_FALSE(navigation_state_.GetErrorOccurredInFrame(main_rfh()));
92 } 97 }
93 98
94 // Tests that for a sub frame, no events are send after an error occurred, but 99 // Tests that for a sub frame, no events are send after an error occurred, but
95 // before a new navigation happened in this frame. 100 // before a new navigation happened in this frame.
96 TEST_F(FrameNavigationStateTest, ErrorStateFrame) { 101 TEST_F(FrameNavigationStateTest, ErrorStateFrame) {
97 const GURL url("http://www.google.com/"); 102 const GURL url("http://www.google.com/");
98 103
99 content::RenderFrameHost* sub_frame = 104 content::RenderFrameHost* sub_frame =
100 content::RenderFrameHostTester::For(main_rfh())->AppendChild("child"); 105 content::RenderFrameHostTester::For(main_rfh())->AppendChild("child");
101 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url, false, false); 106 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url, false, false,
102 navigation_state_.StartTrackingDocumentLoad(sub_frame, url, false, false); 107 false);
108 navigation_state_.StartTrackingDocumentLoad(sub_frame, url, false, false,
109 false);
103 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh())); 110 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh()));
104 EXPECT_TRUE(navigation_state_.CanSendEvents(sub_frame)); 111 EXPECT_TRUE(navigation_state_.CanSendEvents(sub_frame));
105 112
106 // After an error occurred, no further events should be sent. 113 // After an error occurred, no further events should be sent.
107 navigation_state_.SetErrorOccurredInFrame(sub_frame); 114 navigation_state_.SetErrorOccurredInFrame(sub_frame);
108 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh())); 115 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh()));
109 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame)); 116 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame));
110 117
111 // Navigations to a network error page should be ignored. 118 // Navigations to a network error page should be ignored.
112 navigation_state_.StartTrackingDocumentLoad(sub_frame, GURL(), false, true); 119 navigation_state_.StartTrackingDocumentLoad(sub_frame, GURL(), false, true,
120 false);
113 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh())); 121 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh()));
114 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame)); 122 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame));
115 123
116 // However, when the frame navigates again, it should send events again. 124 // However, when the frame navigates again, it should send events again.
117 navigation_state_.StartTrackingDocumentLoad(sub_frame, url, false, false); 125 navigation_state_.StartTrackingDocumentLoad(sub_frame, url, false, false,
126 false);
118 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh())); 127 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh()));
119 EXPECT_TRUE(navigation_state_.CanSendEvents(sub_frame)); 128 EXPECT_TRUE(navigation_state_.CanSendEvents(sub_frame));
120 } 129 }
121 130
122 // Tests that no events are send for a not web-safe scheme. 131 // Tests that no events are send for a not web-safe scheme.
123 TEST_F(FrameNavigationStateTest, WebSafeScheme) { 132 TEST_F(FrameNavigationStateTest, WebSafeScheme) {
124 const GURL url("unsafe://www.google.com/"); 133 const GURL url("unsafe://www.google.com/");
125 134
126 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url, false, false); 135 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url, false, false,
136 false);
127 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh())); 137 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh()));
128 } 138 }
129 139
130 // Test for <iframe srcdoc=""> frames. 140 // Test for <iframe srcdoc=""> frames.
131 TEST_F(FrameNavigationStateTest, SrcDoc) { 141 TEST_F(FrameNavigationStateTest, SrcDoc) {
132 const GURL url("http://www.google.com/"); 142 const GURL url("http://www.google.com/");
133 const GURL blank("about:blank"); 143 const GURL blank("about:blank");
134 const GURL srcdoc("about:srcdoc"); 144 const GURL srcdoc("about:srcdoc");
135 145
136 content::RenderFrameHost* sub_frame = 146 content::RenderFrameHost* sub_frame =
137 content::RenderFrameHostTester::For(main_rfh())->AppendChild("child"); 147 content::RenderFrameHostTester::For(main_rfh())->AppendChild("child");
138 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url, false, false); 148 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url, false, false,
139 navigation_state_.StartTrackingDocumentLoad(sub_frame, srcdoc, false, false); 149 false);
140 150 navigation_state_.StartTrackingDocumentLoad(sub_frame, blank, false, false,
151 true);
141 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh())); 152 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh()));
142 EXPECT_TRUE(navigation_state_.CanSendEvents(sub_frame)); 153 EXPECT_TRUE(navigation_state_.CanSendEvents(sub_frame));
143 154
144 EXPECT_EQ(url, navigation_state_.GetUrl(main_rfh())); 155 EXPECT_EQ(url, navigation_state_.GetUrl(main_rfh()));
145 EXPECT_EQ(srcdoc, navigation_state_.GetUrl(sub_frame)); 156 EXPECT_EQ(srcdoc, navigation_state_.GetUrl(sub_frame));
146 157
147 EXPECT_TRUE(navigation_state_.IsValidUrl(srcdoc)); 158 EXPECT_TRUE(navigation_state_.IsValidUrl(srcdoc));
148 } 159 }
149 160
150 // Test that an individual frame can be detached. 161 // Test that an individual frame can be detached.
151 TEST_F(FrameNavigationStateTest, DetachFrame) { 162 TEST_F(FrameNavigationStateTest, DetachFrame) {
152 const GURL url1("http://www.google.com/"); 163 const GURL url1("http://www.google.com/");
153 const GURL url2("http://mail.google.com/"); 164 const GURL url2("http://mail.google.com/");
154 165
155 // Create a main frame. 166 // Create a main frame.
156 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh())); 167 EXPECT_FALSE(navigation_state_.CanSendEvents(main_rfh()));
157 EXPECT_FALSE(navigation_state_.IsValidFrame(main_rfh())); 168 EXPECT_FALSE(navigation_state_.IsValidFrame(main_rfh()));
158 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url1, false, false); 169 navigation_state_.StartTrackingDocumentLoad(main_rfh(), url1, false, false,
170 false);
159 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh())); 171 EXPECT_TRUE(navigation_state_.CanSendEvents(main_rfh()));
160 EXPECT_TRUE(navigation_state_.IsValidFrame(main_rfh())); 172 EXPECT_TRUE(navigation_state_.IsValidFrame(main_rfh()));
161 173
162 // Add a sub frame. 174 // Add a sub frame.
163 content::RenderFrameHost* sub_frame = 175 content::RenderFrameHost* sub_frame =
164 content::RenderFrameHostTester::For(main_rfh())->AppendChild("child"); 176 content::RenderFrameHostTester::For(main_rfh())->AppendChild("child");
165 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame)); 177 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame));
166 EXPECT_FALSE(navigation_state_.IsValidFrame(sub_frame)); 178 EXPECT_FALSE(navigation_state_.IsValidFrame(sub_frame));
167 navigation_state_.StartTrackingDocumentLoad(sub_frame, url2, false, false); 179 navigation_state_.StartTrackingDocumentLoad(sub_frame, url2, false, false,
180 false);
168 EXPECT_TRUE(navigation_state_.CanSendEvents(sub_frame)); 181 EXPECT_TRUE(navigation_state_.CanSendEvents(sub_frame));
169 EXPECT_TRUE(navigation_state_.IsValidFrame(sub_frame)); 182 EXPECT_TRUE(navigation_state_.IsValidFrame(sub_frame));
170 183
171 // Check frame state. 184 // Check frame state.
172 EXPECT_EQ(url1, navigation_state_.GetUrl(main_rfh())); 185 EXPECT_EQ(url1, navigation_state_.GetUrl(main_rfh()));
173 EXPECT_EQ(url2, navigation_state_.GetUrl(sub_frame)); 186 EXPECT_EQ(url2, navigation_state_.GetUrl(sub_frame));
174 187
175 // Drop one frame. 188 // Drop one frame.
176 navigation_state_.FrameHostDeleted(sub_frame); 189 navigation_state_.FrameHostDeleted(sub_frame);
177 EXPECT_EQ(url1, navigation_state_.GetUrl(main_rfh())); 190 EXPECT_EQ(url1, navigation_state_.GetUrl(main_rfh()));
178 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame)); 191 EXPECT_FALSE(navigation_state_.CanSendEvents(sub_frame));
179 EXPECT_FALSE(navigation_state_.IsValidFrame(sub_frame)); 192 EXPECT_FALSE(navigation_state_.IsValidFrame(sub_frame));
180 } 193 }
181 194
182 } // namespace extensions 195 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698