Index: chrome/browser/guest_view/web_view/web_view_guest.h |
diff --git a/chrome/browser/guest_view/web_view/web_view_guest.h b/chrome/browser/guest_view/web_view/web_view_guest.h |
index 018ce7861e5c259af20674e9436281abecc567d9..c8bf5cf43236888a503cb4d324fbb45cf29740a8 100644 |
--- a/chrome/browser/guest_view/web_view/web_view_guest.h |
+++ b/chrome/browser/guest_view/web_view/web_view_guest.h |
@@ -12,6 +12,7 @@ |
#include "chrome/browser/guest_view/guest_view.h" |
#include "chrome/browser/guest_view/web_view/javascript_dialog_helper.h" |
#include "chrome/browser/guest_view/web_view/web_view_find_helper.h" |
+#include "chrome/browser/guest_view/web_view/web_view_permission_helper.h" |
#include "chrome/browser/guest_view/web_view/web_view_permission_types.h" |
#include "chrome/common/extensions/api/webview.h" |
#include "content/public/browser/javascript_dialog_manager.h" |
@@ -202,24 +203,13 @@ class WebViewGuest : public GuestView<WebViewGuest>, |
bool allowed_by_default, |
const base::Callback<void(bool)>& callback); |
- enum PermissionResponseAction { |
- DENY, |
- ALLOW, |
- DEFAULT |
- }; |
- |
- enum SetPermissionResult { |
- SET_PERMISSION_INVALID, |
- SET_PERMISSION_ALLOWED, |
- SET_PERMISSION_DENIED |
- }; |
- |
// Responds to the permission request |request_id| with |action| and |
// |user_input|. Returns whether there was a pending request for the provided |
// |request_id|. |
- SetPermissionResult SetPermission(int request_id, |
- PermissionResponseAction action, |
- const std::string& user_input); |
+ WebViewPermissionHelper::SetPermissionResult SetPermission( |
+ int request_id, |
+ WebViewPermissionHelper::PermissionResponseAction action, |
+ const std::string& user_input); |
// Overrides the user agent for this guest. |
// This affects subsequent guest navigations. |
@@ -276,72 +266,20 @@ class WebViewGuest : public GuestView<WebViewGuest>, |
bool blocked_by_policy, |
IPC::Message* reply_msg); |
+ WebViewPermissionHelper* GetWebViewPermissionHelper() { |
+ return web_view_permission_helper_.get(); |
+ } |
private: |
virtual ~WebViewGuest(); |
- // A map to store the callback for a request keyed by the request's id. |
- struct PermissionResponseInfo { |
- PermissionResponseCallback callback; |
- WebViewPermissionType permission_type; |
- bool allowed_by_default; |
- PermissionResponseInfo(); |
- PermissionResponseInfo(const PermissionResponseCallback& callback, |
- WebViewPermissionType permission_type, |
- bool allowed_by_default); |
- ~PermissionResponseInfo(); |
- }; |
- |
- static void RecordUserInitiatedUMA(const PermissionResponseInfo& info, |
- bool allow); |
- |
// Returns the top level items (ignoring submenus) as Value. |
static scoped_ptr<base::ListValue> MenuModelToValue( |
const ui::SimpleMenuModel& menu_model); |
- void OnWebViewGeolocationPermissionResponse( |
- int bridge_id, |
- bool user_gesture, |
- const base::Callback<void(bool)>& callback, |
- bool allow, |
- const std::string& user_input); |
- |
- void OnWebViewFileSystemPermissionResponse( |
- const base::Callback<void(bool)>& callback, |
- bool allow, |
- const std::string& user_input); |
- |
- void OnWebViewMediaPermissionResponse( |
- const content::MediaStreamRequest& request, |
- const content::MediaResponseCallback& callback, |
- bool allow, |
- const std::string& user_input); |
- |
- void OnWebViewDownloadPermissionResponse( |
- const base::Callback<void(bool)>& callback, |
- bool allow, |
- const std::string& user_input); |
- |
- void OnWebViewPointerLockPermissionResponse( |
- const base::Callback<void(bool)>& callback, |
- bool allow, |
- const std::string& user_input); |
- |
void OnWebViewNewWindowResponse(int new_window_instance_id, |
bool allow, |
const std::string& user_input); |
- static void FileSystemAccessedAsyncResponse(int render_process_id, |
- int render_frame_id, |
- int request_id, |
- const GURL& url, |
- bool allowed); |
- |
- static void FileSystemAccessedSyncResponse(int render_process_id, |
- int render_frame_id, |
- const GURL& url, |
- IPC::Message* reply_msg, |
- bool allowed); |
- |
// WebContentsObserver implementation. |
virtual void DidCommitProvisionalLoadForFrame( |
int64 frame_id, |
@@ -399,11 +337,6 @@ class WebViewGuest : public GuestView<WebViewGuest>, |
void InjectChromeVoxIfNeeded(content::RenderViewHost* render_view_host); |
- // Bridge IDs correspond to a geolocation request. This method will remove |
- // the bookkeeping for a particular geolocation request associated with the |
- // provided |bridge_id|. It returns the request ID of the geolocation request. |
- int RemoveBridgeID(int bridge_id); |
- |
void LoadURLWithParams(const GURL& url, |
const content::Referrer& referrer, |
content::PageTransition transition_type, |
@@ -448,13 +381,6 @@ class WebViewGuest : public GuestView<WebViewGuest>, |
// We only need the ids to be unique for a given WebViewGuest. |
int pending_context_menu_request_id_; |
- // A counter to generate a unique request id for a permission request. |
- // We only need the ids to be unique for a given WebViewGuest. |
- int next_permission_request_id_; |
- |
- typedef std::map<int, PermissionResponseInfo> RequestMap; |
- RequestMap pending_permission_requests_; |
- |
// True if the user agent is overridden. |
bool is_overriding_user_agent_; |
@@ -476,6 +402,9 @@ class WebViewGuest : public GuestView<WebViewGuest>, |
// Handles the JavaScript dialog requests. |
JavaScriptDialogHelper javascript_dialog_helper_; |
+ // Handels permission requests. |
+ scoped_ptr<WebViewPermissionHelper> web_view_permission_helper_; |
+ |
friend void WebviewFindHelper::DispatchFindUpdateEvent(bool canceled, |
bool final_update); |
@@ -489,8 +418,6 @@ class WebViewGuest : public GuestView<WebViewGuest>, |
accessibility_subscription_; |
#endif |
- std::map<int, int> bridge_id_to_request_id_map_; |
- |
// Tracks the name, and target URL of the new window. Once the first |
// navigation commits, we no longer track this information. |
struct NewWindowInfo { |