file_reader.cc revision 9ab5563a3196760eb381d102cbb2bc0f7abc6a50
1// Copyright (c) 2011 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 "extensions/browser/file_reader.h"
6
7#include "base/bind.h"
8#include "base/file_util.h"
9#include "base/message_loop/message_loop.h"
10#include "content/public/browser/browser_thread.h"
11
12using content::BrowserThread;
13
14FileReader::FileReader(const extensions::ExtensionResource& resource,
15                       const Callback& callback)
16    : resource_(resource),
17      callback_(callback),
18      origin_loop_(base::MessageLoop::current()) {}
19
20void FileReader::Start() {
21  BrowserThread::PostTask(
22      BrowserThread::FILE, FROM_HERE,
23      base::Bind(&FileReader::ReadFileOnBackgroundThread, this));
24}
25
26FileReader::~FileReader() {}
27
28void FileReader::ReadFileOnBackgroundThread() {
29  std::string data;
30  bool success = file_util::ReadFileToString(resource_.GetFilePath(), &data);
31  origin_loop_->PostTask(FROM_HERE, base::Bind(callback_, success, data));
32}
33