Update Lesnet to match changes in upstream Mojo.

- Create a quick hack to download "asio".
- Remove "application_connection.h" and "application_runner.h".
  Replace them with "service_provider_impl.h" and "run_application.h".
- Update NetworkServiceDelegate to use new interface.
- Update NetworkServiceImpl to use new interface.

Change-Id: I5cf11b9e0cd6ece1598a2a78103545f8a32fb5fe
diff --git a/download_prebuilts.sh b/download_prebuilts.sh
index dff714a..d33c71d 100755
--- a/download_prebuilts.sh
+++ b/download_prebuilts.sh
@@ -7,3 +7,11 @@
 ./third_party/mojo/src/mojo/public/tools/download_dart_snapshotter.py \
 	--tools-directory=../../../../lesnet/tools \
 	--version-file=../../../../lesnet/third_party/mojo/MOJO_VERSION
+
+# TODO(smklein): Remove this hack. "asio" does not exist in Mojo's third_party
+# directory, so this is necessary to build.
+cd ./third_party/
+git clone https://mojo.googlesource.com/asio
+cd ./asio/
+git checkout mojo
+cd ../..
diff --git a/mojo/services/network/main.cc b/mojo/services/network/main.cc
index c65acf0..9514856 100644
--- a/mojo/services/network/main.cc
+++ b/mojo/services/network/main.cc
@@ -3,13 +3,12 @@
 // found in the LICENSE file.
 
 #include "mojo/public/c/system/main.h"
-#include "mojo/public/cpp/application/application_connection.h"
-#include "mojo/public/cpp/application/application_runner.h"
+#include "mojo/public/cpp/application/service_provider_impl.h"
+#include "mojo/public/cpp/application/run_application.h"
 
 #include "network_service_delegate.h"
 
 MojoResult MojoMain(MojoHandle shell_handle) {
-  mojo::ApplicationRunner runner(
-      std::unique_ptr<NetworkServiceDelegate>(new NetworkServiceDelegate()));
-  return runner.Run(shell_handle);
+  NetworkServiceDelegate network_service_delegate;
+  return mojo::RunApplication(shell_handle, &network_service_delegate);
 }
diff --git a/mojo/services/network/network_service_delegate.cc b/mojo/services/network/network_service_delegate.cc
index 83ecb09..4ef8c22 100644
--- a/mojo/services/network/network_service_delegate.cc
+++ b/mojo/services/network/network_service_delegate.cc
@@ -4,26 +4,30 @@
 
 #include "mojo/services/network/network_service_delegate.h"
 
-#include "mojo/public/cpp/application/application_connection.h"
+#include "mojo/public/cpp/application/service_provider_impl.h"
 
 NetworkServiceDelegate::NetworkServiceDelegate() {}
 
 NetworkServiceDelegate::~NetworkServiceDelegate() {}
 
