Index: content/browser/manifest/manifest_browsertest.cc |
diff --git a/content/browser/manifest/manifest_browsertest.cc b/content/browser/manifest/manifest_browsertest.cc |
index 8eaca0a9445b8c0f71df17091ee0c244347f3a33..2cb0c428f807103975ccf54254f13d188ec1f7fa 100644 |
--- a/content/browser/manifest/manifest_browsertest.cc |
+++ b/content/browser/manifest/manifest_browsertest.cc |
@@ -17,8 +17,14 @@ namespace content { |
class ManifestBrowserTest : public ContentBrowserTest { |
protected: |
- ManifestBrowserTest() {} |
- ~ManifestBrowserTest() override {} |
+ ManifestBrowserTest() { |
+ console_errors_count_ = 0; |
+ logging::SetLogMessageHandler(&ManifestBrowserTest::CatchConsoleErrors); |
+ } |
+ |
+ ~ManifestBrowserTest() override { |
+ logging::SetLogMessageHandler(nullptr); |
Peter Beverloo
2014/11/27 13:24:31
indentation.
mlamouri (slow - plz ping)
2014/11/27 13:49:08
Done.
|
+ } |
void GetManifestAndWait() { |
shell()->web_contents()->GetManifest( |
@@ -38,6 +44,21 @@ class ManifestBrowserTest : public ContentBrowserTest { |
return manifest_; |
} |
+ static bool CatchConsoleErrors(int severity, |
+ const char* file, |
+ int line, |
+ size_t message_start, |
+ const std::string& str) { |
+ if (severity == logging::LOG_INFO && |
+ file && file == std::string("CONSOLE")) { |
Peter Beverloo
2014/11/27 13:24:31
Mm. This feels rather fragile. Have you considered
mlamouri (slow - plz ping)
2014/11/27 13:49:08
Do you have examples?
Peter Beverloo
2014/11/27 13:55:15
Not of this specific scenario. The tests using a s
|
+ console_errors_count_++; |
+ } |
+ |
+ return false; |
+ } |
+ |
+ static int console_errors_count_; |
+ |
private: |
scoped_refptr<MessageLoopRunner> message_loop_runner_; |
Manifest manifest_; |
@@ -45,6 +66,8 @@ class ManifestBrowserTest : public ContentBrowserTest { |
DISALLOW_COPY_AND_ASSIGN(ManifestBrowserTest); |
}; |
+int ManifestBrowserTest::console_errors_count_ = 0; |
+ |
// If a page has no manifest, requesting a manifest should return the empty |
// manifest. |
IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, NoManifest) { |
@@ -56,6 +79,7 @@ IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, NoManifest) { |
GetManifestAndWait(); |
EXPECT_TRUE(manifest().IsEmpty()); |
+ EXPECT_EQ(0, ManifestBrowserTest::console_errors_count_); |
} |
// If a page manifest points to a 404 URL, requesting the manifest should return |
@@ -69,6 +93,7 @@ IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, 404Manifest) { |
GetManifestAndWait(); |
EXPECT_TRUE(manifest().IsEmpty()); |
+ EXPECT_EQ(0, ManifestBrowserTest::console_errors_count_); |
} |
// If a page has an empty manifest, requesting the manifest should return the |
@@ -82,6 +107,7 @@ IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, EmptyManifest) { |
GetManifestAndWait(); |
EXPECT_TRUE(manifest().IsEmpty()); |
+ EXPECT_EQ(0, ManifestBrowserTest::console_errors_count_); |
} |
// If a page's manifest can't be parsed correctly, requesting the manifest |
@@ -95,6 +121,7 @@ IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, ParseErrorManifest) { |
GetManifestAndWait(); |
EXPECT_TRUE(manifest().IsEmpty()); |
+ EXPECT_EQ(1, ManifestBrowserTest::console_errors_count_); |
} |
// If a page has a manifest that can be fetched and parsed, requesting the |
@@ -108,6 +135,7 @@ IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, DummyManifest) { |
GetManifestAndWait(); |
EXPECT_FALSE(manifest().IsEmpty()); |
+ EXPECT_EQ(0, ManifestBrowserTest::console_errors_count_); |
} |
// If a page changes manifest during its life-time, requesting the manifest |
@@ -143,6 +171,8 @@ IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, DynamicManifest) { |
GetManifestAndWait(); |
EXPECT_TRUE(manifest().IsEmpty()); |
} |
+ |
+ EXPECT_EQ(0, ManifestBrowserTest::console_errors_count_); |
} |
// If a page's manifest lives in a different origin, it should follow the CORS |
@@ -170,6 +200,8 @@ IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, CORSManifest) { |
GetManifestAndWait(); |
EXPECT_TRUE(manifest().IsEmpty()); |
+ |
+ EXPECT_EQ(0, ManifestBrowserTest::console_errors_count_); |
} |
// If a page's manifest is in an unsecure origin while the page is in a secure |
@@ -197,6 +229,22 @@ IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, MixedContentManifest) { |
GetManifestAndWait(); |
EXPECT_TRUE(manifest().IsEmpty()); |
+ |
+ EXPECT_EQ(0, ManifestBrowserTest::console_errors_count_); |
+} |
+ |
+// If a page's manifest has some parsing errors, they should show up in the |
+// developer console. |
+IN_PROC_BROWSER_TEST_F(ManifestBrowserTest, ParsingErrorsManifest) { |
+ GURL test_url = GetTestUrl("manifest", "parsing-errors.html"); |
Peter Beverloo
2014/11/27 13:24:31
This file seems to be missing?
mlamouri (slow - plz ping)
2014/11/27 13:49:08
Done.
|
+ |
+ TestNavigationObserver navigation_observer(shell()->web_contents(), 1); |
+ shell()->LoadURL(test_url); |
+ navigation_observer.Wait(); |
+ |
+ GetManifestAndWait(); |
+ EXPECT_TRUE(manifest().IsEmpty()); |
+ EXPECT_EQ(6, ManifestBrowserTest::console_errors_count_); |
} |
} // namespace content |