| Index: services/asset_bundle/main.cc
 | 
| diff --git a/services/asset_bundle/main.cc b/services/asset_bundle/main.cc
 | 
| index 9d06e5203edc8bed0493558a81299e9a5977465e..4ff8f175cbbb68753e209fb460c127892c9c2a78 100644
 | 
| --- a/services/asset_bundle/main.cc
 | 
| +++ b/services/asset_bundle/main.cc
 | 
| @@ -8,14 +8,12 @@
 | 
|  #include "mojo/public/c/system/main.h"
 | 
|  #include "mojo/public/cpp/application/application_connection.h"
 | 
|  #include "mojo/public/cpp/application/application_delegate.h"
 | 
| -#include "mojo/public/cpp/application/interface_factory.h"
 | 
|  #include "services/asset_bundle/asset_unpacker_impl.h"
 | 
|  
 | 
|  namespace mojo {
 | 
|  namespace asset_bundle {
 | 
|  
 | 
| -class AssetBundleApp : public ApplicationDelegate,
 | 
| -                       public InterfaceFactory<AssetUnpacker> {
 | 
| +class AssetBundleApp : public ApplicationDelegate {
 | 
|   public:
 | 
|    AssetBundleApp() {}
 | 
|    ~AssetBundleApp() override {}
 | 
| @@ -23,29 +21,27 @@ class AssetBundleApp : public ApplicationDelegate,
 | 
|   private:
 | 
|    // |ApplicationDelegate| override:
 | 
|    bool ConfigureIncomingConnection(ApplicationConnection* connection) override {
 | 
| -    connection->AddService<AssetUnpacker>(this);
 | 
| +    connection->GetServiceProviderImpl().AddService<AssetUnpacker>(
 | 
| +        [this](const ConnectionContext& connection_context,
 | 
| +               InterfaceRequest<AssetUnpacker> asset_unpacker_request) {
 | 
| +          // Lazily initialize |sequenced_worker_pool_|. (We can't create it in
 | 
| +          // the constructor, since AtExitManager is only created in
 | 
| +          // ApplicationRunnerChromium::Run().)
 | 
| +          if (!sequenced_worker_pool_) {
 | 
| +            // TODO(vtl): What's the "right" way to choose the maximum number of
 | 
| +            // threads?
 | 
| +            sequenced_worker_pool_ =
 | 
| +                new base::SequencedWorkerPool(4, "AssetBundleWorker");
 | 
| +          }
 | 
| +
 | 
| +          new AssetUnpackerImpl(
 | 
| +              asset_unpacker_request.Pass(),
 | 
| +              sequenced_worker_pool_->GetTaskRunnerWithShutdownBehavior(
 | 
| +                  base::SequencedWorkerPool::SKIP_ON_SHUTDOWN));
 | 
| +        });
 | 
|      return true;
 | 
|    }
 | 
|  
 | 
| -  // |InterfaceFactory<AssetUnpacker>| implementation:
 | 
| -  void Create(const ConnectionContext& connection_context,
 | 
| -              InterfaceRequest<AssetUnpacker> request) override {
 | 
| -    // Lazily initialize |sequenced_worker_pool_|. (We can't create it in the
 | 
| -    // constructor, since AtExitManager is only created in
 | 
| -    // ApplicationRunnerChromium::Run().)
 | 
| -    if (!sequenced_worker_pool_) {
 | 
| -      // TODO(vtl): What's the "right" way to choose the maximum number of
 | 
| -      // threads?
 | 
| -      sequenced_worker_pool_ =
 | 
| -          new base::SequencedWorkerPool(4, "AssetBundleWorker");
 | 
| -    }
 | 
| -
 | 
| -    new AssetUnpackerImpl(
 | 
| -        request.Pass(),
 | 
| -        sequenced_worker_pool_->GetTaskRunnerWithShutdownBehavior(
 | 
| -            base::SequencedWorkerPool::SKIP_ON_SHUTDOWN));
 | 
| -  }
 | 
| -
 | 
|    // We don't really need the "sequenced" part, but we need to be able to shut
 | 
|    // down our worker pool.
 | 
|    scoped_refptr<base::SequencedWorkerPool> sequenced_worker_pool_;
 | 
| 
 |