OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/api/image_writer_private/test_utils.h" | 5 #include "chrome/browser/extensions/api/image_writer_private/test_utils.h" |
6 | 6 |
| 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" |
| 11 #endif |
| 12 |
7 namespace extensions { | 13 namespace extensions { |
8 namespace image_writer { | 14 namespace image_writer { |
9 | 15 |
| 16 #if defined(OS_CHROMEOS) |
| 17 namespace { |
| 18 |
| 19 class ImageWriterFakeImageBurnerClient |
| 20 : public chromeos::FakeImageBurnerClient { |
| 21 public: |
| 22 ImageWriterFakeImageBurnerClient() {} |
| 23 virtual ~ImageWriterFakeImageBurnerClient() {} |
| 24 |
| 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; |
| 30 } |
| 31 |
| 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, "")); |
| 43 } |
| 44 |
| 45 private: |
| 46 BurnFinishedHandler burn_finished_handler_; |
| 47 BurnProgressUpdateHandler burn_progress_update_handler_; |
| 48 |
| 49 }; |
| 50 |
| 51 } // namespace |
| 52 #endif |
| 53 |
10 MockOperationManager::MockOperationManager() | 54 MockOperationManager::MockOperationManager() |
11 : OperationManager(NULL) { | 55 : OperationManager(NULL) {} |
| 56 |
| 57 MockOperationManager::~MockOperationManager() {} |
| 58 |
| 59 ImageWriterUnitTestBase::ImageWriterUnitTestBase() {} |
| 60 ImageWriterUnitTestBase::~ImageWriterUnitTestBase() {} |
| 61 |
| 62 void ImageWriterUnitTestBase::SetUp() { |
| 63 testing::Test::SetUp(); |
| 64 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| 65 |
| 66 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 67 &test_image_path_)); |
| 68 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 69 &test_device_path_)); |
| 70 |
| 71 ASSERT_TRUE(FillFile(test_image_path_, kImagePattern, kTestFileSize)); |
| 72 ASSERT_TRUE(FillFile(test_device_path_, kDevicePattern, kTestFileSize)); |
| 73 |
| 74 #if defined(OS_CHROMEOS) |
| 75 if (!chromeos::DBusThreadManager::IsInitialized()) { |
| 76 chromeos::FakeDBusThreadManager* fake_dbus_thread_manager = |
| 77 new chromeos::FakeDBusThreadManager; |
| 78 scoped_ptr<chromeos::ImageBurnerClient> |
| 79 image_burner_fake(new ImageWriterFakeImageBurnerClient()); |
| 80 fake_dbus_thread_manager->SetImageBurnerClient(image_burner_fake.Pass()); |
| 81 chromeos::DBusThreadManager::InitializeForTesting(fake_dbus_thread_manager); |
| 82 } |
| 83 #endif |
12 } | 84 } |
13 | 85 |
14 MockOperationManager::~MockOperationManager() { | 86 void ImageWriterUnitTestBase::TearDown() {} |
| 87 |
| 88 bool ImageWriterUnitTestBase::CompareImageAndDevice() { |
| 89 scoped_ptr<char[]> image_buffer(new char[kTestFileSize]); |
| 90 scoped_ptr<char[]> device_buffer(new char[kTestFileSize]); |
| 91 |
| 92 while (true) { |
| 93 int image_bytes_read = ReadFile(test_image_path_, |
| 94 image_buffer.get(), |
| 95 kTestFileSize); |
| 96 int device_bytes_read = ReadFile(test_device_path_, |
| 97 device_buffer.get(), |
| 98 kTestFileSize); |
| 99 |
| 100 if (image_bytes_read != device_bytes_read) |
| 101 return false; |
| 102 |
| 103 if (image_bytes_read == 0) |
| 104 return true; |
| 105 |
| 106 if (memcmp(image_buffer.get(), device_buffer.get(), image_bytes_read) != 0) |
| 107 return false; |
| 108 } |
| 109 |
| 110 return false; |
15 } | 111 } |
16 | 112 |
17 void ImageWriterUnitTestBase::SetUp() { | 113 bool ImageWriterUnitTestBase::FillFile(const base::FilePath& file, |
18 ASSERT_TRUE(base::CreateTemporaryFile(&test_image_)); | 114 const int pattern, |
19 ASSERT_TRUE(base::CreateTemporaryFile(&test_device_)); | 115 const int length) { |
| 116 scoped_ptr<char[]> buffer(new char[length]); |
| 117 memset(buffer.get(), pattern, length); |
20 | 118 |
21 ASSERT_EQ(32, file_util::WriteFile(test_image_, kTestData, 32)); | 119 return file_util::WriteFile(file, buffer.get(), length) == length; |
22 } | |
23 | |
24 void ImageWriterUnitTestBase::TearDown() { | |
25 base::DeleteFile(test_image_, false); | |
26 base::DeleteFile(test_device_, false); | |
27 } | 120 } |
28 | 121 |
29 } // namespace image_writer | 122 } // namespace image_writer |
30 } // namespace extensions | 123 } // namespace extensions |
OLD | NEW |