Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(115)

Side by Side Diff: services/asset_bundle/asset_unpacker_job.cc

Issue 1206673006: Don't use base::WorkerPool in the asset_bundle app. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: move comment Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « services/asset_bundle/asset_unpacker_job.h ('k') | services/asset_bundle/main.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "services/asset_bundle/asset_unpacker_job.h" 5 #include "services/asset_bundle/asset_unpacker_job.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "base/threading/worker_pool.h"
13 #include "services/asset_bundle/asset_bundle_impl.h" 12 #include "services/asset_bundle/asset_bundle_impl.h"
14 #include "third_party/zlib/google/zip.h" 13 #include "third_party/zlib/google/zip.h"
15 14
16 namespace mojo { 15 namespace mojo {
17 namespace asset_bundle { 16 namespace asset_bundle {
18 namespace { 17 namespace {
19 18
20 void UnzipAssets( 19 void UnzipAssets(
21 const base::FilePath& zip_path, 20 const base::FilePath& zip_path,
22 scoped_ptr<base::ScopedTempDir> asset_dir, 21 scoped_ptr<base::ScopedTempDir> asset_dir,
23 scoped_refptr<base::TaskRunner> task_runner, 22 scoped_refptr<base::TaskRunner> task_runner,
24 base::Callback<void(scoped_ptr<base::ScopedTempDir>)> callback) { 23 base::Callback<void(scoped_ptr<base::ScopedTempDir>)> callback) {
25 if (!zip::Unzip(zip_path, asset_dir->path())) { 24 if (!zip::Unzip(zip_path, asset_dir->path())) {
26 task_runner->PostTask(FROM_HERE, base::Bind(callback, nullptr)); 25 task_runner->PostTask(FROM_HERE, base::Bind(callback, nullptr));
27 } else { 26 } else {
28 task_runner->PostTask(FROM_HERE, 27 task_runner->PostTask(FROM_HERE,
29 base::Bind(callback, base::Passed(asset_dir.Pass()))); 28 base::Bind(callback, base::Passed(asset_dir.Pass())));
30 } 29 }
31 base::DeleteFile(zip_path, false); 30 base::DeleteFile(zip_path, false);
32 } 31 }
33 32
34 } // namespace 33 } // namespace
35 34
36 AssetUnpackerJob::AssetUnpackerJob(InterfaceRequest<AssetBundle> asset_bundle) 35 AssetUnpackerJob::AssetUnpackerJob(
37 : asset_bundle_(asset_bundle.Pass()), weak_factory_(this) { 36 InterfaceRequest<AssetBundle> asset_bundle,
37 scoped_refptr<base::TaskRunner> worker_runner)
38 : asset_bundle_(asset_bundle.Pass()),
39 worker_runner_(worker_runner.Pass()),
40 weak_factory_(this) {
38 } 41 }
39 42
40 AssetUnpackerJob::~AssetUnpackerJob() { 43 AssetUnpackerJob::~AssetUnpackerJob() {
41 } 44 }
42 45
43 void AssetUnpackerJob::Unpack(ScopedDataPipeConsumerHandle zipped_assets) { 46 void AssetUnpackerJob::Unpack(ScopedDataPipeConsumerHandle zipped_assets) {
44 base::FilePath zip_path; 47 base::FilePath zip_path;
45 if (!CreateTemporaryFile(&zip_path)) { 48 if (!CreateTemporaryFile(&zip_path)) {
46 delete this; 49 delete this;
47 return; 50 return;
48 } 51 }
49 scoped_refptr<base::TaskRunner> worker = 52 common::CopyToFile(zipped_assets.Pass(), zip_path, worker_runner_.get(),
50 base::WorkerPool::GetTaskRunner(true);
51 common::CopyToFile(zipped_assets.Pass(), zip_path, worker.get(),
52 base::Bind(&AssetUnpackerJob::OnZippedAssetsAvailable, 53 base::Bind(&AssetUnpackerJob::OnZippedAssetsAvailable,
53 weak_factory_.GetWeakPtr(), zip_path)); 54 weak_factory_.GetWeakPtr(), zip_path));
54 } 55 }
55 56
56 void AssetUnpackerJob::OnZippedAssetsAvailable(const base::FilePath& zip_path, 57 void AssetUnpackerJob::OnZippedAssetsAvailable(const base::FilePath& zip_path,
57 bool success) { 58 bool success) {
58 if (!success) { 59 if (!success) {
59 delete this; 60 delete this;
60 return; 61 return;
61 } 62 }
62 scoped_ptr<base::ScopedTempDir> asset_dir(new base::ScopedTempDir()); 63 scoped_ptr<base::ScopedTempDir> asset_dir(new base::ScopedTempDir());
63 if (!asset_dir->CreateUniqueTempDir()) { 64 if (!asset_dir->CreateUniqueTempDir()) {
64 delete this; 65 delete this;
65 return; 66 return;
66 } 67 }
67 base::WorkerPool::PostTask( 68 worker_runner_->PostTask(
68 FROM_HERE, 69 FROM_HERE,
69 base::Bind(&UnzipAssets, zip_path, base::Passed(asset_dir.Pass()), 70 base::Bind(&UnzipAssets, zip_path, base::Passed(asset_dir.Pass()),
70 base::MessageLoop::current()->task_runner(), 71 base::MessageLoop::current()->task_runner(),
71 base::Bind(&AssetUnpackerJob::OnUnzippedAssetsAvailable, 72 base::Bind(&AssetUnpackerJob::OnUnzippedAssetsAvailable,
72 weak_factory_.GetWeakPtr())), 73 weak_factory_.GetWeakPtr())));
73 true);
74 } 74 }
75 75
76 void AssetUnpackerJob::OnUnzippedAssetsAvailable( 76 void AssetUnpackerJob::OnUnzippedAssetsAvailable(
77 scoped_ptr<base::ScopedTempDir> asset_dir) { 77 scoped_ptr<base::ScopedTempDir> asset_dir) {
78 if (asset_dir) 78 if (asset_dir)
79 new AssetBundleImpl(asset_bundle_.Pass(), asset_dir.Pass()); 79 new AssetBundleImpl(asset_bundle_.Pass(), asset_dir.Pass(), worker_runner_);
80 80
81 delete this; 81 delete this;
82 } 82 }
83 83
84 } // namespace asset_bundle 84 } // namespace asset_bundle
85 } // namespace mojo 85 } // namespace mojo
OLDNEW
« no previous file with comments | « services/asset_bundle/asset_unpacker_job.h ('k') | services/asset_bundle/main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698