Index: chrome/browser/download/download_ui_controller.cc |
diff --git a/chrome/browser/download/download_ui_controller.cc b/chrome/browser/download/download_ui_controller.cc |
index ae197a84cb20182f7f4803728ad6b461202d9264..c21aa817a64c5502d61716bf12e60a4cb6efa54f 100644 |
--- a/chrome/browser/download/download_ui_controller.cc |
+++ b/chrome/browser/download/download_ui_controller.cc |
@@ -19,12 +19,15 @@ |
#if defined(OS_ANDROID) |
#include "content/public/browser/android/download_controller_android.h" |
#else |
-#include "chrome/browser/download/notification/download_notification_manager.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser_finder.h" |
#include "chrome/browser/ui/host_desktop.h" |
#endif |
+#if defined(OS_CHROMEOS) |
+#include "chrome/browser/download/notification/download_notification_manager.h" |
+#endif |
+ |
namespace { |
// DownloadShelfUIControllerDelegate{Android,} is used when a |
@@ -104,22 +107,23 @@ DownloadUIController::DownloadUIController(content::DownloadManager* manager, |
scoped_ptr<Delegate> delegate) |
: download_notifier_(manager, this), |
delegate_(delegate.Pass()) { |
- if (!delegate_) { |
#if defined(OS_ANDROID) |
+ if (!delegate_) |
delegate_.reset(new AndroidUIControllerDelegate()); |
#else |
- // The delegate should not be invoked after the profile has gone away. This |
- // should be the case since DownloadUIController is owned by |
- // DownloadService, which in turn is a profile keyed service. |
- if (DownloadNotificationManager::IsEnabled()) { |
- delegate_.reset(new DownloadNotificationManager( |
- Profile::FromBrowserContext(manager->GetBrowserContext()))); |
- } else { |
- delegate_.reset(new DownloadShelfUIControllerDelegate( |
- Profile::FromBrowserContext(manager->GetBrowserContext()))); |
- } |
-#endif |
+#if defined(OS_CHROMEOS) |
+ if (!delegate_ && DownloadNotificationManager::IsEnabled()) { |
+ // The Profile is guaranteed to be valid since DownloadUIController is owned |
+ // by DownloadService, which in turn is a profile keyed service. |
+ delegate_.reset(new DownloadNotificationManager( |
+ Profile::FromBrowserContext(manager->GetBrowserContext()))); |
+ } |
+#endif // defined(OS_CHROMEOS) |
+ if (!delegate_) { |
+ delegate_.reset(new DownloadShelfUIControllerDelegate( |
+ Profile::FromBrowserContext(manager->GetBrowserContext()))); |
} |
+#endif // defined(OS_ANDROID) |
} |
DownloadUIController::~DownloadUIController() { |