2019-07-17 20:47:27 +02:00
|
|
|
diff --git chrome/browser/download/download_prefs.cc chrome/browser/download/download_prefs.cc
|
2019-11-12 17:11:44 +01:00
|
|
|
index 207cce649db5..5dadc32eea18 100644
|
2019-07-17 20:47:27 +02:00
|
|
|
--- chrome/browser/download/download_prefs.cc
|
|
|
|
+++ chrome/browser/download/download_prefs.cc
|
|
|
|
@@ -22,6 +22,7 @@
|
|
|
|
#include "base/strings/sys_string_conversions.h"
|
|
|
|
#include "base/strings/utf_string_conversions.h"
|
|
|
|
#include "build/build_config.h"
|
|
|
|
+#include "cef/libcef/features/features.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"
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -53,6 +54,10 @@
|
2019-07-17 20:47:27 +02:00
|
|
|
#include "chrome/browser/ui/pdf/adobe_reader_info_win.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
+#if BUILDFLAG(ENABLE_CEF)
|
|
|
|
+#include "cef/libcef/browser/browser_context.h"
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
using content::BrowserContext;
|
|
|
|
using content::BrowserThread;
|
|
|
|
using content::DownloadManager;
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -307,7 +312,11 @@ DownloadPrefs* DownloadPrefs::FromDownloadManager(
|
2019-07-17 20:47:27 +02:00
|
|
|
// static
|
|
|
|
DownloadPrefs* DownloadPrefs::FromBrowserContext(
|
|
|
|
content::BrowserContext* context) {
|
|
|
|
+#if !BUILDFLAG(ENABLE_CEF)
|
|
|
|
return FromDownloadManager(BrowserContext::GetDownloadManager(context));
|
|
|
|
+#else
|
|
|
|
+ return CefBrowserContext::GetForContext(context)->GetDownloadPrefs();
|
|
|
|
+#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
bool DownloadPrefs::IsFromTrustedSource(const download::DownloadItem& item) {
|
|
|
|
diff --git chrome/browser/printing/print_preview_dialog_controller.cc chrome/browser/printing/print_preview_dialog_controller.cc
|
2019-10-01 15:55:16 +02:00
|
|
|
index 3dcc3aa7bea2..637661e9d0b9 100644
|
2019-07-17 20:47:27 +02:00
|
|
|
--- chrome/browser/printing/print_preview_dialog_controller.cc
|
|
|
|
+++ chrome/browser/printing/print_preview_dialog_controller.cc
|
2019-10-01 15:55:16 +02:00
|
|
|
@@ -16,6 +16,7 @@
|
2019-07-17 20:47:27 +02:00
|
|
|
#include "base/strings/utf_string_conversions.h"
|
2019-10-01 15:55:16 +02:00
|
|
|
#include "build/branding_buildflags.h"
|
2019-07-17 20:47:27 +02:00
|
|
|
#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"
|
2019-09-04 17:13:32 +02:00
|
|
|
#include "chrome/browser/printing/print_view_manager.h"
|
2019-10-01 15:55:16 +02:00
|
|
|
@@ -456,8 +457,11 @@ WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog(
|
2019-07-17 20:47:27 +02:00
|
|
|
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
|
2019-11-12 17:11:44 +01:00
|
|
|
index a9f917682680..6209adcb2323 100644
|
2019-07-17 20:47:27 +02:00
|
|
|
--- chrome/browser/resources/print_preview/ui/destination_dialog.html
|
|
|
|
+++ chrome/browser/resources/print_preview/ui/destination_dialog.html
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -183,9 +183,7 @@
|
2019-07-17 20:47:27 +02:00
|
|
|
</print-preview-provisional-destination-resolver>
|
|
|
|
</div>
|
|
|
|
<div slot="button-container">
|
2019-09-04 17:13:32 +02:00
|
|
|
- <cr-button on-click="onOpenSettingsPrintPage_">
|
2019-07-17 20:47:27 +02:00
|
|
|
- $i18n{manage}
|
2019-09-04 17:13:32 +02:00
|
|
|
- </cr-button>
|
2019-07-17 20:47:27 +02:00
|
|
|
+ <div></div>
|
2019-09-04 17:13:32 +02:00
|
|
|
<cr-button class="cancel-button" on-click="onCancelButtonClick_">
|
2019-07-17 20:47:27 +02:00
|
|
|
$i18n{cancel}
|
2019-09-04 17:13:32 +02:00
|
|
|
</cr-button>
|
2019-07-17 20:47:27 +02:00
|
|
|
diff --git chrome/browser/resources/print_preview/ui/destination_select.html chrome/browser/resources/print_preview/ui/destination_select.html
|
2019-11-12 17:11:44 +01:00
|
|
|
index 2438ba0e47b1..8669dd740aa5 100644
|
2019-07-17 20:47:27 +02:00
|
|
|
--- chrome/browser/resources/print_preview/ui/destination_select.html
|
|
|
|
+++ chrome/browser/resources/print_preview/ui/destination_select.html
|
|
|
|
@@ -47,10 +47,6 @@
|
|
|
|
<option value="[[getPdfDestinationKey_()]]" hidden$="[[appKioskMode]]">
|
|
|
|
$i18n{printToPDF}
|
|
|
|
</option>
|
|
|
|
- <option value="[[getGoogleDriveDestinationKey_(activeUser)]]"
|
|
|
|
- hidden$="[[!activeUser]]">
|
|
|
|
- $i18n{printToGoogleDrive}
|
|
|
|
- </option>
|
|
|
|
<if expr="chromeos">
|
|
|
|
<option value="noDestinations"
|
|
|
|
hidden$="[[!noDestinations]]" selected$="[[noDestinations]]">
|
|
|
|
diff --git chrome/browser/ui/webui/constrained_web_dialog_ui.cc chrome/browser/ui/webui/constrained_web_dialog_ui.cc
|
|
|
|
index 12f77178ea92..470b13bd7879 100644
|
|
|
|
--- chrome/browser/ui/webui/constrained_web_dialog_ui.cc
|
|
|
|
+++ chrome/browser/ui/webui/constrained_web_dialog_ui.cc
|
|
|
|
@@ -27,6 +27,8 @@
|
|
|
|
#include "chrome/browser/extensions/tab_helper.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
+#include "cef/libcef/features/features.h"
|
|
|
|
+
|
|
|
|
using content::RenderFrameHost;
|
|
|
|
using content::RenderViewHost;
|
|
|
|
using content::WebContents;
|
|
|
|
@@ -57,8 +59,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
|
2019-11-12 17:11:44 +01:00
|
|
|
index f0033a7e67bd..c093e4bdb1bb 100644
|
2019-07-17 20:47:27 +02:00
|
|
|
--- chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
|
|
|
|
+++ chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -146,8 +146,10 @@ PdfPrinterHandler::PdfPrinterHandler(Profile* profile,
|
2019-09-04 17:13:32 +02:00
|
|
|
sticky_settings_(sticky_settings) {}
|
2019-07-17 20:47:27 +02:00
|
|
|
|
|
|
|
PdfPrinterHandler::~PdfPrinterHandler() {
|
|
|
|
+#if !BUILDFLAG(ENABLE_CEF)
|
|
|
|
if (select_file_dialog_.get())
|
|
|
|
select_file_dialog_->ListenerDestroyed();
|
|
|
|
+#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void PdfPrinterHandler::Reset() {
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -182,12 +184,14 @@ void PdfPrinterHandler::StartPrint(
|
2019-07-17 20:47:27 +02:00
|
|
|
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);
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -327,7 +331,11 @@ void PdfPrinterHandler::SelectFile(const base::FilePath& default_filename,
|
2019-07-17 20:47:27 +02:00
|
|
|
// 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;
|
|
|
|
}
|
|
|
|
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -338,8 +346,14 @@ void PdfPrinterHandler::SelectFile(const base::FilePath& default_filename,
|
2019-10-01 15:55:16 +02:00
|
|
|
FROM_HERE,
|
|
|
|
{base::ThreadPool(), base::MayBlock(), base::TaskPriority::BEST_EFFORT},
|
2019-07-17 20:47:27 +02:00
|
|
|
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,
|
2019-07-25 15:17:27 +02:00
|
|
|
+ default_filename));
|
2019-07-17 20:47:27 +02:00
|
|
|
+#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void PdfPrinterHandler::PostPrintToPdfTask() {
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -356,6 +370,7 @@ void PdfPrinterHandler::OnGotUniqueFileName(const base::FilePath& path) {
|
2019-07-17 20:47:27 +02:00
|
|
|
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);
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -380,5 +395,36 @@ void PdfPrinterHandler::OnDirectorySelected(const base::FilePath& filename,
|
2019-07-17 20:47:27 +02:00
|
|
|
&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
|
2019-09-04 17:13:32 +02:00
|
|
|
index 06f5799efbb9..6119691b2700 100644
|
2019-07-17 20:47:27 +02:00
|
|
|
--- chrome/browser/ui/webui/print_preview/pdf_printer_handler.h
|
|
|
|
+++ chrome/browser/ui/webui/print_preview/pdf_printer_handler.h
|
2019-07-25 15:17:27 +02:00
|
|
|
@@ -11,9 +11,14 @@
|
2019-07-17 20:47:27 +02:00
|
|
|
#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"
|
2019-07-25 15:17:27 +02:00
|
|
|
|
|
|
|
+#if BUILDFLAG(ENABLE_CEF)
|
2019-07-17 20:47:27 +02:00
|
|
|
+#include "cef/libcef/browser/browser_host_impl.h"
|
|
|
|
+#endif
|
2019-07-25 15:17:27 +02:00
|
|
|
+
|
2019-07-17 20:47:27 +02:00
|
|
|
namespace base {
|
|
|
|
class FilePath;
|
|
|
|
class RefCountedMemory;
|
2019-07-25 15:17:27 +02:00
|
|
|
@@ -78,17 +83,28 @@ class PdfPrinterHandler : public PrinterHandler,
|
2019-07-17 20:47:27 +02:00
|
|
|
// 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_;
|
|
|
|
StickySettings* 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
|
2019-11-12 17:11:44 +01:00
|
|
|
index 2ecb8cdde5a8..3ff362c64a52 100644
|
2019-07-17 20:47:27 +02:00
|
|
|
--- chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
|
|
|
+++ chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
|
|
|
@@ -26,6 +26,7 @@
|
|
|
|
#include "base/metrics/histogram_macros.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"
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -1277,6 +1278,9 @@ PrinterHandler* PrintPreviewHandler::GetPrinterHandler(
|
2019-07-17 20:47:27 +02:00
|
|
|
}
|
|
|
|
return privet_printer_handler_.get();
|
|
|
|
}
|
|
|
|
+#else // !BUILDFLAG(ENABLE_SERVICE_DISCOVERY)
|
|
|
|
+ if (printer_type == PrinterType::kPrivetPrinter)
|
|
|
|
+ return nullptr;
|
|
|
|
#endif
|
|
|
|
if (printer_type == PrinterType::kPdfPrinter) {
|
|
|
|
if (!pdf_printer_handler_) {
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -1359,6 +1363,7 @@ void PrintPreviewHandler::OnPrintResult(const std::string& callback_id,
|
2019-07-17 20:47:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void PrintPreviewHandler::RegisterForGaiaCookieChanges() {
|
|
|
|
+#if !BUILDFLAG(ENABLE_CEF)
|
|
|
|
DCHECK(!identity_manager_);
|
|
|
|
cloud_print_enabled_ =
|
|
|
|
GetPrefs()->GetBoolean(prefs::kCloudPrintSubmitEnabled);
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -1374,6 +1379,7 @@ void PrintPreviewHandler::RegisterForGaiaCookieChanges() {
|
2019-07-17 20:47:27 +02:00
|
|
|
|
|
|
|
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
|
2019-11-12 17:11:44 +01:00
|
|
|
index 820820687a59..5c4aa8385f05 100644
|
2019-07-17 20:47:27 +02:00
|
|
|
--- chrome/browser/ui/webui/print_preview/print_preview_ui.cc
|
|
|
|
+++ chrome/browser/ui/webui/print_preview/print_preview_ui.cc
|
|
|
|
@@ -25,6 +25,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"
|
2019-11-12 17:11:44 +01:00
|
|
|
#include "chrome/browser/browser_process_platform_part.h"
|
2019-07-17 20:47:27 +02:00
|
|
|
#include "chrome/browser/printing/background_printing_manager.h"
|
2019-11-12 17:11:44 +01:00
|
|
|
@@ -77,12 +78,16 @@ namespace printing {
|
2019-07-17 20:47:27 +02:00
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
PrintPreviewUI::TestDelegate* g_test_delegate = nullptr;
|
|
|
|
|