mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			340 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			340 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| diff --git chrome/browser/download/download_prefs.cc chrome/browser/download/download_prefs.cc
 | |
| index 6c30afbd726b..4e66f64e9ad0 100644
 | |
| --- chrome/browser/download/download_prefs.cc
 | |
| +++ chrome/browser/download/download_prefs.cc
 | |
| @@ -23,6 +23,7 @@
 | |
|  #include "base/strings/sys_string_conversions.h"
 | |
|  #include "base/strings/utf_string_conversions.h"
 | |
|  #include "build/build_config.h"
 | |
| +#include "cef/libcef/features/runtime.h"
 | |
|  #include "chrome/browser/download/chrome_download_manager_delegate.h"
 | |
|  #include "chrome/browser/download/download_core_service_factory.h"
 | |
|  #include "chrome/browser/download/download_core_service_impl.h"
 | |
| @@ -57,6 +58,10 @@
 | |
|  #include "chrome/browser/ui/pdf/adobe_reader_info_win.h"
 | |
|  #endif
 | |
|  
 | |
| +#if BUILDFLAG(ENABLE_CEF)
 | |
| +#include "cef/libcef/browser/alloy/alloy_browser_context.h"
 | |
| +#endif
 | |
| +
 | |
|  using content::BrowserContext;
 | |
|  using content::BrowserThread;
 | |
|  using content::DownloadManager;
 | |
