 Chromium Code Reviews
 Chromium Code Reviews Issue 235923003:
  <webview>: Move download permission to chrome  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@move_media_to_chrome
    
  
    Issue 235923003:
  <webview>: Move download permission to chrome  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@move_media_to_chrome| Index: chrome/browser/guestview/webview/webview_guest.cc | 
| diff --git a/chrome/browser/guestview/webview/webview_guest.cc b/chrome/browser/guestview/webview/webview_guest.cc | 
| index 256c42a7b470941bbca1da290f15a78d106bd5bf..e874a146690118bfff06f5eabcef5a8edaa13875 100644 | 
| --- a/chrome/browser/guestview/webview/webview_guest.cc | 
| +++ b/chrome/browser/guestview/webview/webview_guest.cc | 
| @@ -77,8 +77,6 @@ static std::string TerminationStatusToString(base::TerminationStatus status) { | 
| static std::string PermissionTypeToString(BrowserPluginPermissionType type) { | 
| switch (type) { | 
| - case BROWSER_PLUGIN_PERMISSION_TYPE_DOWNLOAD: | 
| - return webview::kPermissionTypeDownload; | 
| case BROWSER_PLUGIN_PERMISSION_TYPE_NEW_WINDOW: | 
| return webview::kPermissionTypeNewWindow; | 
| case BROWSER_PLUGIN_PERMISSION_TYPE_POINTER_LOCK: | 
| @@ -91,6 +89,8 @@ static std::string PermissionTypeToString(BrowserPluginPermissionType type) { | 
| default: { | 
| WebViewPermissionType webview = static_cast<WebViewPermissionType>(type); | 
| switch (webview) { | 
| + case WEB_VIEW_PERMISSION_TYPE_DOWNLOAD: | 
| + return webview::kPermissionTypeDownload; | 
| case WEB_VIEW_PERMISSION_TYPE_GEOLOCATION: | 
| return webview::kPermissionTypeGeolocation; | 
| case WEB_VIEW_PERMISSION_TYPE_LOAD_PLUGIN: | 
| @@ -193,10 +193,6 @@ void WebViewGuest::RecordUserInitiatedUMA(const PermissionResponseInfo& info, | 
| // scenario would be: an embedder allows geolocation request but doesn't | 
| // have geolocation access on its own. | 
| switch (info.permission_type) { | 
| - case BROWSER_PLUGIN_PERMISSION_TYPE_DOWNLOAD: | 
| - content::RecordAction( | 
| - UserMetricsAction("BrowserPlugin.PermissionAllow.Download")); | 
| - break; | 
| case BROWSER_PLUGIN_PERMISSION_TYPE_POINTER_LOCK: | 
| content::RecordAction( | 
| UserMetricsAction("BrowserPlugin.PermissionAllow.PointerLock")); | 
| @@ -226,6 +222,10 @@ void WebViewGuest::RecordUserInitiatedUMA(const PermissionResponseInfo& info, | 
| content::RecordAction( | 
| UserMetricsAction("WebView.PermissionAllow.Media")); | 
| break; | 
| + case WEB_VIEW_PERMISSION_TYPE_DOWNLOAD: | 
| + content::RecordAction( | 
| + UserMetricsAction("WebView.PermissionAllow.Download")); | 
| + break; | 
| default: | 
| break; | 
| } | 
| @@ -233,10 +233,6 @@ void WebViewGuest::RecordUserInitiatedUMA(const PermissionResponseInfo& info, | 
| } | 
| } else { | 
| switch (info.permission_type) { | 
| - case BROWSER_PLUGIN_PERMISSION_TYPE_DOWNLOAD: | 
| - content::RecordAction( | 
| - UserMetricsAction("BrowserPlugin.PermissionDeny.Download")); | 
| - break; | 
| case BROWSER_PLUGIN_PERMISSION_TYPE_POINTER_LOCK: | 
| content::RecordAction( | 
| UserMetricsAction("BrowserPlugin.PermissionDeny.PointerLock")); | 
| @@ -266,6 +262,10 @@ void WebViewGuest::RecordUserInitiatedUMA(const PermissionResponseInfo& info, | 
| content::RecordAction( | 
| UserMetricsAction("WebView.PermissionDeny.Media")); | 
| break; | 
| + case WEB_VIEW_PERMISSION_TYPE_DOWNLOAD: | 
| + content::RecordAction( | 
| + UserMetricsAction("WebView.PermissionDeny.Download")); | 
| + break; | 
| default: | 
| break; | 
| } | 
| @@ -641,6 +641,13 @@ void WebViewGuest::OnWebViewMediaPermissionResponse( | 
| RequestMediaAccessPermission(embedder_web_contents(), request, callback); | 
| } | 
| +void WebViewGuest::OnWebViewDownloadPermissionResponse( | 
| + const base::Callback<void(bool)>& callback, | 
| + bool allow, | 
| + const std::string& user_input) { | 
| + callback.Run(allow && attached()); | 
| +} | 
| + | 
| WebViewGuest::SetPermissionResult WebViewGuest::SetPermission( | 
| int request_id, | 
| PermissionResponseAction action, | 
| @@ -903,6 +910,26 @@ void WebViewGuest::RequestMediaAccessPermission( | 
| false /* allowed_by_default */); | 
| } | 
| +void WebViewGuest::CanDownload( | 
| + const std::string& request_method, | 
| + const GURL& url, | 
| + const base::Callback<void(bool)>& callback) { | 
| + base::DictionaryValue request_info; | 
| + request_info.Set( | 
| + guestview::kUrl, | 
| + base::Value::CreateStringValue(url.spec())); | 
| + RequestPermission( | 
| + static_cast<BrowserPluginPermissionType>( | 
| + WEB_VIEW_PERMISSION_TYPE_DOWNLOAD), | 
| + request_info, | 
| + base::Bind(&WebViewGuest::OnWebViewDownloadPermissionResponse, | 
| + base::Unretained(this), | 
| + callback), | 
| + false /* allowed_by_default */); | 
| +} | 
| + | 
| 
lazyboy
2014/04/11 23:25:05
remove empty lines
 
Fady Samuel
2014/04/14 22:59:09
Done.
 | 
| + | 
| + | 
| #if defined(OS_CHROMEOS) | 
| void WebViewGuest::OnAccessibilityStatusChanged( | 
| const chromeos::AccessibilityStatusEventDetails& details) { |