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 | |
13 namespace extensions { | 7 namespace extensions { |
14 namespace image_writer { | 8 namespace image_writer { |
15 | 9 |
16 #if defined(OS_CHROMEOS) | 10 MockOperationManager::MockOperationManager() |
17 namespace { | 11 : OperationManager(NULL) { |
| 12 } |
18 | 13 |
19 class ImageWriterFakeImageBurnerClient | 14 MockOperationManager::~MockOperationManager() { |
20 : public chromeos::FakeImageBurnerClient { | 15 } |
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 | |
54 MockOperationManager::MockOperationManager() | |
55 : OperationManager(NULL) {} | |
56 | |
57 MockOperationManager::~MockOperationManager() {} | |
58 | |
59 ImageWriterUnitTestBase::ImageWriterUnitTestBase() {} | |
60 ImageWriterUnitTestBase::~ImageWriterUnitTestBase() {} | |
61 | 16 |
62 void ImageWriterUnitTestBase::SetUp() { | 17 void ImageWriterUnitTestBase::SetUp() { |
63 testing::Test::SetUp(); | 18 ASSERT_TRUE(base::CreateTemporaryFile(&test_image_)); |
64 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 19 ASSERT_TRUE(base::CreateTemporaryFile(&test_device_)); |
65 | 20 |
66 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 21 ASSERT_EQ(32, file_util::WriteFile(test_image_, kTestData, 32)); |
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 | |
84 } | 22 } |
85 | 23 |
86 void ImageWriterUnitTestBase::TearDown() {} | 24 void ImageWriterUnitTestBase::TearDown() { |
87 | 25 base::DeleteFile(test_image_, false); |
88 bool ImageWriterUnitTestBase::CompareImageAndDevice() { | 26 base::DeleteFile(test_device_, false); |
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; | |
111 } | |
112 | |
113 bool ImageWriterUnitTestBase::FillFile(const base::FilePath& file, | |
114 const int pattern, | |
115 const int length) { | |
116 scoped_ptr<char[]> buffer(new char[length]); | |
117 memset(buffer.get(), pattern, length); | |
118 | |
119 return file_util::WriteFile(file, buffer.get(), length) == length; | |
120 } | 27 } |
121 | 28 |
122 } // namespace image_writer | 29 } // namespace image_writer |
123 } // namespace extensions | 30 } // namespace extensions |
OLD | NEW |