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

Unified Diff: content/browser/leveldb_wrapper_impl_unittest.cc

Issue 2593503005: Don't abuse LevelDBObserver interface to pass GetAll result. (Closed)
Patch Set: modify sanity_check test to give async callbacks a chance to cause problems Created 4 years 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: content/browser/leveldb_wrapper_impl_unittest.cc
diff --git a/content/browser/leveldb_wrapper_impl_unittest.cc b/content/browser/leveldb_wrapper_impl_unittest.cc
index 3fd3dd8c22e3f8c43fb3c7fa4b59eed3eed198cc..cd25332de3432d69f2536ff3ef694ffd6b1a408e 100644
--- a/content/browser/leveldb_wrapper_impl_unittest.cc
+++ b/content/browser/leveldb_wrapper_impl_unittest.cc
@@ -8,6 +8,7 @@
#include "components/leveldb/public/cpp/util.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "mojo/public/cpp/bindings/associated_binding.h"
+#include "mojo/public/cpp/bindings/strong_associated_binding.h"
#include "testing/gtest/include/gtest/gtest.h"
using leveldb::StdStringToUint8Vector;
@@ -163,6 +164,34 @@ class MockLevelDBDatabase : public leveldb::mojom::LevelDBDatabase {
std::map<std::vector<uint8_t>, std::vector<uint8_t>>& mock_data_;
};
+class GetAllCallback : public mojom::LevelDBWrapperGetAllCallback {
+ public:
+ static mojom::LevelDBWrapperGetAllCallbackAssociatedPtrInfo CreateAndBind(
+ mojo::AssociatedGroup* associated_group,
+ bool* result,
+ const base::Closure& callback) {
+ mojom::LevelDBWrapperGetAllCallbackAssociatedPtrInfo ptr_info;
+ mojom::LevelDBWrapperGetAllCallbackAssociatedRequest request;
+ associated_group->CreateAssociatedInterface(
+ mojo::AssociatedGroup::WILL_PASS_PTR, &ptr_info, &request);
+ mojo::MakeStrongAssociatedBinding(
+ base::WrapUnique(new GetAllCallback(result, callback)),
+ std::move(request));
+ return ptr_info;
+ }
+
+ private:
+ GetAllCallback(bool* result, const base::Closure& callback)
+ : m_result(result), m_callback(callback) {}
+ void Complete(bool success) override {
+ *m_result = success;
+ m_callback.Run();
+ }
+
+ bool* m_result;
+ base::Closure m_callback;
+};
+
void NoOp() {}
void GetCallback(const base::Closure& callback,
@@ -211,7 +240,7 @@ class LevelDBWrapperImplTest : public testing::Test,
level_db_wrapper_.Bind(mojo::MakeRequest(&level_db_wrapper_ptr_));
mojom::LevelDBObserverAssociatedPtrInfo ptr_info;
- observer_binding_.Bind(&ptr_info, level_db_wrapper_ptr_.associated_group());
+ observer_binding_.Bind(&ptr_info, associated_group());
level_db_wrapper_ptr_->AddObserver(std::move(ptr_info));
}
@@ -235,6 +264,9 @@ class LevelDBWrapperImplTest : public testing::Test,
}
mojom::LevelDBWrapper* wrapper() { return level_db_wrapper_ptr_.get(); }
+ mojo::AssociatedGroup* associated_group() {
+ return level_db_wrapper_ptr_.associated_group();
+ }
bool GetSync(const std::vector<uint8_t>& key, std::vector<uint8_t>* result) {
base::RunLoop run_loop;
@@ -309,7 +341,6 @@ class LevelDBWrapperImplTest : public testing::Test,
void AllDeleted(const std::string& source) override {
observations_.push_back({Observation::kDeleteAll, "", "", "", source});
}
- void GetAllComplete(const std::string& source) override {}
TestBrowserThreadBundle thread_bundle_;
std::map<std::vector<uint8_t>, std::vector<uint8_t>> mock_data_;
@@ -353,9 +384,17 @@ TEST_F(LevelDBWrapperImplTest, GetFromPutNewKey) {
TEST_F(LevelDBWrapperImplTest, GetAll) {
leveldb::mojom::DatabaseError status;
std::vector<mojom::KeyValuePtr> data;
- EXPECT_TRUE(wrapper()->GetAll(kTestSource, &status, &data));
+ base::RunLoop run_loop;
+ bool result = false;
+ EXPECT_TRUE(wrapper()->GetAll(
+ GetAllCallback::CreateAndBind(associated_group(), &result,
+ run_loop.QuitClosure()),
+ &status, &data));
EXPECT_EQ(leveldb::mojom::DatabaseError::OK, status);
EXPECT_EQ(2u, data.size());
+ EXPECT_FALSE(result);
+ run_loop.Run();
+ EXPECT_TRUE(result);
}
TEST_F(LevelDBWrapperImplTest, CommitPutToDB) {

Powered by Google App Engine
This is Rietveld 408576698