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…
Reference in a new issue