| // Copyright 2017 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef COMPONENTS_UPDATE_CLIENT_ACTION_RUNNER_H_ | 
 | #define COMPONENTS_UPDATE_CLIENT_ACTION_RUNNER_H_ | 
 |  | 
 | #include "base/callback.h" | 
 | #include "base/threading/thread_checker.h" | 
 | #include "components/update_client/update_client.h" | 
 |  | 
 | namespace base { | 
 | class FilePath; | 
 | class SingleThreadTaskRunner; | 
 | }  // namespace base | 
 |  | 
 | namespace update_client { | 
 |  | 
 | class Component; | 
 |  | 
 | class ActionRunner { | 
 |  public: | 
 |   using Callback = ActionHandler::Callback; | 
 |  | 
 |   explicit ActionRunner(const Component& component); | 
 |   ~ActionRunner(); | 
 |  | 
 |   void Run(Callback run_complete); | 
 |  | 
 |  private: | 
 |   void Handle(const base::FilePath& crx_path); | 
 |  | 
 |   THREAD_CHECKER(thread_checker_); | 
 |  | 
 |   const Component& component_; | 
 |  | 
 |   // Used to post callbacks to the main thread. | 
 |   scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; | 
 |  | 
 |   Callback callback_; | 
 |  | 
 |   ActionRunner(const ActionRunner&) = delete; | 
 |   ActionRunner& operator=(const ActionRunner&) = delete; | 
 | }; | 
 |  | 
 | }  // namespace update_client | 
 |  | 
 | #endif  // COMPONENTS_UPDATE_CLIENT_ACTION_RUNNER_H_ |