| Index: content/browser/security_exploit_browsertest.cc
|
| diff --git a/content/browser/security_exploit_browsertest.cc b/content/browser/security_exploit_browsertest.cc
|
| index f9d6d7f935e50d0255017c7e2c568db8317eb30a..a4a6da90b129aa62c48d8d3a9a7e71fa38ca5bd2 100644
|
| --- a/content/browser/security_exploit_browsertest.cc
|
| +++ b/content/browser/security_exploit_browsertest.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/macros.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "build/build_config.h"
|
| +#include "content/browser/bad_message.h"
|
| #include "content/browser/dom_storage/dom_storage_context_wrapper.h"
|
| #include "content/browser/dom_storage/session_storage_namespace_impl.h"
|
| #include "content/browser/frame_host/navigator.h"
|
| @@ -24,6 +25,7 @@
|
| #include "content/public/browser/content_browser_client.h"
|
| #include "content/public/browser/interstitial_page.h"
|
| #include "content/public/browser/interstitial_page_delegate.h"
|
| +#include "content/public/browser/resource_context.h"
|
| #include "content/public/browser/resource_dispatcher_host.h"
|
| #include "content/public/browser/storage_partition.h"
|
| #include "content/public/common/appcache_info.h"
|
| @@ -401,15 +403,15 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest,
|
| ASSERT_EQ("\"okay2\"", interstitial->last_command());
|
| }
|
|
|
| -class IsolatedAppContentBrowserClient : public TestContentBrowserClient {
|
| - public:
|
| - bool IsIllegalOrigin(content::ResourceContext* resource_context,
|
| - int child_process_id,
|
| - const GURL& origin) override {
|
| - // Simulate a case where an app origin is not in an app process.
|
| - return true;
|
| - }
|
| -};
|
| +// Intercepts the HTTP origin header and on being invoked once it is found
|
| +// aborts the requeest.
|
| +void OnHttpHeaderReceived(const std::string& header,
|
| + const std::string& value,
|
| + int child_process_id,
|
| + content::ResourceContext* resource_context,
|
| + OnHeaderProcessedCallback callback) {
|
| + callback.Run(false, content::bad_message::RDH_ILLEGAL_ORIGIN);
|
| +}
|
|
|
| // Renderer processes should not be able to spoof Origin HTTP headers.
|
| IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest, InvalidOriginHeaders) {
|
| @@ -445,10 +447,9 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest, InvalidOriginHeaders) {
|
| // ResourceRequest IPC can't be created in a test outside content/.
|
| NavigateToURL(shell(), web_url);
|
| {
|
| - // Set up a ContentBrowserClient that simulates an app URL in a non-app
|
| - // process.
|
| - IsolatedAppContentBrowserClient app_client;
|
| - ContentBrowserClient* old_client = SetBrowserClientForTesting(&app_client);
|
| + content::ResourceDispatcherHost::Get()->RegisterInterceptor(
|
| + "Origin", "", base::Bind(&OnHttpHeaderReceived));
|
| +
|
| RenderProcessHostWatcher web_process_killed(
|
| web_rfh->GetProcess(),
|
| RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT);
|
| @@ -458,7 +459,6 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest, InvalidOriginHeaders) {
|
| kRequestIdNotPreviouslyUsed,
|
| embedder_isolated_origin_msg));
|
| web_process_killed.Wait();
|
| - SetBrowserClientForTesting(old_client);
|
| }
|
|
|
| // Web processes cannot make XHRs with invalid Origin headers.
|
|
|