// Copyright (c) 2016 GitHub, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #ifndef ATOM_BROWSER_WEB_CONTENTS_PERMISSION_HELPER_H_ #define ATOM_BROWSER_WEB_CONTENTS_PERMISSION_HELPER_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" namespace atom { // Applies the permission requested for WebContents. class WebContentsPermissionHelper : public content::WebContentsUserData { public: ~WebContentsPermissionHelper() override; enum class PermissionType { POINTER_LOCK = static_cast(content::PermissionType::NUM) + 1, FULLSCREEN, OPEN_EXTERNAL, }; void RequestFullscreenPermission( const base::Callback& callback); void RequestMediaAccessPermission( const content::MediaStreamRequest& request, const content::MediaResponseCallback& callback); void RequestWebNotificationPermission( const base::Callback& callback); void RequestPointerLockPermission(bool user_gesture); void RequestOpenExternalPermission( const base::Callback& callback, bool user_gesture, const GURL& url); private: explicit WebContentsPermissionHelper(content::WebContents* web_contents); friend class content::WebContentsUserData; void RequestPermission( content::PermissionType permission, const base::Callback& callback, bool user_gesture = false); void RequestPermissionWithDetails( content::PermissionType permission, const base::Callback& callback, bool user_gesture, const base::DictionaryValue* details); content::WebContents* web_contents_; DISALLOW_COPY_AND_ASSIGN(WebContentsPermissionHelper); }; } // namespace atom #endif // ATOM_BROWSER_WEB_CONTENTS_PERMISSION_HELPER_H_