blob: ed7cddc260c4e70ad660650a12df7fa1d84d24be [file] [log] [blame]
// 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_