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

Unified Diff: content/browser/frame_host/navigation_handle_impl_unittest.cc

Issue 2101323002: Add 'NavigationHandle::QueueConsoleMessage'. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: -public Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/frame_host/navigation_handle_impl_unittest.cc
diff --git a/content/browser/frame_host/navigation_handle_impl_unittest.cc b/content/browser/frame_host/navigation_handle_impl_unittest.cc
index f77bbdf01231f5eb8670ab5feaa8082e13b736d9..87e1aad4473a32cd87e3d6c1630a601ed4a77f92 100644
--- a/content/browser/frame_host/navigation_handle_impl_unittest.cc
+++ b/content/browser/frame_host/navigation_handle_impl_unittest.cc
@@ -56,6 +56,34 @@ class TestNavigationThrottle : public NavigationThrottle {
int will_process_response_calls_;
};
+// A NavigationThrottle which adds console messages in WillStartRequest,
+// WillRedirectRequest, and always returns PROCEED.
+class TestConsoleMessagesThrottle : public NavigationThrottle {
+ public:
+ TestConsoleMessagesThrottle(NavigationHandle* handle)
+ : NavigationThrottle(handle) {}
+
+ ~TestConsoleMessagesThrottle() override {}
+
+ NavigationThrottle::ThrottleCheckResult WillStartRequest() override {
+ static_cast<NavigationHandleImpl*>(navigation_handle())
+ ->QueueConsoleMessage(CONSOLE_MESSAGE_LEVEL_LOG, "WillStartRequest");
+ return NavigationThrottle::PROCEED;
+ }
+
+ NavigationThrottle::ThrottleCheckResult WillRedirectRequest() override {
+ static_cast<NavigationHandleImpl*>(navigation_handle())
+ ->QueueConsoleMessage(CONSOLE_MESSAGE_LEVEL_LOG, "WillRedirectRequest");
+ return NavigationThrottle::PROCEED;
+ }
+
+ NavigationThrottle::ThrottleCheckResult WillProcessResponse() override {
+ static_cast<NavigationHandleImpl*>(navigation_handle())
+ ->QueueConsoleMessage(CONSOLE_MESSAGE_LEVEL_LOG, "WillProcessResponse");
+ return NavigationThrottle::PROCEED;
+ }
+};
+
class NavigationHandleImplTest : public RenderViewHostImplTestHarness {
public:
NavigationHandleImplTest()
@@ -92,6 +120,11 @@ class NavigationHandleImplTest : public RenderViewHostImplTestHarness {
return test_handle_->state() == NavigationHandleImpl::CANCELING;
}
+ const std::queue<std::pair<ConsoleMessageLevel, const std::string>>&
+ GetConsoleQueue() const {
+ return test_handle_->console_queue_;
+ }
+
// Helper function to call WillStartRequest on |handle|. If this function
// returns DEFER, |callback_result_| will be set to the actual result of
// the throttle checks when they are finished.
@@ -164,6 +197,15 @@ class NavigationHandleImplTest : public RenderViewHostImplTestHarness {
return test_throttle;
}
+ // Creates, register and returns a TestConsoleMessagesThrottle.
+ TestConsoleMessagesThrottle* CreateTestConsoleMessagesThrottle() {
+ TestConsoleMessagesThrottle* test_throttle =
+ new TestConsoleMessagesThrottle(test_handle());
+ test_handle()->RegisterThrottleForTesting(
+ std::unique_ptr<TestConsoleMessagesThrottle>(test_throttle));
+ return test_throttle;
+ }
+
private:
// The callback provided to NavigationHandleImpl::WillStartRequest and
// NavigationHandleImpl::WillRedirectRequest during the tests.
@@ -645,4 +687,26 @@ TEST_F(NavigationHandleImplTest, CancelThenProceedWillProcessResponse) {
EXPECT_EQ(0, proceed_throttle->will_process_response_calls());
}
+TEST_F(NavigationHandleImplTest, ConsoleMessages) {
+ TestConsoleMessagesThrottle* throttle = CreateTestConsoleMessagesThrottle();
+ DCHECK(throttle);
+ SimulateWillStartRequest();
+ DCHECK_EQ(1u, GetConsoleQueue().size());
+ DCHECK_EQ("WillStartRequest", GetConsoleQueue().back().second);
+
+ SimulateWillRedirectRequest();
+ DCHECK_EQ(2u, GetConsoleQueue().size());
+ DCHECK_EQ("WillRedirectRequest", GetConsoleQueue().back().second);
+
+ SimulateWillProcessResponse();
+ // Calling 'WillProcessResponse' should dump the queue.
+ DCHECK_EQ(0u, GetConsoleQueue().size());
+
+ // Verify that messages got to the RFH correctly.
+ DCHECK_EQ(3u, main_test_rfh()->GetConsoleMessages().size());
+ DCHECK_EQ("WillStartRequest", main_test_rfh()->GetConsoleMessages()[0]);
+ DCHECK_EQ("WillRedirectRequest", main_test_rfh()->GetConsoleMessages()[1]);
+ DCHECK_EQ("WillProcessResponse", main_test_rfh()->GetConsoleMessages()[2]);
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698