From 0ad4c3ca938472a91376571e69bb906b96139847 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Mon, 11 Aug 2014 14:08:23 +0800 Subject: [PATCH 1/5] Add custom ResourceDispatcherHostDelegate. --- atom.gyp | 2 ++ atom/browser/atom_browser_client.cc | 8 +++++ atom/browser/atom_browser_client.h | 5 +++ .../atom_resource_dispatcher_host_delegate.cc | 31 +++++++++++++++++++ .../atom_resource_dispatcher_host_delegate.h | 31 +++++++++++++++++++ atom/browser/default_app/index.html | 2 ++ 6 files changed, 79 insertions(+) create mode 100644 atom/browser/atom_resource_dispatcher_host_delegate.cc create mode 100644 atom/browser/atom_resource_dispatcher_host_delegate.h diff --git a/atom.gyp b/atom.gyp index bf8b33655d4e..1dbf2c41a553 100644 --- a/atom.gyp +++ b/atom.gyp @@ -92,6 +92,8 @@ 'atom/browser/atom_browser_main_parts_mac.mm', 'atom/browser/atom_javascript_dialog_manager.cc', 'atom/browser/atom_javascript_dialog_manager.h', + 'atom/browser/atom_resource_dispatcher_host_delegate.cc', + 'atom/browser/atom_resource_dispatcher_host_delegate.h', 'atom/browser/browser.cc', 'atom/browser/browser.h', 'atom/browser/browser_linux.cc', diff --git a/atom/browser/atom_browser_client.cc b/atom/browser/atom_browser_client.cc index b62bc37b4b4e..d43b46783ce8 100644 --- a/atom/browser/atom_browser_client.cc +++ b/atom/browser/atom_browser_client.cc @@ -6,11 +6,13 @@ #include "atom/browser/atom_browser_context.h" #include "atom/browser/atom_browser_main_parts.h" +#include "atom/browser/atom_resource_dispatcher_host_delegate.h" #include "atom/browser/native_window.h" #include "atom/browser/net/atom_url_request_context_getter.h" #include "atom/browser/window_list.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" +#include "content/public/browser/resource_dispatcher_host.h" #include "content/public/browser/site_instance.h" #include "content/public/browser/web_contents.h" #include "ui/base/l10n/l10n_util.h" @@ -54,6 +56,12 @@ net::URLRequestContextGetter* AtomBrowserClient::CreateRequestContext( CreateRequestContext(protocol_handlers); } +void AtomBrowserClient::ResourceDispatcherHostCreated() { + resource_dispatcher_delegate_.reset(new AtomResourceDispatcherHostDelegate); + content::ResourceDispatcherHost::Get()->SetDelegate( + resource_dispatcher_delegate_.get()); +} + void AtomBrowserClient::OverrideWebkitPrefs( content::RenderViewHost* render_view_host, const GURL& url, diff --git a/atom/browser/atom_browser_client.h b/atom/browser/atom_browser_client.h index 8f74dcfae6df..afbc895f09eb 100644 --- a/atom/browser/atom_browser_client.h +++ b/atom/browser/atom_browser_client.h @@ -11,6 +11,8 @@ namespace atom { +class AtomResourceDispatcherHostDelegate; + class AtomBrowserClient : public brightray::BrowserClient { public: AtomBrowserClient(); @@ -22,6 +24,7 @@ class AtomBrowserClient : public brightray::BrowserClient { content::BrowserContext* browser_context, content::ProtocolHandlerMap* protocol_handlers, content::ProtocolHandlerScopedVector protocol_interceptors) OVERRIDE; + virtual void ResourceDispatcherHostCreated() OVERRIDE; virtual void OverrideWebkitPrefs(content::RenderViewHost* render_view_host, const GURL& url, WebPreferences* prefs) OVERRIDE; @@ -37,6 +40,8 @@ class AtomBrowserClient : public brightray::BrowserClient { virtual brightray::BrowserMainParts* OverrideCreateBrowserMainParts( const content::MainFunctionParams&) OVERRIDE; + scoped_ptr resource_dispatcher_delegate_; + // The render process which would be swapped out soon. content::RenderProcessHost* dying_render_process_; diff --git a/atom/browser/atom_resource_dispatcher_host_delegate.cc b/atom/browser/atom_resource_dispatcher_host_delegate.cc new file mode 100644 index 000000000000..49038e617671 --- /dev/null +++ b/atom/browser/atom_resource_dispatcher_host_delegate.cc @@ -0,0 +1,31 @@ +// Copyright (c) 2014 GitHub, Inc. All rights reserved. +// Use of this source code is governed by the MIT license that can be +// found in the LICENSE file. + +#include "atom/browser/atom_resource_dispatcher_host_delegate.h" + +#include "base/logging.h" +#include "net/http/http_response_headers.h" +#include "net/url_request/url_request.h" + +namespace atom { + +AtomResourceDispatcherHostDelegate::AtomResourceDispatcherHostDelegate() { +} + +AtomResourceDispatcherHostDelegate::~AtomResourceDispatcherHostDelegate() { +} + +void AtomResourceDispatcherHostDelegate::OnResponseStarted( + net::URLRequest* request, + content::ResourceContext* resource_context, + content::ResourceResponse* response, + IPC::Sender* sender) { + /* + net::HttpResponseHeaders* response_headers = request->response_headers(); + if (response_headers && response_headers->HasHeader("x-frame-options")) + response_headers->RemoveHeader("x-frame-options"); + */ +} + +} // namespace atom diff --git a/atom/browser/atom_resource_dispatcher_host_delegate.h b/atom/browser/atom_resource_dispatcher_host_delegate.h new file mode 100644 index 000000000000..10e993bcf022 --- /dev/null +++ b/atom/browser/atom_resource_dispatcher_host_delegate.h @@ -0,0 +1,31 @@ +// Copyright (c) 2014 GitHub, Inc. All rights reserved. +// Use of this source code is governed by the MIT license that can be +// found in the LICENSE file. + +#ifndef ATOM_BROWSER_ATOM_RESOURCE_DISPATCHER_HOST_DELEGATE_H_ +#define ATOM_BROWSER_ATOM_RESOURCE_DISPATCHER_HOST_DELEGATE_H_ + +#include "base/compiler_specific.h" +#include "content/public/browser/resource_dispatcher_host_delegate.h" + +namespace atom { + +class AtomResourceDispatcherHostDelegate + : public content::ResourceDispatcherHostDelegate { + public: + AtomResourceDispatcherHostDelegate(); + virtual ~AtomResourceDispatcherHostDelegate(); + + // content::ResourceDispatcherHostDelegate: + virtual void OnResponseStarted(net::URLRequest* request, + content::ResourceContext* resource_context, + content::ResourceResponse* response, + IPC::Sender* sender) OVERRIDE; + + private: + DISALLOW_COPY_AND_ASSIGN(AtomResourceDispatcherHostDelegate); +}; + +} // namespace atom + +#endif // ATOM_BROWSER_ATOM_RESOURCE_DISPATCHER_HOST_DELEGATE_H_ diff --git a/atom/browser/default_app/index.html b/atom/browser/default_app/index.html index df6001242836..1a689d8a6b33 100644 --- a/atom/browser/default_app/index.html +++ b/atom/browser/default_app/index.html @@ -62,6 +62,8 @@ + +