web_view_permission_helper_delegate.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project// Copyright 2014 The Chromium Authors. All rights reserved. 2105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project// Use of this source code is governed by a BSD-style license that can be 3105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project// found in the LICENSE file. 4105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 5105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project#ifndef EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIWE_PERMISSION_HELPER_DELEGATE_H_ 6105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project#define EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIWE_PERMISSION_HELPER_DELEGATE_H_ 7105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 8105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project#include "content/public/browser/web_contents.h" 9105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project#include "content/public/browser/web_contents_observer.h" 10105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project#include "content/public/common/media_stream_request.h" 11105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project#include "extensions/browser/guest_view/web_view/web_view_permission_helper.h" 12105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 13105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Projectnamespace extensions { 14105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 15105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project// A delegate class of WebViewPermissionHelper to request permissions that are 16105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project// not a part of extensions. 17105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Projectclass WebViewPermissionHelperDelegate : public content::WebContentsObserver { 18105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project public: 19105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project explicit WebViewPermissionHelperDelegate( 20105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project WebViewPermissionHelper* web_view_permission_helper); 21105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project virtual ~WebViewPermissionHelperDelegate(); 22105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 23105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project virtual void CanDownload( 24105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project content::RenderViewHost* render_view_host, 25105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project const GURL& url, 26105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project const std::string& request_method, 27105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project const base::Callback<void(bool)>& callback) {} 28105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 29105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project virtual void RequestPointerLockPermission( 30105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project bool user_gesture, 31105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project bool last_unlocked_by_target, 32105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project const base::Callback<void(bool)>& callback) {} 33105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 34105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // Requests Geolocation Permission from the embedder. 35105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project virtual void RequestGeolocationPermission( 36105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project int bridge_id, 37105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project const GURL& requesting_frame, 38105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project bool user_gesture, 39105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project const base::Callback<void(bool)>& callback) {} 40105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 41105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project virtual void CancelGeolocationPermissionRequest(int bridge_id) {} 42105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 43105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project virtual void RequestFileSystemPermission( 44105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project const GURL& url, 45105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project bool allowed_by_default, 46105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project const base::Callback<void(bool)>& callback) {} 47105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 48105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // Called when file system access is requested by the guest content using the 49105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // asynchronous HTML5 file system API. The request is plumbed through the 50105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // <webview> permission request API. The request will be: 51105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // - Allowed if the embedder explicitly allowed it. 52105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // - Denied if the embedder explicitly denied. 53105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // - Determined by the guest's content settings if the embedder does not 54105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // perform an explicit action. 55105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // If access was blocked due to the page's content settings, 56105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // |blocked_by_policy| should be true, and this function should invoke 57105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // OnContentBlocked. 58105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project virtual void FileSystemAccessedAsync( 59105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project int render_process_id, 60105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project int render_frame_id, 61105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project int request_id, 62105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project const GURL& url, 63105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project bool blocked_by_policy) {} 64105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 65105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // Called when file system access is requested by the guest content using the 66105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // synchronous HTML5 file system API in a worker thread or shared worker. The 67105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // request is plumbed through the <webview> permission request API. The 68105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // request will be: 69105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // - Allowed if the embedder explicitly allowed it. 70105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // - Denied if the embedder explicitly denied. 71105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // - Determined by the guest's content settings if the embedder does not 72105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // perform an explicit action. 73105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // If access was blocked due to the page's content settings, 74105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // |blocked_by_policy| should be true, and this function should invoke 75105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project // OnContentBlocked. 76105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project virtual void FileSystemAccessedSync( 77105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project int render_process_id, 78105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project int render_frame_id, 79806cdd82f0b5b1f720ee26ef3f20c8c1ec034f12Yu Shan Emily Lau const GURL& url, 80105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project bool blocked_by_policy, 81105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project IPC::Message* reply_msg) {} 82105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 83105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project WebViewPermissionHelper* web_view_permission_helper() const { 84105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project return web_view_permission_helper_; 85c8c7ca7bd769df9288575b322e10ebf1fb22e4a5Brett Chabot } 86c8c7ca7bd769df9288575b322e10ebf1fb22e4a5Brett Chabot 87105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project private: 88806cdd82f0b5b1f720ee26ef3f20c8c1ec034f12Yu Shan Emily Lau WebViewPermissionHelper* const web_view_permission_helper_; 89105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 90105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project DISALLOW_COPY_AND_ASSIGN(WebViewPermissionHelperDelegate); 91105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project}; 92105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 93105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project} // namespace extensions 94105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 95105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project#endif // EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIWE_PERMISSION_HELPER_DELEGATE_H_ 96105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project