-void NetworkServiceDelegate::Initialize(mojo::ApplicationImpl* app) {
+void NetworkServiceDelegate::OnInitialize() {
 }
 
-bool NetworkServiceDelegate::ConfigureIncomingConnection(
-    mojo::ApplicationConnection* connection) {
-  connection->AddService(this);
+bool NetworkServiceDelegate::OnAcceptConnection(
+    mojo::ServiceProviderImpl* service_provider_impl) {
+  service_provider_impl->AddService<mojo::NetworkService>(
+      [this](const mojo::ConnectionContext& connection_context,
+             mojo::InterfaceRequest<mojo::NetworkService> request) {
+        new mojo::NetworkServiceImpl(request.Pass());
+      });
   return true;
 }
 
-void NetworkServiceDelegate::Quit() {
+void NetworkServiceDelegate::OnQuit() {
 }
 
 void NetworkServiceDelegate::Create(
-    mojo::ApplicationConnection* connection,
+    const mojo::ConnectionContext& connection,
     mojo::InterfaceRequest<mojo::NetworkService> request) {
-  new mojo::NetworkServiceImpl(request.Pass(), connection);
+  new mojo::NetworkServiceImpl(request.Pass());
 }
diff --git a/mojo/services/network/network_service_delegate.h b/mojo/services/network/network_service_delegate.h
index c17bfe4..67664d1 100644
--- a/mojo/services/network/network_service_delegate.h
+++ b/mojo/services/network/network_service_delegate.h
@@ -6,28 +6,25 @@
 #define MOJO_SERVICES_NETWORK_NETWORK_SERVICE_DELEGATE_H_
 
 #include "mojo/services/network/network_service_impl.h"
-#include "mojo/public/cpp/application/application_delegate.h"
-#include "mojo/public/cpp/application/application_impl.h"
 #include "mojo/public/cpp/bindings/interface_ptr.h"
-#include "mojo/public/cpp/application/interface_factory.h"
+#include "mojo/public/cpp/application/application_impl_base.h"
+#include "mojo/public/cpp/application/connection_context.h"
 
-class NetworkServiceDelegate
-    : public mojo::ApplicationDelegate,
-      public mojo::InterfaceFactory<mojo::NetworkService> {
+class NetworkServiceDelegate : public mojo::ApplicationImplBase {
  public:
   NetworkServiceDelegate();
   ~NetworkServiceDelegate() override;
 
  private:
-  // mojo::ApplicationDelegate implementation.
-  void Initialize(mojo::ApplicationImpl* app) override;
-  bool ConfigureIncomingConnection(
-      mojo::ApplicationConnection* connection) override;
-  void Quit() override;
+  // mojo::ApplicationImplBase implementation.
+  void OnInitialize() override;
+  bool OnAcceptConnection(
+      mojo::ServiceProviderImpl* service_provider_impl) override;
+  void OnQuit() override;
 
-  // mojo::InterfaceFactory<mojo::NetworkService> implementation.
-  void Create(mojo::ApplicationConnection* connection,
-              mojo::InterfaceRequest<mojo::NetworkService> request) override;
+  // Creates a content handler for the given connection (context and request).
+  void Create(const mojo::ConnectionContext& connection,
+              mojo::InterfaceRequest<mojo::NetworkService> request);
 
   DISALLOW_COPY_AND_ASSIGN(NetworkServiceDelegate);
 };
diff --git a/mojo/services/network/network_service_impl.cc b/mojo/services/network/network_service_impl.cc
index 974db70..e68969a 100644
--- a/mojo/services/network/network_service_impl.cc
+++ b/mojo/services/network/network_service_impl.cc
@@ -9,12 +9,11 @@
 #include "mojo/services/network/net_adapters.h"
 
 #include "mojo/services/network/url_loader_impl.h"
-#include "mojo/public/cpp/application/application_connection.h"
+#include "mojo/public/cpp/application/service_provider_impl.h"
 
 namespace mojo {
 
-NetworkServiceImpl::NetworkServiceImpl(InterfaceRequest<NetworkService> request,
-                                       ApplicationConnection* connection)
+NetworkServiceImpl::NetworkServiceImpl(InterfaceRequest<NetworkService> request)
     : binding_(this, request.Pass()) {
 }
 
diff --git a/mojo/services/network/network_service_impl.h b/mojo/services/network/network_service_impl.h
index 7c576fe..1d4f858 100644
--- a/mojo/services/network/network_service_impl.h
+++ b/mojo/services/network/network_service_impl.h
@@ -16,8 +16,7 @@
 
 class NetworkServiceImpl : public NetworkService {
  public:
-  NetworkServiceImpl(InterfaceRequest<NetworkService> request,
-                     ApplicationConnection* connection);
+  NetworkServiceImpl(InterfaceRequest<NetworkService> request);
   ~NetworkServiceImpl() override;
 
   // NetworkService methods:
diff --git a/third_party/asio b/third_party/asio
deleted file mode 120000
index 993e6cf..0000000
--- a/third_party/asio
+++ /dev/null
@@ -1 +0,0 @@
-../../src/third_party/asio
\ No newline at end of file
diff --git a/third_party/asio b/third_party/asio
new file mode 160000
index 0000000..99ffb63
--- /dev/null
+++ b/third_party/asio
@@ -0,0 +1 @@
+Subproject commit 99ffb63cba8577910f3684ee36ae85f9d53863ea