OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "content/browser/indexed_db/leveldb/leveldb_iterator_impl.h" | 8 #include "content/browser/indexed_db/leveldb/leveldb_iterator_impl.h" |
9 #include "content/browser/indexed_db/leveldb/leveldb_transaction.h" | 9 #include "content/browser/indexed_db/leveldb/leveldb_transaction.h" |
10 #include "content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.h
" | 10 #include "content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.h
" |
(...skipping 21 matching lines...) Expand all Loading... |
32 std::string class_name_; | 32 std::string class_name_; |
33 std::string method_name_; | 33 std::string method_name_; |
34 int instance_count_; | 34 int instance_count_; |
35 int current_call_num_; | 35 int current_call_num_; |
36 }; | 36 }; |
37 | 37 |
38 } // namespace | 38 } // namespace |
39 | 39 |
40 namespace content { | 40 namespace content { |
41 | 41 |
42 class LevelDBTestTansaction : public LevelDBTransaction { | 42 class LevelDBTestTransaction : public LevelDBTransaction { |
43 public: | 43 public: |
44 LevelDBTestTansaction(LevelDBDatabase* db, | 44 LevelDBTestTransaction(LevelDBDatabase* db, |
45 FailMethod fail_method, | 45 FailMethod fail_method, |
46 int fail_on_call_num) | 46 int fail_on_call_num) |
47 : LevelDBTransaction(db), | 47 : LevelDBTransaction(db), |
48 fail_method_(fail_method), | 48 fail_method_(fail_method), |
49 fail_on_call_num_(fail_on_call_num), | 49 fail_on_call_num_(fail_on_call_num), |
50 current_call_num_(0) { | 50 current_call_num_(0) { |
51 DCHECK(fail_method != FAIL_METHOD_NOTHING); | 51 DCHECK(fail_method != FAIL_METHOD_NOTHING); |
52 DCHECK_GT(fail_on_call_num, 0); | 52 DCHECK_GT(fail_on_call_num, 0); |
53 } | 53 } |
54 | 54 |
(...skipping 10 matching lines...) Expand all Loading... |
65 | 65 |
66 leveldb::Status Commit() override { | 66 leveldb::Status Commit() override { |
67 if (fail_method_ != FAIL_METHOD_COMMIT || | 67 if (fail_method_ != FAIL_METHOD_COMMIT || |
68 ++current_call_num_ != fail_on_call_num_) | 68 ++current_call_num_ != fail_on_call_num_) |
69 return LevelDBTransaction::Commit(); | 69 return LevelDBTransaction::Commit(); |
70 | 70 |
71 return leveldb::Status::Corruption("Corrupted for the test"); | 71 return leveldb::Status::Corruption("Corrupted for the test"); |
72 } | 72 } |
73 | 73 |
74 private: | 74 private: |
75 ~LevelDBTestTansaction() override {} | 75 ~LevelDBTestTransaction() override {} |
76 | 76 |
77 FailMethod fail_method_; | 77 FailMethod fail_method_; |
78 int fail_on_call_num_; | 78 int fail_on_call_num_; |
79 int current_call_num_; | 79 int current_call_num_; |
80 }; | 80 }; |
81 | 81 |
82 class LevelDBTraceTansaction : public LevelDBTransaction { | 82 class LevelDBTraceTransaction : public LevelDBTransaction { |
83 public: | 83 public: |
84 LevelDBTraceTansaction(LevelDBDatabase* db, int tx_num) | 84 LevelDBTraceTransaction(LevelDBDatabase* db, int tx_num) |
85 : LevelDBTransaction(db), | 85 : LevelDBTransaction(db), |
86 commit_tracer_(s_class_name, "Commit", tx_num), | 86 commit_tracer_(s_class_name, "Commit", tx_num), |
87 get_tracer_(s_class_name, "Get", tx_num) {} | 87 get_tracer_(s_class_name, "Get", tx_num) {} |
88 | 88 |
89 leveldb::Status Get(const base::StringPiece& key, | 89 leveldb::Status Get(const base::StringPiece& key, |
90 std::string* value, | 90 std::string* value, |
91 bool* found) override { | 91 bool* found) override { |
92 get_tracer_.log_call(); | 92 get_tracer_.log_call(); |
93 return LevelDBTransaction::Get(key, value, found); | 93 return LevelDBTransaction::Get(key, value, found); |
94 } | 94 } |
95 | 95 |
96 leveldb::Status Commit() override { | 96 leveldb::Status Commit() override { |
97 commit_tracer_.log_call(); | 97 commit_tracer_.log_call(); |
98 return LevelDBTransaction::Commit(); | 98 return LevelDBTransaction::Commit(); |
99 } | 99 } |
100 | 100 |
101 private: | 101 private: |
102 static const std::string s_class_name; | 102 static const std::string s_class_name; |
103 | 103 |
104 ~LevelDBTraceTansaction() override {} | 104 ~LevelDBTraceTransaction() override {} |
105 | 105 |
106 FunctionTracer commit_tracer_; | 106 FunctionTracer commit_tracer_; |
107 FunctionTracer get_tracer_; | 107 FunctionTracer get_tracer_; |
108 }; | 108 }; |
109 | 109 |
110 const std::string LevelDBTraceTansaction::s_class_name = "LevelDBTransaction"; | 110 const std::string LevelDBTraceTransaction::s_class_name = "LevelDBTransaction"; |
111 | 111 |
112 class LevelDBTraceIteratorImpl : public LevelDBIteratorImpl { | 112 class LevelDBTraceIteratorImpl : public LevelDBIteratorImpl { |
113 public: | 113 public: |
114 LevelDBTraceIteratorImpl(scoped_ptr<leveldb::Iterator> iterator, int inst_num) | 114 LevelDBTraceIteratorImpl(scoped_ptr<leveldb::Iterator> iterator, int inst_num) |
115 : LevelDBIteratorImpl(iterator.Pass()), | 115 : LevelDBIteratorImpl(iterator.Pass()), |
116 is_valid_tracer_(s_class_name, "IsValid", inst_num), | 116 is_valid_tracer_(s_class_name, "IsValid", inst_num), |
117 seek_to_last_tracer_(s_class_name, "SeekToLast", inst_num), | 117 seek_to_last_tracer_(s_class_name, "SeekToLast", inst_num), |
118 seek_tracer_(s_class_name, "Seek", inst_num), | 118 seek_tracer_(s_class_name, "Seek", inst_num), |
119 next_tracer_(s_class_name, "Next", inst_num), | 119 next_tracer_(s_class_name, "Next", inst_num), |
120 prev_tracer_(s_class_name, "Prev", inst_num), | 120 prev_tracer_(s_class_name, "Prev", inst_num), |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 | 197 |
198 MockBrowserTestIndexedDBClassFactory::~MockBrowserTestIndexedDBClassFactory() { | 198 MockBrowserTestIndexedDBClassFactory::~MockBrowserTestIndexedDBClassFactory() { |
199 } | 199 } |
200 | 200 |
201 LevelDBTransaction* | 201 LevelDBTransaction* |
202 MockBrowserTestIndexedDBClassFactory::CreateLevelDBTransaction( | 202 MockBrowserTestIndexedDBClassFactory::CreateLevelDBTransaction( |
203 LevelDBDatabase* db) { | 203 LevelDBDatabase* db) { |
204 instance_count_[FAIL_CLASS_LEVELDB_TRANSACTION] = | 204 instance_count_[FAIL_CLASS_LEVELDB_TRANSACTION] = |
205 instance_count_[FAIL_CLASS_LEVELDB_TRANSACTION] + 1; | 205 instance_count_[FAIL_CLASS_LEVELDB_TRANSACTION] + 1; |
206 if (only_trace_calls_) { | 206 if (only_trace_calls_) { |
207 return new LevelDBTraceTansaction( | 207 return new LevelDBTraceTransaction( |
208 db, instance_count_[FAIL_CLASS_LEVELDB_TRANSACTION]); | 208 db, instance_count_[FAIL_CLASS_LEVELDB_TRANSACTION]); |
209 } else { | 209 } else { |
210 if (failure_class_ == FAIL_CLASS_LEVELDB_TRANSACTION && | 210 if (failure_class_ == FAIL_CLASS_LEVELDB_TRANSACTION && |
211 instance_count_[FAIL_CLASS_LEVELDB_TRANSACTION] == | 211 instance_count_[FAIL_CLASS_LEVELDB_TRANSACTION] == |
212 fail_on_instance_num_[FAIL_CLASS_LEVELDB_TRANSACTION]) { | 212 fail_on_instance_num_[FAIL_CLASS_LEVELDB_TRANSACTION]) { |
213 return new LevelDBTestTansaction( | 213 return new LevelDBTestTransaction( |
214 db, | 214 db, |
215 failure_method_, | 215 failure_method_, |
216 fail_on_call_num_[FAIL_CLASS_LEVELDB_TRANSACTION]); | 216 fail_on_call_num_[FAIL_CLASS_LEVELDB_TRANSACTION]); |
217 } else { | 217 } else { |
218 return IndexedDBClassFactory::CreateLevelDBTransaction(db); | 218 return IndexedDBClassFactory::CreateLevelDBTransaction(db); |
219 } | 219 } |
220 } | 220 } |
221 } | 221 } |
222 | 222 |
223 LevelDBIteratorImpl* MockBrowserTestIndexedDBClassFactory::CreateIteratorImpl( | 223 LevelDBIteratorImpl* MockBrowserTestIndexedDBClassFactory::CreateIteratorImpl( |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 | 261 |
262 void MockBrowserTestIndexedDBClassFactory::Reset() { | 262 void MockBrowserTestIndexedDBClassFactory::Reset() { |
263 failure_class_ = FAIL_CLASS_NOTHING; | 263 failure_class_ = FAIL_CLASS_NOTHING; |
264 failure_method_ = FAIL_METHOD_NOTHING; | 264 failure_method_ = FAIL_METHOD_NOTHING; |
265 instance_count_.clear(); | 265 instance_count_.clear(); |
266 fail_on_instance_num_.clear(); | 266 fail_on_instance_num_.clear(); |
267 fail_on_call_num_.clear(); | 267 fail_on_call_num_.clear(); |
268 } | 268 } |
269 | 269 |
270 } // namespace content | 270 } // namespace content |
OLD | NEW |