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