| Index: services/service_manager/tests/connect/connect_test_package.cc
 | 
| diff --git a/services/service_manager/tests/connect/connect_test_package.cc b/services/service_manager/tests/connect/connect_test_package.cc
 | 
| index e62b65fe017a0d259f8b1e8239da9ceb5fc3e1d9..9d4a3d22775a7b9fea6cdd6ed3a720e99878c200 100644
 | 
| --- a/services/service_manager/tests/connect/connect_test_package.cc
 | 
| +++ b/services/service_manager/tests/connect/connect_test_package.cc
 | 
| @@ -54,8 +54,33 @@
 | 
|    }
 | 
|  
 | 
|   private:
 | 
| +  class ForwardingServiceImpl : public Service {
 | 
| +   public:
 | 
| +    explicit ForwardingServiceImpl(Service* service)
 | 
| +        : service_(service) {}
 | 
| +    ~ForwardingServiceImpl() override {}
 | 
| +
 | 
| +    // Service:
 | 
| +    void OnStart(ServiceContext* context) override {
 | 
| +      service_->OnStart(context);
 | 
| +    }
 | 
| +
 | 
| +    bool OnConnect(const ServiceInfo& remote_info,
 | 
| +                   InterfaceRegistry* registry) override {
 | 
| +      return service_->OnConnect(remote_info, registry);
 | 
| +    }
 | 
| +
 | 
| +    bool OnStop() override { return service_->OnStop(); }
 | 
| +
 | 
| +   private:
 | 
| +    Service* const service_;
 | 
| +
 | 
| +    DISALLOW_COPY_AND_ASSIGN(ForwardingServiceImpl);
 | 
| +  };
 | 
| +
 | 
|    // service_manager::Service:
 | 
| -  void OnStart() override {
 | 
| +  void OnStart(ServiceContext* context) override {
 | 
| +    context_ = context;
 | 
|      bindings_.set_connection_error_handler(
 | 
|          base::Bind(&ProvidedService::OnConnectionError,
 | 
|                     base::Unretained(this)));
 | 
| @@ -70,10 +95,10 @@
 | 
|      test::mojom::ConnectionStatePtr state(test::mojom::ConnectionState::New());
 | 
|      state->connection_remote_name = remote_info.identity.name();
 | 
|      state->connection_remote_userid = remote_info.identity.user_id();
 | 
| -    state->initialize_local_name = context()->identity().name();
 | 
| -    state->initialize_userid = context()->identity().user_id();
 | 
| -
 | 
| -    context()->connector()->ConnectToInterface(remote_info.identity, &caller_);
 | 
| +    state->initialize_local_name = context_->identity().name();
 | 
| +    state->initialize_userid = context_->identity().user_id();
 | 
| +
 | 
| +    context_->connector()->ConnectToInterface(remote_info.identity, &caller_);
 | 
|      caller_->ConnectionAccepted(std::move(state));
 | 
|  
 | 
|      return true;
 | 
| @@ -103,7 +128,7 @@
 | 
|    }
 | 
|  
 | 
|    void GetInstance(const GetInstanceCallback& callback) override {
 | 
| -    callback.Run(context()->identity().instance());
 | 
| +    callback.Run(context_->identity().instance());
 | 
|    }
 | 
|  
 | 
|    // test::mojom::BlockedInterface:
 | 
| @@ -117,7 +142,7 @@
 | 
|        const ConnectToClassAppAsDifferentUserCallback& callback) override {
 | 
|      Connector::ConnectParams params(target);
 | 
|      std::unique_ptr<Connection> connection =
 | 
| -        context()->connector()->Connect(¶ms);
 | 
| +        context_->connector()->Connect(¶ms);
 | 
|      {
 | 
|        base::RunLoop loop;
 | 
|        connection->AddConnectionCompletedClosure(loop.QuitClosure());
 | 
| @@ -131,7 +156,7 @@
 | 
|  
 | 
|    // base::SimpleThread:
 | 
|    void Run() override {
 | 
| -    ServiceRunner(new ForwardingService(this)).Run(
 | 
| +    ServiceRunner(new ForwardingServiceImpl(this)).Run(
 | 
|          request_.PassMessagePipe().release().value(), false);
 | 
|      caller_.reset();
 | 
|      bindings_.CloseAllBindings();
 | 
| @@ -144,6 +169,7 @@
 | 
|        base::MessageLoop::current()->QuitWhenIdle();
 | 
|    }
 | 
|  
 | 
| +  ServiceContext* context_ = nullptr;
 | 
|    const std::string title_;
 | 
|    mojom::ServiceRequest request_;
 | 
|    test::mojom::ExposedInterfacePtr caller_;
 | 
| @@ -166,7 +192,9 @@
 | 
|  
 | 
|   private:
 | 
|    // service_manager::Service:
 | 
| -  void OnStart() override {
 | 
| +  void OnStart(ServiceContext* context) override {
 | 
| +    context_ = context;
 | 
| +
 | 
|      base::Closure error_handler =
 | 
|          base::Bind(&ConnectTestService::OnConnectionError,
 | 
|                     base::Unretained(this));
 | 
| @@ -216,14 +244,15 @@
 | 
|    }
 | 
|  
 | 
|    void GetInstance(const GetInstanceCallback& callback) override {
 | 
| -    callback.Run(context()->identity().instance());
 | 
| +    callback.Run(context_->identity().instance());
 | 
|    }
 | 
|  
 | 
|    void OnConnectionError() {
 | 
|      if (bindings_.empty() && service_factory_bindings_.empty())
 | 
| -      context()->RequestQuit();
 | 
| -  }
 | 
| -
 | 
| +      context_->RequestQuit();
 | 
| +  }
 | 
| +
 | 
| +  ServiceContext* context_ = nullptr;
 | 
|    std::vector<std::unique_ptr<Service>> delegates_;
 | 
|    mojo::BindingSet<mojom::ServiceFactory> service_factory_bindings_;
 | 
|    mojo::BindingSet<test::mojom::ConnectTestService> bindings_;
 | 
| 
 |