1 // Copyright 2013 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.
5 #include "chrome/browser/extensions/api/image_writer_private/test_utils.h"
7 #if defined(OS_CHROMEOS)
8 #include "chromeos/dbus/dbus_thread_manager.h"
9 #include "chromeos/dbus/fake_dbus_thread_manager.h"
10 #include "chromeos/dbus/fake_image_burner_client.h"
13 namespace extensions {
14 namespace image_writer {
16 #if defined(OS_CHROMEOS)
19 class ImageWriterFakeImageBurnerClient
20 : public chromeos::FakeImageBurnerClient {
22 ImageWriterFakeImageBurnerClient() {}
23 virtual ~ImageWriterFakeImageBurnerClient() {}
25 virtual void SetEventHandlers(
26 const BurnFinishedHandler& burn_finished_handler,
27 const BurnProgressUpdateHandler& burn_progress_update_handler) OVERRIDE {
28 burn_finished_handler_ = burn_finished_handler;
29 burn_progress_update_handler_ = burn_progress_update_handler;
32 virtual void BurnImage(const std::string& from_path,
33 const std::string& to_path,
34 const ErrorCallback& error_callback) OVERRIDE {
35 base::MessageLoop::current()->PostTask(FROM_HERE,
36 base::Bind(burn_progress_update_handler_, to_path, 0, 100));
37 base::MessageLoop::current()->PostTask(FROM_HERE,
38 base::Bind(burn_progress_update_handler_, to_path, 50, 100));
39 base::MessageLoop::current()->PostTask(FROM_HERE,
40 base::Bind(burn_progress_update_handler_, to_path, 100, 100));
41 base::MessageLoop::current()->PostTask(FROM_HERE,
42 base::Bind(burn_finished_handler_, to_path, true, ""));
46 BurnFinishedHandler burn_finished_handler_;
47 BurnProgressUpdateHandler burn_progress_update_handler_;
54 MockOperationManager::MockOperationManager() : OperationManager(NULL) {}
55 MockOperationManager::~MockOperationManager() {}
57 ImageWriterUnitTestBase::ImageWriterUnitTestBase() {}
58 ImageWriterUnitTestBase::~ImageWriterUnitTestBase() {}
60 void ImageWriterUnitTestBase::SetUp() {
61 testing::Test::SetUp();
62 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
64 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
66 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
69 ASSERT_TRUE(FillFile(test_image_path_, kImagePattern, kTestFileSize));
70 ASSERT_TRUE(FillFile(test_device_path_, kDevicePattern, kTestFileSize));
72 #if defined(OS_CHROMEOS)
73 if (!chromeos::DBusThreadManager::IsInitialized()) {
74 chromeos::FakeDBusThreadManager* fake_dbus_thread_manager =
75 new chromeos::FakeDBusThreadManager;
76 scoped_ptr<chromeos::ImageBurnerClient>
77 image_burner_fake(new ImageWriterFakeImageBurnerClient());
78 fake_dbus_thread_manager->SetImageBurnerClient(image_burner_fake.Pass());
79 chromeos::DBusThreadManager::InitializeForTesting(fake_dbus_thread_manager);
84 void ImageWriterUnitTestBase::TearDown() {
85 #if defined(OS_CHROMEOS)
86 chromeos::DBusThreadManager::Shutdown();
90 bool ImageWriterUnitTestBase::CompareImageAndDevice() {
91 scoped_ptr<char[]> image_buffer(new char[kTestFileSize]);
92 scoped_ptr<char[]> device_buffer(new char[kTestFileSize]);
95 int image_bytes_read = ReadFile(test_image_path_,
98 int device_bytes_read = ReadFile(test_device_path_,
102 if (image_bytes_read != device_bytes_read)
105 if (image_bytes_read == 0)
108 if (memcmp(image_buffer.get(), device_buffer.get(), image_bytes_read) != 0)
115 bool ImageWriterUnitTestBase::FillFile(const base::FilePath& file,
118 scoped_ptr<char[]> buffer(new char[length]);
119 memset(buffer.get(), pattern, length);
121 return file_util::WriteFile(file, buffer.get(), length) == length;
124 } // namespace image_writer
125 } // namespace extensions