Commit b4dc618f authored by Ken Rockot's avatar Ken Rockot Committed by Commit Bot

Move pdf_compositor off ServiceContext/ServiceTest

Migrates pdf_compositor from ServiceContext to ServiceBinding and makes
its tests regular unit tests instead of using the deprecated ServiceTest
framework.

TBR=thestig@chromium.org

Bug: 891780,906239
Change-Id: Ia2485320e71352b3263108544fbea06c6b8ca6ef
Reviewed-on: https://chromium-review.googlesource.com/c/1343506Reviewed-by: default avatarKen Rockot <rockot@google.com>
Reviewed-by: default avatarJochen Eisinger <jochen@chromium.org>
Reviewed-by: default avatarRobert Sesek <rsesek@chromium.org>
Reviewed-by: default avatarSami Kyöstilä <skyostil@chromium.org>
Reviewed-by: default avatarWei Li <weili@chromium.org>
Commit-Queue: Ken Rockot <rockot@google.com>
Cr-Commit-Position: refs/heads/master@{#610340}
parent 1c8d73b5
...@@ -204,13 +204,6 @@ void ChromeContentUtilityClient::RegisterServices( ...@@ -204,13 +204,6 @@ void ChromeContentUtilityClient::RegisterServices(
services->emplace(device::mojom::kVrIsolatedServiceName, service_info); services->emplace(device::mojom::kVrIsolatedServiceName, service_info);
#endif #endif
#if BUILDFLAG(ENABLE_PRINTING)
service_manager::EmbeddedServiceInfo pdf_compositor_info;
pdf_compositor_info.factory = base::BindRepeating(
&printing::CreatePdfCompositorService, GetUserAgent());
services->emplace(printing::mojom::kServiceName, pdf_compositor_info);
#endif
#if BUILDFLAG(ENABLE_PRINT_PREVIEW) || \ #if BUILDFLAG(ENABLE_PRINT_PREVIEW) || \
(BUILDFLAG(ENABLE_PRINTING) && defined(OS_WIN)) (BUILDFLAG(ENABLE_PRINTING) && defined(OS_WIN))
service_manager::EmbeddedServiceInfo printing_info; service_manager::EmbeddedServiceInfo printing_info;
...@@ -328,6 +321,13 @@ ChromeContentUtilityClient::HandleServiceRequest( ...@@ -328,6 +321,13 @@ ChromeContentUtilityClient::HandleServiceRequest(
return std::make_unique<patch::PatchService>(std::move(request)); return std::make_unique<patch::PatchService>(std::move(request));
#endif #endif
#if BUILDFLAG(ENABLE_PRINTING)
if (service_name == printing::mojom::kServiceName) {
return printing::CreatePdfCompositorService(GetUserAgent(),
std::move(request));
}
#endif
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
if (service_name == chromeos::ime::mojom::kServiceName) if (service_name == chromeos::ime::mojom::kServiceName)
return std::make_unique<chromeos::ime::ImeService>(std::move(request)); return std::make_unique<chromeos::ime::ImeService>(std::move(request));
......
...@@ -53,22 +53,18 @@ if (enable_basic_printing) { ...@@ -53,22 +53,18 @@ if (enable_basic_printing) {
"//testing/gmock/include", "//testing/gmock/include",
"//third_party/skia/include/core", "//third_party/skia/include/core",
] ]
deps = [ deps = [
":pdf_compositor", ":pdf_compositor",
"//base",
"//base/test:test_support", "//base/test:test_support",
"//cc/paint:paint", "//cc/paint:paint",
"//components/crash/core/common:crash_key", "//components/crash/core/common:crash_key",
"//components/services/pdf_compositor/public/interfaces", "//components/services/pdf_compositor/public/interfaces",
"//services/service_manager/public/cpp:service_test_support", "//services/service_manager/public/cpp/test:test_support",
"//skia", "//skia",
"//testing/gmock", "//testing/gmock",
"//testing/gtest", "//testing/gtest",
] ]
} }
service_manifest("pdf_compositor_service_unittest_manifest") {
name = "pdf_compositor_service_unittest"
source = "pdf_compositor_service_unittest_manifest.json"
packaged_services = [ ":pdf_compositor_manifest" ]
}
} }
...@@ -2,6 +2,3 @@ file://printing/OWNERS ...@@ -2,6 +2,3 @@ file://printing/OWNERS
per-file pdf_compositor_manifest.json=set noparent per-file pdf_compositor_manifest.json=set noparent
per-file pdf_compositor_manifest.json=file://ipc/SECURITY_OWNERS per-file pdf_compositor_manifest.json=file://ipc/SECURITY_OWNERS
per-file pdf_compositor_service_unittest_manifest.json=set noparent
per-file pdf_compositor_service_unittest_manifest.json=file://ipc/SECURITY_OWNERS
...@@ -32,20 +32,24 @@ ...@@ -32,20 +32,24 @@
namespace { namespace {
void OnPdfCompositorRequest( void OnPdfCompositorRequest(const std::string& creator,
const std::string& creator, service_manager::ServiceKeepalive* keepalive,
service_manager::ServiceContextRefFactory* ref_factory,
printing::mojom::PdfCompositorRequest request) { printing::mojom::PdfCompositorRequest request) {
mojo::MakeStrongBinding(std::make_unique<printing::PdfCompositorImpl>( mojo::MakeStrongBinding(std::make_unique<printing::PdfCompositorImpl>(
creator, ref_factory->CreateRef()), creator, keepalive->CreateRef()),
std::move(request)); std::move(request));
} }
} // namespace } // namespace
namespace printing { namespace printing {
PdfCompositorService::PdfCompositorService(const std::string& creator) PdfCompositorService::PdfCompositorService(
: creator_(creator.empty() ? "Chromium" : creator), weak_factory_(this) {} const std::string& creator,
service_manager::mojom::ServiceRequest request)
: creator_(creator.empty() ? "Chromium" : creator),
binding_(this, std::move(request)),
keepalive_(&binding_, base::TimeDelta{}) {}
PdfCompositorService::~PdfCompositorService() { PdfCompositorService::~PdfCompositorService() {
#if defined(OS_WIN) #if defined(OS_WIN)
...@@ -55,26 +59,34 @@ PdfCompositorService::~PdfCompositorService() { ...@@ -55,26 +59,34 @@ PdfCompositorService::~PdfCompositorService() {
// static // static
std::unique_ptr<service_manager::Service> PdfCompositorService::Create( std::unique_ptr<service_manager::Service> PdfCompositorService::Create(
const std::string& creator) { const std::string& creator,
service_manager::mojom::ServiceRequest request) {
#if defined(OS_WIN) #if defined(OS_WIN)
// Initialize direct write font proxy so skia can use it. // Initialize direct write font proxy so skia can use it.
content::InitializeDWriteFontProxy(); content::InitializeDWriteFontProxy();
#endif #endif
return std::make_unique<printing::PdfCompositorService>(creator); return std::make_unique<printing::PdfCompositorService>(creator,
std::move(request));
} }
void PdfCompositorService::PrepareToStart() { void PdfCompositorService::OnStart() {
registry_.AddInterface(
base::BindRepeating(&OnPdfCompositorRequest, creator_, &keepalive_));
if (skip_initialization_for_testing_)
return;
// Set up discardable memory manager. // Set up discardable memory manager.
discardable_memory::mojom::DiscardableSharedMemoryManagerPtr manager_ptr; discardable_memory::mojom::DiscardableSharedMemoryManagerPtr manager_ptr;
if (features::IsMultiProcessMash()) { if (features::IsMultiProcessMash()) {
#if defined(USE_AURA) #if defined(USE_AURA)
context()->connector()->BindInterface(ws::mojom::kServiceName, binding_.GetConnector()->BindInterface(ws::mojom::kServiceName,
&manager_ptr); &manager_ptr);
#else #else
NOTREACHED(); NOTREACHED();
#endif #endif
} else { } else {
context()->connector()->BindInterface(content::mojom::kBrowserServiceName, binding_.GetConnector()->BindInterface(content::mojom::kBrowserServiceName,
&manager_ptr); &manager_ptr);
} }
discardable_shared_memory_manager_ = std::make_unique< discardable_shared_memory_manager_ = std::make_unique<
...@@ -99,19 +111,10 @@ void PdfCompositorService::PrepareToStart() { ...@@ -99,19 +111,10 @@ void PdfCompositorService::PrepareToStart() {
// Initialize a connection to FontLoaderMac service so blink platform's web // Initialize a connection to FontLoaderMac service so blink platform's web
// sandbox support can communicate with it to load font. // sandbox support can communicate with it to load font.
content::UtilityThread::Get()->InitializeFontLoaderMac( content::UtilityThread::Get()->InitializeFontLoaderMac(
context()->connector()); binding_.GetConnector());
#endif #endif
} }
void PdfCompositorService::OnStart() {
PrepareToStart();
ref_factory_ = std::make_unique<service_manager::ServiceContextRefFactory>(
context()->CreateQuitClosure());
registry_.AddInterface(
base::Bind(&OnPdfCompositorRequest, creator_, ref_factory_.get()));
}
void PdfCompositorService::OnBindInterface( void PdfCompositorService::OnBindInterface(
const service_manager::BindSourceInfo& source_info, const service_manager::BindSourceInfo& source_info,
const std::string& interface_name, const std::string& interface_name,
......
...@@ -14,18 +14,21 @@ ...@@ -14,18 +14,21 @@
#include "components/services/pdf_compositor/public/interfaces/pdf_compositor.mojom.h" #include "components/services/pdf_compositor/public/interfaces/pdf_compositor.mojom.h"
#include "services/service_manager/public/cpp/binder_registry.h" #include "services/service_manager/public/cpp/binder_registry.h"
#include "services/service_manager/public/cpp/service.h" #include "services/service_manager/public/cpp/service.h"
#include "services/service_manager/public/cpp/service_context_ref.h" #include "services/service_manager/public/cpp/service_binding.h"
#include "services/service_manager/public/cpp/service_keepalive.h"
namespace printing { namespace printing {
class PdfCompositorService : public service_manager::Service { class PdfCompositorService : public service_manager::Service {
public: public:
explicit PdfCompositorService(const std::string& creator); PdfCompositorService(const std::string& creator,
service_manager::mojom::ServiceRequest request);
~PdfCompositorService() override; ~PdfCompositorService() override;
// Factory function for use as an embedded service. // Factory function for use as an embedded service.
static std::unique_ptr<service_manager::Service> Create( static std::unique_ptr<service_manager::Service> Create(
const std::string& creator); const std::string& creator,
service_manager::mojom::ServiceRequest request);
// service_manager::Service: // service_manager::Service:
void OnStart() override; void OnStart() override;
...@@ -33,7 +36,9 @@ class PdfCompositorService : public service_manager::Service { ...@@ -33,7 +36,9 @@ class PdfCompositorService : public service_manager::Service {
const std::string& interface_name, const std::string& interface_name,
mojo::ScopedMessagePipeHandle interface_pipe) override; mojo::ScopedMessagePipeHandle interface_pipe) override;
virtual void PrepareToStart(); void set_skip_initialization_for_testing(bool skip) {
skip_initialization_for_testing_ = skip;
}
private: private:
// The creator of this service. // The creator of this service.
...@@ -41,11 +46,13 @@ class PdfCompositorService : public service_manager::Service { ...@@ -41,11 +46,13 @@ class PdfCompositorService : public service_manager::Service {
// otherwise just use string "Chromium". // otherwise just use string "Chromium".
const std::string creator_; const std::string creator_;
service_manager::ServiceBinding binding_;
service_manager::ServiceKeepalive keepalive_;
bool skip_initialization_for_testing_ = false;
std::unique_ptr<discardable_memory::ClientDiscardableSharedMemoryManager> std::unique_ptr<discardable_memory::ClientDiscardableSharedMemoryManager>
discardable_shared_memory_manager_; discardable_shared_memory_manager_;
std::unique_ptr<service_manager::ServiceContextRefFactory> ref_factory_;
service_manager::BinderRegistry registry_; service_manager::BinderRegistry registry_;
base::WeakPtrFactory<PdfCompositorService> weak_factory_; base::WeakPtrFactory<PdfCompositorService> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(PdfCompositorService); DISALLOW_COPY_AND_ASSIGN(PdfCompositorService);
}; };
......
...@@ -8,17 +8,14 @@ ...@@ -8,17 +8,14 @@
#include "base/callback.h" #include "base/callback.h"
#include "base/memory/read_only_shared_memory_region.h" #include "base/memory/read_only_shared_memory_region.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/test/scoped_task_environment.h"
#include "base/test/test_discardable_memory_allocator.h" #include "base/test/test_discardable_memory_allocator.h"
#include "cc/paint/paint_flags.h" #include "cc/paint/paint_flags.h"
#include "cc/paint/skia_paint_canvas.h" #include "cc/paint/skia_paint_canvas.h"
#include "components/services/pdf_compositor/pdf_compositor_service.h" #include "components/services/pdf_compositor/pdf_compositor_service.h"
#include "components/services/pdf_compositor/public/cpp/pdf_service_mojo_types.h" #include "components/services/pdf_compositor/public/cpp/pdf_service_mojo_types.h"
#include "components/services/pdf_compositor/public/interfaces/pdf_compositor.mojom.h" #include "components/services/pdf_compositor/public/interfaces/pdf_compositor.mojom.h"
#include "mojo/public/cpp/bindings/binding_set.h" #include "services/service_manager/public/cpp/test/test_connector_factory.h"
#include "services/service_manager/public/cpp/binder_registry.h"
#include "services/service_manager/public/cpp/service_context.h"
#include "services/service_manager/public/cpp/service_test.h"
#include "services/service_manager/public/mojom/service_factory.mojom.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkStream.h" #include "third_party/skia/include/core/SkStream.h"
...@@ -26,68 +23,25 @@ ...@@ -26,68 +23,25 @@
namespace printing { namespace printing {
// In order to test PdfCompositorService, this class overrides PrepareToStart() class PdfCompositorServiceTest : public testing::Test {
// to do nothing. So the test discardable memory allocator set up by
// PdfCompositorServiceTest will be used. Also checks for the service setup are
// skipped since we don't have those setups in unit tests.
class PdfCompositorTestService : public printing::PdfCompositorService {
public: public:
explicit PdfCompositorTestService(const std::string& creator) PdfCompositorServiceTest()
: PdfCompositorService(creator) {} : connector_(test_connector_factory_.CreateConnector()),
~PdfCompositorTestService() override {} service_(
"pdf_compositor_service_unittest",
// PdfCompositorService: test_connector_factory_.RegisterInstance(mojom::kServiceName)) {
void PrepareToStart() override {} // We don't want the service instance setting up its own discardable memory
}; // allocator, which it normally does. Instead it will use the one provided
// by our fixture in |SetUp()| below.
class PdfServiceTestClient : public service_manager::test::ServiceTestClient, service_.set_skip_initialization_for_testing(true);
public service_manager::mojom::ServiceFactory {
public:
explicit PdfServiceTestClient(service_manager::test::ServiceTest* test)
: service_manager::test::ServiceTestClient(test) {
registry_.AddInterface<service_manager::mojom::ServiceFactory>(
base::Bind(&PdfServiceTestClient::Create, base::Unretained(this)));
}
~PdfServiceTestClient() override {}
// service_manager::Service
void OnBindInterface(const service_manager::BindSourceInfo& source_info,
const std::string& interface_name,
mojo::ScopedMessagePipeHandle interface_pipe) override {
registry_.BindInterface(interface_name, std::move(interface_pipe));
}
// service_manager::mojom::ServiceFactory
void CreateService(
service_manager::mojom::ServiceRequest request,
const std::string& name,
service_manager::mojom::PIDReceiverPtr pid_receiver) override {
if (!name.compare(mojom::kServiceName)) {
service_context_ = std::make_unique<service_manager::ServiceContext>(
std::make_unique<PdfCompositorTestService>("pdf_compositor_unittest"),
std::move(request));
}
}
void Create(service_manager::mojom::ServiceFactoryRequest request) {
service_factory_bindings_.AddBinding(this, std::move(request));
} }
private: ~PdfCompositorServiceTest() override = default;
service_manager::BinderRegistry registry_;
mojo::BindingSet<service_manager::mojom::ServiceFactory>
service_factory_bindings_;
std::unique_ptr<service_manager::ServiceContext> service_context_;
};
class PdfCompositorServiceTest : public service_manager::test::ServiceTest {
public:
PdfCompositorServiceTest() : ServiceTest("pdf_compositor_service_unittest") {}
~PdfCompositorServiceTest() override {}
MOCK_METHOD1(CallbackOnCompositeSuccess, MOCK_METHOD1(CallbackOnCompositeSuccess,
void(const base::ReadOnlySharedMemoryRegion&)); void(const base::ReadOnlySharedMemoryRegion&));
MOCK_METHOD1(CallbackOnCompositeStatus, void(mojom::PdfCompositor::Status)); MOCK_METHOD1(CallbackOnCompositeStatus, void(mojom::PdfCompositor::Status));
void OnCompositeToPdfCallback(mojom::PdfCompositor::Status status, void OnCompositeToPdfCallback(mojom::PdfCompositor::Status status,
base::ReadOnlySharedMemoryRegion region) { base::ReadOnlySharedMemoryRegion region) {
if (status == mojom::PdfCompositor::Status::SUCCESS) if (status == mojom::PdfCompositor::Status::SUCCESS)
...@@ -100,11 +54,11 @@ class PdfCompositorServiceTest : public service_manager::test::ServiceTest { ...@@ -100,11 +54,11 @@ class PdfCompositorServiceTest : public service_manager::test::ServiceTest {
MOCK_METHOD0(ConnectionClosed, void()); MOCK_METHOD0(ConnectionClosed, void());
protected: protected:
// service_manager::test::ServiceTest: service_manager::Connector* connector() { return connector_.get(); }
void SetUp() override { void SetUp() override {
base::DiscardableMemoryAllocator::SetInstance( base::DiscardableMemoryAllocator::SetInstance(
&discardable_memory_allocator_); &discardable_memory_allocator_);
ServiceTest::SetUp();
ASSERT_FALSE(compositor_); ASSERT_FALSE(compositor_);
connector()->BindInterface(mojom::kServiceName, &compositor_); connector()->BindInterface(mojom::kServiceName, &compositor_);
...@@ -114,15 +68,10 @@ class PdfCompositorServiceTest : public service_manager::test::ServiceTest { ...@@ -114,15 +68,10 @@ class PdfCompositorServiceTest : public service_manager::test::ServiceTest {
} }
void TearDown() override { void TearDown() override {
// Clean up
compositor_.reset(); compositor_.reset();
base::DiscardableMemoryAllocator::SetInstance(nullptr); base::DiscardableMemoryAllocator::SetInstance(nullptr);
} }
std::unique_ptr<service_manager::Service> CreateService() override {
return std::make_unique<PdfServiceTestClient>(this);
}
base::ReadOnlySharedMemoryRegion CreateMSKP() { base::ReadOnlySharedMemoryRegion CreateMSKP() {
SkDynamicMemoryWStream stream; SkDynamicMemoryWStream stream;
sk_sp<SkDocument> doc = SkMakeMultiPictureDocument(&stream); sk_sp<SkDocument> doc = SkMakeMultiPictureDocument(&stream);
...@@ -156,11 +105,16 @@ class PdfCompositorServiceTest : public service_manager::test::ServiceTest { ...@@ -156,11 +105,16 @@ class PdfCompositorServiceTest : public service_manager::test::ServiceTest {
run_loop_->Run(); run_loop_->Run();
} }
base::test::ScopedTaskEnvironment task_environment_;
std::unique_ptr<base::RunLoop> run_loop_; std::unique_ptr<base::RunLoop> run_loop_;
mojom::PdfCompositorPtr compositor_; mojom::PdfCompositorPtr compositor_;
base::TestDiscardableMemoryAllocator discardable_memory_allocator_; base::TestDiscardableMemoryAllocator discardable_memory_allocator_;
private: private:
service_manager::TestConnectorFactory test_connector_factory_;
std::unique_ptr<service_manager::Connector> connector_;
PdfCompositorService service_;
DISALLOW_COPY_AND_ASSIGN(PdfCompositorServiceTest); DISALLOW_COPY_AND_ASSIGN(PdfCompositorServiceTest);
}; };
...@@ -183,8 +137,8 @@ TEST_F(PdfCompositorServiceTest, InvokeCallbackOnSuccess) { ...@@ -183,8 +137,8 @@ TEST_F(PdfCompositorServiceTest, InvokeCallbackOnSuccess) {
CallCompositorWithSuccess(std::move(compositor_)); CallCompositorWithSuccess(std::move(compositor_));
} }
// Test coexistence of multiple service instances. // Test coexistence of multiple PdfCompositor interface bindings.
TEST_F(PdfCompositorServiceTest, MultipleServiceInstances) { TEST_F(PdfCompositorServiceTest, MultipleCompositors) {
// One service can bind multiple interfaces. // One service can bind multiple interfaces.
mojom::PdfCompositorPtr another_compositor; mojom::PdfCompositorPtr another_compositor;
ASSERT_FALSE(another_compositor); ASSERT_FALSE(another_compositor);
...@@ -197,9 +151,9 @@ TEST_F(PdfCompositorServiceTest, MultipleServiceInstances) { ...@@ -197,9 +151,9 @@ TEST_F(PdfCompositorServiceTest, MultipleServiceInstances) {
CallCompositorWithSuccess(std::move(another_compositor)); CallCompositorWithSuccess(std::move(another_compositor));
} }
// Test data structures and content of multiple service instances // Test data structures and content of multiple PdfCompositor interface bindings
// are independent from each other. // are independent from each other.
TEST_F(PdfCompositorServiceTest, IndependentServiceInstances) { TEST_F(PdfCompositorServiceTest, IndependentCompositors) {
// Create a new connection 2. // Create a new connection 2.
mojom::PdfCompositorPtr compositor2; mojom::PdfCompositorPtr compositor2;
ASSERT_FALSE(compositor2); ASSERT_FALSE(compositor2);
......
{
"name": "pdf_compositor_service_unittest",
"display_name": "Pdf Compositor Service Unittest",
"interface_provider_specs": {
"service_manager:connector": {
"provides": {
"service_manager:service_factory": [
"service_manager.mojom.ServiceFactory"
]
},
"requires": {
"pdf_compositor": [ "compositor" ],
"service_manager": [ "service_manager:service_manager" ]
}
}
}
}
...@@ -13,7 +13,8 @@ ...@@ -13,7 +13,8 @@
namespace printing { namespace printing {
std::unique_ptr<service_manager::Service> CreatePdfCompositorService( std::unique_ptr<service_manager::Service> CreatePdfCompositorService(
const std::string& creator) { const std::string& creator,
service_manager::mojom::ServiceRequest request) {
#if defined(OS_POSIX) && !defined(OS_ANDROID) #if defined(OS_POSIX) && !defined(OS_ANDROID)
content::UtilityThread::Get()->EnsureBlinkInitializedWithSandboxSupport(); content::UtilityThread::Get()->EnsureBlinkInitializedWithSandboxSupport();
#else #else
...@@ -22,7 +23,7 @@ std::unique_ptr<service_manager::Service> CreatePdfCompositorService( ...@@ -22,7 +23,7 @@ std::unique_ptr<service_manager::Service> CreatePdfCompositorService(
// Hook up blink's codecs so skia can call them. // Hook up blink's codecs so skia can call them.
SkGraphics::SetImageGeneratorFromEncodedDataFactory( SkGraphics::SetImageGeneratorFromEncodedDataFactory(
blink::WebImageGenerator::CreateAsSkImageGenerator); blink::WebImageGenerator::CreateAsSkImageGenerator);
return printing::PdfCompositorService::Create(creator); return printing::PdfCompositorService::Create(creator, std::move(request));
} }
} // namespace printing } // namespace printing
...@@ -9,11 +9,13 @@ ...@@ -9,11 +9,13 @@
#include <string> #include <string>
#include "services/service_manager/public/cpp/service.h" #include "services/service_manager/public/cpp/service.h"
#include "services/service_manager/public/mojom/service.mojom.h"
namespace printing { namespace printing {
std::unique_ptr<service_manager::Service> CreatePdfCompositorService( std::unique_ptr<service_manager::Service> CreatePdfCompositorService(
const std::string& creator); const std::string& creator,
service_manager::mojom::ServiceRequest request);
} // namespace printing } // namespace printing
......
...@@ -58,26 +58,4 @@ source_set("run_all_unittests") { ...@@ -58,26 +58,4 @@ source_set("run_all_unittests") {
deps = [ deps = [
":test_support", ":test_support",
] ]
if (enable_basic_printing) {
defines = [ "HAS_SERVICE_IN_UNIT_TEST" ]
deps += [
":components_unittests_catalog_source",
"//services/catalog:lib",
]
}
}
if (enable_basic_printing) {
# There is only one service in catalog, which depends on printing feature.
# When more services are added, the condition can be moved inside of catalog.
catalog("components_unittests_catalog") {
embedded_services = [ "//components/services/pdf_compositor:pdf_compositor_service_unittest_manifest" ]
}
catalog_cpp_source("components_unittests_catalog_source") {
testonly = true
catalog = ":components_unittests_catalog"
generated_function_name = "components::CreateUnittestsCatalog"
}
} }
...@@ -4,18 +4,6 @@ ...@@ -4,18 +4,6 @@
#include "components/test/components_test_suite.h" #include "components/test/components_test_suite.h"
#if defined(HAS_SERVICE_IN_UNIT_TEST)
#include "components/test/components_unittests_catalog_source.h" // nogncheck
#include "services/catalog/catalog.h" // nogncheck
#endif
int main(int argc, char** argv) { int main(int argc, char** argv) {
// GetLaunchCallback() sets up the environment needed by Catalog. return base::LaunchUnitTests(argc, argv, GetLaunchCallback(argc, argv));
base::RunTestSuiteCallback callback = GetLaunchCallback(argc, argv);
#if defined(HAS_SERVICE_IN_UNIT_TEST)
catalog::Catalog::SetDefaultCatalogManifest(
components::CreateUnittestsCatalog());
#endif
return base::LaunchUnitTests(argc, argv, std::move(callback));
} }
...@@ -32,14 +32,18 @@ HeadlessContentUtilityClient::HeadlessContentUtilityClient( ...@@ -32,14 +32,18 @@ HeadlessContentUtilityClient::HeadlessContentUtilityClient(
HeadlessContentUtilityClient::~HeadlessContentUtilityClient() = default; HeadlessContentUtilityClient::~HeadlessContentUtilityClient() = default;
void HeadlessContentUtilityClient::RegisterServices( std::unique_ptr<service_manager::Service>
HeadlessContentUtilityClient::StaticServiceMap* services) { HeadlessContentUtilityClient::HandleServiceRequest(
const std::string& service_name,
service_manager::mojom::ServiceRequest request) {
#if BUILDFLAG(ENABLE_PRINTING) && !defined(CHROME_MULTIPLE_DLL_BROWSER) #if BUILDFLAG(ENABLE_PRINTING) && !defined(CHROME_MULTIPLE_DLL_BROWSER)
service_manager::EmbeddedServiceInfo pdf_compositor_info; if (service_name == printing::mojom::kServiceName) {
pdf_compositor_info.factory = return printing::CreatePdfCompositorService(user_agent_,
base::Bind(&printing::CreatePdfCompositorService, user_agent_); std::move(request));
services->emplace(printing::mojom::kServiceName, pdf_compositor_info); }
#endif #endif
return nullptr;
} }
void HeadlessContentUtilityClient::RegisterNetworkBinders( void HeadlessContentUtilityClient::RegisterNetworkBinders(
......
...@@ -26,7 +26,9 @@ class HEADLESS_EXPORT HeadlessContentUtilityClient ...@@ -26,7 +26,9 @@ class HEADLESS_EXPORT HeadlessContentUtilityClient
~HeadlessContentUtilityClient() override; ~HeadlessContentUtilityClient() override;
// content::ContentUtilityClient: // content::ContentUtilityClient:
void RegisterServices(StaticServiceMap* services) override; std::unique_ptr<service_manager::Service> HandleServiceRequest(
const std::string& service_name,
service_manager::mojom::ServiceRequest request) override;
void RegisterNetworkBinders( void RegisterNetworkBinders(
service_manager::BinderRegistry* registry) override; service_manager::BinderRegistry* registry) override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment