Avoid a crash when starting a download by disallowing downloads
Chromium crashes when starting a download if a content::DownloadManagerDelegate is not provided. We now provide a default implementation of content::DownloadManagerDelegate which disallows all downloads.
This commit is contained in:
		
					parent
					
						
							
								bacf11d53f
							
						
					
				
			
			
				commit
				
					
						56b904947b
					
				
			
		
					 5 changed files with 38 additions and 1 deletions
				
			
		|  | @ -36,6 +36,8 @@ | |||
|         'browser/default_web_contents_delegate_mac.mm', | ||||
|         'browser/devtools_delegate.cc', | ||||
|         'browser/devtools_delegate.h', | ||||
|         'browser/download_manager_delegate.cc', | ||||
|         'browser/download_manager_delegate.h', | ||||
|         'browser/inspectable_web_contents.cc', | ||||
|         'browser/inspectable_web_contents.h', | ||||
|         'browser/inspectable_web_contents_impl.cc', | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ | |||
| 
 | ||||
| #include "browser_context.h" | ||||
| 
 | ||||
| #include "browser/download_manager_delegate.h" | ||||
| #include "browser/inspectable_web_contents_impl.h" | ||||
| #include "browser/network_delegate.h" | ||||
| #include "common/application_info.h" | ||||
|  | @ -116,7 +117,9 @@ content::ResourceContext* BrowserContext::GetResourceContext() { | |||
| } | ||||
| 
 | ||||
| content::DownloadManagerDelegate* BrowserContext::GetDownloadManagerDelegate() { | ||||
|   return nullptr; | ||||
|   if (!download_manager_delegate_) | ||||
|     download_manager_delegate_.reset(new DownloadManagerDelegate); | ||||
|   return download_manager_delegate_.get(); | ||||
| } | ||||
| 
 | ||||
| content::GeolocationPermissionContext* BrowserContext::GetGeolocationPermissionContext() { | ||||
|  |  | |||
|  | @ -13,6 +13,7 @@ class PrefService; | |||
| 
 | ||||
| namespace brightray { | ||||
| 
 | ||||
| class DownloadManagerDelegate; | ||||
| class NetworkDelegate; | ||||
| class URLRequestContextGetter; | ||||
| 
 | ||||
|  | @ -55,6 +56,7 @@ private: | |||
|   scoped_ptr<ResourceContext> resource_context_; | ||||
|   scoped_refptr<URLRequestContextGetter> url_request_getter_; | ||||
|   scoped_ptr<PrefService> prefs_; | ||||
|   scoped_ptr<DownloadManagerDelegate> download_manager_delegate_; | ||||
| 
 | ||||
|   DISALLOW_COPY_AND_ASSIGN(BrowserContext); | ||||
| }; | ||||
|  |  | |||
							
								
								
									
										11
									
								
								brightray/browser/download_manager_delegate.cc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								brightray/browser/download_manager_delegate.cc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | |||
| #include "browser/download_manager_delegate.h" | ||||
| 
 | ||||
| namespace brightray { | ||||
| 
 | ||||
| DownloadManagerDelegate::DownloadManagerDelegate() { | ||||
| } | ||||
| 
 | ||||
| DownloadManagerDelegate::~DownloadManagerDelegate() { | ||||
| } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										19
									
								
								brightray/browser/download_manager_delegate.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								brightray/browser/download_manager_delegate.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| #ifndef BRIGHTRAY_BROWSER_DOWNLOAD_MANAGER_DELEGATE_H_ | ||||
| #define BRIGHTRAY_BROWSER_DOWNLOAD_MANAGER_DELEGATE_H_ | ||||
| 
 | ||||
| #include "content/public/browser/download_manager_delegate.h" | ||||
| 
 | ||||
| namespace brightray { | ||||
| 
 | ||||
| class DownloadManagerDelegate : public content::DownloadManagerDelegate { | ||||
|  public: | ||||
|   DownloadManagerDelegate(); | ||||
|   ~DownloadManagerDelegate(); | ||||
| 
 | ||||
|  private: | ||||
|   DISALLOW_COPY_AND_ASSIGN(DownloadManagerDelegate); | ||||
| }; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Adam Roben
				Adam Roben