#include "base/lazy_instance.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/extensions/api/image_writer_private/destroy_partitions_operation.h"
#include "chrome/browser/extensions/api/image_writer_private/error_messages.h"
#include "chrome/browser/extensions/api/image_writer_private/operation.h"
#include "chrome/browser/extensions/api/image_writer_private/operation_manager.h"
#include "chrome/browser/extensions/api/image_writer_private/write_from_file_operation.h"
#include "chrome/browser/extensions/api/image_writer_private/write_from_url_operation.h"
-#include "chrome/browser/extensions/event_router.h"
#include "chrome/browser/extensions/event_router_forwarder.h"
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/extension_system.h"
-#include "chrome/browser/extensions/extension_system_factory.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
+#include "extensions/browser/event_router.h"
+#include "extensions/browser/extension_system.h"
namespace image_writer_api = extensions::api::image_writer_private;
bool saveImageAsDownload,
const std::string& storage_unit_id,
const Operation::StartWriteCallback& callback) {
-
OperationMap::iterator existing_operation = operations_.find(extension_id);
if (existing_operation != operations_.end()) {
- return callback.Run(false,
- error::kOperationAlreadyInProgress);
+ return callback.Run(false, error::kOperationAlreadyInProgress);
}
scoped_refptr<Operation> operation(
hash,
saveImageAsDownload,
storage_unit_id));
-
operations_[extension_id] = operation;
-
BrowserThread::PostTask(BrowserThread::FILE,
FROM_HERE,
- base::Bind(&Operation::Start,
- operation.get()));
-
+ base::Bind(&Operation::Start, operation));
callback.Run(true, "");
}
void OperationManager::StartWriteFromFile(
const ExtensionId& extension_id,
+ const base::FilePath& path,
const std::string& storage_unit_id,
const Operation::StartWriteCallback& callback) {
- // Currently unimplemented.
- callback.Run(false, error::kFileOperationsNotImplemented);
+ OperationMap::iterator existing_operation = operations_.find(extension_id);
+
+ if (existing_operation != operations_.end()) {
+ return callback.Run(false, error::kOperationAlreadyInProgress);
+ }
+
+ scoped_refptr<Operation> operation(
+ new WriteFromFileOperation(weak_factory_.GetWeakPtr(),
+ extension_id,
+ path,
+ storage_unit_id));
+ operations_[extension_id] = operation;
+ BrowserThread::PostTask(BrowserThread::FILE,
+ FROM_HERE,
+ base::Bind(&Operation::Start, operation));
+ callback.Run(true, "");
}
void OperationManager::CancelWrite(
}
}
+void OperationManager::DestroyPartitions(
+ const ExtensionId& extension_id,
+ const std::string& storage_unit_id,
+ const Operation::StartWriteCallback& callback) {
+ OperationMap::iterator existing_operation = operations_.find(extension_id);
+
+ if (existing_operation != operations_.end()) {
+ return callback.Run(false, error::kOperationAlreadyInProgress);
+ }
+
+ scoped_refptr<Operation> operation(
+ new DestroyPartitionsOperation(weak_factory_.GetWeakPtr(),
+ extension_id,
+ storage_unit_id));
+ operations_[extension_id] = operation;
+ BrowserThread::PostTask(BrowserThread::FILE,
+ FROM_HERE,
+ base::Bind(&Operation::Start, operation));
+ callback.Run(true, "");
+}
+
void OperationManager::OnProgress(const ExtensionId& extension_id,
image_writer_api::Stage stage,
int progress) {
DLOG(ERROR) << "ImageWriter error: " << error_message;
- // TODO(haven): Set up error messages. http://crbug.com/284880
info.stage = stage;
info.percent_complete = progress;
ProfileKeyedAPIFactory<OperationManager>*
OperationManager::GetFactoryInstance() {
- return &g_factory.Get();
+ return g_factory.Pointer();
}