summaryrefslogtreecommitdiffstats
path: root/content/browser/browser_plugin/browser_plugin_guest.h
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/browser_plugin/browser_plugin_guest.h')
-rw-r--r--content/browser/browser_plugin/browser_plugin_guest.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/content/browser/browser_plugin/browser_plugin_guest.h b/content/browser/browser_plugin/browser_plugin_guest.h
index aaa2cc9..605cafc 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.h
+++ b/content/browser/browser_plugin/browser_plugin_guest.h
@@ -172,9 +172,10 @@ class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver,
const gfx::Rect& initial_pos,
bool user_gesture,
bool* was_blocked) OVERRIDE;
- virtual bool CanDownload(RenderViewHost* render_view_host,
+ virtual void CanDownload(RenderViewHost* render_view_host,
int request_id,
- const std::string& request_method) OVERRIDE;
+ const std::string& request_method,
+ const base::Callback<void(bool)>& callback) OVERRIDE;
virtual bool HandleContextMenu(const ContextMenuParams& params) OVERRIDE;
virtual void WebContentsCreated(WebContents* source_contents,
int64 source_frame_id,
@@ -219,7 +220,7 @@ class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver,
void Attach(WebContentsImpl* embedder_web_contents,
BrowserPluginHostMsg_CreateGuest_Params params);
- // Requests geolocation permission through embedder js api.
+ // Requests geolocation permission through Embedder JavaScript API.
void AskEmbedderForGeolocationPermission(int bridge_id,
const GURL& requesting_frame,
const GeolocationCallback& callback);
@@ -228,6 +229,7 @@ class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver,
// Embedder sets permission to allow or deny geolocation request.
void SetGeolocationPermission(int request_id, bool allowed);
+
// Allow the embedder to call this for unhandled messages when
// BrowserPluginGuest is already destroyed.
static void AcknowledgeBufferPresent(int route_id,
@@ -388,10 +390,17 @@ class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver,
void OnUpdateRect(const ViewHostMsg_UpdateRect_Params& params);
// Helpers for |OnRespondPermission|.
+ void OnRespondPermissionDownload(int request_id, bool should_allow);
void OnRespondPermissionGeolocation(int request_id, bool should_allow);
void OnRespondPermissionMedia(int request_id, bool should_allow);
void OnRespondPermissionNewWindow(int request_id, bool should_allow);
+ // Requests download permission through embedder JavaScript API after
+ // retrieving url information from IO thread.
+ void DidRetrieveDownloadURLFromRequestId(const std::string& request_method,
+ int permission_request_id,
+ const std::string& url);
+
// Weak pointer used to ask GeolocationPermissionContext about geolocation
// permission.
base::WeakPtrFactory<BrowserPluginGuest> weak_ptr_factory_;
@@ -441,6 +450,9 @@ class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver,
typedef std::map<int, int> NewWindowRequestMap;
NewWindowRequestMap new_window_request_map_;
+ typedef std::map<int, base::Callback<void(bool)> > DownloadRequestMap;
+ DownloadRequestMap download_request_callback_map_;
+
DISALLOW_COPY_AND_ASSIGN(BrowserPluginGuest);
};