|  | // Copyright 2015 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 SERVICES_ASSET_BUNDLE_ASSET_UNPACKER_JOB_H_ | 
|  | #define SERVICES_ASSET_BUNDLE_ASSET_UNPACKER_JOB_H_ | 
|  |  | 
|  | #include "base/files/scoped_temp_dir.h" | 
|  | #include "base/macros.h" | 
|  | #include "base/memory/weak_ptr.h" | 
|  | #include "base/task_runner.h" | 
|  | #include "mojo/data_pipe_utils/data_pipe_utils.h" | 
|  | #include "mojo/public/cpp/bindings/interface_request.h" | 
|  | #include "mojo/services/asset_bundle/public/interfaces/asset_bundle.mojom.h" | 
|  |  | 
|  | namespace mojo { | 
|  | namespace asset_bundle { | 
|  |  | 
|  | class AssetUnpackerJob { | 
|  | public: | 
|  | AssetUnpackerJob(InterfaceRequest<AssetBundle> asset_bundle, | 
|  | scoped_refptr<base::TaskRunner> worker_runner); | 
|  | ~AssetUnpackerJob(); | 
|  |  | 
|  | void Unpack(ScopedDataPipeConsumerHandle zipped_assets); | 
|  |  | 
|  | private: | 
|  | void OnZippedAssetsAvailable(const base::FilePath& zip_path, bool success); | 
|  | void OnUnzippedAssetsAvailable(scoped_ptr<base::ScopedTempDir> temp_dir); | 
|  |  | 
|  | InterfaceRequest<AssetBundle> asset_bundle_; | 
|  | scoped_refptr<base::TaskRunner> worker_runner_; | 
|  | base::WeakPtrFactory<AssetUnpackerJob> weak_factory_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(AssetUnpackerJob); | 
|  | }; | 
|  |  | 
|  | }  // namespace asset_bundle | 
|  | }  // namespace mojo | 
|  |  | 
|  | #endif  // SERVICES_ASSET_BUNDLE_ASSET_UNPACKER_JOB_H_ |