Index: content/browser/browser_plugin/browser_plugin_guest.h |
diff --git a/content/browser/browser_plugin/browser_plugin_guest.h b/content/browser/browser_plugin/browser_plugin_guest.h |
index aaa2cc906d6fb982bda3d24a72ac77dee7259680..605cafca7edd9652bd7f986326d9228931ea6238 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); |
}; |