Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Side by Side Diff: content/utility/utility_service_factory.cc

Issue 2832633002: Add PDF compositor service (Closed)
Patch Set: remove headers Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/utility/utility_service_factory.h" 5 #include "content/utility/utility_service_factory.h"
6 6
7 #include <memory>
8 #include <utility>
9
7 #include "base/bind.h" 10 #include "base/bind.h"
8 #include "base/command_line.h" 11 #include "base/command_line.h"
9 #include "content/child/child_process.h" 12 #include "content/child/child_process.h"
10 #include "content/network/network_service.h" 13 #include "content/network/network_service.h"
11 #include "content/public/common/content_client.h" 14 #include "content/public/common/content_client.h"
12 #include "content/public/common/content_switches.h" 15 #include "content/public/common/content_switches.h"
13 #include "content/public/common/service_names.mojom.h" 16 #include "content/public/common/service_names.mojom.h"
14 #include "content/public/utility/content_utility_client.h" 17 #include "content/public/utility/content_utility_client.h"
15 #include "content/public/utility/utility_thread.h" 18 #include "content/public/utility/utility_thread.h"
16 #include "content/utility/utility_thread_impl.h" 19 #include "content/utility/utility_thread_impl.h"
20 #include "printing/features/features.h"
17 #include "services/data_decoder/data_decoder_service.h" 21 #include "services/data_decoder/data_decoder_service.h"
18 #include "services/data_decoder/public/interfaces/constants.mojom.h" 22 #include "services/data_decoder/public/interfaces/constants.mojom.h"
19 #include "services/shape_detection/public/interfaces/constants.mojom.h" 23 #include "services/shape_detection/public/interfaces/constants.mojom.h"
20 #include "services/shape_detection/shape_detection_service.h" 24 #include "services/shape_detection/shape_detection_service.h"
21 25
22 #if defined(ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS) 26 #if defined(ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS)
23 #include "media/mojo/services/media_service_factory.h" // nogncheck 27 #include "media/mojo/services/media_service_factory.h" // nogncheck
24 #endif 28 #endif
25 29
30 #if BUILDFLAG(ENABLE_PRINTING)
31 // nogncheck because dependency on //printing is conditional upon
jam 2017/04/24 15:18:05 content/ currently doesn't know about components/p
Wei Li 2017/04/27 05:34:16 Done.
32 // enable_basic_printing or enable_print_preview flags.
33 #include "components/printing/service/pdf_compositor_service.h" // nogncheck
34 #include "components/printing/service/public/interfaces/pdf_compositor.mojom.h" // nogncheck
35 #endif
36
26 namespace content { 37 namespace content {
27 38
28 namespace { 39 namespace {
29 40
30 std::unique_ptr<service_manager::Service> CreateDataDecoderService() { 41 std::unique_ptr<service_manager::Service> CreateDataDecoderService() {
31 content::UtilityThread::Get()->EnsureBlinkInitialized(); 42 content::UtilityThread::Get()->EnsureBlinkInitialized();
32 return data_decoder::DataDecoderService::Create(); 43 return data_decoder::DataDecoderService::Create();
33 } 44 }
34 45
46 #if BUILDFLAG(ENABLE_PRINTING)
47 std::unique_ptr<service_manager::Service> CreatePdfCompositorService() {
48 content::UtilityThread::Get()->EnsureBlinkInitialized();
49 content::UtilityThread::Get()->EnsureReadyForSkia();
50 return printing::PdfCompositorService::Create(
51 GetContentClient()->GetUserAgent(),
52 ChildProcess::current()->io_task_runner());
53 }
54 #endif
55
35 } // namespace 56 } // namespace
36 57
37 UtilityServiceFactory::UtilityServiceFactory() {} 58 UtilityServiceFactory::UtilityServiceFactory() {}
38 59
39 UtilityServiceFactory::~UtilityServiceFactory() {} 60 UtilityServiceFactory::~UtilityServiceFactory() {}
40 61
41 void UtilityServiceFactory::RegisterServices(ServiceMap* services) { 62 void UtilityServiceFactory::RegisterServices(ServiceMap* services) {
42 GetContentClient()->utility()->RegisterServices(services); 63 GetContentClient()->utility()->RegisterServices(services);
43 64
44 #if defined(ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS) 65 #if defined(ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS)
(...skipping 13 matching lines...) Expand all
58 std::make_pair(data_decoder::mojom::kServiceName, data_decoder_info)); 79 std::make_pair(data_decoder::mojom::kServiceName, data_decoder_info));
59 80
60 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 81 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
61 switches::kEnableNetworkService)) { 82 switches::kEnableNetworkService)) {
62 ServiceInfo network_info; 83 ServiceInfo network_info;
63 network_info.factory = base::Bind(&NetworkService::CreateNetworkService); 84 network_info.factory = base::Bind(&NetworkService::CreateNetworkService);
64 network_info.task_runner = ChildProcess::current()->io_task_runner(); 85 network_info.task_runner = ChildProcess::current()->io_task_runner();
65 services->insert( 86 services->insert(
66 std::make_pair(content::mojom::kNetworkServiceName, network_info)); 87 std::make_pair(content::mojom::kNetworkServiceName, network_info));
67 } 88 }
89
90 #if BUILDFLAG(ENABLE_PRINTING)
91 ServiceInfo pdf_compositor_info;
92 pdf_compositor_info.factory = base::Bind(&CreatePdfCompositorService);
93 services->insert(
94 std::make_pair(printing::mojom::kServiceName, pdf_compositor_info));
95 #endif
68 } 96 }
69 97
70 void UtilityServiceFactory::OnServiceQuit() { 98 void UtilityServiceFactory::OnServiceQuit() {
71 UtilityThread::Get()->ReleaseProcessIfNeeded(); 99 UtilityThread::Get()->ReleaseProcessIfNeeded();
72 } 100 }
73 101
74 void UtilityServiceFactory::OnLoadFailed() { 102 void UtilityServiceFactory::OnLoadFailed() {
75 UtilityThreadImpl* utility_thread = 103 UtilityThreadImpl* utility_thread =
76 static_cast<UtilityThreadImpl*>(UtilityThread::Get()); 104 static_cast<UtilityThreadImpl*>(UtilityThread::Get());
77 utility_thread->Shutdown(); 105 utility_thread->Shutdown();
78 utility_thread->ReleaseProcessIfNeeded(); 106 utility_thread->ReleaseProcessIfNeeded();
79 } 107 }
80 108
81 } // namespace content 109 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698