// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "chrome/browser/chromeos/file_system_provider/operations/close_file.h"
+
#include <string>
#include <vector>
#include "base/files/file.h"
#include "base/files/file_path.h"
#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
-#include "chrome/browser/chromeos/file_system_provider/operations/close_file.h"
+#include "chrome/browser/chromeos/file_system_provider/operations/test_util.h"
#include "chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h"
#include "chrome/common/extensions/api/file_system_provider.h"
#include "chrome/common/extensions/api/file_system_provider_internal.h"
const int kRequestId = 2;
const int kOpenRequestId = 3;
-// Fake event dispatcher implementation with extra logging capability. Acts as
-// a providing extension end-point.
-class LoggingDispatchEventImpl {
- public:
- explicit LoggingDispatchEventImpl(bool dispatch_reply)
- : dispatch_reply_(dispatch_reply) {}
- virtual ~LoggingDispatchEventImpl() {}
-
- bool OnDispatchEventImpl(scoped_ptr<extensions::Event> event) {
- events_.push_back(event->DeepCopy());
- return dispatch_reply_;
- }
-
- ScopedVector<extensions::Event>& events() { return events_; }
-
- private:
- ScopedVector<extensions::Event> events_;
- bool dispatch_reply_;
-
- DISALLOW_COPY_AND_ASSIGN(LoggingDispatchEventImpl);
-};
-
-// Callback invocation logger. Acts as a fileapi end-point.
-class CallbackLogger {
- public:
- CallbackLogger() : weak_ptr_factory_(this) {}
- virtual ~CallbackLogger() {}
-
- void OnCloseFile(base::File::Error result) { events_.push_back(result); }
-
- std::vector<base::File::Error>& events() { return events_; }
-
- base::WeakPtr<CallbackLogger> GetWeakPtr() {
- return weak_ptr_factory_.GetWeakPtr();
- }
-
- private:
- std::vector<base::File::Error> events_;
- base::WeakPtrFactory<CallbackLogger> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(CallbackLogger);
-};
-
} // namespace
class FileSystemProviderOperationsCloseFileTest : public testing::Test {
file_system_info_ =
ProvidedFileSystemInfo(kExtensionId,
kFileSystemId,
- "" /* file_system_name */,
+ "" /* display_name */,
+ false /* writable */,
base::FilePath() /* mount_path */);
}
};
TEST_F(FileSystemProviderOperationsCloseFileTest, Execute) {
- LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */);
- CallbackLogger callback_logger;
-
- CloseFile close_file(
- NULL,
- file_system_info_,
- kOpenRequestId,
- base::Bind(&CallbackLogger::OnCloseFile, callback_logger.GetWeakPtr()));
+ util::LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */);
+ util::StatusCallbackLog callback_log;
+
+ CloseFile close_file(NULL,
+ file_system_info_,
+ kOpenRequestId,
+ base::Bind(&util::LogStatusCallback, &callback_log));
close_file.SetDispatchEventImplForTesting(
- base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl,
+ base::Bind(&util::LoggingDispatchEventImpl::OnDispatchEventImpl,
base::Unretained(&dispatcher)));
EXPECT_TRUE(close_file.Execute(kRequestId));
}
TEST_F(FileSystemProviderOperationsCloseFileTest, Execute_NoListener) {
- LoggingDispatchEventImpl dispatcher(false /* dispatch_reply */);
- CallbackLogger callback_logger;
-
- CloseFile close_file(
- NULL,
- file_system_info_,
- kOpenRequestId,
- base::Bind(&CallbackLogger::OnCloseFile, callback_logger.GetWeakPtr()));
+ util::LoggingDispatchEventImpl dispatcher(false /* dispatch_reply */);
+ util::StatusCallbackLog callback_log;
+
+ CloseFile close_file(NULL,
+ file_system_info_,
+ kOpenRequestId,
+ base::Bind(&util::LogStatusCallback, &callback_log));
close_file.SetDispatchEventImplForTesting(
- base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl,
+ base::Bind(&util::LoggingDispatchEventImpl::OnDispatchEventImpl,
base::Unretained(&dispatcher)));
EXPECT_FALSE(close_file.Execute(kRequestId));
}
TEST_F(FileSystemProviderOperationsCloseFileTest, OnSuccess) {
- using extensions::api::file_system_provider_internal::
- CloseFileRequestedSuccess::Params;
+ util::LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */);
+ util::StatusCallbackLog callback_log;
- LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */);
- CallbackLogger callback_logger;
-
- CloseFile close_file(
- NULL,
- file_system_info_,
- kOpenRequestId,
- base::Bind(&CallbackLogger::OnCloseFile, callback_logger.GetWeakPtr()));
+ CloseFile close_file(NULL,
+ file_system_info_,
+ kOpenRequestId,
+ base::Bind(&util::LogStatusCallback, &callback_log));
close_file.SetDispatchEventImplForTesting(
- base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl,
+ base::Bind(&util::LoggingDispatchEventImpl::OnDispatchEventImpl,
base::Unretained(&dispatcher)));
EXPECT_TRUE(close_file.Execute(kRequestId));
close_file.OnSuccess(kRequestId,
scoped_ptr<RequestValue>(new RequestValue()),
false /* has_more */);
- ASSERT_EQ(1u, callback_logger.events().size());
- EXPECT_EQ(base::File::FILE_OK, callback_logger.events()[0]);
+ ASSERT_EQ(1u, callback_log.size());
+ EXPECT_EQ(base::File::FILE_OK, callback_log[0]);
}
TEST_F(FileSystemProviderOperationsCloseFileTest, OnError) {
- using extensions::api::file_system_provider_internal::
- CloseFileRequestedError::Params;
-
- LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */);
- CallbackLogger callback_logger;
+ util::LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */);
+ util::StatusCallbackLog callback_log;
- CloseFile close_file(
- NULL,
- file_system_info_,
- kOpenRequestId,
- base::Bind(&CallbackLogger::OnCloseFile, callback_logger.GetWeakPtr()));
+ CloseFile close_file(NULL,
+ file_system_info_,
+ kOpenRequestId,
+ base::Bind(&util::LogStatusCallback, &callback_log));
close_file.SetDispatchEventImplForTesting(
- base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl,
+ base::Bind(&util::LoggingDispatchEventImpl::OnDispatchEventImpl,
base::Unretained(&dispatcher)));
EXPECT_TRUE(close_file.Execute(kRequestId));
- close_file.OnError(kRequestId, base::File::FILE_ERROR_TOO_MANY_OPENED);
- ASSERT_EQ(1u, callback_logger.events().size());
- EXPECT_EQ(base::File::FILE_ERROR_TOO_MANY_OPENED,
- callback_logger.events()[0]);
+ close_file.OnError(kRequestId,
+ scoped_ptr<RequestValue>(new RequestValue()),
+ base::File::FILE_ERROR_TOO_MANY_OPENED);
+ ASSERT_EQ(1u, callback_log.size());
+ EXPECT_EQ(base::File::FILE_ERROR_TOO_MANY_OPENED, callback_log[0]);
}
} // namespace operations