1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/lazy_instance.h" 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/extensions/api/image_writer_private/removable_storage_provider.h" 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "content/public/browser/browser_thread.h" 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace extensions { 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// A device list to be returned when testing. 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)static base::LazyInstance<scoped_refptr<StorageDeviceList> > g_test_device_list; 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// TODO(haven): Udev code may be duplicated in the Chrome codebase. 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// https://code.google.com/p/chromium/issues/detail?id=284898 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void RemovableStorageProvider::GetAllDevices(DeviceListReadyCallback callback) { 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (g_test_device_list.Get().get() != NULL) { 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::BrowserThread::PostTask( 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::BrowserThread::FILE, 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) FROM_HERE, 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::Bind(callback, g_test_device_list.Get(), true)); 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return; 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_refptr<StorageDeviceList> device_list(new StorageDeviceList); 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // We need to do some file i/o to get the device block size 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::BrowserThread::PostTaskAndReplyWithResult( 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::BrowserThread::FILE, 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) FROM_HERE, 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::Bind(PopulateDeviceList, device_list), 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::Bind(callback, device_list)); 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void RemovableStorageProvider::SetDeviceListForTesting( 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_refptr<StorageDeviceList> device_list) { 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) g_test_device_list.Get() = device_list; 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void RemovableStorageProvider::ClearDeviceListForTesting() { 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) g_test_device_list.Get() = NULL; 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace extensions 47