Index: chrome/test/base/in_process_browser_test.cc |
diff --git a/chrome/test/base/in_process_browser_test.cc b/chrome/test/base/in_process_browser_test.cc |
index e277349d4ab37ad0707039713aee568d43c7fa1d..d5eee317b51bc3aaf33b2dcc89361d8911856395 100644 |
--- a/chrome/test/base/in_process_browser_test.cc |
+++ b/chrome/test/base/in_process_browser_test.cc |
@@ -132,12 +132,14 @@ const char kAccessibilityTestString[] = |
"domAutomationController.send(error);"; |
InProcessBrowserTest::InProcessBrowserTest() |
- : browser_(NULL), |
+ : browser_(nullptr), |
exit_when_last_browser_closes_(true), |
open_about_blank_on_browser_launch_(true), |
+ expect_csp_messages_(false), |
+ console_delegate_(nullptr), |
run_accessibility_checks_for_test_case_(false) |
#if defined(OS_MACOSX) |
- , autorelease_pool_(NULL) |
+ , autorelease_pool_(nullptr) |
#endif // OS_MACOSX |
{ |
#if defined(OS_MACOSX) |
@@ -173,6 +175,10 @@ InProcessBrowserTest::InProcessBrowserTest() |
} |
InProcessBrowserTest::~InProcessBrowserTest() { |
+ // Make sure console_delegate_ is active in a function that's guaranteed |
+ // to be called. RunTestOnMainThreadLoop() could be overriden. |
+ CHECK(console_delegate_); |
+ delete console_delegate_; |
} |
void InProcessBrowserTest::SetUp() { |
@@ -403,6 +409,10 @@ bool InProcessBrowserTest::SetUpUserDataDirectory() { |
return true; |
} |
+void InProcessBrowserTest::SetExpectCSPErrorMessages(bool expect) { |
+ expect_csp_messages_ = expect; |
+} |
+ |
#if !defined(OS_MACOSX) |
void InProcessBrowserTest::OpenDevToolsWindow( |
content::WebContents* web_contents) { |
@@ -535,6 +545,14 @@ void InProcessBrowserTest::RunTestOnMainThreadLoop() { |
// enable/disable the accessibility audit. |
run_accessibility_checks_for_test_case_ = false; |
+ // Set up console message listener to look for CSP error messages. |
+ content::WebContents* web_contents = |
+ browser()->tab_strip_model()->GetActiveWebContents(); |
+ console_delegate_ = new content::ConsoleObserverDelegate( |
+ web_contents, |
+ "*Content Security Policy*"); |
+ web_contents->SetDelegate(console_delegate_); |
+ |
SetUpOnMainThread(); |
#if defined(OS_MACOSX) |
autorelease_pool_->Recycle(); |
@@ -559,6 +577,13 @@ void InProcessBrowserTest::RunTestOnMainThreadLoop() { |
autorelease_pool_->Recycle(); |
#endif |
+ // Check CSP error messages. |
+ if (expect_csp_messages_) { |
+ EXPECT_NE("", console_delegate_->message()); |
+ } else { |
+ EXPECT_EQ("", console_delegate_->message()); |
+ } |
+ |
// Sometimes tests leave Quit tasks in the MessageLoop (for shame), so let's |
// run all pending messages here to avoid preempting the QuitBrowsers tasks. |
// TODO(jbates) Once crbug.com/134753 is fixed, this can be removed because it |
@@ -595,6 +620,6 @@ void InProcessBrowserTest::QuitBrowsers() { |
// get deleted. |
content::RunAllPendingInMessageLoop(); |
delete autorelease_pool_; |
- autorelease_pool_ = NULL; |
+ autorelease_pool_ = nullptr; |
#endif |
} |