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

Side by Side Diff: chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc

Issue 2865913002: Support for identifying traffic type in data use ascriber (Closed)
Patch Set: compile fix Created 3 years, 7 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 unified diff | Download patch
OLDNEW
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"
11 #include "base/run_loop.h" 11 #include "base/run_loop.h"
12 #include "components/data_use_measurement/core/data_use_recorder.h" 12 #include "components/data_use_measurement/core/data_use_recorder.h"
13 #include "content/public/browser/resource_request_info.h" 13 #include "content/public/browser/resource_request_info.h"
14 #include "content/public/common/browser_side_navigation_policy.h" 14 #include "content/public/common/browser_side_navigation_policy.h"
15 #include "content/public/common/previews_state.h" 15 #include "content/public/common/previews_state.h"
16 #include "content/public/common/process_type.h" 16 #include "content/public/common/process_type.h"
17 #include "content/public/test/mock_resource_context.h" 17 #include "content/public/test/mock_resource_context.h"
18 #include "content/public/test/test_browser_thread_bundle.h" 18 #include "content/public/test/test_browser_thread_bundle.h"
19 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" 19 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
20 #include "net/url_request/url_request_test_util.h" 20 #include "net/url_request/url_request_test_util.h"
21 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
22 22
23 namespace { 23 namespace {
24 int kRenderProcessId = 1; 24 int kRenderProcessId = 1;
25 int kRenderFrameId = 2; 25 int kRenderFrameId = 2;
26 int kRequestId = 3; 26 int kRequestId = 3;
27 void* kNavigationHandle = &kNavigationHandle;
27 } 28 }
28 29
29 namespace data_use_measurement { 30 namespace data_use_measurement {
30 31
31 class ChromeDataUseAscriberTest : public testing::Test { 32 class ChromeDataUseAscriberTest : public testing::Test {
32 protected: 33 protected:
33 ChromeDataUseAscriberTest() 34 ChromeDataUseAscriberTest()
34 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), 35 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
35 resource_context_(new content::MockResourceContext(&context_)) {} 36 resource_context_(new content::MockResourceContext(&context_)) {}
36 37
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 -1); 165 -1);
165 ascriber()->RenderFrameHostChanged(kRenderProcessId, kRenderFrameId, 166 ascriber()->RenderFrameHostChanged(kRenderProcessId, kRenderFrameId,
166 kRenderProcessId + 1, kRenderFrameId + 1); 167 kRenderProcessId + 1, kRenderFrameId + 1);
167 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); 168 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1);
168 169
169 ascriber()->WasShownOrHidden(kRenderProcessId + 1, kRenderFrameId + 1, true); 170 ascriber()->WasShownOrHidden(kRenderProcessId + 1, kRenderFrameId + 1, true);
170 ascriber()->RenderFrameDeleted(kRenderProcessId + 1, kRenderFrameId + 1, -1, 171 ascriber()->RenderFrameDeleted(kRenderProcessId + 1, kRenderFrameId + 1, -1,
171 -1); 172 -1);
172 } 173 }
173 174
175 TEST_F(ChromeDataUseAscriberTest, MainFrameNavigation) {
176 if (content::IsBrowserSideNavigationEnabled())
177 return;
178
179 std::unique_ptr<net::URLRequest> request = CreateNewRequest(
180 "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId);
181
182 // Mainframe is created.
183 ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1);
184 EXPECT_EQ(1u, recorders().size());
185
186 // Request should cause a recorder to be created.
187 ascriber()->OnBeforeUrlRequest(request.get());
188 EXPECT_EQ(2u, recorders().size());
189
190 // Navigation starts.
191 ascriber()->DidStartMainFrameNavigation(GURL("http://test.com"),
192 kRenderProcessId, kRenderFrameId,
193 kNavigationHandle);
194
195 ascriber()->ReadyToCommitMainFrameNavigation(
196 GURL("http://mobile.test.com"),
197 content::GlobalRequestID(kRenderProcessId, 0), kRenderProcessId,
198 kRenderFrameId, false, kNavigationHandle);
199
200 // Navigation commit should merge the two data use recorder entries.
201 EXPECT_EQ(1u, recorders().size());
202 auto& recorder_entry = recorders().front();
203 EXPECT_EQ(RenderFrameHostID(kRenderProcessId, kRenderFrameId),
204 recorder_entry.main_frame_id());
205 EXPECT_EQ(content::GlobalRequestID(kRenderProcessId, 0),
206 recorder_entry.main_frame_request_id());
207 EXPECT_EQ(GURL("http://mobile.test.com"), recorder_entry.data_use().url());
208 EXPECT_EQ(DataUse::TrafficType::USER_TRAFFIC,
209 recorder_entry.data_use().traffic_type());
210
211 ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1);
212 ascriber()->OnUrlRequestDestroyed(request.get());
213
214 EXPECT_EQ(0u, recorders().size());
215 }
216
174 } // namespace data_use_measurement 217 } // namespace data_use_measurement
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698