| Index: webkit/fileapi/file_system_operation_write_unittest.cc
|
| ===================================================================
|
| --- webkit/fileapi/file_system_operation_write_unittest.cc (revision 121622)
|
| +++ webkit/fileapi/file_system_operation_write_unittest.cc (working copy)
|
| @@ -11,7 +11,6 @@
|
| #include <vector>
|
|
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| #include "base/message_loop.h"
|
| #include "base/message_loop.h"
|
| #include "base/message_loop_proxy.h"
|
| @@ -24,6 +23,7 @@
|
| #include "webkit/blob/blob_data.h"
|
| #include "webkit/blob/blob_storage_controller.h"
|
| #include "webkit/blob/blob_url_request_job.h"
|
| +#include "webkit/fileapi/file_system_callback_dispatcher.h"
|
| #include "webkit/fileapi/file_system_context.h"
|
| #include "webkit/fileapi/file_system_file_util.h"
|
| #include "webkit/fileapi/file_system_operation.h"
|
| @@ -65,9 +65,7 @@
|
|
|
| } // namespace (anonymous)
|
|
|
| -class FileSystemOperationWriteTest
|
| - : public testing::Test,
|
| - public base::SupportsWeakPtr<FileSystemOperationWriteTest> {
|
| +class FileSystemOperationWriteTest : public testing::Test {
|
| public:
|
| FileSystemOperationWriteTest()
|
| : local_file_util_(new LocalFileUtil(QuotaFileUtil::CreateDefault())),
|
| @@ -78,6 +76,13 @@
|
|
|
| FileSystemOperation* operation();
|
|
|
| + void set_failure_status(base::PlatformFileError status) {
|
| + EXPECT_FALSE(complete_);
|
| + EXPECT_EQ(status_, base::PLATFORM_FILE_OK);
|
| + EXPECT_NE(status, base::PLATFORM_FILE_OK);
|
| + complete_ = true;
|
| + status_ = status;
|
| + }
|
| base::PlatformFileError status() const { return status_; }
|
| void add_bytes_written(int64 bytes, bool complete) {
|
| bytes_written_ += bytes;
|
| @@ -95,25 +100,6 @@
|
| return test_helper_.GetURLForPath(path);
|
| }
|
|
|
| - // Callback function for recording test results.
|
| - FileSystemOperationInterface::WriteCallback RecordWriteCallback() {
|
| - return base::Bind(&FileSystemOperationWriteTest::DidWrite, AsWeakPtr());
|
| - }
|
| -
|
| - void DidWrite(base::PlatformFileError status, int64 bytes, bool complete) {
|
| - if (status == base::PLATFORM_FILE_OK) {
|
| - add_bytes_written(bytes, complete);
|
| - if (complete)
|
| - MessageLoop::current()->Quit();
|
| - } else {
|
| - EXPECT_FALSE(complete_);
|
| - EXPECT_EQ(status_, base::PLATFORM_FILE_OK);
|
| - complete_ = true;
|
| - status_ = status;
|
| - MessageLoop::current()->Quit();
|
| - }
|
| - }
|
| -
|
| scoped_ptr<LocalFileUtil> local_file_util_;
|
| scoped_refptr<MockQuotaManager> quota_manager_;
|
| FileSystemTestOriginHelper test_helper_;
|
| @@ -161,6 +147,45 @@
|
| base::MessageLoopProxy::current());
|
| }
|
|
|
| +class MockDispatcher : public FileSystemCallbackDispatcher {
|
| + public:
|
| + MockDispatcher(FileSystemOperationWriteTest* test) : test_(test) { }
|
| +
|
| + virtual void DidFail(base::PlatformFileError status) {
|
| + test_->set_failure_status(status);
|
| + MessageLoop::current()->Quit();
|
| + }
|
| +
|
| + virtual void DidSucceed() {
|
| + ADD_FAILURE();
|
| + }
|
| +
|
| + virtual void DidReadMetadata(
|
| + const base::PlatformFileInfo& info,
|
| + const FilePath& platform_path) {
|
| + ADD_FAILURE();
|
| + }
|
| +
|
| + virtual void DidReadDirectory(
|
| + const std::vector<base::FileUtilProxy::Entry>& entries,
|
| + bool /* has_more */) {
|
| + ADD_FAILURE();
|
| + }
|
| +
|
| + virtual void DidOpenFileSystem(const std::string&, const GURL&) {
|
| + ADD_FAILURE();
|
| + }
|
| +
|
| + virtual void DidWrite(int64 bytes, bool complete) {
|
| + test_->add_bytes_written(bytes, complete);
|
| + if (complete)
|
| + MessageLoop::current()->Quit();
|
| + }
|
| +
|
| + private:
|
| + FileSystemOperationWriteTest* test_;
|
| +};
|
| +
|
| } // namespace (anonymous)
|
|
|
| void FileSystemOperationWriteTest::SetUp() {
|
| @@ -188,7 +213,7 @@
|
| }
|
|
|
| FileSystemOperation* FileSystemOperationWriteTest::operation() {
|
| - return test_helper_.NewOperation();
|
| + return test_helper_.NewOperation(new MockDispatcher(this));
|
| }
|
|
|
| TEST_F(FileSystemOperationWriteTest, TestWriteSuccess) {
|
| @@ -202,7 +227,7 @@
|
| blob_url, blob_data);
|
|
|
| operation()->Write(url_request_context, URLForPath(virtual_path_), blob_url,
|
| - 0, RecordWriteCallback());
|
| + 0);
|
| MessageLoop::current()->Run();
|
|
|
| url_request_context->blob_storage_controller()->RemoveBlob(blob_url);
|
| @@ -223,7 +248,7 @@
|
| blob_url, blob_data);
|
|
|
| operation()->Write(url_request_context, URLForPath(virtual_path_),
|
| - blob_url, 0, RecordWriteCallback());
|
| + blob_url, 0);
|
| MessageLoop::current()->Run();
|
|
|
| url_request_context->blob_storage_controller()->RemoveBlob(blob_url);
|
| @@ -238,7 +263,7 @@
|
| new TestURLRequestContext());
|
|
|
| operation()->Write(url_request_context, URLForPath(virtual_path_),
|
| - GURL("blob:invalid"), 0, RecordWriteCallback());
|
| + GURL("blob:invalid"), 0);
|
| MessageLoop::current()->Run();
|
|
|
| EXPECT_EQ(0, bytes_written());
|
| @@ -258,7 +283,7 @@
|
|
|
| operation()->Write(url_request_context,
|
| URLForPath(FilePath(FILE_PATH_LITERAL("nonexist"))),
|
| - blob_url, 0, RecordWriteCallback());
|
| + blob_url, 0);
|
| MessageLoop::current()->Run();
|
|
|
| url_request_context->blob_storage_controller()->RemoveBlob(blob_url);
|
| @@ -285,7 +310,7 @@
|
| blob_url, blob_data);
|
|
|
| operation()->Write(url_request_context, URLForPath(virtual_subdir_path),
|
| - blob_url, 0, RecordWriteCallback());
|
| + blob_url, 0);
|
| MessageLoop::current()->Run();
|
|
|
| url_request_context->blob_storage_controller()->RemoveBlob(blob_url);
|
| @@ -307,7 +332,7 @@
|
|
|
| quota_manager_->set_quota(10);
|
| operation()->Write(url_request_context, URLForPath(virtual_path_), blob_url,
|
| - 0, RecordWriteCallback());
|
| + 0);
|
| MessageLoop::current()->Run();
|
|
|
| url_request_context->blob_storage_controller()->RemoveBlob(blob_url);
|
|
|