| // Copyright 2017 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "chrome/browser/printing/printing_init.h" | 
 |  | 
 | #include "chrome/browser/headless/headless_mode_util.h" | 
 | #include "components/embedder_support/user_agent_utils.h" | 
 | #include "components/printing/browser/headless/headless_print_manager.h" | 
 | #include "components/printing/browser/print_manager_utils.h" | 
 | #include "content/public/browser/web_contents.h" | 
 | #include "printing/buildflags/buildflags.h" | 
 |  | 
 | #if BUILDFLAG(ENABLE_OOP_PRINTING) | 
 | #include "base/functional/bind.h" | 
 | #include "chrome/browser/after_startup_task_utils.h" | 
 | #include "content/public/browser/browser_thread.h" | 
 | #endif | 
 |  | 
 | #if BUILDFLAG(ENABLE_PRINT_PREVIEW) | 
 | #include "chrome/browser/printing/pdf_nup_converter_client.h" | 
 | #include "chrome/browser/printing/print_view_manager.h" | 
 | #else | 
 | #include "chrome/browser/printing/print_view_manager_basic.h" | 
 | #endif  // BUILDFLAG(ENABLE_PRINT_PREVIEW) | 
 |  | 
 | namespace printing { | 
 |  | 
 | #if BUILDFLAG(ENABLE_OOP_PRINTING) | 
 | void EarlyStartPrintBackendService() { | 
 |   AfterStartupTaskUtils::PostTask( | 
 |       FROM_HERE, content::GetUIThreadTaskRunner({}), | 
 |       base::BindOnce(&PrintBackendServiceManager::LaunchPersistentService)); | 
 | } | 
 | #endif | 
 |  | 
 | void InitializePrintingForWebContents(content::WebContents* web_contents) { | 
 |   // Headless mode uses a minimalistic Print Manager implementation that | 
 |   // shortcuts most of the callbacks providing only print to PDF | 
 |   // functionality. | 
 |   if (headless::IsHeadlessMode()) { | 
 |     headless::HeadlessPrintManager::CreateForWebContents(web_contents); | 
 |   } else { | 
 | #if BUILDFLAG(ENABLE_PRINT_PREVIEW) | 
 |     PrintViewManager::CreateForWebContents(web_contents); | 
 |     PdfNupConverterClient::CreateForWebContents(web_contents); | 
 | #else | 
 |     PrintViewManagerBasic::CreateForWebContents(web_contents); | 
 | #endif  // BUILDFLAG(ENABLE_PRINT_PREVIEW) | 
 |   } | 
 |   CreateCompositeClientIfNeeded(web_contents, embedder_support::GetUserAgent()); | 
 | } | 
 |  | 
 | }  // namespace printing |