15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "extensions/browser/file_reader.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.h"
99ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/browser_thread.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FileReader::FileReader(const extensions::ExtensionResource& resource,
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const Callback& callback)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : resource_(resource),
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      callback_(callback),
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      origin_loop_(base::MessageLoop::current()) {}
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FileReader::Start() {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BrowserThread::PostTask(
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BrowserThread::FILE, FROM_HERE,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base::Bind(&FileReader::ReadFileOnBackgroundThread, this));
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FileReader::~FileReader() {}
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FileReader::ReadFileOnBackgroundThread() {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string data;
3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool success = base::ReadFileToString(resource_.GetFilePath(), &data);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  origin_loop_->PostTask(FROM_HERE, base::Bind(callback_, success, data));
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
33