Remove ViewProvider.CreateView()'s exposed_services.

R=jeffbrown@google.com

Review URL: https://codereview.chromium.org/2001283002 .
diff --git a/apps/moterm/moterm_app.cc b/apps/moterm/moterm_app.cc
index 3eabe88..a8a45f4 100644
--- a/apps/moterm/moterm_app.cc
+++ b/apps/moterm/moterm_app.cc
@@ -14,8 +14,7 @@
 void MotermApp::CreateView(
     const std::string& connection_url,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-    mojo::InterfaceRequest<mojo::ServiceProvider> services,
-    mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
+    mojo::InterfaceRequest<mojo::ServiceProvider> services) {
   new MotermView(mojo::CreateApplicationConnector(app_impl()->shell()),
                  view_owner_request.Pass(), services.Pass());
 }
diff --git a/apps/moterm/moterm_app.h b/apps/moterm/moterm_app.h
index be7d950..185a483 100644
--- a/apps/moterm/moterm_app.h
+++ b/apps/moterm/moterm_app.h
@@ -16,8 +16,7 @@
   void CreateView(
       const std::string& connection_url,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-      mojo::InterfaceRequest<mojo::ServiceProvider> services,
-      mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override;
+      mojo::InterfaceRequest<mojo::ServiceProvider> services) override;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(MotermApp);
diff --git a/examples/moterm_example_app/moterm_example_app.cc b/examples/moterm_example_app/moterm_example_app.cc
index 81e6984..e1ca20e 100644
--- a/examples/moterm_example_app/moterm_example_app.cc
+++ b/examples/moterm_example_app/moterm_example_app.cc
@@ -58,8 +58,8 @@
     // Create the moterm view and pass it back to the client directly.
     mojo::ConnectToService(moterm_app.get(), GetProxy(&moterm_view_provider_));
     mojo::ServiceProviderPtr moterm_service_provider;
-    moterm_view_provider_->CreateView(
-        view_owner_request.Pass(), GetProxy(&moterm_service_provider), nullptr);
+    moterm_view_provider_->CreateView(view_owner_request.Pass(),
+                                      GetProxy(&moterm_service_provider));
 
     // Connect to the moterm terminal service associated with the view
     // we just created.
