mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| diff --git chrome/browser/download/chrome_download_manager_delegate.cc chrome/browser/download/chrome_download_manager_delegate.cc
 | |
| index 5149acb874523..02ff8061b79c2 100644
 | |
| --- chrome/browser/download/chrome_download_manager_delegate.cc
 | |
| +++ chrome/browser/download/chrome_download_manager_delegate.cc
 | |
| @@ -31,6 +31,7 @@
 | |
|  #include "base/time/time.h"
 | |
|  #include "build/build_config.h"
 | |
|  #include "build/chromeos_buildflags.h"
 | |
| +#include "cef/libcef/features/features.h"
 | |
|  #include "chrome/browser/browser_process.h"
 | |
|  #include "chrome/browser/download/bubble/download_bubble_prefs.h"
 | |
|  #include "chrome/browser/download/download_core_service.h"
 | |
| @@ -158,6 +159,10 @@
 | |
|  #include "chrome/browser/ash/policy/skyvault/skyvault_rename_handler.h"
 | |
|  #endif
 | |
|  
 | |
| +#if BUILDFLAG(ENABLE_CEF)
 | |
| +#include "cef/libcef/browser/download_manager_delegate.h"
 | |
| +#endif
 | |
| +
 | |
|  using content::BrowserThread;
 | |
|  using content::DownloadManager;
 | |
|  using download::DownloadItem;
 | |
| @@ -516,6 +521,11 @@ ChromeDownloadManagerDelegate::ChromeDownloadManagerDelegate(Profile* profile)
 | |
|    download_dialog_bridge_ = std::make_unique<DownloadDialogBridge>();
 | |
|    download_message_bridge_ = std::make_unique<DownloadMessageBridge>();
 | |
|  #endif
 | |
| +
 | |
| +#if BUILDFLAG(ENABLE_CEF)
 | |
| +  cef_delegate_ =
 | |
| +      cef::DownloadManagerDelegate::Create(profile_->GetDownloadManager());
 | |
| +#endif
 | |
|  }
 | |
|  
 | |
|  ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() {
 | |
| @@ -575,6 +585,9 @@ void ChromeDownloadManagerDelegate::Shutdown() {
 | |
|      download_manager_->RemoveObserver(this);
 | |
|      download_manager_ = nullptr;
 | |
|    }
 | |
| +#if BUILDFLAG(ENABLE_CEF)
 | |
| +  cef_delegate_.reset();
 | |
| +#endif
 | |
|  }
 | |
|  
 | |
|  void ChromeDownloadManagerDelegate::OnDownloadCanceledAtShutdown(
 | |
| @@ -643,6 +656,12 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget(
 | |
|      ReportPDFLoadStatus(PDFLoadStatus::kTriggeredNoGestureDriveByDownload);
 | |
|    }
 | |
|  
 | |
| +#if BUILDFLAG(ENABLE_CEF)
 | |
| +  if (cef_delegate_->DetermineDownloadTarget(download, callback)) {
 | |
| +    return true;
 | |
| +  }
 | |
| +#endif
 | |
| +
 | |
|    DownloadTargetDeterminer::CompletionCallback target_determined_callback =
 | |
|        base::BindOnce(&ChromeDownloadManagerDelegate::OnDownloadTargetDetermined,
 | |
|                       weak_ptr_factory_.GetWeakPtr(), download->GetId(),
 | |
| @@ -1134,8 +1153,11 @@ void ChromeDownloadManagerDelegate::OpenDownload(DownloadItem* download) {
 | |
|    Browser* browser =
 | |
|        web_contents ? chrome::FindBrowserWithTab(web_contents) : nullptr;
 | |
|    std::unique_ptr<chrome::ScopedTabbedBrowserDisplayer> browser_displayer;
 | |
| -  if (!browser ||
 | |
| -      !browser->CanSupportWindowFeature(Browser::FEATURE_TABSTRIP)) {
 | |
| +  if (!browser
 | |
| +#if !BUILDFLAG(ENABLE_CEF)
 | |
| +      || !browser->CanSupportWindowFeature(Browser::FEATURE_TABSTRIP)
 | |
| +#endif
 | |
| +    ) {
 | |
|      browser_displayer =
 | |
|          std::make_unique<chrome::ScopedTabbedBrowserDisplayer>(profile_);
 | |
|      browser = browser_displayer->browser();
 | |
| diff --git chrome/browser/download/chrome_download_manager_delegate.h chrome/browser/download/chrome_download_manager_delegate.h
 | |
| index 04eb2a8d15f4d..740b869961528 100644
 | |
| --- chrome/browser/download/chrome_download_manager_delegate.h
 | |
| +++ chrome/browser/download/chrome_download_manager_delegate.h
 | |
| @@ -19,6 +19,7 @@
 | |
|  #include "base/task/sequenced_task_runner.h"
 | |
|  #include "base/unguessable_token.h"
 | |
|  #include "build/build_config.h"
 | |
| +#include "cef/libcef/features/features.h"
 | |
|  #include "chrome/browser/download/download_completion_blocker.h"
 | |
|  #include "chrome/browser/download/download_target_determiner_delegate.h"
 | |
|  #include "components/download/public/common/download_danger_type.h"
 | |
| @@ -58,6 +59,12 @@ class CrxInstallError;
 | |
|  }
 | |
|  #endif
 | |
|  
 | |
| +#if BUILDFLAG(ENABLE_CEF)
 | |
| +namespace cef {
 | |
| +class DownloadManagerDelegate;
 | |
| +}
 | |
| +#endif
 | |
| +
 | |
|  // This is the Chrome side helper for the download system.
 | |
|  class ChromeDownloadManagerDelegate
 | |
|      : public content::DownloadManagerDelegate,
 | |
| @@ -404,6 +411,10 @@ class ChromeDownloadManagerDelegate
 | |
|    // Whether a file picker dialog is showing.
 | |
|    bool is_file_picker_showing_;
 | |
|  
 | |
| +#if BUILDFLAG(ENABLE_CEF)
 | |
| +  std::unique_ptr<cef::DownloadManagerDelegate> cef_delegate_;
 | |
| +#endif
 | |
| +
 | |
|    base::WeakPtrFactory<ChromeDownloadManagerDelegate> weak_ptr_factory_{this};
 | |
|  };
 | |
|  
 |