| @@ -355,6 +360,11 @@ DownloadPrefs* DownloadPrefs::FromDownloadManager(
 | |
|  // static
 | |
|  DownloadPrefs* DownloadPrefs::FromBrowserContext(
 | |
|      content::BrowserContext* context) {
 | |
| +#if BUILDFLAG(ENABLE_CEF)
 | |
| +  if (cef::IsAlloyRuntimeEnabled()) {
 | |
| +    return static_cast<AlloyBrowserContext*>(context)->GetDownloadPrefs();
 | |
| +  }
 | |
| +#endif
 | |
|    return FromDownloadManager(BrowserContext::GetDownloadManager(context));
 | |
|  }
 | |
|  
 | |
| diff --git chrome/browser/printing/print_preview_dialog_controller.cc chrome/browser/printing/print_preview_dialog_controller.cc
 | |
| index 3fadaba3336f..5ef67b35883d 100644
 | |
| --- chrome/browser/printing/print_preview_dialog_controller.cc
 | |
| +++ chrome/browser/printing/print_preview_dialog_controller.cc
 | |
| @@ -16,6 +16,7 @@
 | |
|  #include "base/strings/utf_string_conversions.h"
 | |
|  #include "build/branding_buildflags.h"
 | |
|  #include "build/build_config.h"
 | |
| +#include "cef/libcef/features/features.h"
 | |
|  #include "chrome/browser/browser_process.h"
 | |
|  #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
 | |
|  #include "chrome/browser/printing/print_view_manager.h"
 | |
| @@ -451,8 +452,11 @@ WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog(
 | |
|    content::HostZoomMap::Get(preview_dialog->GetSiteInstance())
 | |
|        ->SetZoomLevelForHostAndScheme(print_url.scheme(), print_url.host(), 0);
 | |
|    PrintViewManager::CreateForWebContents(preview_dialog);
 | |
| +
 | |
| +#if !BUILDFLAG(ENABLE_CEF)
 | |
|    extensions::ChromeExtensionWebContentsObserver::CreateForWebContents(
 | |
|        preview_dialog);
 | |
| +#endif
 | |
|  
 | |
|    // Add an entry to the map.
 | |
|    preview_dialog_map_[preview_dialog] = initiator;
 | |
| diff --git chrome/browser/resources/print_preview/ui/destination_dialog.html chrome/browser/resources/print_preview/ui/destination_dialog.html
 | |
| index 56a6a8d8ee67..5fecf7ad1780 100644
 | |
| --- chrome/browser/resources/print_preview/ui/destination_dialog.html
 | |
| +++ chrome/browser/resources/print_preview/ui/destination_dialog.html
 | |
| @@ -141,9 +141,7 @@
 | |
|      </print-preview-provisional-destination-resolver>
 | |
|    </div>
 | |
|    <div slot="button-container">
 | |
| -    <cr-button on-click="onOpenSettingsPrintPage_">
 | |
| -      $i18n{manage}
 | |
| -    </cr-button>
 | |
| +    <div></div>
 | |
|      <cr-button class="cancel-button" on-click="onCancelButtonClick_">
 | |
|        $i18n{cancel}
 | |
|      </cr-button>
 | |
| diff --git chrome/browser/resources/print_preview/ui/destination_select.html chrome/browser/resources/print_preview/ui/destination_select.html
 | |
| index 4ec05c3fe7ba..90ff40b337bf 100644
 | |
| --- chrome/browser/resources/print_preview/ui/destination_select.html
 | |
| +++ chrome/browser/resources/print_preview/ui/destination_select.html
 | |
| @@ -19,10 +19,6 @@
 | |
|        <option value="[[pdfDestinationKey_]]" hidden$="[[pdfPrinterDisabled]]">
 | |
|          $i18n{printToPDF}
 | |
|        </option>
 | |
| -      <option value="[[driveDestinationKey]]"
 | |
| -          hidden$="[[!driveDestinationKey]]">
 | |
| -        $i18n{printToGoogleDrive}
 | |
| -      </option>
 | |
|        <option value="noDestinations"
 | |
|                hidden$="[[!noDestinations]]" selected$="[[noDestinations]]">
 | |
|          $i18n{noDestinationsMessage}
 | |
| diff --git chrome/browser/ui/webui/constrained_web_dialog_ui.cc chrome/browser/ui/webui/constrained_web_dialog_ui.cc
 | |
| index b59728f623e3..6fd443962836 100644
 | |
| --- chrome/browser/ui/webui/constrained_web_dialog_ui.cc
 | |
| +++ chrome/browser/ui/webui/constrained_web_dialog_ui.cc
 | |
| @@ -26,6 +26,8 @@
 | |
|  #include "chrome/browser/extensions/tab_helper.h"
 | |
|  #endif
 | |
|  
 | |
| +#include "cef/libcef/features/features.h"
 | |
| +
 | |
|  using content::RenderFrameHost;
 | |
|  using content::WebContents;
 | |
|  using content::WebUIMessageHandler;
 | |
| @@ -55,8 +57,10 @@ class ConstrainedWebDialogDelegateUserData
 | |
|  ConstrainedWebDialogUI::ConstrainedWebDialogUI(content::WebUI* web_ui)
 | |
|      : WebUIController(web_ui) {
 | |
|  #if BUILDFLAG(ENABLE_EXTENSIONS)
 | |
| +#if !BUILDFLAG(ENABLE_CEF)
 | |
|    extensions::TabHelper::CreateForWebContents(web_ui->GetWebContents());
 | |
|  #endif
 | |
| +#endif
 | |
|  }
 | |
|  
 | |
|  ConstrainedWebDialogUI::~ConstrainedWebDialogUI() {
 | |
| diff --git chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
 | |
| index c3a1e237fd6c..7f1e500f853c 100644
 | |
| --- chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
 | |
| +++ chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
 | |
| @@ -178,8 +178,10 @@ PdfPrinterHandler::PdfPrinterHandler(
 | |
|        sticky_settings_(sticky_settings) {}
 | |
|  
 | |
|  PdfPrinterHandler::~PdfPrinterHandler() {
 | |
| +#if !BUILDFLAG(ENABLE_CEF)
 | |
|    if (select_file_dialog_.get())
 | |
|      select_file_dialog_->ListenerDestroyed();
 | |
| +#endif
 | |
|  }
 | |
|  
 | |
|  void PdfPrinterHandler::Reset() {
 | |
| @@ -226,12 +228,14 @@ void PdfPrinterHandler::StartPrint(
 | |
|      return;
 | |
|    }
 | |
|  
 | |
| +#if !BUILDFLAG(ENABLE_CEF)
 | |
|    if (select_file_dialog_ &&
 | |
|        select_file_dialog_->IsRunning(
 | |
|            platform_util::GetTopLevel(preview_web_contents_->GetNativeView()))) {
 | |
|      // Dialog is already showing.
 | |
|      return;
 | |
|    }
 | |
| +#endif
 | |
|  
 | |
|    DCHECK(!print_callback_);
 | |
|    print_callback_ = std::move(callback);
 | |
| @@ -370,7 +374,11 @@ void PdfPrinterHandler::SelectFile(const base::FilePath& default_filename,
 | |
|    // If the directory is empty there is no reason to create it or use the
 | |
|    // default location.
 | |
|    if (path.empty()) {
 | |
| +#if !BUILDFLAG(ENABLE_CEF)
 | |
|      OnDirectorySelected(default_filename, path);
 | |
| +#else
 | |
| +    ShowCefSaveAsDialog(initiator, default_filename, path);
 | |
| +#endif
 | |
|      return;
 | |
|    }
 | |
|  
 | |
| @@ -380,8 +388,14 @@ void PdfPrinterHandler::SelectFile(const base::FilePath& default_filename,
 | |
|    base::ThreadPool::PostTaskAndReplyWithResult(
 | |
|        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
 | |
|        base::BindOnce(&SelectSaveDirectory, path, default_path),
 | |
| +#if !BUILDFLAG(ENABLE_CEF)
 | |
|        base::BindOnce(&PdfPrinterHandler::OnDirectorySelected,
 | |
|                       weak_ptr_factory_.GetWeakPtr(), default_filename));
 | |
| +#else
 | |
| +      base::BindOnce(&PdfPrinterHandler::ShowCefSaveAsDialog,
 | |
| +                     weak_ptr_factory_.GetWeakPtr(), initiator,
 | |
| +                     default_filename));
 | |
| +#endif
 | |
|  }
 | |
|  
 | |
|  void PdfPrinterHandler::PostPrintToPdfTask() {
 | |
| @@ -397,6 +411,7 @@ void PdfPrinterHandler::OnGotUniqueFileName(const base::FilePath& path) {
 | |
|    FileSelected(path, 0, nullptr);
 | |
|  }
 | |
|  
 | |
| +#if !BUILDFLAG(ENABLE_CEF)
 | |
|  void PdfPrinterHandler::OnDirectorySelected(const base::FilePath& filename,
 | |
|                                              const base::FilePath& directory) {
 | |
|    base::FilePath path = directory.Append(filename);
 | |
| @@ -421,5 +436,36 @@ void PdfPrinterHandler::OnDirectorySelected(const base::FilePath& filename,
 | |
|        &file_type_info, 0, base::FilePath::StringType(),
 | |
|        platform_util::GetTopLevel(preview_web_contents_->GetNativeView()), NULL);
 | |
|  }
 | |
| +#else
 | |
| +void PdfPrinterHandler::ShowCefSaveAsDialog(content::WebContents* initiator,
 | |
| +                                            const base::FilePath& filename,
 | |
| +                                            const base::FilePath& directory) {
 | |
| +  CefRefPtr<CefBrowserHostImpl> cef_browser =
 | |
| +      CefBrowserHostImpl::GetBrowserForContents(initiator);
 | |
| +  if (!cef_browser)
 | |
| +    return;
 | |
| +
 | |
| +  base::FilePath path = directory.Append(filename);
 | |
| +
 | |
| +  CefFileDialogRunner::FileChooserParams params;
 | |
| +  params.mode = blink::mojom::FileChooserParams::Mode::kSave;
 | |
| +  params.default_file_name = path;
 | |
| +  params.accept_types.push_back(CefString(path.Extension()));
 | |
| +
 | |
| +  cef_browser->RunFileChooser(
 | |
| +      params, base::Bind(&PdfPrinterHandler::SaveAsDialogDismissed,
 | |
| +                         weak_ptr_factory_.GetWeakPtr()));
 | |
| +}
 | |
| +
 | |
| +void PdfPrinterHandler::SaveAsDialogDismissed(
 | |
| +    int selected_accept_filter,
 | |
| +    const std::vector<base::FilePath>& file_paths) {
 | |
| +  if (file_paths.size() == 1) {
 | |
| +    FileSelected(file_paths[0], 0, nullptr);
 | |
| +  } else {
 | |
| +    FileSelectionCanceled(nullptr);
 | |
| +  }
 | |
| +}
 | |
| +#endif
 | |
|  
 | |
|  }  // namespace printing
 | |
| diff --git chrome/browser/ui/webui/print_preview/pdf_printer_handler.h chrome/browser/ui/webui/print_preview/pdf_printer_handler.h
 | |
| index 0881b3dd9303..4df6883d4d05 100644
 | |
| --- chrome/browser/ui/webui/print_preview/pdf_printer_handler.h
 | |
| +++ chrome/browser/ui/webui/print_preview/pdf_printer_handler.h
 | |
| @@ -11,9 +11,14 @@
 | |
|  #include "base/memory/ref_counted.h"
 | |
|  #include "base/memory/weak_ptr.h"
 | |
|  #include "base/strings/string16.h"
 | |
| +#include "cef/libcef/features/features.h"
 | |
|  #include "chrome/browser/ui/webui/print_preview/printer_handler.h"
 | |
|  #include "ui/shell_dialogs/select_file_dialog.h"
 | |
|  
 | |
| +#if BUILDFLAG(ENABLE_CEF)
 | |
| +#include "cef/libcef/browser/browser_host_impl.h"
 | |
| +#endif
 | |
| +
 | |
|  namespace base {
 | |
|  class FilePath;
 | |
|  class RefCountedMemory;
 | |
| @@ -76,17 +81,28 @@ class PdfPrinterHandler : public PrinterHandler,
 | |
|    // The print preview web contents. Protected so unit tests can access it.
 | |
|    content::WebContents* const preview_web_contents_;
 | |
|  
 | |
| +#if !BUILDFLAG(ENABLE_CEF)
 | |
|    // The underlying dialog object. Protected so unit tests can access it.
 | |
|    scoped_refptr<ui::SelectFileDialog> select_file_dialog_;
 | |
| +#endif
 | |
|  
 | |
|   private:
 | |
|    void PostPrintToPdfTask();
 | |
|    void OnGotUniqueFileName(const base::FilePath& path);
 | |
|  
 | |
| +#if !BUILDFLAG(ENABLE_CEF)
 | |
|    // Prompts the user to save the file. The dialog will default to saving
 | |
|    // the file with name |filename| in |directory|.
 | |
|    void OnDirectorySelected(const base::FilePath& filename,
 | |
|                             const base::FilePath& directory);
 | |
| +#else
 | |
| +  void ShowCefSaveAsDialog(content::WebContents* initiator,
 | |
| +                           const base::FilePath& filename,
 | |
| +                           const base::FilePath& directory);
 | |
| +
 | |
| +  void SaveAsDialogDismissed(int selected_accept_filter,
 | |
| +                             const std::vector<base::FilePath>& file_paths);
 | |
| +#endif
 | |
|  
 | |
|    Profile* const profile_;
 | |
|    PrintPreviewStickySettings* const sticky_settings_;
 | |
| diff --git chrome/browser/ui/webui/print_preview/print_preview_handler.cc chrome/browser/ui/webui/print_preview/print_preview_handler.cc
 | |
| index a61439ed8cae..3e210caffafe 100644
 | |
| --- chrome/browser/ui/webui/print_preview/print_preview_handler.cc
 | |
| +++ chrome/browser/ui/webui/print_preview/print_preview_handler.cc
 | |
| @@ -24,6 +24,7 @@
 | |
|  #include "base/memory/ref_counted_memory.h"
 | |
|  #include "base/values.h"
 | |
|  #include "build/build_config.h"
 | |
| +#include "cef/libcef/features/features.h"
 | |
|  #include "chrome/browser/app_mode/app_mode_utils.h"
 | |
|  #include "chrome/browser/bad_message.h"
 | |
|  #include "chrome/browser/browser_process.h"
 | |
| @@ -1244,7 +1245,7 @@ PrinterHandler* PrintPreviewHandler::GetPrinterHandler(
 | |
|      }
 | |
|      return extension_printer_handler_.get();
 | |
|    }
 | |
| -#if BUILDFLAG(ENABLE_SERVICE_DISCOVERY)
 | |
| +#if BUILDFLAG(ENABLE_SERVICE_DISCOVERY) && !BUILDFLAG(ENABLE_CEF)
 | |
|    if (printer_type == PrinterType::kPrivet) {
 | |
|      if (!privet_printer_handler_) {
 | |
|        privet_printer_handler_ =
 | |
| @@ -1252,6 +1253,9 @@ PrinterHandler* PrintPreviewHandler::GetPrinterHandler(
 | |
|      }
 | |
|      return privet_printer_handler_.get();
 | |
|    }
 | |
| +#else  // !BUILDFLAG(ENABLE_SERVICE_DISCOVERY)
 | |
| +  if (printer_type == PrinterType::kPrivet)
 | |
| +    return nullptr;
 | |
|  #endif
 | |
|    if (printer_type == PrinterType::kPdf) {
 | |
|      if (!pdf_printer_handler_) {
 | |
| @@ -1324,6 +1328,7 @@ void PrintPreviewHandler::OnPrintResult(const std::string& callback_id,
 | |
|  }
 | |
|  
 | |
|  void PrintPreviewHandler::RegisterForGaiaCookieChanges() {
 | |
| +#if !BUILDFLAG(ENABLE_CEF)
 | |
|    DCHECK(!identity_manager_);
 | |
|    cloud_print_enabled_ =
 | |
|        !base::Contains(printer_type_deny_list_, PrinterType::kCloud) &&
 | |
| @@ -1340,6 +1345,7 @@ void PrintPreviewHandler::RegisterForGaiaCookieChanges() {
 | |
|  
 | |
|    identity_manager_ = IdentityManagerFactory::GetForProfile(profile);
 | |
|    identity_manager_->AddObserver(this);
 | |
| +#endif
 | |
|  }
 | |
|  
 | |
|  void PrintPreviewHandler::UnregisterForGaiaCookieChanges() {
 | |
| diff --git chrome/browser/ui/webui/print_preview/print_preview_ui.cc chrome/browser/ui/webui/print_preview/print_preview_ui.cc
 | |
| index 1d226233cce3..7ce5bc268410 100644
 | |
| --- chrome/browser/ui/webui/print_preview/print_preview_ui.cc
 | |
| +++ chrome/browser/ui/webui/print_preview/print_preview_ui.cc
 | |
| @@ -27,6 +27,7 @@
 | |
|  #include "base/synchronization/lock.h"
 | |
|  #include "base/values.h"
 | |
|  #include "build/build_config.h"
 | |
| +#include "cef/libcef/features/features.h"
 | |
|  #include "chrome/browser/browser_process.h"
 | |
|  #include "chrome/browser/browser_process_platform_part.h"
 | |
|  #include "chrome/browser/pdf/pdf_extension_util.h"
 | |
| @@ -86,12 +87,16 @@ namespace printing {
 | |
|  
 | |
|  namespace {
 | |
|  
 | |
| +#if BUILDFLAG(ENABLE_CEF)
 | |
| +const char kBasicPrintShortcut[] = "";
 | |
| +#else
 | |
|  #if defined(OS_MACOSX)
 | |
|  // U+0028 U+21E7 U+2318 U+0050 U+0029 in UTF8
 | |
|  const char kBasicPrintShortcut[] = "\x28\xE2\x8c\xA5\xE2\x8C\x98\x50\x29";
 | |
|  #elif !defined(OS_CHROMEOS)
 | |
|  const char kBasicPrintShortcut[] = "(Ctrl+Shift+P)";
 | |
|  #endif
 | |
| +#endif
 | |
|  
 | |
|  #if !BUILDFLAG(OPTIMIZE_WEBUI)
 | |
|  constexpr char kGeneratedPath[] =
 |