OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "chrome/browser/data_use_measurement/chrome_data_use_ascriber.h" | 5 #include "chrome/browser/data_use_measurement/chrome_data_use_ascriber.h" |
6 | 6 |
7 #include <list> | 7 #include <list> |
8 #include <memory> | 8 #include <memory> |
9 | 9 |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 } | 85 } |
86 | 86 |
87 private: | 87 private: |
88 content::TestBrowserThreadBundle thread_bundle_; | 88 content::TestBrowserThreadBundle thread_bundle_; |
89 ChromeDataUseAscriber ascriber_; | 89 ChromeDataUseAscriber ascriber_; |
90 net::TestURLRequestContext context_; | 90 net::TestURLRequestContext context_; |
91 std::unique_ptr<content::MockResourceContext> resource_context_; | 91 std::unique_ptr<content::MockResourceContext> resource_context_; |
92 }; | 92 }; |
93 | 93 |
94 TEST_F(ChromeDataUseAscriberTest, NoRecorderWithoutFrame) { | 94 TEST_F(ChromeDataUseAscriberTest, NoRecorderWithoutFrame) { |
95 if (content::IsBrowserSideNavigationEnabled()) | |
96 return; | |
97 | |
98 std::unique_ptr<net::URLRequest> request = CreateNewRequest( | 95 std::unique_ptr<net::URLRequest> request = CreateNewRequest( |
99 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); | 96 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); |
100 | 97 |
101 // Main frame request should not cause a recorder to be created, since the | 98 // Main frame request causes a recorder to be created. |
102 // frame does not exist. | |
103 ascriber()->OnBeforeUrlRequest(request.get()); | 99 ascriber()->OnBeforeUrlRequest(request.get()); |
104 EXPECT_EQ(0u, recorders().size()); | 100 EXPECT_EQ(1u, recorders().size()); |
105 | 101 |
106 // Frame is created. | 102 // Frame is created. |
107 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); | 103 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); |
108 EXPECT_EQ(1u, recorders().size()); | 104 EXPECT_EQ(2u, recorders().size()); |
109 | 105 |
110 // Request should cause a recorder to be created. | 106 // Same mainframe request should not cause another recorder to be created. |
111 ascriber()->OnBeforeUrlRequest(request.get()); | 107 ascriber()->OnBeforeUrlRequest(request.get()); |
112 EXPECT_EQ(2u, recorders().size()); | 108 EXPECT_EQ(2u, recorders().size()); |
113 | 109 |
114 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); | 110 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); |
| 111 ascriber()->OnUrlRequestDestroyed(request.get()); |
| 112 |
| 113 EXPECT_EQ(1u, recorders().size()); |
115 } | 114 } |
116 | 115 |
117 TEST_F(ChromeDataUseAscriberTest, RenderFrameShownAndHidden) { | 116 TEST_F(ChromeDataUseAscriberTest, RenderFrameShownAndHidden) { |
118 if (content::IsBrowserSideNavigationEnabled()) | |
119 return; | |
120 | |
121 std::unique_ptr<net::URLRequest> request = CreateNewRequest( | 117 std::unique_ptr<net::URLRequest> request = CreateNewRequest( |
122 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); | 118 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); |
123 | 119 |
124 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); | 120 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); |
125 ascriber()->OnBeforeUrlRequest(request.get()); | 121 ascriber()->OnBeforeUrlRequest(request.get()); |
126 ascriber()->ReadyToCommitMainFrameNavigation( | 122 ascriber()->ReadyToCommitMainFrameNavigation( |
127 content::GlobalRequestID(kRenderProcessId, 0), kRenderProcessId, | 123 content::GlobalRequestID(kRenderProcessId, 0), kRenderProcessId, |
128 kRenderFrameId); | 124 kRenderFrameId); |
129 ascriber()->DidFinishNavigation(kRenderProcessId, kRenderFrameId, | 125 ascriber()->DidFinishNavigation(kRenderProcessId, kRenderFrameId, |
130 GURL("http://test.com"), true, | 126 GURL("http://test.com"), true, |
131 kPageTransition); | 127 kPageTransition); |
132 ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, true); | 128 ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, true); |
133 | 129 |
134 EXPECT_TRUE(ascriber()->GetDataUseRecorder(*request)->is_visible()); | 130 EXPECT_TRUE(ascriber()->GetDataUseRecorder(*request)->is_visible()); |
135 | 131 |
136 // Hide the frame, and the visibility should be updated. | 132 // Hide the frame, and the visibility should be updated. |
137 ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, false); | 133 ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, false); |
138 EXPECT_FALSE(ascriber()->GetDataUseRecorder(*request)->is_visible()); | 134 EXPECT_FALSE(ascriber()->GetDataUseRecorder(*request)->is_visible()); |
139 | 135 |
140 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); | 136 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); |
141 } | 137 } |
142 | 138 |
143 TEST_F(ChromeDataUseAscriberTest, RenderFrameHiddenAndShown) { | 139 TEST_F(ChromeDataUseAscriberTest, RenderFrameHiddenAndShown) { |
144 if (content::IsBrowserSideNavigationEnabled()) | |
145 return; | |
146 | |
147 std::unique_ptr<net::URLRequest> request = CreateNewRequest( | 140 std::unique_ptr<net::URLRequest> request = CreateNewRequest( |
148 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); | 141 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); |
149 | 142 |
150 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); | 143 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); |
151 ascriber()->OnBeforeUrlRequest(request.get()); | 144 ascriber()->OnBeforeUrlRequest(request.get()); |
152 ascriber()->ReadyToCommitMainFrameNavigation( | 145 ascriber()->ReadyToCommitMainFrameNavigation( |
153 content::GlobalRequestID(kRenderProcessId, 0), kRenderProcessId, | 146 content::GlobalRequestID(kRenderProcessId, 0), kRenderProcessId, |
154 kRenderFrameId); | 147 kRenderFrameId); |
155 ascriber()->DidFinishNavigation(kRenderProcessId, kRenderFrameId, | 148 ascriber()->DidFinishNavigation(kRenderProcessId, kRenderFrameId, |
156 GURL("http://test.com"), true, | 149 GURL("http://test.com"), true, |
157 kPageTransition); | 150 kPageTransition); |
158 ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, false); | 151 ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, false); |
159 | 152 |
160 EXPECT_FALSE(ascriber()->GetDataUseRecorder(*request)->is_visible()); | 153 EXPECT_FALSE(ascriber()->GetDataUseRecorder(*request)->is_visible()); |
161 | 154 |
162 // Show the frame, and the visibility should be updated. | 155 // Show the frame, and the visibility should be updated. |
163 ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, true); | 156 ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, true); |
164 EXPECT_TRUE(ascriber()->GetDataUseRecorder(*request)->is_visible()); | 157 EXPECT_TRUE(ascriber()->GetDataUseRecorder(*request)->is_visible()); |
165 | 158 |
166 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); | 159 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); |
167 } | 160 } |
168 | 161 |
169 TEST_F(ChromeDataUseAscriberTest, RenderFrameHostChanged) { | 162 TEST_F(ChromeDataUseAscriberTest, RenderFrameHostChanged) { |
170 if (content::IsBrowserSideNavigationEnabled()) | |
171 return; | |
172 | |
173 std::unique_ptr<net::URLRequest> request = CreateNewRequest( | 163 std::unique_ptr<net::URLRequest> request = CreateNewRequest( |
174 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); | 164 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); |
175 | 165 |
176 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); | 166 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); |
177 ascriber()->OnBeforeUrlRequest(request.get()); | 167 ascriber()->OnBeforeUrlRequest(request.get()); |
178 ascriber()->ReadyToCommitMainFrameNavigation( | 168 ascriber()->ReadyToCommitMainFrameNavigation( |
179 content::GlobalRequestID(kRenderProcessId, 0), kRenderProcessId, | 169 content::GlobalRequestID(kRenderProcessId, 0), kRenderProcessId, |
180 kRenderFrameId); | 170 kRenderFrameId); |
181 ascriber()->DidFinishNavigation(kRenderProcessId, kRenderFrameId, | 171 ascriber()->DidFinishNavigation(kRenderProcessId, kRenderFrameId, |
182 GURL("http://test.com"), true, | 172 GURL("http://test.com"), true, |
183 kPageTransition); | 173 kPageTransition); |
184 ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, true); | 174 ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, true); |
185 EXPECT_TRUE(ascriber()->GetDataUseRecorder(*request)->is_visible()); | 175 EXPECT_TRUE(ascriber()->GetDataUseRecorder(*request)->is_visible()); |
186 | 176 |
187 // Create a new render frame and swap it. | 177 // Create a new render frame and swap it. |
188 ascriber()->RenderFrameCreated(kRenderProcessId + 1, kRenderFrameId + 1, -1, | 178 ascriber()->RenderFrameCreated(kRenderProcessId + 1, kRenderFrameId + 1, -1, |
189 -1); | 179 -1); |
190 ascriber()->RenderFrameHostChanged(kRenderProcessId, kRenderFrameId, | 180 ascriber()->RenderFrameHostChanged(kRenderProcessId, kRenderFrameId, |
191 kRenderProcessId + 1, kRenderFrameId + 1); | 181 kRenderProcessId + 1, kRenderFrameId + 1); |
192 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); | 182 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); |
193 | 183 |
194 ascriber()->WasShownOrHidden(kRenderProcessId + 1, kRenderFrameId + 1, true); | 184 ascriber()->WasShownOrHidden(kRenderProcessId + 1, kRenderFrameId + 1, true); |
195 ascriber()->RenderFrameDeleted(kRenderProcessId + 1, kRenderFrameId + 1, -1, | 185 ascriber()->RenderFrameDeleted(kRenderProcessId + 1, kRenderFrameId + 1, -1, |
196 -1); | 186 -1); |
197 } | 187 } |
198 | 188 |
199 TEST_F(ChromeDataUseAscriberTest, MainFrameNavigation) { | 189 TEST_F(ChromeDataUseAscriberTest, MainFrameNavigation) { |
200 if (content::IsBrowserSideNavigationEnabled()) | |
201 return; | |
202 | |
203 std::unique_ptr<net::URLRequest> request = CreateNewRequest( | 190 std::unique_ptr<net::URLRequest> request = CreateNewRequest( |
204 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); | 191 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); |
205 | 192 |
206 // Mainframe is created. | 193 // Mainframe is created. |
207 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); | 194 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); |
208 EXPECT_EQ(1u, recorders().size()); | 195 EXPECT_EQ(1u, recorders().size()); |
209 | 196 |
210 // Request should cause a recorder to be created. | 197 // Request should cause a recorder to be created. |
211 ascriber()->OnBeforeUrlRequest(request.get()); | 198 ascriber()->OnBeforeUrlRequest(request.get()); |
212 EXPECT_EQ(2u, recorders().size()); | 199 EXPECT_EQ(2u, recorders().size()); |
(...skipping 21 matching lines...) Expand all Loading... |
234 EXPECT_EQ(DataUse::TrafficType::USER_TRAFFIC, | 221 EXPECT_EQ(DataUse::TrafficType::USER_TRAFFIC, |
235 recorder_entry.data_use().traffic_type()); | 222 recorder_entry.data_use().traffic_type()); |
236 | 223 |
237 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); | 224 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); |
238 ascriber()->OnUrlRequestDestroyed(request.get()); | 225 ascriber()->OnUrlRequestDestroyed(request.get()); |
239 | 226 |
240 EXPECT_EQ(0u, recorders().size()); | 227 EXPECT_EQ(0u, recorders().size()); |
241 } | 228 } |
242 | 229 |
243 TEST_F(ChromeDataUseAscriberTest, FailedMainFrameNavigation) { | 230 TEST_F(ChromeDataUseAscriberTest, FailedMainFrameNavigation) { |
244 if (content::IsBrowserSideNavigationEnabled()) | |
245 return; | |
246 | |
247 std::unique_ptr<net::URLRequest> request = CreateNewRequest( | 231 std::unique_ptr<net::URLRequest> request = CreateNewRequest( |
248 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); | 232 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); |
249 | 233 |
250 // Mainframe is created. | 234 // Mainframe is created. |
251 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); | 235 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); |
252 EXPECT_EQ(1u, recorders().size()); | 236 EXPECT_EQ(1u, recorders().size()); |
253 | 237 |
254 // Request should cause a recorder to be created. | 238 // Request should cause a recorder to be created. |
255 ascriber()->OnBeforeUrlRequest(request.get()); | 239 ascriber()->OnBeforeUrlRequest(request.get()); |
256 EXPECT_EQ(2u, recorders().size()); | 240 EXPECT_EQ(2u, recorders().size()); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 EXPECT_CALL(mock_observer, OnPageLoadComplete(&recorder_entry.data_use())) | 299 EXPECT_CALL(mock_observer, OnPageLoadComplete(&recorder_entry.data_use())) |
316 .Times(1); | 300 .Times(1); |
317 | 301 |
318 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); | 302 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); |
319 ascriber()->OnUrlRequestDestroyed(request.get()); | 303 ascriber()->OnUrlRequestDestroyed(request.get()); |
320 | 304 |
321 EXPECT_EQ(0u, recorders().size()); | 305 EXPECT_EQ(0u, recorders().size()); |
322 } | 306 } |
323 | 307 |
324 } // namespace data_use_measurement | 308 } // namespace data_use_measurement |
OLD | NEW |