ApplicationConnection devolution, part 2.3. A.k.a. nuke InterfaceFactory, part 3. I also noticed that I previously forgot to call AddService() in tracing_app.cc. R=vardhan@google.com BUG=probably has something to do with #775 and #776 (may fix them) Review URL: https://codereview.chromium.org/1980763002 .
diff --git a/mojo/public/cpp/bindings/binding.h b/mojo/public/cpp/bindings/binding.h index 5f33a61..2510a31 100644 --- a/mojo/public/cpp/bindings/binding.h +++ b/mojo/public/cpp/bindings/binding.h
@@ -41,15 +41,6 @@ // Binding<Foo> binding_; // }; // -// class MyFooFactory : public InterfaceFactory<Foo> { -// public: -// void Create(..., InterfaceRequest<Foo> request) override { -// auto f = new FooImpl(request.Pass()); -// // Do something to manage the lifetime of |f|. Use StrongBinding<> to -// // delete FooImpl on connection errors. -// } -// }; -// // The caller may specify a |MojoAsyncWaiter| to be used by the connection when // waiting for calls to arrive. Normally it is fine to use the default waiter. // However, the caller may provide their own implementation if needed. The
diff --git a/mojo/public/cpp/bindings/strong_binding.h b/mojo/public/cpp/bindings/strong_binding.h index 3ccbb75..c6ba5cf 100644 --- a/mojo/public/cpp/bindings/strong_binding.h +++ b/mojo/public/cpp/bindings/strong_binding.h
@@ -42,14 +42,6 @@ // private: // StrongBinding<Foo> binding_; // }; -// -// class MyFooFactory : public InterfaceFactory<Foo> { -// public: -// void Create(..., InterfaceRequest<Foo> request) override { -// new StronglyBound(request.Pass()); // The binding now owns the -// // instance of StronglyBound. -// } -// }; template <typename Interface> class StrongBinding { public:
diff --git a/services/keyboard/linux/keyboard_service_impl.h b/services/keyboard/linux/keyboard_service_impl.h index 6ac6a89..d493de9 100644 --- a/services/keyboard/linux/keyboard_service_impl.h +++ b/services/keyboard/linux/keyboard_service_impl.h
@@ -6,7 +6,6 @@ #define SERVICES_KEYBOARD_LINUX_KEYBOARD_SERVICE_IMPL_H_ #include "base/macros.h" -#include "mojo/public/cpp/application/interface_factory.h" #include "mojo/public/cpp/bindings/strong_binding.h" #include "mojo/public/interfaces/application/shell.mojom.h" #include "mojo/services/keyboard/interfaces/keyboard.mojom.h"
diff --git a/services/native_viewport/native_viewport_impl.cc b/services/native_viewport/native_viewport_impl.cc index 7307714..46961ba 100644 --- a/services/native_viewport/native_viewport_impl.cc +++ b/services/native_viewport/native_viewport_impl.cc
@@ -12,7 +12,6 @@ #include "mojo/converters/geometry/geometry_type_converters.h" #include "mojo/converters/native_viewport/surface_configuration_type_converters.h" #include "mojo/public/cpp/application/application_impl.h" -#include "mojo/public/cpp/application/interface_factory.h" #include "services/gles2/gpu_state.h" #include "services/native_viewport/platform_viewport_headless.h" #include "ui/events/event.h"
diff --git a/services/test_service/test_request_tracker_application.cc b/services/test_service/test_request_tracker_application.cc index ed23d44..b1f0715 100644 --- a/services/test_service/test_request_tracker_application.cc +++ b/services/test_service/test_request_tracker_application.cc
@@ -29,30 +29,24 @@ ApplicationConnection* connection) { // Every instance of the service and recorder shares the context. // Note, this app is single-threaded, so this is thread safe. - connection->AddService<TestTimeService>(this); - connection->AddService<TestRequestTracker>(this); - connection->AddService<TestTrackedRequestService>(this); + connection->GetServiceProviderImpl().AddService<TestTimeService>( + [this](const ConnectionContext& connection_context, + InterfaceRequest<TestTimeService> request) { + new TestTimeServiceImpl(app_impl_, request.Pass()); + }); + connection->GetServiceProviderImpl().AddService<TestRequestTracker>( + [this](const ConnectionContext& connection_context, + InterfaceRequest<TestRequestTracker> request) { + new TestRequestTrackerImpl(request.Pass(), &context_); + }); + connection->GetServiceProviderImpl().AddService<TestTrackedRequestService>( + [this](const ConnectionContext& connection_context, + InterfaceRequest<TestTrackedRequestService> request) { + new TestTrackedRequestServiceImpl(request.Pass(), &context_); + }); return true; } -void TestRequestTrackerApplication::Create( - const ConnectionContext& connection_context, - InterfaceRequest<TestTimeService> request) { - new TestTimeServiceImpl(app_impl_, request.Pass()); -} - -void TestRequestTrackerApplication::Create( - const ConnectionContext& connection_context, - InterfaceRequest<TestRequestTracker> request) { - new TestRequestTrackerImpl(request.Pass(), &context_); -} - -void TestRequestTrackerApplication::Create( - const ConnectionContext& connection_context, - InterfaceRequest<TestTrackedRequestService> request) { - new TestTrackedRequestServiceImpl(request.Pass(), &context_); -} - } // namespace test } // namespace mojo
diff --git a/services/test_service/test_request_tracker_application.h b/services/test_service/test_request_tracker_application.h index c169c90..d936c48 100644 --- a/services/test_service/test_request_tracker_application.h +++ b/services/test_service/test_request_tracker_application.h
@@ -6,7 +6,6 @@ #define SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_APPLICATION_H_ #include "mojo/public/cpp/application/application_delegate.h" -#include "mojo/public/cpp/application/interface_factory.h" #include "mojo/public/cpp/system/macros.h" #include "services/test_service/test_request_tracker_impl.h" @@ -16,11 +15,7 @@ class TestTimeService; // Embeds TestRequestTracker mojo services into an application. -class TestRequestTrackerApplication - : public ApplicationDelegate, - public InterfaceFactory<TestTimeService>, - public InterfaceFactory<TestRequestTracker>, - public InterfaceFactory<TestTrackedRequestService> { +class TestRequestTrackerApplication : public ApplicationDelegate { public: TestRequestTrackerApplication(); ~TestRequestTrackerApplication() override; @@ -30,18 +25,6 @@ // ApplicationDelegate methods: bool ConfigureIncomingConnection(ApplicationConnection* connection) override; - // InterfaceFactory<TestTimeService> methods: - void Create(const ConnectionContext& connection_context, - InterfaceRequest<TestTimeService> request) override; - - // InterfaceFactory<TestRequestTracker> methods: - void Create(const ConnectionContext& connection_context, - InterfaceRequest<TestRequestTracker> request) override; - - // InterfaceFactory<TestTrackedRequestService> methods: - void Create(const ConnectionContext& connection_context, - InterfaceRequest<TestTrackedRequestService> request) override; - private: ApplicationImpl* app_impl_; TrackingContext context_;
diff --git a/services/test_service/test_service_application.cc b/services/test_service/test_service_application.cc index 509ddac..bf362d3 100644 --- a/services/test_service/test_service_application.cc +++ b/services/test_service/test_service_application.cc
@@ -29,22 +29,20 @@ bool TestServiceApplication::ConfigureIncomingConnection( ApplicationConnection* connection) { - connection->AddService<TestService>(this); - connection->AddService<TestTimeService>(this); + connection->GetServiceProviderImpl().AddService<TestService>( + [this](const ConnectionContext& connection_context, + InterfaceRequest<TestService> request) { + new TestServiceImpl(app_impl_, this, request.Pass()); + AddRef(); + }); + connection->GetServiceProviderImpl().AddService<TestTimeService>( + [this](const ConnectionContext& connection_context, + InterfaceRequest<TestTimeService> request) { + new TestTimeServiceImpl(app_impl_, request.Pass()); + }); return true; } -void TestServiceApplication::Create(const ConnectionContext& connection_context, - InterfaceRequest<TestService> request) { - new TestServiceImpl(app_impl_, this, request.Pass()); - AddRef(); -} - -void TestServiceApplication::Create(const ConnectionContext& connection_context, - InterfaceRequest<TestTimeService> request) { - new TestTimeServiceImpl(app_impl_, request.Pass()); -} - void TestServiceApplication::AddRef() { assert(ref_count_ >= 0); ref_count_++;
diff --git a/services/test_service/test_service_application.h b/services/test_service/test_service_application.h index 1839311..625e4bb 100644 --- a/services/test_service/test_service_application.h +++ b/services/test_service/test_service_application.h
@@ -6,7 +6,6 @@ #define SERVICES_TEST_SERVICE_TEST_SERVICE_APPLICATION_H_ #include "mojo/public/cpp/application/application_delegate.h" -#include "mojo/public/cpp/application/interface_factory.h" #include "mojo/public/cpp/system/macros.h" namespace mojo { @@ -16,9 +15,7 @@ class TestService; class TestTimeService; -class TestServiceApplication : public ApplicationDelegate, - public InterfaceFactory<TestService>, - public InterfaceFactory<TestTimeService> { +class TestServiceApplication : public ApplicationDelegate { public: TestServiceApplication(); ~TestServiceApplication() override; @@ -28,14 +25,6 @@ // ApplicationDelegate implementation. bool ConfigureIncomingConnection(ApplicationConnection* connection) override; - // InterfaceFactory<TestService> implementation. - void Create(const ConnectionContext& connection_context, - InterfaceRequest<TestService> request) override; - - // InterfaceFactory<TestTimeService> implementation. - void Create(const ConnectionContext& connection_context, - InterfaceRequest<TestTimeService> request) override; - void AddRef(); void ReleaseRef();
diff --git a/services/tracing/tracing_app.cc b/services/tracing/tracing_app.cc index 915ed03..0413158 100644 --- a/services/tracing/tracing_app.cc +++ b/services/tracing/tracing_app.cc
@@ -17,25 +17,26 @@ bool TracingApp::ConfigureIncomingConnection( mojo::ApplicationConnection* connection) { - connection->AddService<TraceCollector>(this); + connection->GetServiceProviderImpl().AddService<TraceCollector>( + [this](const mojo::ConnectionContext& connection_context, + mojo::InterfaceRequest<TraceCollector> trace_collector_request) { + if (collector_binding_.is_bound()) { + LOG(ERROR) << "Another application is already connected to tracing."; + return; + } + + collector_binding_.Bind(trace_collector_request.Pass()); + }); + connection->GetServiceProviderImpl().AddService<TraceProviderRegistry>( + [this](const mojo::ConnectionContext& connection_context, + mojo::InterfaceRequest<TraceProviderRegistry> + trace_provider_registry_request) { + provider_registry_bindings_.AddBinding( + this, trace_provider_registry_request.Pass()); + }); return true; } -void TracingApp::Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<TraceCollector> request) { - if (collector_binding_.is_bound()) { - LOG(ERROR) << "Another application is already connected to tracing."; - return; - } - - collector_binding_.Bind(request.Pass()); -} - -void TracingApp::Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<TraceProviderRegistry> request) { - provider_registry_bindings_.AddBinding(this, request.Pass()); -} - void TracingApp::Start(mojo::ScopedDataPipeProducerHandle stream, const mojo::String& categories) { tracing_categories_ = categories;
diff --git a/services/tracing/tracing_app.h b/services/tracing/tracing_app.h index 24395e0..70c010e 100644 --- a/services/tracing/tracing_app.h +++ b/services/tracing/tracing_app.h
@@ -21,8 +21,6 @@ namespace tracing { class TracingApp : public mojo::ApplicationDelegate, - public mojo::InterfaceFactory<TraceCollector>, - public mojo::InterfaceFactory<TraceProviderRegistry>, public TraceCollector, public TraceProviderRegistry { public: @@ -34,14 +32,6 @@ bool ConfigureIncomingConnection( mojo::ApplicationConnection* connection) override; - // mojo::InterfaceFactory<TraceCollector> implementation. - void Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<TraceCollector> request) override; - - // mojo::InterfaceFactory<TraceProviderRegistry> implementation. - void Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<TraceProviderRegistry> request) override; - // TraceCollector implementation. void Start(mojo::ScopedDataPipeProducerHandle stream, const mojo::String& categories) override;
diff --git a/services/ui/input_manager/input_manager_app.cc b/services/ui/input_manager/input_manager_app.cc index b6adffb..0d2917d 100644 --- a/services/ui/input_manager/input_manager_app.cc +++ b/services/ui/input_manager/input_manager_app.cc
@@ -34,14 +34,14 @@ bool InputManagerApp::ConfigureIncomingConnection( mojo::ApplicationConnection* connection) { - connection->AddService<mojo::ui::ViewAssociate>(this); + connection->GetServiceProviderImpl().AddService<mojo::ui::ViewAssociate>( + [this](const mojo::ConnectionContext& connection_context, + mojo::InterfaceRequest<mojo::ui::ViewAssociate> + view_associate_request) { + input_associates_.AddBinding(new InputAssociate(), + view_associate_request.Pass()); + }); return true; } -void InputManagerApp::Create( - const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<mojo::ui::ViewAssociate> request) { - input_associates.AddBinding(new InputAssociate(), request.Pass()); -} - } // namespace input_manager
diff --git a/services/ui/input_manager/input_manager_app.h b/services/ui/input_manager/input_manager_app.h index 764487b..5c8a817 100644 --- a/services/ui/input_manager/input_manager_app.h +++ b/services/ui/input_manager/input_manager_app.h
@@ -11,14 +11,12 @@ #include "mojo/common/strong_binding_set.h" #include "mojo/common/tracing_impl.h" #include "mojo/public/cpp/application/application_delegate.h" -#include "mojo/public/cpp/application/interface_factory.h" #include "mojo/services/ui/views/interfaces/view_associates.mojom.h" namespace input_manager { // Input manager application entry point. -class InputManagerApp : public mojo::ApplicationDelegate, - public mojo::InterfaceFactory<mojo::ui::ViewAssociate> { +class InputManagerApp : public mojo::ApplicationDelegate { public: InputManagerApp(); ~InputManagerApp() override; @@ -29,14 +27,10 @@ bool ConfigureIncomingConnection( mojo::ApplicationConnection* connection) override; - // |InterfaceFactory<ViewAssociate>|: - void Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<mojo::ui::ViewAssociate> request) override; - mojo::ApplicationImpl* app_impl_; mojo::TracingImpl tracing_; - mojo::StrongBindingSet<mojo::ui::ViewAssociate> input_associates; + mojo::StrongBindingSet<mojo::ui::ViewAssociate> input_associates_; DISALLOW_COPY_AND_ASSIGN(InputManagerApp); };
diff --git a/services/ui/launcher/launcher_app.cc b/services/ui/launcher/launcher_app.cc index d0f1377..9a6fe1f 100644 --- a/services/ui/launcher/launcher_app.cc +++ b/services/ui/launcher/launcher_app.cc
@@ -42,16 +42,15 @@ if (connection->GetServiceProviderImpl() .connection_context() .remote_url.empty()) { - connection->AddService<Launcher>(this); + connection->GetServiceProviderImpl().AddService<Launcher>( + [this](const mojo::ConnectionContext& connection_context, + mojo::InterfaceRequest<Launcher> launcher_request) { + bindings_.AddBinding(this, launcher_request.Pass()); + }); } return true; } -void LauncherApp::Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<Launcher> request) { - bindings_.AddBinding(this, request.Pass()); -} - void LauncherApp::Launch(const mojo::String& application_url) { uint32_t next_id = next_id_++; std::unique_ptr<LaunchInstance> instance(new LaunchInstance(
diff --git a/services/ui/launcher/launcher_app.h b/services/ui/launcher/launcher_app.h index 153641d..f6a65d1 100644 --- a/services/ui/launcher/launcher_app.h +++ b/services/ui/launcher/launcher_app.h
@@ -16,9 +16,7 @@ namespace launcher { -class LauncherApp : public mojo::ApplicationDelegate, - public mojo::InterfaceFactory<Launcher>, - public Launcher { +class LauncherApp : public mojo::ApplicationDelegate, public Launcher { public: LauncherApp(); ~LauncherApp() override; @@ -29,10 +27,6 @@ bool ConfigureIncomingConnection( mojo::ApplicationConnection* connection) override; - // mojo::InterfaceRequest<Launcher> implementation - void Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<Launcher> request) override; - // |Launcher|: void Launch(const mojo::String& application_url) override;
diff --git a/services/ui/view_manager/view_manager_app.cc b/services/ui/view_manager/view_manager_app.cc index 63ebbba..ae5c2eb 100644 --- a/services/ui/view_manager/view_manager_app.cc +++ b/services/ui/view_manager/view_manager_app.cc
@@ -61,18 +61,16 @@ bool ViewManagerApp::ConfigureIncomingConnection( mojo::ApplicationConnection* connection) { - connection->AddService<mojo::ui::ViewManager>(this); + connection->GetServiceProviderImpl().AddService<mojo::ui::ViewManager>([this]( + const mojo::ConnectionContext& connection_context, + mojo::InterfaceRequest<mojo::ui::ViewManager> view_manager_request) { + DCHECK(registry_); + view_managers_.AddBinding(new ViewManagerImpl(registry_.get()), + view_manager_request.Pass()); + }); return true; } -void ViewManagerApp::Create( - const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<mojo::ui::ViewManager> request) { - DCHECK(registry_); - view_managers_.AddBinding(new ViewManagerImpl(registry_.get()), - request.Pass()); -} - void ViewManagerApp::OnCompositorConnectionError() { LOG(ERROR) << "Exiting due to compositor connection error."; Shutdown();
diff --git a/services/ui/view_manager/view_manager_app.h b/services/ui/view_manager/view_manager_app.h index 2088435..39c32cc 100644 --- a/services/ui/view_manager/view_manager_app.h +++ b/services/ui/view_manager/view_manager_app.h
@@ -18,8 +18,7 @@ namespace view_manager { // View manager application entry point. -class ViewManagerApp : public mojo::ApplicationDelegate, - public mojo::InterfaceFactory<mojo::ui::ViewManager> { +class ViewManagerApp : public mojo::ApplicationDelegate { public: ViewManagerApp(); ~ViewManagerApp() override; @@ -30,10 +29,6 @@ bool ConfigureIncomingConnection( mojo::ApplicationConnection* connection) override; - // |InterfaceFactory<ViewManager>|: - void Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<mojo::ui::ViewManager> request) override; - void OnCompositorConnectionError(); void OnAssociateConnectionError(const std::string& url);
diff --git a/services/url_response_disk_cache/url_response_disk_cache_app.cc b/services/url_response_disk_cache/url_response_disk_cache_app.cc index e63d15f..a2f6ed8 100644 --- a/services/url_response_disk_cache/url_response_disk_cache_app.cc +++ b/services/url_response_disk_cache/url_response_disk_cache_app.cc
@@ -25,15 +25,13 @@ bool URLResponseDiskCacheApp::ConfigureIncomingConnection( ApplicationConnection* connection) { - connection->AddService<URLResponseDiskCache>(this); + connection->GetServiceProviderImpl().AddService<URLResponseDiskCache>([this]( + const ConnectionContext& connection_context, + InterfaceRequest<URLResponseDiskCache> request) { + new URLResponseDiskCacheImpl(task_runner_, delegate_, db_, + connection_context.remote_url, request.Pass()); + }); return true; } -void URLResponseDiskCacheApp::Create( - const ConnectionContext& connection_context, - InterfaceRequest<URLResponseDiskCache> request) { - new URLResponseDiskCacheImpl(task_runner_, delegate_, db_, - connection_context.remote_url, request.Pass()); -} - } // namespace mojo
diff --git a/services/url_response_disk_cache/url_response_disk_cache_app.h b/services/url_response_disk_cache/url_response_disk_cache_app.h index 7e0715c..52d4e14 100644 --- a/services/url_response_disk_cache/url_response_disk_cache_app.h +++ b/services/url_response_disk_cache/url_response_disk_cache_app.h
@@ -12,15 +12,13 @@ #include "mojo/public/cpp/application/application_connection.h" #include "mojo/public/cpp/application/application_delegate.h" #include "mojo/public/cpp/application/application_impl.h" -#include "mojo/public/cpp/application/interface_factory.h" #include "mojo/services/url_response_disk_cache/interfaces/url_response_disk_cache.mojom.h" #include "services/url_response_disk_cache/url_response_disk_cache_db.h" #include "services/url_response_disk_cache/url_response_disk_cache_delegate.h" namespace mojo { -class URLResponseDiskCacheApp : public ApplicationDelegate, - public InterfaceFactory<URLResponseDiskCache> { +class URLResponseDiskCacheApp : public ApplicationDelegate { public: explicit URLResponseDiskCacheApp(scoped_refptr<base::TaskRunner> task_runner, URLResponseDiskCacheDelegate* delegate); @@ -31,10 +29,6 @@ void Initialize(ApplicationImpl* app) override; bool ConfigureIncomingConnection(ApplicationConnection* connection) override; - // InterfaceFactory<URLResponseDiskCache>: - void Create(const ConnectionContext& connection_context, - InterfaceRequest<URLResponseDiskCache> request) override; - scoped_refptr<base::TaskRunner> task_runner_; scoped_refptr<URLResponseDiskCacheDB> db_; URLResponseDiskCacheDelegate* delegate_;
diff --git a/shell/android/native_viewport_application_loader.cc b/shell/android/native_viewport_application_loader.cc index ea9bc9b..359f004 100644 --- a/shell/android/native_viewport_application_loader.cc +++ b/shell/android/native_viewport_application_loader.cc
@@ -29,26 +29,22 @@ bool NativeViewportApplicationLoader::ConfigureIncomingConnection( ApplicationConnection* connection) { - connection->AddService<mojo::NativeViewport>(this); - connection->AddService<mojo::Gpu>(this); + connection->GetServiceProviderImpl().AddService<mojo::NativeViewport>( + [this](const ConnectionContext& connection_context, + InterfaceRequest<mojo::NativeViewport> native_viewport_request) { + if (!gpu_state_) + gpu_state_ = new gles2::GpuState(); + new native_viewport::NativeViewportImpl(app_.get(), false, gpu_state_, + native_viewport_request.Pass()); + }); + connection->GetServiceProviderImpl().AddService<mojo::Gpu>( + [this](const ConnectionContext& connection_context, + InterfaceRequest<mojo::Gpu> gpu_request) { + if (!gpu_state_) + gpu_state_ = new gles2::GpuState(); + new gles2::GpuImpl(gpu_request.Pass(), gpu_state_); + }); return true; } -void NativeViewportApplicationLoader::Create( - const ConnectionContext& connection_context, - InterfaceRequest<mojo::NativeViewport> request) { - if (!gpu_state_) - gpu_state_ = new gles2::GpuState; - new native_viewport::NativeViewportImpl(app_.get(), false, gpu_state_, - request.Pass()); -} - -void NativeViewportApplicationLoader::Create( - const ConnectionContext& connection_context, - InterfaceRequest<mojo::Gpu> request) { - if (!gpu_state_) - gpu_state_ = new gles2::GpuState; - new gles2::GpuImpl(request.Pass(), gpu_state_); -} - } // namespace shell
diff --git a/shell/android/native_viewport_application_loader.h b/shell/android/native_viewport_application_loader.h index 861a691..a1663b1 100644 --- a/shell/android/native_viewport_application_loader.h +++ b/shell/android/native_viewport_application_loader.h
@@ -6,7 +6,6 @@ #define MOJO_SHELL_ANDROID_NATIVE_VIEWPORT_APPLICATION_LOADER_H_ #include "mojo/public/cpp/application/application_delegate.h" -#include "mojo/public/cpp/application/interface_factory.h" #include "mojo/services/gpu/interfaces/gpu.mojom.h" #include "mojo/services/native_viewport/interfaces/native_viewport.mojom.h" #include "services/gles2/gpu_impl.h" @@ -22,11 +21,8 @@ namespace shell { -class NativeViewportApplicationLoader - : public ApplicationLoader, - public mojo::ApplicationDelegate, - public mojo::InterfaceFactory<mojo::NativeViewport>, - public mojo::InterfaceFactory<mojo::Gpu> { +class NativeViewportApplicationLoader : public ApplicationLoader, + public mojo::ApplicationDelegate { public: NativeViewportApplicationLoader(); ~NativeViewportApplicationLoader(); @@ -41,14 +37,6 @@ bool ConfigureIncomingConnection( mojo::ApplicationConnection* connection) override; - // mojo::InterfaceFactory<mojo::NativeViewport> implementation. - void Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<mojo::NativeViewport> request) override; - - // mojo::InterfaceFactory<mojo::Gpu> implementation. - void Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<mojo::Gpu> request) override; - scoped_refptr<gles2::GpuState> gpu_state_; scoped_ptr<mojo::ApplicationImpl> app_;
diff --git a/shell/application_manager/application_manager_unittest.cc b/shell/application_manager/application_manager_unittest.cc index 8ea79c0..c8c677e 100644 --- a/shell/application_manager/application_manager_unittest.cc +++ b/shell/application_manager/application_manager_unittest.cc
@@ -15,7 +15,6 @@ #include "mojo/public/cpp/application/application_delegate.h" #include "mojo/public/cpp/application/application_impl.h" #include "mojo/public/cpp/application/connect.h" -#include "mojo/public/cpp/application/interface_factory.h" #include "mojo/public/cpp/bindings/strong_binding.h" #include "mojo/public/interfaces/application/service_provider.mojom.h" #include "shell/application_manager/application_loader.h" @@ -28,7 +27,6 @@ using mojo::ApplicationImpl; using mojo::Callback; using mojo::ConnectionContext; -using mojo::InterfaceFactory; using mojo::InterfaceRequest; using mojo::StrongBinding; @@ -100,8 +98,7 @@ }; class TestApplicationLoader : public ApplicationLoader, - public ApplicationDelegate, - public InterfaceFactory<TestService> { + public ApplicationDelegate { public: TestApplicationLoader() : context_(nullptr), num_loads_(0) {} @@ -125,16 +122,14 @@ // ApplicationDelegate implementation. bool ConfigureIncomingConnection(ApplicationConnection* connection) override { - connection->AddService(this); + connection->GetServiceProviderImpl().AddService<TestService>( + [this](const ConnectionContext& connection_context, + InterfaceRequest<TestService> request) { + new TestServiceImpl(context_, request.Pass()); + }); return true; } - // InterfaceFactory implementation. - void Create(const ConnectionContext& connection_context, - InterfaceRequest<TestService> request) override { - new TestServiceImpl(context_, request.Pass()); - } - scoped_ptr<ApplicationImpl> test_app_; TestContext* context_; int num_loads_; @@ -298,10 +293,7 @@ StrongBinding<TestB> binding_; }; -class Tester : public ApplicationDelegate, - public ApplicationLoader, - public InterfaceFactory<TestA>, - public InterfaceFactory<TestB> { +class Tester : public ApplicationDelegate, public ApplicationLoader { public: Tester(TesterContext* context, const std::string& requestor_url) : context_(context), requestor_url_(requestor_url) {} @@ -323,27 +315,26 @@ return false; } // If we're coming from A, then add B, otherwise A. - if (remote_url == kTestAURLString) - connection->AddService<TestB>(this); - else - connection->AddService<TestA>(this); + if (remote_url == kTestAURLString) { + connection->GetServiceProviderImpl().AddService<TestB>( + [this](const ConnectionContext& connection_context, + InterfaceRequest<TestB> test_b_request) { + new TestBImpl(context_, test_b_request.Pass()); + }); + } else { + connection->GetServiceProviderImpl().AddService<TestA>( + [this](const ConnectionContext& connection_context, + InterfaceRequest<TestA> test_a_request) { + mojo::InterfaceHandle<mojo::ServiceProvider> incoming_sp_handle; + app_->shell()->ConnectToApplication( + kTestBURLString, GetProxy(&incoming_sp_handle), nullptr); + a_bindings_.push_back(new TestAImpl( + incoming_sp_handle.Pass(), context_, test_a_request.Pass())); + }); + } return true; } - void Create(const ConnectionContext& connection_context, - InterfaceRequest<TestA> request) override { - mojo::InterfaceHandle<mojo::ServiceProvider> incoming_sp_handle; - app_->shell()->ConnectToApplication(kTestBURLString, - GetProxy(&incoming_sp_handle), nullptr); - a_bindings_.push_back( - new TestAImpl(incoming_sp_handle.Pass(), context_, request.Pass())); - } - - void Create(const ConnectionContext& connection_context, - InterfaceRequest<TestB> request) override { - new TestBImpl(context_, request.Pass()); - } - TesterContext* context_; scoped_ptr<ApplicationImpl> app_; std::string requestor_url_;
diff --git a/shell/test/pingable_app.cc b/shell/test/pingable_app.cc index 2436a7d..f4520f6 100644 --- a/shell/test/pingable_app.cc +++ b/shell/test/pingable_app.cc
@@ -8,7 +8,6 @@ #include "mojo/public/cpp/application/application_delegate.h" #include "mojo/public/cpp/application/application_impl.h" #include "mojo/public/cpp/application/application_runner.h" -#include "mojo/public/cpp/application/interface_factory.h" #include "mojo/public/cpp/bindings/callback.h" #include "mojo/public/cpp/bindings/interface_request.h" #include "mojo/public/cpp/bindings/strong_binding.h" @@ -39,8 +38,7 @@ std::string connection_url_; }; -class PingableApp : public mojo::ApplicationDelegate, - public mojo::InterfaceFactory<Pingable> { +class PingableApp : public mojo::ApplicationDelegate { public: PingableApp() {} ~PingableApp() override {} @@ -53,17 +51,15 @@ bool ConfigureIncomingConnection( mojo::ApplicationConnection* connection) override { - connection->AddService(this); + connection->GetServiceProviderImpl().AddService<Pingable>( + [this](const mojo::ConnectionContext& connection_context, + mojo::InterfaceRequest<Pingable> pingable_request) { + new PingableImpl(pingable_request.Pass(), app_url_, + connection_context.connection_url); + }); return true; } - // InterfaceFactory<Pingable>: - void Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<Pingable> request) override { - new PingableImpl(request.Pass(), app_url_, - connection_context.connection_url); - } - std::string app_url_; };
diff --git a/ui/ozone/platform/drm/mojo/drm_ipc_init_helper.cc b/ui/ozone/platform/drm/mojo/drm_ipc_init_helper.cc index ecbd1a9..5182396 100644 --- a/ui/ozone/platform/drm/mojo/drm_ipc_init_helper.cc +++ b/ui/ozone/platform/drm/mojo/drm_ipc_init_helper.cc
@@ -14,24 +14,6 @@ namespace ui { -class InterfaceFactoryDrmHost - : public mojo::InterfaceFactory<mojo::OzoneDrmHost> { - // mojo::InterfaceFactory implementation. - void Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<mojo::OzoneDrmHost> request) override { - new MojoDrmHostImpl(request.Pass()); - } -}; - -class InterfaceFactoryDrmGpu - : public mojo::InterfaceFactory<mojo::OzoneDrmGpu> { - // mojo::InterfaceFactory<OzoneDrmGpu> implementation. - void Create(const mojo::ConnectionContext& connection_context, - mojo::InterfaceRequest<mojo::OzoneDrmGpu> request) override { - new MojoDrmGpuImpl(request.Pass()); - } -}; - class DrmIpcInitHelperMojo : public IpcInitHelperMojo { public: DrmIpcInitHelperMojo(); @@ -68,13 +50,21 @@ bool DrmIpcInitHelperMojo::HostConfigureIncomingConnection( mojo::ApplicationConnection* connection) { - connection->AddService<mojo::OzoneDrmHost>(new InterfaceFactoryDrmHost()); + connection->GetServiceProviderImpl().AddService<mojo::OzoneDrmHost>( + [](const mojo::ConnectionContext& connection_context, + mojo::InterfaceRequest<mojo::OzoneDrmHost> request) { + new MojoDrmHostImpl(request.Pass()); + }); return true; } bool DrmIpcInitHelperMojo::GpuConfigureIncomingConnection( mojo::ApplicationConnection* connection) { - connection->AddService<mojo::OzoneDrmGpu>(new InterfaceFactoryDrmGpu()); + connection->GetServiceProviderImpl().AddService<mojo::OzoneDrmGpu>( + [](const mojo::ConnectionContext& connection_context, + mojo::InterfaceRequest<mojo::OzoneDrmGpu> request) { + new MojoDrmGpuImpl(request.Pass()); + }); return true; }