• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "chrome/browser/extensions/file_reader.h"
6 
7 #include "base/file_util.h"
8 #include "base/message_loop.h"
9 #include "content/browser/browser_thread.h"
10 #include "chrome/common/extensions/extension_resource.h"
11 
FileReader(const ExtensionResource & resource,Callback * callback)12 FileReader::FileReader(const ExtensionResource& resource, Callback* callback)
13     : resource_(resource),
14       callback_(callback),
15       origin_loop_(MessageLoop::current()) {
16   DCHECK(callback_);
17 }
18 
Start()19 void FileReader::Start() {
20   BrowserThread::PostTask(
21       BrowserThread::FILE, FROM_HERE,
22       NewRunnableMethod(this, &FileReader::ReadFileOnBackgroundThread));
23 }
24 
~FileReader()25 FileReader::~FileReader() {}
26 
ReadFileOnBackgroundThread()27 void FileReader::ReadFileOnBackgroundThread() {
28   std::string data;
29   bool success = file_util::ReadFileToString(resource_.GetFilePath(), &data);
30   origin_loop_->PostTask(FROM_HERE, NewRunnableMethod(
31       this, &FileReader::RunCallback, success, data));
32 }
33 
RunCallback(bool success,const std::string & data)34 void FileReader::RunCallback(bool success, const std::string& data) {
35   callback_->Run(success, data);
36   delete callback_;
37 }
38