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

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

Issue 231313002: Migrate DevToolsFileSystemIndexer to base::FileProxy (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/devtools/devtools_file_system_indexer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 #include "base/file_util.h" 11 #include "base/file_util.h"
12 #include "base/files/file_enumerator.h" 12 #include "base/files/file_enumerator.h"
13 #include "base/files/file_util_proxy.h" 13 #include "base/files/file_util_proxy.h"
14 #include "base/lazy_instance.h" 14 #include "base/lazy_instance.h"
15 #include "base/logging.h" 15 #include "base/logging.h"
16 #include "base/platform_file.h" 16 #include "base/platform_file.h"
17 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
18 #include "content/public/browser/browser_thread.h" 18 #include "content/public/browser/browser_thread.h"
19 19
20 using base::Bind; 20 using base::Bind;
21 using base::Callback; 21 using base::Callback;
22 using base::FileEnumerator; 22 using base::FileEnumerator;
23 using base::FilePath; 23 using base::FilePath;
24 using base::FileUtilProxy;
25 using base::Time; 24 using base::Time;
26 using base::TimeDelta; 25 using base::TimeDelta;
27 using base::TimeTicks; 26 using base::TimeTicks;
28 using base::PassPlatformFile; 27 using base::PassPlatformFile;
29 using base::PlatformFile; 28 using base::PlatformFile;
30 using content::BrowserThread; 29 using content::BrowserThread;
31 using std::map; 30 using std::map;
32 using std::set; 31 using std::set;
33 using std::string; 32 using std::string;
34 using std::vector; 33 using std::vector;
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 261
263 DevToolsFileSystemIndexer::FileSystemIndexingJob::FileSystemIndexingJob( 262 DevToolsFileSystemIndexer::FileSystemIndexingJob::FileSystemIndexingJob(
264 const FilePath& file_system_path, 263 const FilePath& file_system_path,
265 const TotalWorkCallback& total_work_callback, 264 const TotalWorkCallback& total_work_callback,
266 const WorkedCallback& worked_callback, 265 const WorkedCallback& worked_callback,
267 const DoneCallback& done_callback) 266 const DoneCallback& done_callback)
268 : file_system_path_(file_system_path), 267 : file_system_path_(file_system_path),
269 total_work_callback_(total_work_callback), 268 total_work_callback_(total_work_callback),
270 worked_callback_(worked_callback), 269 worked_callback_(worked_callback),
271 done_callback_(done_callback), 270 done_callback_(done_callback),
271 current_file_(BrowserThread::GetMessageLoopProxyForThread(
272 BrowserThread::FILE).get()),
272 files_indexed_(0), 273 files_indexed_(0),
273 stopped_(false) { 274 stopped_(false) {
274 current_trigrams_set_.resize(kTrigramCount); 275 current_trigrams_set_.resize(kTrigramCount);
275 current_trigrams_.reserve(kTrigramCount); 276 current_trigrams_.reserve(kTrigramCount);
276 } 277 }
277 278
278 DevToolsFileSystemIndexer::FileSystemIndexingJob::~FileSystemIndexingJob() {} 279 DevToolsFileSystemIndexer::FileSystemIndexingJob::~FileSystemIndexingJob() {}
279 280
280 void DevToolsFileSystemIndexer::FileSystemIndexingJob::Start() { 281 void DevToolsFileSystemIndexer::FileSystemIndexingJob::Start() {
281 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 282 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 void DevToolsFileSystemIndexer::FileSystemIndexingJob::IndexFiles() { 331 void DevToolsFileSystemIndexer::FileSystemIndexingJob::IndexFiles() {
331 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 332 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
332 if (stopped_) 333 if (stopped_)
333 return; 334 return;
334 if (indexing_it_ == file_path_times_.end()) { 335 if (indexing_it_ == file_path_times_.end()) {
335 g_trigram_index.Get().NormalizeVectors(); 336 g_trigram_index.Get().NormalizeVectors();
336 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done_callback_); 337 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done_callback_);
337 return; 338 return;
338 } 339 }
339 FilePath file_path = indexing_it_->first; 340 FilePath file_path = indexing_it_->first;
340 FileUtilProxy::CreateOrOpen( 341 current_file_.CreateOrOpen(
341 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE).get(), 342 file_path,
342 file_path, 343 base::File::FLAG_OPEN | base::File::FLAG_READ,
343 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ, 344 Bind(&FileSystemIndexingJob::StartFileIndexing, this));
344 Bind(&FileSystemIndexingJob::StartFileIndexing, this));
345 } 345 }
346 346
347 void DevToolsFileSystemIndexer::FileSystemIndexingJob::StartFileIndexing( 347 void DevToolsFileSystemIndexer::FileSystemIndexingJob::StartFileIndexing(
348 base::File::Error error, 348 base::File::Error error) {
349 PassPlatformFile pass_file, 349 if (!current_file_.IsValid()) {
350 bool) {
351 if (error != base::File::FILE_OK) {
352 current_file_ = base::kInvalidPlatformFileValue;
353 FinishFileIndexing(false); 350 FinishFileIndexing(false);
354 return; 351 return;
355 } 352 }
356 current_file_ = pass_file.ReleaseValue();
357 current_file_offset_ = 0; 353 current_file_offset_ = 0;
358 current_trigrams_.clear(); 354 current_trigrams_.clear();
359 std::fill(current_trigrams_set_.begin(), current_trigrams_set_.end(), false); 355 std::fill(current_trigrams_set_.begin(), current_trigrams_set_.end(), false);
360 ReadFromFile(); 356 ReadFromFile();
361 } 357 }
362 358
363 void DevToolsFileSystemIndexer::FileSystemIndexingJob::ReadFromFile() { 359 void DevToolsFileSystemIndexer::FileSystemIndexingJob::ReadFromFile() {
364 if (stopped_) { 360 if (stopped_) {
365 CloseFile(); 361 CloseFile();
366 return; 362 return;
367 } 363 }
368 FileUtilProxy::Read( 364 current_file_.Read(current_file_offset_, kMaxReadLength,
369 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE).get(), 365 Bind(&FileSystemIndexingJob::OnRead, this));
370 current_file_,
371 current_file_offset_,
372 kMaxReadLength,
373 Bind(&FileSystemIndexingJob::OnRead, this));
374 } 366 }
375 367
376 void DevToolsFileSystemIndexer::FileSystemIndexingJob::OnRead( 368 void DevToolsFileSystemIndexer::FileSystemIndexingJob::OnRead(
377 base::File::Error error, 369 base::File::Error error,
378 const char* data, 370 const char* data,
379 int bytes_read) { 371 int bytes_read) {
380 if (error != base::File::FILE_OK) { 372 if (error != base::File::FILE_OK) {
381 FinishFileIndexing(false); 373 FinishFileIndexing(false);
382 return; 374 return;
383 } 375 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 FilePath file_path = indexing_it_->first; 410 FilePath file_path = indexing_it_->first;
419 g_trigram_index.Get().SetTrigramsForFile( 411 g_trigram_index.Get().SetTrigramsForFile(
420 file_path, current_trigrams_, file_path_times_[file_path]); 412 file_path, current_trigrams_, file_path_times_[file_path]);
421 } 413 }
422 ReportWorked(); 414 ReportWorked();
423 ++indexing_it_; 415 ++indexing_it_;
424 IndexFiles(); 416 IndexFiles();
425 } 417 }
426 418
427 void DevToolsFileSystemIndexer::FileSystemIndexingJob::CloseFile() { 419 void DevToolsFileSystemIndexer::FileSystemIndexingJob::CloseFile() {
428 if (current_file_ != base::kInvalidPlatformFileValue) { 420 if (current_file_.IsValid())
429 FileUtilProxy::Close( 421 current_file_.Close(Bind(&FileSystemIndexingJob::CloseCallback, this));
430 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE).get(),
431 current_file_,
432 Bind(&FileSystemIndexingJob::CloseCallback, this));
433 }
434 } 422 }
435 423
436 void DevToolsFileSystemIndexer::FileSystemIndexingJob::CloseCallback( 424 void DevToolsFileSystemIndexer::FileSystemIndexingJob::CloseCallback(
437 base::File::Error error) {} 425 base::File::Error error) {}
438 426
439 void DevToolsFileSystemIndexer::FileSystemIndexingJob::ReportWorked() { 427 void DevToolsFileSystemIndexer::FileSystemIndexingJob::ReportWorked() {
440 TimeTicks current_time = TimeTicks::Now(); 428 TimeTicks current_time = TimeTicks::Now();
441 bool should_send_worked_nitification = true; 429 bool should_send_worked_nitification = true;
442 if (!last_worked_notification_time_.is_null()) { 430 if (!last_worked_notification_time_.is_null()) {
443 TimeDelta delta = current_time - last_worked_notification_time_; 431 TimeDelta delta = current_time - last_worked_notification_time_;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 vector<FilePath> file_paths = g_trigram_index.Get().Search(query); 490 vector<FilePath> file_paths = g_trigram_index.Get().Search(query);
503 vector<string> result; 491 vector<string> result;
504 FilePath path = FilePath::FromUTF8Unsafe(file_system_path); 492 FilePath path = FilePath::FromUTF8Unsafe(file_system_path);
505 vector<FilePath>::const_iterator it = file_paths.begin(); 493 vector<FilePath>::const_iterator it = file_paths.begin();
506 for (; it != file_paths.end(); ++it) { 494 for (; it != file_paths.end(); ++it) {
507 if (path.IsParent(*it)) 495 if (path.IsParent(*it))
508 result.push_back(it->AsUTF8Unsafe()); 496 result.push_back(it->AsUTF8Unsafe());
509 } 497 }
510 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, Bind(callback, result)); 498 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, Bind(callback, result));
511 } 499 }
OLDNEW
« no previous file with comments | « chrome/browser/devtools/devtools_file_system_indexer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698