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

Unified Diff: chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc

Issue 257493004: [fsp] Refactor handling operations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed tests. Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc
diff --git a/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc b/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc
index 413826aabf5023f783d389a397c4719e8ad56d66..da2941d8e89458ce35fe29ee57b492697930bf86 100644
--- a/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc
+++ b/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc
@@ -12,8 +12,8 @@
#include "base/memory/scoped_vector.h"
#include "base/memory/weak_ptr.h"
#include "base/run_loop.h"
-#include "base/values.h"
#include "chrome/browser/chromeos/file_system_provider/request_manager.h"
+#include "chrome/browser/chromeos/file_system_provider/request_value.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -24,42 +24,68 @@ namespace {
// Logs calls of the success and error callbacks on requests.
class EventLogger {
public:
- class SuccessEvent {
+ class ExecuteEvent {
public:
- SuccessEvent(scoped_ptr<base::DictionaryValue> result, bool has_next)
- : result_(result.Pass()), has_next_(has_next) {}
- ~SuccessEvent() {}
+ explicit ExecuteEvent(int request_id) : request_id_(request_id) {}
+ virtual ~ExecuteEvent() {}
+
+ int request_id() { return request_id_; }
- base::DictionaryValue* result() { return result_.get(); }
+ private:
+ int request_id_;
+ };
+
+ class SuccessEvent {
+ public:
+ SuccessEvent(int request_id, scoped_ptr<RequestValue> result, bool has_next)
+ : request_id_(request_id),
+ result_(result.Pass()),
+ has_next_(has_next) {}
+ virtual ~SuccessEvent() {}
+
+ int request_id() { return request_id_; }
+ RequestValue* result() { return result_.get(); }
bool has_next() { return has_next_; }
private:
- scoped_ptr<base::DictionaryValue> result_;
+ int request_id_;
+ scoped_ptr<RequestValue> result_;
bool has_next_;
};
class ErrorEvent {
public:
- explicit ErrorEvent(base::File::Error error) : error_(error) {}
- ~ErrorEvent() {}
+ ErrorEvent(int request_id, base::File::Error error)
+ : request_id_(request_id), error_(error) {}
+ virtual ~ErrorEvent() {}
+ int request_id() { return request_id_; }
base::File::Error error() { return error_; }
private:
+ int request_id_;
base::File::Error error_;
};
EventLogger() : weak_ptr_factory_(this) {}
virtual ~EventLogger() {}
- void OnSuccess(scoped_ptr<base::DictionaryValue> result, bool has_next) {
- success_events_.push_back(new SuccessEvent(result.Pass(), has_next));
+ void OnExecute(int request_id) {
+ execute_events_.push_back(new ExecuteEvent(request_id));
}
- void OnError(base::File::Error error) {
- error_events_.push_back(new ErrorEvent(error));
+ void OnSuccess(int request_id,
+ scoped_ptr<RequestValue> result,
+ bool has_next) {
+ success_events_.push_back(
+ new SuccessEvent(request_id, result.Pass(), has_next));
}
+ void OnError(int request_id, base::File::Error error) {
+ error_events_.push_back(new ErrorEvent(request_id, error));
+ }
+
+ ScopedVector<ExecuteEvent>& execute_events() { return execute_events_; }
ScopedVector<SuccessEvent>& success_events() { return success_events_; }
ScopedVector<ErrorEvent>& error_events() { return error_events_; }
@@ -68,9 +94,51 @@ class EventLogger {
}
private:
+ ScopedVector<ExecuteEvent> execute_events_;
ScopedVector<SuccessEvent> success_events_;
ScopedVector<ErrorEvent> error_events_;
base::WeakPtrFactory<EventLogger> weak_ptr_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(EventLogger);
+};
+
+// Fake handler, which forwards callbacks to the logger. The handler is owned
+// by a request manager, however the logger is owned by tests.
+class FakeHandler : public RequestManager::HandlerInterface {
+ public:
+ // The handler can outlive the passed logger, so using a weak pointer. The
+ // |execute_reply| value will be returned for the Execute() call.
+ FakeHandler(base::WeakPtr<EventLogger> logger, bool execute_reply)
+ : logger_(logger), execute_reply_(execute_reply) {}
+
+ // RequestManager::Handler overrides.
+ virtual bool Execute(int request_id) OVERRIDE {
+ if (logger_.get())
+ logger_->OnExecute(request_id);
+
+ return execute_reply_;
+ }
+
+ // RequestManager::Handler overrides.
+ virtual void OnSuccess(int request_id,
+ scoped_ptr<RequestValue> result,
+ bool has_next) OVERRIDE {
+ if (logger_.get())
+ logger_->OnSuccess(request_id, result.Pass(), has_next);
+ }
+
+ // RequestManager::Handler overrides.
+ virtual void OnError(int request_id, base::File::Error error) OVERRIDE {
+ if (logger_.get())
+ logger_->OnError(request_id, error);
+ }
+
+ virtual ~FakeHandler() {}
+
+ private:
+ base::WeakPtr<EventLogger> logger_;
+ bool execute_reply_;
+ DISALLOW_COPY_AND_ASSIGN(FakeHandler);
};
} // namespace
@@ -91,17 +159,17 @@ class FileSystemProviderRequestManagerTest : public testing::Test {
TEST_F(FileSystemProviderRequestManagerTest, CreateAndFulFill) {
EventLogger logger;
- int request_id = request_manager_->CreateRequest(
- base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()),
- base::Bind(&EventLogger::OnError, logger.GetWeakPtr()));
+ const int request_id = request_manager_->CreateRequest(
+ make_scoped_ptr<RequestManager::HandlerInterface>(
+ new FakeHandler(logger.GetWeakPtr(), true /* execute_reply */)));
EXPECT_EQ(1, request_id);
EXPECT_EQ(0u, logger.success_events().size());
EXPECT_EQ(0u, logger.error_events().size());
- scoped_ptr<base::DictionaryValue> response(new base::DictionaryValue());
+ scoped_ptr<RequestValue> response(
+ RequestValue::CreateForTesting("i-like-vanilla"));
const bool has_next = false;
- response->SetString("path", "i-like-vanilla");
bool result =
request_manager_->FulfillRequest(request_id, response.Pass(), has_next);
@@ -112,15 +180,15 @@ TEST_F(FileSystemProviderRequestManagerTest, CreateAndFulFill) {
EXPECT_EQ(0u, logger.error_events().size());
EventLogger::SuccessEvent* event = logger.success_events()[0];
ASSERT_TRUE(event->result());
- std::string response_test_string;
- EXPECT_TRUE(event->result()->GetString("path", &response_test_string));
- EXPECT_EQ("i-like-vanilla", response_test_string);
+ const std::string* response_test_string = event->result()->testing_params();
+ ASSERT_TRUE(response_test_string);
+ EXPECT_EQ("i-like-vanilla", *response_test_string);
EXPECT_FALSE(event->has_next());
// Confirm, that the request is removed. Basically, fulfilling again for the
// same request, should fail.
{
- scoped_ptr<base::DictionaryValue> response;
+ scoped_ptr<RequestValue> response;
bool retry =
request_manager_->FulfillRequest(request_id, response.Pass(), has_next);
EXPECT_FALSE(retry);
@@ -137,15 +205,15 @@ TEST_F(FileSystemProviderRequestManagerTest, CreateAndFulFill) {
TEST_F(FileSystemProviderRequestManagerTest, CreateAndFulFill_WithHasNext) {
EventLogger logger;
- int request_id = request_manager_->CreateRequest(
- base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()),
- base::Bind(&EventLogger::OnError, logger.GetWeakPtr()));
+ const int request_id = request_manager_->CreateRequest(
+ make_scoped_ptr<RequestManager::HandlerInterface>(
+ new FakeHandler(logger.GetWeakPtr(), true /* execute_reply */)));
EXPECT_EQ(1, request_id);
EXPECT_EQ(0u, logger.success_events().size());
EXPECT_EQ(0u, logger.error_events().size());
- scoped_ptr<base::DictionaryValue> response;
+ scoped_ptr<RequestValue> response;
const bool has_next = true;
bool result =
@@ -181,9 +249,9 @@ TEST_F(FileSystemProviderRequestManagerTest, CreateAndFulFill_WithHasNext) {
TEST_F(FileSystemProviderRequestManagerTest, CreateAndReject) {
EventLogger logger;
- int request_id = request_manager_->CreateRequest(
- base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()),
- base::Bind(&EventLogger::OnError, logger.GetWeakPtr()));
+ const int request_id = request_manager_->CreateRequest(
+ make_scoped_ptr<RequestManager::HandlerInterface>(
+ new FakeHandler(logger.GetWeakPtr(), true /* execute_reply */)));
EXPECT_EQ(1, request_id);
EXPECT_EQ(0u, logger.success_events().size());
@@ -202,7 +270,7 @@ TEST_F(FileSystemProviderRequestManagerTest, CreateAndReject) {
// Confirm, that the request is removed. Basically, fulfilling again for the
// same request, should fail.
{
- scoped_ptr<base::DictionaryValue> response;
+ scoped_ptr<RequestValue> response;
bool has_next = false;
bool retry =
request_manager_->FulfillRequest(request_id, response.Pass(), has_next);
@@ -220,9 +288,9 @@ TEST_F(FileSystemProviderRequestManagerTest,
CreateAndFulfillWithWrongRequestId) {
EventLogger logger;
- int request_id = request_manager_->CreateRequest(
- base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()),
- base::Bind(&EventLogger::OnError, logger.GetWeakPtr()));
+ const int request_id = request_manager_->CreateRequest(
+ make_scoped_ptr<RequestManager::HandlerInterface>(
+ new FakeHandler(logger.GetWeakPtr(), true /* execute_reply */)));
EXPECT_EQ(1, request_id);
EXPECT_EQ(0u, logger.success_events().size());
@@ -247,9 +315,9 @@ TEST_F(FileSystemProviderRequestManagerTest,
CreateAndRejectWithWrongRequestId) {
EventLogger logger;
- int request_id = request_manager_->CreateRequest(
- base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()),
- base::Bind(&EventLogger::OnError, logger.GetWeakPtr()));
+ const int request_id = request_manager_->CreateRequest(
+ make_scoped_ptr<RequestManager::HandlerInterface>(
+ new FakeHandler(logger.GetWeakPtr(), true /* execute_reply */)));
EXPECT_EQ(1, request_id);
EXPECT_EQ(0u, logger.success_events().size());
@@ -273,13 +341,13 @@ TEST_F(FileSystemProviderRequestManagerTest,
TEST_F(FileSystemProviderRequestManagerTest, UniqueIds) {
EventLogger logger;
- int first_request_id = request_manager_->CreateRequest(
- base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()),
- base::Bind(&EventLogger::OnError, logger.GetWeakPtr()));
+ const int first_request_id = request_manager_->CreateRequest(
+ make_scoped_ptr<RequestManager::HandlerInterface>(
+ new FakeHandler(logger.GetWeakPtr(), true /* execute_reply */)));
- int second_request_id = request_manager_->CreateRequest(
- base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()),
- base::Bind(&EventLogger::OnError, logger.GetWeakPtr()));
+ const int second_request_id = request_manager_->CreateRequest(
+ make_scoped_ptr<RequestManager::HandlerInterface>(
+ new FakeHandler(logger.GetWeakPtr(), true /* execute_reply */)));
EXPECT_EQ(1, first_request_id);
EXPECT_EQ(2, second_request_id);
@@ -290,9 +358,9 @@ TEST_F(FileSystemProviderRequestManagerTest, AbortOnDestroy) {
{
RequestManager request_manager;
- int request_id = request_manager.CreateRequest(
- base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()),
- base::Bind(&EventLogger::OnError, logger.GetWeakPtr()));
+ const int request_id = request_manager.CreateRequest(
+ make_scoped_ptr<RequestManager::HandlerInterface>(
+ new FakeHandler(logger.GetWeakPtr(), true /* execute_reply */)));
EXPECT_EQ(1, request_id);
EXPECT_EQ(0u, logger.success_events().size());
@@ -300,8 +368,8 @@ TEST_F(FileSystemProviderRequestManagerTest, AbortOnDestroy) {
}
// All active requests should be aborted in the destructor of RequestManager.
- EventLogger::ErrorEvent* event = logger.error_events()[0];
ASSERT_EQ(1u, logger.error_events().size());
+ EventLogger::ErrorEvent* event = logger.error_events()[0];
EXPECT_EQ(base::File::FILE_ERROR_ABORT, event->error());
EXPECT_EQ(0u, logger.success_events().size());
@@ -312,9 +380,9 @@ TEST_F(FileSystemProviderRequestManagerTest, AbortOnTimeout) {
base::RunLoop run_loop;
request_manager_->SetTimeoutForTests(base::TimeDelta::FromSeconds(0));
- int request_id = request_manager_->CreateRequest(
- base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()),
- base::Bind(&EventLogger::OnError, logger.GetWeakPtr()));
+ const int request_id = request_manager_->CreateRequest(
+ make_scoped_ptr<RequestManager::HandlerInterface>(
+ new FakeHandler(logger.GetWeakPtr(), true /* execute_reply */)));
EXPECT_LT(0, request_id);
// Wait until the request is timeouted.

Powered by Google App Engine
This is Rietveld 408576698