@@ -165,8 +165,7 @@
   void CreateView(
       const std::string& connection_url,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-      mojo::InterfaceRequest<mojo::ServiceProvider> services,
-      mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override {
+      mojo::InterfaceRequest<mojo::ServiceProvider> services) override {
     new MotermExampleAppView(app_impl()->shell(), view_owner_request.Pass());
   }
 
diff --git a/examples/shadows/shadows_app.cc b/examples/shadows/shadows_app.cc
index 207476b..41f4dfe 100644
--- a/examples/shadows/shadows_app.cc
+++ b/examples/shadows/shadows_app.cc
@@ -16,8 +16,7 @@
 void ShadowsApp::CreateView(
     const std::string& connection_url,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-    mojo::InterfaceRequest<mojo::ServiceProvider> services,
-    mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
+    mojo::InterfaceRequest<mojo::ServiceProvider> services) {
   new ShadowsView(mojo::CreateApplicationConnector(app_impl()->shell()),
                   view_owner_request.Pass());
 }
diff --git a/examples/shadows/shadows_app.h b/examples/shadows/shadows_app.h
index 86f5fc6..61d549a 100644
--- a/examples/shadows/shadows_app.h
+++ b/examples/shadows/shadows_app.h
@@ -17,8 +17,7 @@
   void CreateView(
       const std::string& connection_url,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-      mojo::InterfaceRequest<mojo::ServiceProvider> services,
-      mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override;
+      mojo::InterfaceRequest<mojo::ServiceProvider> services) override;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(ShadowsApp);
diff --git a/examples/ui/jank/jank.cc b/examples/ui/jank/jank.cc
index aedb12e..ae1a8c3 100644
--- a/examples/ui/jank/jank.cc
+++ b/examples/ui/jank/jank.cc
@@ -209,8 +209,7 @@
   void CreateView(
       const std::string& connection_url,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-      mojo::InterfaceRequest<mojo::ServiceProvider> services,
-      mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override {
+      mojo::InterfaceRequest<mojo::ServiceProvider> services) override {
     new JankView(mojo::CreateApplicationConnector(app_impl()->shell()),
                  view_owner_request.Pass());
   }
diff --git a/examples/ui/noodles/noodles_app.cc b/examples/ui/noodles/noodles_app.cc
index 1b4034a..5c28d9e 100644
--- a/examples/ui/noodles/noodles_app.cc
+++ b/examples/ui/noodles/noodles_app.cc
@@ -16,8 +16,7 @@
 void NoodlesApp::CreateView(
     const std::string& connection_url,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-    mojo::InterfaceRequest<mojo::ServiceProvider> services,
-    mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
+    mojo::InterfaceRequest<mojo::ServiceProvider> services) {
   new NoodlesView(mojo::CreateApplicationConnector(app_impl()->shell()),
                   view_owner_request.Pass());
 }
diff --git a/examples/ui/noodles/noodles_app.h b/examples/ui/noodles/noodles_app.h
index e30e659..35e528c 100644
--- a/examples/ui/noodles/noodles_app.h
+++ b/examples/ui/noodles/noodles_app.h
@@ -17,8 +17,7 @@
   void CreateView(
       const std::string& connection_url,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-      mojo::InterfaceRequest<mojo::ServiceProvider> services,
-      mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override;
+      mojo::InterfaceRequest<mojo::ServiceProvider> services) override;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(NoodlesApp);
diff --git a/examples/ui/pdf_viewer/pdf_viewer.cc b/examples/ui/pdf_viewer/pdf_viewer.cc
index 2209ba8..d1e463d 100644
--- a/examples/ui/pdf_viewer/pdf_viewer.cc
+++ b/examples/ui/pdf_viewer/pdf_viewer.cc
@@ -272,8 +272,7 @@
   void CreateView(
       const std::string& connection_url,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-      mojo::InterfaceRequest<mojo::ServiceProvider> services,
-      mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override {
+      mojo::InterfaceRequest<mojo::ServiceProvider> services) override {
     new PDFDocumentView(mojo::CreateApplicationConnector(app_impl()->shell()),
                         view_owner_request.Pass(), pdf_document_);
   }
diff --git a/examples/ui/png_viewer/png_viewer.cc b/examples/ui/png_viewer/png_viewer.cc
index bec7677..de10c25 100644
--- a/examples/ui/png_viewer/png_viewer.cc
+++ b/examples/ui/png_viewer/png_viewer.cc
@@ -120,8 +120,7 @@
   void CreateView(
       const std::string& connection_url,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-      mojo::InterfaceRequest<mojo::ServiceProvider> services,
-      mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override {
+      mojo::InterfaceRequest<mojo::ServiceProvider> services) override {
     new PNGView(mojo::CreateApplicationConnector(app_impl()->shell()),
                 view_owner_request.Pass(), image_);
   }
diff --git a/examples/ui/shapes/shapes_app.cc b/examples/ui/shapes/shapes_app.cc
index 5d0f0c1..4c50654 100644
--- a/examples/ui/shapes/shapes_app.cc
+++ b/examples/ui/shapes/shapes_app.cc
@@ -16,8 +16,7 @@
 void ShapesApp::CreateView(
     const std::string& connection_url,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-    mojo::InterfaceRequest<mojo::ServiceProvider> services,
-    mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
+    mojo::InterfaceRequest<mojo::ServiceProvider> services) {
   new ShapesView(mojo::CreateApplicationConnector(app_impl()->shell()),
                  view_owner_request.Pass());
 }
diff --git a/examples/ui/shapes/shapes_app.h b/examples/ui/shapes/shapes_app.h
index 5ec93bf..0638f4f 100644
--- a/examples/ui/shapes/shapes_app.h
+++ b/examples/ui/shapes/shapes_app.h
@@ -17,8 +17,7 @@
   void CreateView(
       const std::string& connection_url,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-      mojo::InterfaceRequest<mojo::ServiceProvider> services,
-      mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override;
+      mojo::InterfaceRequest<mojo::ServiceProvider> services) override;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(ShapesApp);
diff --git a/examples/ui/spinning_cube/spinning_cube_app.cc b/examples/ui/spinning_cube/spinning_cube_app.cc
index 6159641..ea6f507 100644
--- a/examples/ui/spinning_cube/spinning_cube_app.cc
+++ b/examples/ui/spinning_cube/spinning_cube_app.cc
@@ -16,8 +16,7 @@
 void SpinningCubeApp::CreateView(
     const std::string& connection_url,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-    mojo::InterfaceRequest<mojo::ServiceProvider> services,
-    mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
+    mojo::InterfaceRequest<mojo::ServiceProvider> services) {
   new SpinningCubeView(mojo::CreateApplicationConnector(app_impl()->shell()),
                        view_owner_request.Pass());
 }
diff --git a/examples/ui/spinning_cube/spinning_cube_app.h b/examples/ui/spinning_cube/spinning_cube_app.h
index b6e7a78..e871516 100644
--- a/examples/ui/spinning_cube/spinning_cube_app.h
+++ b/examples/ui/spinning_cube/spinning_cube_app.h
@@ -17,8 +17,7 @@
   void CreateView(
       const std::string& connection_url,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-      mojo::InterfaceRequest<mojo::ServiceProvider> services,
-      mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override;
+      mojo::InterfaceRequest<mojo::ServiceProvider> services) override;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(SpinningCubeApp);
diff --git a/examples/ui/tile/tile_app.cc b/examples/ui/tile/tile_app.cc
index 2b39309..989fa38 100644
--- a/examples/ui/tile/tile_app.cc
+++ b/examples/ui/tile/tile_app.cc
@@ -17,8 +17,7 @@
 void TileApp::CreateView(
     const std::string& connection_url,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-    mojo::InterfaceRequest<mojo::ServiceProvider> services,
-    mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
+    mojo::InterfaceRequest<mojo::ServiceProvider> services) {
   TileParams params;
   if (!ParseParams(connection_url, &params)) {
     LOG(ERROR) << "Missing or invalid URL parameters.  See README.";
diff --git a/examples/ui/tile/tile_app.h b/examples/ui/tile/tile_app.h
index 325a21f..d75ae41 100644
--- a/examples/ui/tile/tile_app.h
+++ b/examples/ui/tile/tile_app.h
@@ -19,8 +19,7 @@
   void CreateView(
       const std::string& connection_url,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-      mojo::InterfaceRequest<mojo::ServiceProvider> services,
-      mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override;
+      mojo::InterfaceRequest<mojo::ServiceProvider> services) override;
 
  private:
   bool ParseParams(const std::string& connection_url, TileParams* params);
diff --git a/examples/ui/tile/tile_view.cc b/examples/ui/tile/tile_view.cc
index b09815e..ab14a68 100644
--- a/examples/ui/tile/tile_view.cc
+++ b/examples/ui/tile/tile_view.cc
@@ -47,7 +47,7 @@
     LOG(INFO) << "Connecting to view: child_key=" << child_key
               << ", url=" << url;
     mojo::ui::ViewOwnerPtr child_view_owner;
-    provider->CreateView(mojo::GetProxy(&child_view_owner), nullptr, nullptr);
+    provider->CreateView(mojo::GetProxy(&child_view_owner), nullptr);
 
     GetViewContainer()->AddChild(child_key, child_view_owner.Pass());
     views_.emplace(std::make_pair(
diff --git a/mojo/dart/packages/mojo_services/lib/mojo/ui/view_provider.mojom.dart b/mojo/dart/packages/mojo_services/lib/mojo/ui/view_provider.mojom.dart
index 0177d03..6abe7b6 100644
--- a/mojo/dart/packages/mojo_services/lib/mojo/ui/view_provider.mojom.dart
+++ b/mojo/dart/packages/mojo_services/lib/mojo/ui/view_provider.mojom.dart
@@ -14,11 +14,10 @@
 
 class _ViewProviderCreateViewParams extends bindings.Struct {
   static const List<bindings.StructDataHeader> kVersions = const [
-    const bindings.StructDataHeader(24, 0)
+    const bindings.StructDataHeader(16, 0)
   ];
   view_token_mojom.ViewOwnerInterfaceRequest viewOwner = null;
   service_provider_mojom.ServiceProviderInterfaceRequest services = null;
-  service_provider_mojom.ServiceProviderInterface exposedServices = null;
 
   _ViewProviderCreateViewParams() : super(kVersions.last.size);
 
@@ -63,10 +62,6 @@
       
       result.services = decoder0.decodeInterfaceRequest(12, true, service_provider_mojom.ServiceProviderStub.newFromEndpoint);
     }
-    if (mainDataHeader.version >= 0) {
-      
-      result.exposedServices = decoder0.decodeServiceInterface(16, true, service_provider_mojom.ServiceProviderProxy.newFromEndpoint);
-    }
     return result;
   }
 
@@ -86,20 +81,12 @@
           "services of struct _ViewProviderCreateViewParams: $e";
       rethrow;
     }
-    try {
-      encoder0.encodeInterface(exposedServices, 16, true);
-    } on bindings.MojoCodecError catch(e) {
-      e.message = "Error encountered while encoding field "
-          "exposedServices of struct _ViewProviderCreateViewParams: $e";
-      rethrow;
-    }
   }
 
   String toString() {
     return "_ViewProviderCreateViewParams("
            "viewOwner: $viewOwner" ", "
-           "services: $services" ", "
-           "exposedServices: $exposedServices" ")";
+           "services: $services" ")";
   }
 
   Map toJson() {
@@ -143,7 +130,7 @@
     s.connectToService(url, p, name);
     return p;
   }
-  void createView(view_token_mojom.ViewOwnerInterfaceRequest viewOwner, service_provider_mojom.ServiceProviderInterfaceRequest services, service_provider_mojom.ServiceProviderInterface exposedServices);
+  void createView(view_token_mojom.ViewOwnerInterfaceRequest viewOwner, service_provider_mojom.ServiceProviderInterfaceRequest services);
 }
 
 abstract class ViewProviderInterface
@@ -220,7 +207,7 @@
   }
 
 
-  void createView(view_token_mojom.ViewOwnerInterfaceRequest viewOwner, service_provider_mojom.ServiceProviderInterfaceRequest services, service_provider_mojom.ServiceProviderInterface exposedServices) {
+  void createView(view_token_mojom.ViewOwnerInterfaceRequest viewOwner, service_provider_mojom.ServiceProviderInterfaceRequest services) {
     if (!ctrl.isBound) {
       ctrl.proxyError("The Proxy is closed.");
       return;
@@ -228,7 +215,6 @@
     var params = new _ViewProviderCreateViewParams();
     params.viewOwner = viewOwner;
     params.services = services;
-    params.exposedServices = exposedServices;
     ctrl.sendMessage(params,
         _viewProviderMethodCreateViewName);
   }
@@ -270,7 +256,7 @@
       case _viewProviderMethodCreateViewName:
         var params = _ViewProviderCreateViewParams.deserialize(
             message.payload);
-        _impl.createView(params.viewOwner, params.services, params.exposedServices);
+        _impl.createView(params.viewOwner, params.services);
         break;
       default:
         throw new bindings.MojoCodecError("Unexpected message name");
@@ -330,8 +316,8 @@
   }
 
 
-  void createView(view_token_mojom.ViewOwnerInterfaceRequest viewOwner, service_provider_mojom.ServiceProviderInterfaceRequest services, service_provider_mojom.ServiceProviderInterface exposedServices) {
-    return impl.createView(viewOwner, services, exposedServices);
+  void createView(view_token_mojom.ViewOwnerInterfaceRequest viewOwner, service_provider_mojom.ServiceProviderInterfaceRequest services) {
+    return impl.createView(viewOwner, services);
   }
 }
 
diff --git a/mojo/services/ui/views/interfaces/view_provider.mojom b/mojo/services/ui/views/interfaces/view_provider.mojom
index 5fc6cf9..19635bc 100644
--- a/mojo/services/ui/views/interfaces/view_provider.mojom
+++ b/mojo/services/ui/views/interfaces/view_provider.mojom
@@ -24,10 +24,6 @@
   //
   // The caller may provide services to the view via the |services|
   // service provider.
-  //
-  // The caller may receive services from the view via the |exposed_services|
-  // service provider.
   CreateView(ViewOwner& view_owner,
-             mojo.ServiceProvider&? services,
-             mojo.ServiceProvider? exposed_services);
+             mojo.ServiceProvider&? services);
 };
diff --git a/mojo/ui/view_provider_app.cc b/mojo/ui/view_provider_app.cc
index 4de9593..a8e4b85 100644
--- a/mojo/ui/view_provider_app.cc
+++ b/mojo/ui/view_provider_app.cc
@@ -4,8 +4,6 @@
 
 #include "mojo/ui/view_provider_app.h"
 
-#include <utility>
-
 #include "base/command_line.h"
 #include "base/logging.h"
 
@@ -24,10 +22,9 @@
   // |ViewProvider|:
   void CreateView(
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-      mojo::InterfaceRequest<mojo::ServiceProvider> services,
-      mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override {
+      mojo::InterfaceRequest<mojo::ServiceProvider> services) override {
     app_->CreateView(this, view_provider_url_, view_owner_request.Pass(),
-                     services.Pass(), std::move(exposed_services));
+                     services.Pass());
   }
 
   ViewProviderApp* app_;
@@ -66,10 +63,8 @@
     DelegatingViewProvider* provider,
     const std::string& view_provider_url,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-    mojo::InterfaceRequest<mojo::ServiceProvider> services,
-    mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
-  CreateView(view_provider_url, view_owner_request.Pass(), services.Pass(),
-             exposed_services.Pass());
+    mojo::InterfaceRequest<mojo::ServiceProvider> services) {
+  CreateView(view_provider_url, view_owner_request.Pass(), services.Pass());
 }
 
 }  // namespace ui
