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:
Adam Roben 2013-07-24 07:56:55 -04:00
parent bacf11d53f
commit 56b904947b
5 changed files with 38 additions and 1 deletions

View file

@ -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',

View file

@ -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() {

View file

@ -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);
};

View file

@ -0,0 +1,11 @@
#include "browser/download_manager_delegate.h"
namespace brightray {
DownloadManagerDelegate::DownloadManagerDelegate() {
}
DownloadManagerDelegate::~DownloadManagerDelegate() {
}
}

View 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