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

Side by Side Diff: chrome/browser/devtools/devtools_file_system_indexer.cc

Issue 1030263002: favor DCHECK_CURRENTLY_ON for better logs in chrome/browser/devtools (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/devtools/devtools_file_system_indexer.h" 5 #include "chrome/browser/devtools/devtools_file_system_indexer.h"
6 6
7 #include <iterator> 7 #include <iterator>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 130
131 Index::Index() : last_file_id_(0) { 131 Index::Index() : last_file_id_(0) {
132 index_.resize(kTrigramCount); 132 index_.resize(kTrigramCount);
133 is_normalized_.resize(kTrigramCount); 133 is_normalized_.resize(kTrigramCount);
134 std::fill(is_normalized_.begin(), is_normalized_.end(), true); 134 std::fill(is_normalized_.begin(), is_normalized_.end(), true);
135 } 135 }
136 136
137 Index::~Index() {} 137 Index::~Index() {}
138 138
139 Time Index::LastModifiedTimeForFile(const FilePath& file_path) { 139 Time Index::LastModifiedTimeForFile(const FilePath& file_path) {
140 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 140 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
141 Time last_modified_time; 141 Time last_modified_time;
142 if (index_times_.find(file_path) != index_times_.end()) 142 if (index_times_.find(file_path) != index_times_.end())
143 last_modified_time = index_times_[file_path]; 143 last_modified_time = index_times_[file_path];
144 return last_modified_time; 144 return last_modified_time;
145 } 145 }
146 146
147 void Index::SetTrigramsForFile(const FilePath& file_path, 147 void Index::SetTrigramsForFile(const FilePath& file_path,
148 const vector<Trigram>& index, 148 const vector<Trigram>& index,
149 const Time& time) { 149 const Time& time) {
150 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 150 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
151 FileId file_id = GetFileId(file_path); 151 FileId file_id = GetFileId(file_path);
152 vector<Trigram>::const_iterator it = index.begin(); 152 vector<Trigram>::const_iterator it = index.begin();
153 for (; it != index.end(); ++it) { 153 for (; it != index.end(); ++it) {
154 Trigram trigram = *it; 154 Trigram trigram = *it;
155 index_[trigram].push_back(file_id); 155 index_[trigram].push_back(file_id);
156 is_normalized_[trigram] = false; 156 is_normalized_[trigram] = false;
157 } 157 }
158 index_times_[file_path] = time; 158 index_times_[file_path] = time;
159 } 159 }
160 160
161 vector<FilePath> Index::Search(string query) { 161 vector<FilePath> Index::Search(string query) {
162 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 162 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
163 const char* data = query.c_str(); 163 const char* data = query.c_str();
164 vector<TrigramChar> trigram_chars; 164 vector<TrigramChar> trigram_chars;
165 trigram_chars.reserve(query.size()); 165 trigram_chars.reserve(query.size());
166 for (size_t i = 0; i < query.size(); ++i) { 166 for (size_t i = 0; i < query.size(); ++i) {
167 TrigramChar trigram_char = TrigramCharForChar(data[i]); 167 TrigramChar trigram_char = TrigramCharForChar(data[i]);
168 if (trigram_char == kBinaryTrigramChar) 168 if (trigram_char == kBinaryTrigramChar)
169 trigram_char = kUndefinedTrigramChar; 169 trigram_char = kUndefinedTrigramChar;
170 trigram_chars.push_back(trigram_char); 170 trigram_chars.push_back(trigram_char);
171 } 171 }
172 vector<Trigram> trigrams; 172 vector<Trigram> trigrams;
(...skipping 23 matching lines...) Expand all
196 for (; ids_it != file_ids_.end(); ++ids_it) { 196 for (; ids_it != file_ids_.end(); ++ids_it) {
197 if (trigrams.size() == 0 || 197 if (trigrams.size() == 0 ||
198 file_ids.find(ids_it->second) != file_ids.end()) { 198 file_ids.find(ids_it->second) != file_ids.end()) {
199 result.push_back(ids_it->first); 199 result.push_back(ids_it->first);
200 } 200 }
201 } 201 }
202 return result; 202 return result;
203 } 203 }
204 204
205 FileId Index::GetFileId(const FilePath& file_path) { 205 FileId Index::GetFileId(const FilePath& file_path) {
206 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 206 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
207 string file_path_str = file_path.AsUTF8Unsafe(); 207 string file_path_str = file_path.AsUTF8Unsafe();
208 if (file_ids_.find(file_path) != file_ids_.end()) 208 if (file_ids_.find(file_path) != file_ids_.end())
209 return file_ids_[file_path]; 209 return file_ids_[file_path];
210 file_ids_[file_path] = ++last_file_id_; 210 file_ids_[file_path] = ++last_file_id_;
211 return last_file_id_; 211 return last_file_id_;
212 } 212 }
213 213
214 void Index::NormalizeVectors() { 214 void Index::NormalizeVectors() {
215 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 215 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
216 for (size_t i = 0; i < kTrigramCount; ++i) { 216 for (size_t i = 0; i < kTrigramCount; ++i) {
217 if (!is_normalized_[i]) { 217 if (!is_normalized_[i]) {
218 std::sort(index_[i].begin(), index_[i].end()); 218 std::sort(index_[i].begin(), index_[i].end());
219 if (index_[i].capacity() > index_[i].size()) 219 if (index_[i].capacity() > index_[i].size())
220 vector<FileId>(index_[i]).swap(index_[i]); 220 vector<FileId>(index_[i]).swap(index_[i]);
221 is_normalized_[i] = true; 221 is_normalized_[i] = true;
222 } 222 }
223 } 223 }
224 } 224 }
225 225
226 void Index::PrintStats() { 226 void Index::PrintStats() {
227 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 227 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
228 LOG(ERROR) << "Index stats:"; 228 LOG(ERROR) << "Index stats:";
229 size_t size = 0; 229 size_t size = 0;
230 size_t maxSize = 0; 230 size_t maxSize = 0;
231 size_t capacity = 0; 231 size_t capacity = 0;
232 for (size_t i = 0; i < kTrigramCount; ++i) { 232 for (size_t i = 0; i < kTrigramCount; ++i) {
233 if (index_[i].size() > maxSize) 233 if (index_[i].size() > maxSize)
234 maxSize = index_[i].size(); 234 maxSize = index_[i].size();
235 size += index_[i].size(); 235 size += index_[i].size();
236 capacity += index_[i].capacity(); 236 capacity += index_[i].capacity();
237 } 237 }
(...skipping 22 matching lines...) Expand all
260 BrowserThread::FILE).get()), 260 BrowserThread::FILE).get()),
261 files_indexed_(0), 261 files_indexed_(0),
262 stopped_(false) { 262 stopped_(false) {
263 current_trigrams_set_.resize(kTrigramCount); 263 current_trigrams_set_.resize(kTrigramCount);
264 current_trigrams_.reserve(kTrigramCount); 264 current_trigrams_.reserve(kTrigramCount);
265 } 265 }
266 266
267 DevToolsFileSystemIndexer::FileSystemIndexingJob::~FileSystemIndexingJob() {} 267 DevToolsFileSystemIndexer::FileSystemIndexingJob::~FileSystemIndexingJob() {}
268 268
269 void DevToolsFileSystemIndexer::FileSystemIndexingJob::Start() { 269 void DevToolsFileSystemIndexer::FileSystemIndexingJob::Start() {
270 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 270 DCHECK_CURRENTLY_ON(BrowserThread::UI);
271 BrowserThread::PostTask( 271 BrowserThread::PostTask(
272 BrowserThread::FILE, 272 BrowserThread::FILE,
273 FROM_HERE, 273 FROM_HERE,
274 Bind(&FileSystemIndexingJob::CollectFilesToIndex, this)); 274 Bind(&FileSystemIndexingJob::CollectFilesToIndex, this));
275 } 275 }
276 276
277 void DevToolsFileSystemIndexer::FileSystemIndexingJob::Stop() { 277 void DevToolsFileSystemIndexer::FileSystemIndexingJob::Stop() {
278 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 278 DCHECK_CURRENTLY_ON(BrowserThread::UI);
279 BrowserThread::PostTask(BrowserThread::FILE, 279 BrowserThread::PostTask(BrowserThread::FILE,
280 FROM_HERE, 280 FROM_HERE,
281 Bind(&FileSystemIndexingJob::StopOnFileThread, this)); 281 Bind(&FileSystemIndexingJob::StopOnFileThread, this));
282 } 282 }
283 283
284 void DevToolsFileSystemIndexer::FileSystemIndexingJob::StopOnFileThread() { 284 void DevToolsFileSystemIndexer::FileSystemIndexingJob::StopOnFileThread() {
285 stopped_ = true; 285 stopped_ = true;
286 } 286 }
287 287
288 void DevToolsFileSystemIndexer::FileSystemIndexingJob::CollectFilesToIndex() { 288 void DevToolsFileSystemIndexer::FileSystemIndexingJob::CollectFilesToIndex() {
289 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 289 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
290 if (stopped_) 290 if (stopped_)
291 return; 291 return;
292 if (!file_enumerator_) { 292 if (!file_enumerator_) {
293 file_enumerator_.reset( 293 file_enumerator_.reset(
294 new FileEnumerator(file_system_path_, true, FileEnumerator::FILES)); 294 new FileEnumerator(file_system_path_, true, FileEnumerator::FILES));
295 } 295 }
296 FilePath file_path = file_enumerator_->Next(); 296 FilePath file_path = file_enumerator_->Next();
297 if (file_path.empty()) { 297 if (file_path.empty()) {
298 BrowserThread::PostTask( 298 BrowserThread::PostTask(
299 BrowserThread::UI, 299 BrowserThread::UI,
(...skipping 10 matching lines...) Expand all
310 if (current_last_modified_time > saved_last_modified_time) { 310 if (current_last_modified_time > saved_last_modified_time) {
311 file_path_times_[file_path] = current_last_modified_time; 311 file_path_times_[file_path] = current_last_modified_time;
312 } 312 }
313 BrowserThread::PostTask( 313 BrowserThread::PostTask(
314 BrowserThread::FILE, 314 BrowserThread::FILE,
315 FROM_HERE, 315 FROM_HERE,
316 Bind(&FileSystemIndexingJob::CollectFilesToIndex, this)); 316 Bind(&FileSystemIndexingJob::CollectFilesToIndex, this));
317 } 317 }
318 318
319 void DevToolsFileSystemIndexer::FileSystemIndexingJob::IndexFiles() { 319 void DevToolsFileSystemIndexer::FileSystemIndexingJob::IndexFiles() {
320 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 320 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
321 if (stopped_) 321 if (stopped_)
322 return; 322 return;
323 if (indexing_it_ == file_path_times_.end()) { 323 if (indexing_it_ == file_path_times_.end()) {
324 g_trigram_index.Get().NormalizeVectors(); 324 g_trigram_index.Get().NormalizeVectors();
325 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done_callback_); 325 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done_callback_);
326 return; 326 return;
327 } 327 }
328 FilePath file_path = indexing_it_->first; 328 FilePath file_path = indexing_it_->first;
329 current_file_.CreateOrOpen( 329 current_file_.CreateOrOpen(
330 file_path, 330 file_path,
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 current_trigrams_set_[trigram] = true; 386 current_trigrams_set_[trigram] = true;
387 current_trigrams_.push_back(trigram); 387 current_trigrams_.push_back(trigram);
388 } 388 }
389 } 389 }
390 current_file_offset_ += bytes_read - 2; 390 current_file_offset_ += bytes_read - 2;
391 ReadFromFile(); 391 ReadFromFile();
392 } 392 }
393 393
394 void DevToolsFileSystemIndexer::FileSystemIndexingJob::FinishFileIndexing( 394 void DevToolsFileSystemIndexer::FileSystemIndexingJob::FinishFileIndexing(
395 bool success) { 395 bool success) {
396 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 396 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
397 CloseFile(); 397 CloseFile();
398 if (success) { 398 if (success) {
399 FilePath file_path = indexing_it_->first; 399 FilePath file_path = indexing_it_->first;
400 g_trigram_index.Get().SetTrigramsForFile( 400 g_trigram_index.Get().SetTrigramsForFile(
401 file_path, current_trigrams_, file_path_times_[file_path]); 401 file_path, current_trigrams_, file_path_times_[file_path]);
402 } 402 }
403 ReportWorked(); 403 ReportWorked();
404 ++indexing_it_; 404 ++indexing_it_;
405 IndexFiles(); 405 IndexFiles();
406 } 406 }
(...skipping 27 matching lines...) Expand all
434 } 434 }
435 435
436 DevToolsFileSystemIndexer::~DevToolsFileSystemIndexer() {} 436 DevToolsFileSystemIndexer::~DevToolsFileSystemIndexer() {}
437 437
438 scoped_refptr<DevToolsFileSystemIndexer::FileSystemIndexingJob> 438 scoped_refptr<DevToolsFileSystemIndexer::FileSystemIndexingJob>
439 DevToolsFileSystemIndexer::IndexPath( 439 DevToolsFileSystemIndexer::IndexPath(
440 const string& file_system_path, 440 const string& file_system_path,
441 const TotalWorkCallback& total_work_callback, 441 const TotalWorkCallback& total_work_callback,
442 const WorkedCallback& worked_callback, 442 const WorkedCallback& worked_callback,
443 const DoneCallback& done_callback) { 443 const DoneCallback& done_callback) {
444 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 444 DCHECK_CURRENTLY_ON(BrowserThread::UI);
445 scoped_refptr<FileSystemIndexingJob> indexing_job = 445 scoped_refptr<FileSystemIndexingJob> indexing_job =
446 new FileSystemIndexingJob(FilePath::FromUTF8Unsafe(file_system_path), 446 new FileSystemIndexingJob(FilePath::FromUTF8Unsafe(file_system_path),
447 total_work_callback, 447 total_work_callback,
448 worked_callback, 448 worked_callback,
449 done_callback); 449 done_callback);
450 indexing_job->Start(); 450 indexing_job->Start();
451 return indexing_job; 451 return indexing_job;
452 } 452 }
453 453
454 void DevToolsFileSystemIndexer::SearchInPath(const string& file_system_path, 454 void DevToolsFileSystemIndexer::SearchInPath(const string& file_system_path,
455 const string& query, 455 const string& query,
456 const SearchCallback& callback) { 456 const SearchCallback& callback) {
457 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 457 DCHECK_CURRENTLY_ON(BrowserThread::UI);
458 BrowserThread::PostTask( 458 BrowserThread::PostTask(
459 BrowserThread::FILE, 459 BrowserThread::FILE,
460 FROM_HERE, 460 FROM_HERE,
461 Bind(&DevToolsFileSystemIndexer::SearchInPathOnFileThread, 461 Bind(&DevToolsFileSystemIndexer::SearchInPathOnFileThread,
462 this, 462 this,
463 file_system_path, 463 file_system_path,
464 query, 464 query,
465 callback)); 465 callback));
466 } 466 }
467 467
468 void DevToolsFileSystemIndexer::SearchInPathOnFileThread( 468 void DevToolsFileSystemIndexer::SearchInPathOnFileThread(
469 const string& file_system_path, 469 const string& file_system_path,
470 const string& query, 470 const string& query,
471 const SearchCallback& callback) { 471 const SearchCallback& callback) {
472 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 472 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
473 vector<FilePath> file_paths = g_trigram_index.Get().Search(query); 473 vector<FilePath> file_paths = g_trigram_index.Get().Search(query);
474 vector<string> result; 474 vector<string> result;
475 FilePath path = FilePath::FromUTF8Unsafe(file_system_path); 475 FilePath path = FilePath::FromUTF8Unsafe(file_system_path);
476 vector<FilePath>::const_iterator it = file_paths.begin(); 476 vector<FilePath>::const_iterator it = file_paths.begin();
477 for (; it != file_paths.end(); ++it) { 477 for (; it != file_paths.end(); ++it) {
478 if (path.IsParent(*it)) 478 if (path.IsParent(*it))
479 result.push_back(it->AsUTF8Unsafe()); 479 result.push_back(it->AsUTF8Unsafe());
480 } 480 }
481 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, Bind(callback, result)); 481 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, Bind(callback, result));
482 } 482 }
OLDNEW
« no previous file with comments | « chrome/browser/devtools/devtools_file_helper.cc ('k') | chrome/browser/devtools/devtools_target_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698