diff --git a/mojo/ui/view_provider_app.h b/mojo/ui/view_provider_app.h
index 4f6293b..9c85733 100644
--- a/mojo/ui/view_provider_app.h
+++ b/mojo/ui/view_provider_app.h
@@ -46,14 +46,9 @@
   //
   // The |services| parameter is used to receive services from the view
   // on behalf of the caller.
-  //
-  // The |exposed_services| parameters is used to provide services to
-  // the view from the caller.
-  virtual void CreateView(
-      const std::string& view_provider_url,
-      InterfaceRequest<ViewOwner> view_owner_request,
-      InterfaceRequest<ServiceProvider> services,
-      InterfaceHandle<ServiceProvider> exposed_services) = 0;
+  virtual void CreateView(const std::string& view_provider_url,
+                          InterfaceRequest<ViewOwner> view_owner_request,
+                          InterfaceRequest<ServiceProvider> services) = 0;
 
  private:
   class DelegatingViewProvider;
@@ -61,8 +56,7 @@
   void CreateView(DelegatingViewProvider* provider,
                   const std::string& view_provider_url,
                   InterfaceRequest<ViewOwner> view_owner_request,
-                  InterfaceRequest<ServiceProvider> services,
-                  InterfaceHandle<ServiceProvider> exposed_services);
+                  InterfaceRequest<ServiceProvider> services);
 
   ApplicationImpl* app_impl_ = nullptr;
   StrongBindingSet<ViewProvider> bindings_;
diff --git a/services/ui/launcher/launch_instance.cc b/services/ui/launcher/launch_instance.cc
index c8ed4f3..9c65fcd 100644
--- a/services/ui/launcher/launch_instance.cc
+++ b/services/ui/launcher/launch_instance.cc
@@ -41,8 +41,7 @@
   mojo::ConnectToService(app_impl_->shell(), app_url_,
                          GetProxy(&client_view_provider));
 
-  client_view_provider->CreateView(GetProxy(&client_view_owner_), nullptr,
-                                   nullptr);
+  client_view_provider->CreateView(GetProxy(&client_view_owner_), nullptr);
 }
 
 void LaunchInstance::InitViewport() {