Index: chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc |
diff --git a/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc b/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc |
index bda7395d96010f37a2b0709685b2641e71df1e1c..d6933aa77ef07aaff026fd555c69d4e8cb25e8ea 100644 |
--- a/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc |
+++ b/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc |
@@ -101,4 +101,82 @@ TEST_F(ChromeDataUseAscriberTest, NoRecorderWithoutFrame) { |
ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); |
} |
+TEST_F(ChromeDataUseAscriberTest, RenderFrameShownAndHidden) { |
+ if (content::IsBrowserSideNavigationEnabled()) |
+ return; |
+ |
+ std::unique_ptr<net::URLRequest> request = CreateNewRequest( |
+ "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); |
+ |
+ ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); |
+ ascriber()->OnBeforeUrlRequest(request.get()); |
+ ascriber()->ReadyToCommitMainFrameNavigation( |
+ GURL("http://test.com"), content::GlobalRequestID(kRenderProcessId, 0), |
+ kRenderProcessId, kRenderFrameId, true, (void*)request.get()); |
+ ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, true); |
+ |
+ EXPECT_TRUE( |
+ ascriber()->GetDataUseRecorder(request.get(), true)->is_visible()); |
+ |
+ // Hide the frame, and the visibility should be updated. |
+ ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, false); |
+ EXPECT_FALSE( |
+ ascriber()->GetDataUseRecorder(request.get(), true)->is_visible()); |
+ |
+ ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); |
+} |
+ |
+TEST_F(ChromeDataUseAscriberTest, RenderFrameHiddenAndShown) { |
+ if (content::IsBrowserSideNavigationEnabled()) |
+ return; |
+ |
+ std::unique_ptr<net::URLRequest> request = CreateNewRequest( |
+ "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); |
+ |
+ ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); |
+ ascriber()->OnBeforeUrlRequest(request.get()); |
+ ascriber()->ReadyToCommitMainFrameNavigation( |
+ GURL("http://test.com"), content::GlobalRequestID(kRenderProcessId, 0), |
+ kRenderProcessId, kRenderFrameId, true, (void*)request.get()); |
+ ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, false); |
+ |
+ EXPECT_FALSE( |
+ ascriber()->GetDataUseRecorder(request.get(), true)->is_visible()); |
+ |
+ // Show the frame, and the visibility should be updated. |
+ ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, true); |
+ EXPECT_TRUE( |
+ ascriber()->GetDataUseRecorder(request.get(), true)->is_visible()); |
+ |
+ ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); |
+} |
+ |
+TEST_F(ChromeDataUseAscriberTest, RenderFrameHostChanged) { |
+ if (content::IsBrowserSideNavigationEnabled()) |
+ return; |
+ |
+ std::unique_ptr<net::URLRequest> request = CreateNewRequest( |
+ "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); |
+ |
+ ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); |
+ ascriber()->OnBeforeUrlRequest(request.get()); |
+ ascriber()->ReadyToCommitMainFrameNavigation( |
+ GURL("http://test.com"), content::GlobalRequestID(kRenderProcessId, 0), |
+ kRenderProcessId, kRenderFrameId, true, (void*)request.get()); |
+ ascriber()->WasShownOrHidden(kRenderProcessId, kRenderFrameId, true); |
+ EXPECT_TRUE( |
+ ascriber()->GetDataUseRecorder(request.get(), true)->is_visible()); |
+ |
+ // Create a new render frame and swap it. |
+ ascriber()->RenderFrameCreated(kRenderProcessId + 1, kRenderFrameId + 1, -1, |
+ -1); |
+ ascriber()->RenderFrameHostChanged(kRenderProcessId, kRenderFrameId, |
+ kRenderProcessId + 1, kRenderFrameId + 1); |
+ ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); |
+ |
+ ascriber()->WasShownOrHidden(kRenderProcessId + 1, kRenderFrameId + 1, true); |
+ ascriber()->RenderFrameDeleted(kRenderProcessId + 1, kRenderFrameId + 1, -1, |
+ -1); |
+} |
+ |
} // namespace data_use_measurement |