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

Side by Side Diff: content/browser/leveldb_wrapper_impl_unittest.cc

Issue 2695333002: Mojo C++ bindings: remove usage of AssociatedGroup from content/ (Closed)
Patch Set: . Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/leveldb_wrapper_impl.h" 5 #include "content/browser/leveldb_wrapper_impl.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "components/leveldb/public/cpp/util.h" 9 #include "components/leveldb/public/cpp/util.h"
10 #include "content/public/test/test_browser_thread_bundle.h" 10 #include "content/public/test/test_browser_thread_bundle.h"
11 #include "content/test/mock_leveldb_database.h" 11 #include "content/test/mock_leveldb_database.h"
12 #include "mojo/public/cpp/bindings/associated_binding.h" 12 #include "mojo/public/cpp/bindings/associated_binding.h"
13 #include "mojo/public/cpp/bindings/strong_associated_binding.h" 13 #include "mojo/public/cpp/bindings/strong_associated_binding.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 using leveldb::StdStringToUint8Vector; 16 using leveldb::StdStringToUint8Vector;
17 using leveldb::Uint8VectorToStdString; 17 using leveldb::Uint8VectorToStdString;
18 18
19 namespace content { 19 namespace content {
20 20
21 namespace { 21 namespace {
22 22
23 const char* kTestPrefix = "abc"; 23 const char* kTestPrefix = "abc";
24 const char* kTestSource = "source"; 24 const char* kTestSource = "source";
25 const size_t kTestSizeLimit = 512; 25 const size_t kTestSizeLimit = 512;
26 26
27 class GetAllCallback : public mojom::LevelDBWrapperGetAllCallback { 27 class GetAllCallback : public mojom::LevelDBWrapperGetAllCallback {
28 public: 28 public:
29 static mojom::LevelDBWrapperGetAllCallbackAssociatedPtrInfo CreateAndBind( 29 static mojom::LevelDBWrapperGetAllCallbackAssociatedPtrInfo CreateAndBind(
30 mojo::AssociatedGroup* associated_group,
31 bool* result, 30 bool* result,
32 const base::Closure& callback) { 31 const base::Closure& callback) {
33 mojom::LevelDBWrapperGetAllCallbackAssociatedPtrInfo ptr_info; 32 mojom::LevelDBWrapperGetAllCallbackAssociatedPtrInfo ptr_info;
34 mojom::LevelDBWrapperGetAllCallbackAssociatedRequest request; 33 auto request = mojo::MakeRequest(&ptr_info);
35 associated_group->CreateAssociatedInterface(
36 mojo::AssociatedGroup::WILL_PASS_PTR, &ptr_info, &request);
37 mojo::MakeStrongAssociatedBinding( 34 mojo::MakeStrongAssociatedBinding(
38 base::WrapUnique(new GetAllCallback(result, callback)), 35 base::WrapUnique(new GetAllCallback(result, callback)),
39 std::move(request)); 36 std::move(request));
40 return ptr_info; 37 return ptr_info;
41 } 38 }
42 39
43 private: 40 private:
44 GetAllCallback(bool* result, const base::Closure& callback) 41 GetAllCallback(bool* result, const base::Closure& callback)
45 : m_result(result), m_callback(callback) {} 42 : m_result(result), m_callback(callback) {}
46 void Complete(bool success) override { 43 void Complete(bool success) override {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 10 * 1024 * 1024 /* max_bytes_per_hour */, 99 10 * 1024 * 1024 /* max_bytes_per_hour */,
103 60 /* max_commits_per_hour */, 100 60 /* max_commits_per_hour */,
104 &delegate_), 101 &delegate_),
105 observer_binding_(this) { 102 observer_binding_(this) {
106 set_mock_data(std::string(kTestPrefix) + "def", "defdata"); 103 set_mock_data(std::string(kTestPrefix) + "def", "defdata");
107 set_mock_data(std::string(kTestPrefix) + "123", "123data"); 104 set_mock_data(std::string(kTestPrefix) + "123", "123data");
108 set_mock_data("123", "baddata"); 105 set_mock_data("123", "baddata");
109 106
110 level_db_wrapper_.Bind(mojo::MakeRequest(&level_db_wrapper_ptr_)); 107 level_db_wrapper_.Bind(mojo::MakeRequest(&level_db_wrapper_ptr_));
111 mojom::LevelDBObserverAssociatedPtrInfo ptr_info; 108 mojom::LevelDBObserverAssociatedPtrInfo ptr_info;
112 observer_binding_.Bind(&ptr_info, associated_group()); 109 observer_binding_.Bind(&ptr_info);
113 level_db_wrapper_ptr_->AddObserver(std::move(ptr_info)); 110 level_db_wrapper_ptr_->AddObserver(std::move(ptr_info));
114 } 111 }
115 112
116 void set_mock_data(const std::string& key, const std::string& value) { 113 void set_mock_data(const std::string& key, const std::string& value) {
117 mock_data_[StdStringToUint8Vector(key)] = StdStringToUint8Vector(value); 114 mock_data_[StdStringToUint8Vector(key)] = StdStringToUint8Vector(value);
118 } 115 }
119 116
120 void set_mock_data(const std::vector<uint8_t>& key, 117 void set_mock_data(const std::vector<uint8_t>& key,
121 const std::vector<uint8_t>& value) { 118 const std::vector<uint8_t>& value) {
122 mock_data_[key] = value; 119 mock_data_[key] = value;
123 } 120 }
124 121
125 bool has_mock_data(const std::string& key) { 122 bool has_mock_data(const std::string& key) {
126 return mock_data_.find(StdStringToUint8Vector(key)) != mock_data_.end(); 123 return mock_data_.find(StdStringToUint8Vector(key)) != mock_data_.end();
127 } 124 }
128 125
129 std::string get_mock_data(const std::string& key) { 126 std::string get_mock_data(const std::string& key) {
130 return has_mock_data(key) 127 return has_mock_data(key)
131 ? Uint8VectorToStdString(mock_data_[StdStringToUint8Vector(key)]) 128 ? Uint8VectorToStdString(mock_data_[StdStringToUint8Vector(key)])
132 : ""; 129 : "";
133 } 130 }
134 131
135 void clear_mock_data() { mock_data_.clear(); } 132 void clear_mock_data() { mock_data_.clear(); }
136 133
137 mojom::LevelDBWrapper* wrapper() { return level_db_wrapper_ptr_.get(); } 134 mojom::LevelDBWrapper* wrapper() { return level_db_wrapper_ptr_.get(); }
138 mojo::AssociatedGroup* associated_group() {
139 return level_db_wrapper_ptr_.associated_group();
140 }
141 135
142 bool GetSync(const std::vector<uint8_t>& key, std::vector<uint8_t>* result) { 136 bool GetSync(const std::vector<uint8_t>& key, std::vector<uint8_t>* result) {
143 base::RunLoop run_loop; 137 base::RunLoop run_loop;
144 bool success = false; 138 bool success = false;
145 wrapper()->Get(key, base::Bind(&GetCallback, run_loop.QuitClosure(), 139 wrapper()->Get(key, base::Bind(&GetCallback, run_loop.QuitClosure(),
146 &success, result)); 140 &success, result));
147 run_loop.Run(); 141 run_loop.Run();
148 return success; 142 return success;
149 } 143 }
150 144
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 EXPECT_TRUE(GetSync(key, &result)); 243 EXPECT_TRUE(GetSync(key, &result));
250 EXPECT_EQ(value, result); 244 EXPECT_EQ(value, result);
251 } 245 }
252 246
253 TEST_F(LevelDBWrapperImplTest, GetAll) { 247 TEST_F(LevelDBWrapperImplTest, GetAll) {
254 leveldb::mojom::DatabaseError status; 248 leveldb::mojom::DatabaseError status;
255 std::vector<mojom::KeyValuePtr> data; 249 std::vector<mojom::KeyValuePtr> data;
256 base::RunLoop run_loop; 250 base::RunLoop run_loop;
257 bool result = false; 251 bool result = false;
258 EXPECT_TRUE(wrapper()->GetAll( 252 EXPECT_TRUE(wrapper()->GetAll(
259 GetAllCallback::CreateAndBind(associated_group(), &result, 253 GetAllCallback::CreateAndBind(&result, run_loop.QuitClosure()), &status,
260 run_loop.QuitClosure()), 254 &data));
261 &status, &data));
262 EXPECT_EQ(leveldb::mojom::DatabaseError::OK, status); 255 EXPECT_EQ(leveldb::mojom::DatabaseError::OK, status);
263 EXPECT_EQ(2u, data.size()); 256 EXPECT_EQ(2u, data.size());
264 EXPECT_FALSE(result); 257 EXPECT_FALSE(result);
265 run_loop.Run(); 258 run_loop.Run();
266 EXPECT_TRUE(result); 259 EXPECT_TRUE(result);
267 } 260 }
268 261
269 TEST_F(LevelDBWrapperImplTest, CommitPutToDB) { 262 TEST_F(LevelDBWrapperImplTest, CommitPutToDB) {
270 std::string key1 = "123"; 263 std::string key1 = "123";
271 std::string value1 = "foo"; 264 std::string value1 = "foo";
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 // Reducing size should also succeed. 474 // Reducing size should also succeed.
482 value.clear(); 475 value.clear();
483 EXPECT_TRUE(PutSync(key, value)); 476 EXPECT_TRUE(PutSync(key, value));
484 477
485 // Increasing size should fail. 478 // Increasing size should fail.
486 value.resize(1, 'a'); 479 value.resize(1, 'a');
487 EXPECT_FALSE(PutSync(key, value)); 480 EXPECT_FALSE(PutSync(key, value));
488 } 481 }
489 482
490 } // namespace content 483 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_callbacks.cc ('k') | content/browser/loader/downloaded_temp_file_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698