diff --git a/atom/browser/api/atom_api_web_contents.cc b/atom/browser/api/atom_api_web_contents.cc index c6ab110b8327..fa19130422a8 100644 --- a/atom/browser/api/atom_api_web_contents.cc +++ b/atom/browser/api/atom_api_web_contents.cc @@ -1074,8 +1074,9 @@ void WebContents::SetPermissionRequestHandler(v8::Local val, args->ThrowError("Must pass null or function"); return; } - GetBrowserContext()->permission_manager() - ->SetPermissionRequestHandler(GetID(), handler); + auto permission_manager = static_cast( + web_contents()->GetBrowserContext()->GetPermissionManager()); + permission_manager->SetPermissionRequestHandler(GetID(), handler); } v8::Local WebContents::GetWebPreferences(v8::Isolate* isolate) { diff --git a/atom/browser/atom_browser_context.cc b/atom/browser/atom_browser_context.cc index 35358ac08a46..be004c8f6db8 100644 --- a/atom/browser/atom_browser_context.cc +++ b/atom/browser/atom_browser_context.cc @@ -65,7 +65,6 @@ std::string RemoveWhitespace(const std::string& str) { AtomBrowserContext::AtomBrowserContext(const std::string& partition, bool in_memory) : brightray::BrowserContext(partition, in_memory), - permission_manager_(new AtomPermissionManager), cert_verifier_(nullptr), job_factory_(new AtomURLRequestJobFactory), network_delegate_(new AtomNetworkDelegate), @@ -172,6 +171,8 @@ content::BrowserPluginGuestManager* AtomBrowserContext::GetGuestManager() { } content::PermissionManager* AtomBrowserContext::GetPermissionManager() { + if (!permission_manager_.get()) + permission_manager_.reset(new AtomPermissionManager); return permission_manager_.get(); } diff --git a/atom/browser/atom_browser_context.h b/atom/browser/atom_browser_context.h index 44cd1f5b79ee..d959adbc753a 100644 --- a/atom/browser/atom_browser_context.h +++ b/atom/browser/atom_browser_context.h @@ -51,10 +51,6 @@ class AtomBrowserContext : public brightray::BrowserContext { AtomNetworkDelegate* network_delegate() const { return network_delegate_; } - AtomPermissionManager* permission_manager() const { - return permission_manager_.get(); - } - private: scoped_ptr download_manager_delegate_; scoped_ptr guest_manager_; diff --git a/atom/browser/web_contents_permission_helper.cc b/atom/browser/web_contents_permission_helper.cc index 04a6a5d9883f..cf7ae1f30ecd 100644 --- a/atom/browser/web_contents_permission_helper.cc +++ b/atom/browser/web_contents_permission_helper.cc @@ -7,6 +7,7 @@ #include #include "atom/browser/atom_permission_manager.h" +#include "content/public/browser/browser_context.h" #include "content/public/browser/media_capture_devices.h" #include "content/public/browser/render_process_host.h" @@ -79,7 +80,8 @@ void WebContentsPermissionHelper::RequestPermission( content::PermissionType permission, const base::Callback& callback) { auto rfh = web_contents_->GetMainFrame(); - auto permission_manager = browser_context()->permission_manager(); + auto permission_manager = static_cast( + web_contents_->GetBrowserContext()->GetPermissionManager()); auto origin = web_contents_->GetLastCommittedURL(); permission_manager->RequestPermission(permission, rfh, origin, callback); } diff --git a/atom/browser/web_contents_permission_helper.h b/atom/browser/web_contents_permission_helper.h index 749e90184c22..6bd2bb2559e5 100644 --- a/atom/browser/web_contents_permission_helper.h +++ b/atom/browser/web_contents_permission_helper.h @@ -5,7 +5,6 @@ #ifndef ATOM_BROWSER_WEB_CONTENTS_PERMISSION_HELPER_H_ #define ATOM_BROWSER_WEB_CONTENTS_PERMISSION_HELPER_H_ -#include "atom/browser/atom_browser_context.h" #include "content/public/browser/permission_type.h" #include "content/public/browser/web_contents_user_data.h" #include "content/public/common/media_stream_request.h" @@ -24,10 +23,6 @@ class WebContentsPermissionHelper void RequestWebNotificationPermission( const base::Callback& callback); - AtomBrowserContext* browser_context() const { - return static_cast(web_contents_->GetBrowserContext()); - } - private: explicit WebContentsPermissionHelper(content::WebContents* web_contents); friend class content::WebContentsUserData;