| Index: chrome/browser/prerender/prerender_browsertest.cc | 
| diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc | 
| index bc14f0fbfb0d7134bd9f4ac8406f0331ec6360dd..7b0c80d58549ead1a1f089391baa4211b37e5855 100644 | 
| --- a/chrome/browser/prerender/prerender_browsertest.cc | 
| +++ b/chrome/browser/prerender/prerender_browsertest.cc | 
| @@ -790,4 +790,175 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| NavigateToURL("files/prerender/prerender_fragment_location_hash.html"); | 
| } | 
|  | 
| +// Checks that ftp scheme is not supported for prerender. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderBadSchemeFtp) { | 
| +  PrerenderTestURL(GURL("ftp://ftp.example.com"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that ftp scheme is not supported for prerender when done as part of a | 
| +// client redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeFtpClientRedirect) { | 
| +  PrerenderTestURL(CreateClientRedirect("ftp://ftp.example.com"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that ftp scheme is not supported for prerender when done as part of a | 
| +// server redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeFtpServerRedirect) { | 
| +  PrerenderTestURL(CreateServerRedirect("ftp://ftp.example.com"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that gopher scheme is not supported for prerender. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderBadSchemeGopher) { | 
| +  PrerenderTestURL(GURL("gopher://gopher.example.com"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that gopher scheme is not supported for prerender when done as part of | 
| +// a client redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeGopherClientRedirect) { | 
| +  PrerenderTestURL(CreateClientRedirect("gopher://gopher.example.com"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that gopher scheme is not supported for prerender when done as part of | 
| +// a server redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeGopherServerRedirect) { | 
| +  PrerenderTestURL(CreateServerRedirect("gopher://gopher.example.com"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that news scheme is not supported for prerender. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderBadSchemeNews) { | 
| +  PrerenderTestURL(GURL("news:alt.religion.kibology"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that news scheme is not supported for prerender when done as part of | 
| +// a client redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeNewsClientRedirect) { | 
| +  PrerenderTestURL(CreateClientRedirect("news:alt.religion.kibology"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that news scheme is not supported for prerender when done as part of | 
| +// a server redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeNewsServerRedirect) { | 
| +  PrerenderTestURL(CreateServerRedirect("news:alt.religion.kibology"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that secure news scheme is not supported for prerender. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderBadSchemeSnews) { | 
| +  PrerenderTestURL(GURL("snews:alt.religion.kibology"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that snews scheme is not supported for prerender when done as part of | 
| +// a client redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeSnewsClientRedirect) { | 
| +  PrerenderTestURL(CreateClientRedirect("snews:alt.religion.kibology"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that snews scheme is not supported for prerender when done as part of | 
| +// a server redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeSnewsServerRedirect) { | 
| +  PrerenderTestURL(CreateServerRedirect("snews:alt.religion.kibology"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that chrome-extension scheme is not supported for prerender. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeChromeExtension) { | 
| +  PrerenderTestURL(GURL("chrome-extension://haoclkcoegjldmikeokmnfninfafegfm"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that chrome-extension scheme is not supported for prerender when done | 
| +// as part of a client redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeChromeExtensionClientRedirect) { | 
| +  PrerenderTestURL( | 
| +      CreateClientRedirect( | 
| +          "chrome-extension://haoclkcoegjldmikeokmnfninfafegfm"), | 
| +      FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +      1); | 
| +} | 
| + | 
| +// Checks that chrome-extension scheme is not supported for prerender when done | 
| +// as part of a server redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeChromeExtensionServerRedirect) { | 
| +  PrerenderTestURL( | 
| +      CreateServerRedirect( | 
| +          "chrome-extension://haoclkcoegjldmikeokmnfninfafegfm"), | 
| +      FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +      1); | 
| +} | 
| + | 
| +// Checks that unknown schemes are not supported for prerender. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderBadSchemeUnknown) { | 
| +  PrerenderTestURL(GURL("invalid://foo.bar.co.uk"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that unknown schemes are not supported for prerender when done as part | 
| +// of a client redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeUnknownClientRedirect) { | 
| +  PrerenderTestURL(CreateClientRedirect("invalid://foo.bar.co.uk"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +// Checks that invalid schemes are not supported for prerender when done as part | 
| +// of a server redirect. | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 
| +                       PrerenderBadSchemeUnknownServerRedirect) { | 
| +  PrerenderTestURL(CreateServerRedirect("invalid://foo.bar.co.uk"), | 
| +                   FINAL_STATUS_UNSUPPORTED_SCHEME, | 
| +                   1); | 
| +} | 
| + | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderXhrGet) { | 
| +  PrerenderTestURL("files/prerender/prerender_xhr_get.html", | 
| +                   FINAL_STATUS_USED, | 
| +                   1); | 
| +  NavigateToDestURL(); | 
| +} | 
| + | 
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderXhrPost) { | 
| +  PrerenderTestURL("files/prerender/prerender_xhr_post.html", | 
| +                   FINAL_STATUS_NOT_GET, | 
| +                   1); | 
| +} | 
| + | 
| +// TODO(cbentzel): Add tests for file, chrome, and about schemes, which fail | 
| +//                 at webkit resource load time. | 
| + | 
| }  // namespace prerender | 
|  |