Use TraceProviderRegistry in //services/dart/dart_tracing.*.

R=jamesr@chromium.org
BUG=#763

Review URL: https://codereview.chromium.org/1928183002 .
diff --git a/mojo/common/tracing_impl.cc b/mojo/common/tracing_impl.cc
index ae30779..93f6e55 100644
--- a/mojo/common/tracing_impl.cc
+++ b/mojo/common/tracing_impl.cc
@@ -9,7 +9,6 @@
 #include "mojo/public/cpp/application/connect.h"
 #include "mojo/public/cpp/bindings/interface_handle.h"
 #include "mojo/public/cpp/bindings/interface_request.h"
-#include "mojo/public/interfaces/application/service_provider.mojom.h"
 #include "mojo/services/tracing/interfaces/trace_provider_registry.mojom.h"
 #include "mojo/services/tracing/interfaces/tracing.mojom.h"
 
diff --git a/mojo/common/tracing_impl.h b/mojo/common/tracing_impl.h
index e24dae0..d3f93c6 100644
--- a/mojo/common/tracing_impl.h
+++ b/mojo/common/tracing_impl.h
@@ -7,7 +7,6 @@
 
 #include "base/macros.h"
 #include "mojo/common/trace_provider_impl.h"
-#include "mojo/public/cpp/application/service_provider_impl.h"
 
 namespace mojo {
 
diff --git a/services/dart/dart_tracing.cc b/services/dart/dart_tracing.cc
index 2bee419..45104c6 100644
--- a/services/dart/dart_tracing.cc
+++ b/services/dart/dart_tracing.cc
@@ -8,9 +8,10 @@
 
 #include "dart/runtime/include/dart_tools_api.h"
 #include "mojo/public/cpp/application/application_impl.h"
+#include "mojo/public/cpp/application/connect.h"
 #include "mojo/public/cpp/bindings/interface_handle.h"
 #include "mojo/public/cpp/bindings/interface_request.h"
-#include "mojo/public/interfaces/application/service_provider.mojom.h"
+#include "mojo/services/tracing/interfaces/trace_provider_registry.mojom.h"
 
 namespace dart {
 
@@ -133,19 +134,12 @@
 }
 
 void DartTracingImpl::Initialize(mojo::ApplicationImpl* app) {
-  mojo::InterfaceHandle<mojo::ServiceProvider> outgoing_sp_handle;
-  mojo::InterfaceRequest<mojo::ServiceProvider> outgoing_sp_request =
-      GetProxy(&outgoing_sp_handle);
-  app->shell()->ConnectToApplication("mojo:tracing", nullptr,
-                                     outgoing_sp_handle.Pass());
-  outgoing_sp_for_tracing_service_.Bind(outgoing_sp_request.Pass());
-  outgoing_sp_for_tracing_service_.AddService(this);
-}
+  tracing::TraceProviderRegistryPtr registry;
+  ConnectToService(app->shell(), "mojo:tracing", GetProxy(&registry));
 
-void DartTracingImpl::Create(
-    mojo::ApplicationConnection* connection,
-    mojo::InterfaceRequest<tracing::TraceProvider> request) {
-  provider_impl_.Bind(request.Pass());
+  mojo::InterfaceHandle<tracing::TraceProvider> provider;
+  provider_impl_.Bind(GetProxy(&provider));
+  registry->RegisterTraceProvider(provider.Pass());
 }
 
 }  // namespace dart
diff --git a/services/dart/dart_tracing.h b/services/dart/dart_tracing.h
index 1b2135e..d9a669c 100644
--- a/services/dart/dart_tracing.h
+++ b/services/dart/dart_tracing.h
@@ -7,7 +7,6 @@
 
 #include "base/trace_event/trace_event.h"
 #include "mojo/common/tracing_impl.h"
-#include "mojo/public/cpp/application/service_provider_impl.h"
 #include "mojo/public/cpp/bindings/interface_request.h"
 #include "mojo/services/tracing/interfaces/tracing.mojom.h"
 
@@ -42,24 +41,16 @@
   DISALLOW_COPY_AND_ASSIGN(DartTraceProvider);
 };
 
-class DartTracingImpl :
-    public mojo::InterfaceFactory<tracing::TraceProvider> {
+class DartTracingImpl {
  public:
-   DartTracingImpl();
-   ~DartTracingImpl() override;
+  DartTracingImpl();
+  ~DartTracingImpl();
 
-   // This connects to the tracing service and registers ourselves to provide
-   // tracing data on demand.
-   void Initialize(mojo::ApplicationImpl* app);
+  // This connects to the tracing service and registers ourselves to provide
+  // tracing data on demand.
+  void Initialize(mojo::ApplicationImpl* app);
 
-  private:
-   // InterfaceFactory<tracing::TraceProvider> implementation.
-   void Create(mojo::ApplicationConnection* connection,
-               mojo::InterfaceRequest<tracing::TraceProvider> request) override;
  private:
-  // Used to provide services *to* mojo:tracing.
-  mojo::ServiceProviderImpl outgoing_sp_for_tracing_service_;
-
   DartTraceProvider provider_impl_;
 
   DISALLOW_COPY_AND_ASSIGN(DartTracingImpl);
diff --git a/services/gfx/compositor/compositor_app.h b/services/gfx/compositor/compositor_app.h
index c80c5d7..1faaf11 100644
--- a/services/gfx/compositor/compositor_app.h
+++ b/services/gfx/compositor/compositor_app.h
@@ -12,6 +12,7 @@
 #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/gfx/composition/interfaces/compositor.mojom.h"
 #include "services/gfx/compositor/compositor_engine.h"
 
diff --git a/services/ui/input_manager/input_manager_app.h b/services/ui/input_manager/input_manager_app.h
index 70ac70d..e7c424a 100644
--- a/services/ui/input_manager/input_manager_app.h
+++ b/services/ui/input_manager/input_manager_app.h
@@ -11,6 +11,7 @@
 #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 {