| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/extensions/api/image_writer_private/operation_manager.h
" | 5 #include "chrome/browser/extensions/api/image_writer_private/operation_manager.h
" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 content::Source<Profile>(profile)); | 53 content::Source<Profile>(profile)); |
| 54 } | 54 } |
| 55 | 55 |
| 56 OperationManager::~OperationManager() { | 56 OperationManager::~OperationManager() { |
| 57 } | 57 } |
| 58 | 58 |
| 59 void OperationManager::Shutdown() { | 59 void OperationManager::Shutdown() { |
| 60 for (OperationMap::iterator iter = operations_.begin(); | 60 for (OperationMap::iterator iter = operations_.begin(); |
| 61 iter != operations_.end(); | 61 iter != operations_.end(); |
| 62 iter++) { | 62 iter++) { |
| 63 BrowserThread::PostTask(BrowserThread::FILE, | 63 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| 64 FROM_HERE, | 64 base::BindOnce(&Operation::Abort, iter->second)); |
| 65 base::Bind(&Operation::Abort, | |
| 66 iter->second)); | |
| 67 } | 65 } |
| 68 } | 66 } |
| 69 | 67 |
| 70 void OperationManager::StartWriteFromUrl( | 68 void OperationManager::StartWriteFromUrl( |
| 71 const ExtensionId& extension_id, | 69 const ExtensionId& extension_id, |
| 72 GURL url, | 70 GURL url, |
| 73 const std::string& hash, | 71 const std::string& hash, |
| 74 const std::string& device_path, | 72 const std::string& device_path, |
| 75 const Operation::StartWriteCallback& callback) { | 73 const Operation::StartWriteCallback& callback) { |
| 76 #if defined(OS_CHROMEOS) | 74 #if defined(OS_CHROMEOS) |
| (...skipping 10 matching lines...) Expand all Loading... |
| 87 scoped_refptr<Operation> operation(new WriteFromUrlOperation( | 85 scoped_refptr<Operation> operation(new WriteFromUrlOperation( |
| 88 weak_factory_.GetWeakPtr(), | 86 weak_factory_.GetWeakPtr(), |
| 89 extension_id, | 87 extension_id, |
| 90 content::BrowserContext::GetDefaultStoragePartition(browser_context_)-> | 88 content::BrowserContext::GetDefaultStoragePartition(browser_context_)-> |
| 91 GetURLRequestContext(), | 89 GetURLRequestContext(), |
| 92 url, | 90 url, |
| 93 hash, | 91 hash, |
| 94 device_path, | 92 device_path, |
| 95 GetAssociatedDownloadFolder())); | 93 GetAssociatedDownloadFolder())); |
| 96 operations_[extension_id] = operation; | 94 operations_[extension_id] = operation; |
| 97 BrowserThread::PostTask(BrowserThread::FILE, | 95 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| 98 FROM_HERE, | 96 base::BindOnce(&Operation::Start, operation)); |
| 99 base::Bind(&Operation::Start, operation)); | |
| 100 callback.Run(true, ""); | 97 callback.Run(true, ""); |
| 101 } | 98 } |
| 102 | 99 |
| 103 void OperationManager::StartWriteFromFile( | 100 void OperationManager::StartWriteFromFile( |
| 104 const ExtensionId& extension_id, | 101 const ExtensionId& extension_id, |
| 105 const base::FilePath& path, | 102 const base::FilePath& path, |
| 106 const std::string& device_path, | 103 const std::string& device_path, |
| 107 const Operation::StartWriteCallback& callback) { | 104 const Operation::StartWriteCallback& callback) { |
| 108 #if defined(OS_CHROMEOS) | 105 #if defined(OS_CHROMEOS) |
| 109 // Chrome OS can only support a single operation at a time. | 106 // Chrome OS can only support a single operation at a time. |
| 110 if (operations_.size() > 0) { | 107 if (operations_.size() > 0) { |
| 111 #else | 108 #else |
| 112 OperationMap::iterator existing_operation = operations_.find(extension_id); | 109 OperationMap::iterator existing_operation = operations_.find(extension_id); |
| 113 | 110 |
| 114 if (existing_operation != operations_.end()) { | 111 if (existing_operation != operations_.end()) { |
| 115 #endif | 112 #endif |
| 116 return callback.Run(false, error::kOperationAlreadyInProgress); | 113 return callback.Run(false, error::kOperationAlreadyInProgress); |
| 117 } | 114 } |
| 118 | 115 |
| 119 scoped_refptr<Operation> operation(new WriteFromFileOperation( | 116 scoped_refptr<Operation> operation(new WriteFromFileOperation( |
| 120 weak_factory_.GetWeakPtr(), extension_id, path, device_path, | 117 weak_factory_.GetWeakPtr(), extension_id, path, device_path, |
| 121 GetAssociatedDownloadFolder())); | 118 GetAssociatedDownloadFolder())); |
| 122 operations_[extension_id] = operation; | 119 operations_[extension_id] = operation; |
| 123 BrowserThread::PostTask(BrowserThread::FILE, | 120 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| 124 FROM_HERE, | 121 base::BindOnce(&Operation::Start, operation)); |
| 125 base::Bind(&Operation::Start, operation)); | |
| 126 callback.Run(true, ""); | 122 callback.Run(true, ""); |
| 127 } | 123 } |
| 128 | 124 |
| 129 void OperationManager::CancelWrite( | 125 void OperationManager::CancelWrite( |
| 130 const ExtensionId& extension_id, | 126 const ExtensionId& extension_id, |
| 131 const Operation::CancelWriteCallback& callback) { | 127 const Operation::CancelWriteCallback& callback) { |
| 132 Operation* existing_operation = GetOperation(extension_id); | 128 Operation* existing_operation = GetOperation(extension_id); |
| 133 | 129 |
| 134 if (existing_operation == NULL) { | 130 if (existing_operation == NULL) { |
| 135 callback.Run(false, error::kNoOperationInProgress); | 131 callback.Run(false, error::kNoOperationInProgress); |
| 136 } else { | 132 } else { |
| 137 BrowserThread::PostTask(BrowserThread::FILE, | 133 BrowserThread::PostTask( |
| 138 FROM_HERE, | 134 BrowserThread::FILE, FROM_HERE, |
| 139 base::Bind(&Operation::Cancel, existing_operation)); | 135 base::BindOnce(&Operation::Cancel, existing_operation)); |
| 140 DeleteOperation(extension_id); | 136 DeleteOperation(extension_id); |
| 141 callback.Run(true, ""); | 137 callback.Run(true, ""); |
| 142 } | 138 } |
| 143 } | 139 } |
| 144 | 140 |
| 145 void OperationManager::DestroyPartitions( | 141 void OperationManager::DestroyPartitions( |
| 146 const ExtensionId& extension_id, | 142 const ExtensionId& extension_id, |
| 147 const std::string& device_path, | 143 const std::string& device_path, |
| 148 const Operation::StartWriteCallback& callback) { | 144 const Operation::StartWriteCallback& callback) { |
| 149 OperationMap::iterator existing_operation = operations_.find(extension_id); | 145 OperationMap::iterator existing_operation = operations_.find(extension_id); |
| 150 | 146 |
| 151 if (existing_operation != operations_.end()) { | 147 if (existing_operation != operations_.end()) { |
| 152 return callback.Run(false, error::kOperationAlreadyInProgress); | 148 return callback.Run(false, error::kOperationAlreadyInProgress); |
| 153 } | 149 } |
| 154 | 150 |
| 155 scoped_refptr<Operation> operation(new DestroyPartitionsOperation( | 151 scoped_refptr<Operation> operation(new DestroyPartitionsOperation( |
| 156 weak_factory_.GetWeakPtr(), extension_id, device_path, | 152 weak_factory_.GetWeakPtr(), extension_id, device_path, |
| 157 GetAssociatedDownloadFolder())); | 153 GetAssociatedDownloadFolder())); |
| 158 operations_[extension_id] = operation; | 154 operations_[extension_id] = operation; |
| 159 BrowserThread::PostTask(BrowserThread::FILE, | 155 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| 160 FROM_HERE, | 156 base::BindOnce(&Operation::Start, operation)); |
| 161 base::Bind(&Operation::Start, operation)); | |
| 162 callback.Run(true, ""); | 157 callback.Run(true, ""); |
| 163 } | 158 } |
| 164 | 159 |
| 165 void OperationManager::OnProgress(const ExtensionId& extension_id, | 160 void OperationManager::OnProgress(const ExtensionId& extension_id, |
| 166 image_writer_api::Stage stage, | 161 image_writer_api::Stage stage, |
| 167 int progress) { | 162 int progress) { |
| 168 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 163 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 169 | 164 |
| 170 image_writer_api::ProgressInfo info; | 165 image_writer_api::ProgressInfo info; |
| 171 info.stage = stage; | 166 info.stage = stage; |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 DestructorAtExit g_factory = LAZY_INSTANCE_INITIALIZER; | 276 DestructorAtExit g_factory = LAZY_INSTANCE_INITIALIZER; |
| 282 | 277 |
| 283 BrowserContextKeyedAPIFactory<OperationManager>* | 278 BrowserContextKeyedAPIFactory<OperationManager>* |
| 284 OperationManager::GetFactoryInstance() { | 279 OperationManager::GetFactoryInstance() { |
| 285 return g_factory.Pointer(); | 280 return g_factory.Pointer(); |
| 286 } | 281 } |
| 287 | 282 |
| 288 | 283 |
| 289 } // namespace image_writer | 284 } // namespace image_writer |
| 290 } // namespace extensions | 285 } // namespace extensions |
| OLD | NEW |