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) | 7 #if defined(OS_CHROMEOS) |
8 #include "chromeos/dbus/dbus_thread_manager.h" | 8 #include "chromeos/dbus/dbus_thread_manager.h" |
9 #include "chromeos/dbus/fake_dbus_thread_manager.h" | 9 #include "chromeos/dbus/fake_dbus_thread_manager.h" |
10 #include "chromeos/dbus/fake_image_burner_client.h" | 10 #include "chromeos/dbus/fake_image_burner_client.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 FakeImageWriterClient::~FakeImageWriterClient() {} | 70 FakeImageWriterClient::~FakeImageWriterClient() {} |
71 | 71 |
72 void FakeImageWriterClient::Write(const ProgressCallback& progress_callback, | 72 void FakeImageWriterClient::Write(const ProgressCallback& progress_callback, |
73 const SuccessCallback& success_callback, | 73 const SuccessCallback& success_callback, |
74 const ErrorCallback& error_callback, | 74 const ErrorCallback& error_callback, |
75 const base::FilePath& source, | 75 const base::FilePath& source, |
76 const base::FilePath& target) { | 76 const base::FilePath& target) { |
77 progress_callback_ = progress_callback; | 77 progress_callback_ = progress_callback; |
78 success_callback_ = success_callback; | 78 success_callback_ = success_callback; |
79 error_callback_ = error_callback; | 79 error_callback_ = error_callback; |
80 | |
81 if (!write_callback_.is_null()) | |
82 write_callback_.Run(); | |
83 } | 80 } |
84 | 81 |
85 void FakeImageWriterClient::Verify(const ProgressCallback& progress_callback, | 82 void FakeImageWriterClient::Verify(const ProgressCallback& progress_callback, |
86 const SuccessCallback& success_callback, | 83 const SuccessCallback& success_callback, |
87 const ErrorCallback& error_callback, | 84 const ErrorCallback& error_callback, |
88 const base::FilePath& source, | 85 const base::FilePath& source, |
89 const base::FilePath& target) { | 86 const base::FilePath& target) { |
90 progress_callback_ = progress_callback; | 87 progress_callback_ = progress_callback; |
91 success_callback_ = success_callback; | 88 success_callback_ = success_callback; |
92 error_callback_ = error_callback; | 89 error_callback_ = error_callback; |
93 | |
94 if (!verify_callback_.is_null()) | |
95 verify_callback_.Run(); | |
96 } | 90 } |
97 | 91 |
98 void FakeImageWriterClient::Cancel(const CancelCallback& cancel_callback) { | 92 void FakeImageWriterClient::Cancel(const CancelCallback& cancel_callback) { |
99 cancel_callback_ = cancel_callback; | 93 cancel_callback_ = cancel_callback; |
100 } | 94 } |
101 | 95 |
102 void FakeImageWriterClient::Shutdown() { | 96 void FakeImageWriterClient::Shutdown() { |
103 // Clear handlers to not hold any reference to the caller. | 97 // Clear handlers to not hold any reference to the caller. |
104 success_callback_.Reset(); | 98 success_callback_ = base::Closure(); |
105 progress_callback_.Reset(); | 99 progress_callback_ = base::Callback<void(int64)>(); |
106 error_callback_.Reset(); | 100 error_callback_ = base::Callback<void(const std::string&)>(); |
107 cancel_callback_.Reset(); | 101 cancel_callback_ = base::Closure(); |
108 | |
109 write_callback_.Reset(); | |
110 verify_callback_.Reset(); | |
111 } | |
112 | |
113 void FakeImageWriterClient::SetWriteCallback( | |
114 const base::Closure& write_callback) { | |
115 write_callback_ = write_callback; | |
116 } | |
117 | |
118 void FakeImageWriterClient::SetVerifyCallback( | |
119 const base::Closure& verify_callback) { | |
120 verify_callback_ = verify_callback; | |
121 } | 102 } |
122 | 103 |
123 void FakeImageWriterClient::Progress(int64 progress) { | 104 void FakeImageWriterClient::Progress(int64 progress) { |
124 if (!progress_callback_.is_null()) | 105 progress_callback_.Run(progress); |
125 progress_callback_.Run(progress); | |
126 } | 106 } |
127 | 107 |
128 void FakeImageWriterClient::Success() { | 108 void FakeImageWriterClient::Success() { success_callback_.Run(); } |
129 if (!success_callback_.is_null()) | 109 |
130 success_callback_.Run(); | 110 void FakeImageWriterClient::Error(const std::string& message) { |
| 111 error_callback_.Run(message); |
131 } | 112 } |
132 | 113 |
133 void FakeImageWriterClient::Error(const std::string& message) { | 114 void FakeImageWriterClient::Cancel() { cancel_callback_.Run(); } |
134 if (!error_callback_.is_null()) | 115 |
135 error_callback_.Run(message); | 116 scoped_refptr<FakeImageWriterClient> FakeImageWriterClient::Create() { |
| 117 return scoped_refptr<FakeImageWriterClient>(new FakeImageWriterClient()); |
136 } | 118 } |
137 | 119 |
138 void FakeImageWriterClient::Cancel() { | 120 ImageWriterUnitTestBase::ImageWriterUnitTestBase() |
139 if (!cancel_callback_.is_null()) | 121 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {} |
140 cancel_callback_.Run(); | 122 ImageWriterUnitTestBase::~ImageWriterUnitTestBase() {} |
141 } | |
142 | 123 |
143 ImageWriterTestUtils::ImageWriterTestUtils() { | 124 void ImageWriterUnitTestBase::SetUp() { |
144 } | 125 testing::Test::SetUp(); |
145 ImageWriterTestUtils::~ImageWriterTestUtils() { | |
146 } | |
147 | 126 |
148 void ImageWriterTestUtils::SetUp() { | |
149 SetUp(false); | |
150 } | |
151 | |
152 void ImageWriterTestUtils::SetUp(bool is_browser_test) { | |
153 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 127 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
154 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 128 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
155 &test_image_path_)); | 129 &test_image_path_)); |
156 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 130 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
157 &test_device_path_)); | 131 &test_device_path_)); |
158 | 132 |
159 ASSERT_TRUE(FillFile(test_image_path_, kImagePattern, kTestFileSize)); | 133 ASSERT_TRUE(FillFile(test_image_path_, kImagePattern, kTestFileSize)); |
160 ASSERT_TRUE(FillFile(test_device_path_, kDevicePattern, kTestFileSize)); | 134 ASSERT_TRUE(FillFile(test_device_path_, kDevicePattern, kTestFileSize)); |
161 | 135 |
162 #if defined(OS_CHROMEOS) | 136 #if defined(OS_CHROMEOS) |
163 if (!chromeos::DBusThreadManager::IsInitialized()) { | 137 if (!chromeos::DBusThreadManager::IsInitialized()) { |
164 chromeos::FakeDBusThreadManager* fake_dbus_thread_manager = | 138 chromeos::FakeDBusThreadManager* fake_dbus_thread_manager = |
165 new chromeos::FakeDBusThreadManager; | 139 new chromeos::FakeDBusThreadManager; |
166 fake_dbus_thread_manager->SetFakeClients(); | |
167 scoped_ptr<chromeos::ImageBurnerClient> | 140 scoped_ptr<chromeos::ImageBurnerClient> |
168 image_burner_fake(new ImageWriterFakeImageBurnerClient()); | 141 image_burner_fake(new ImageWriterFakeImageBurnerClient()); |
169 fake_dbus_thread_manager->SetImageBurnerClient(image_burner_fake.Pass()); | 142 fake_dbus_thread_manager->SetImageBurnerClient(image_burner_fake.Pass()); |
170 | 143 chromeos::DBusThreadManager::InitializeForTesting(fake_dbus_thread_manager); |
171 if (is_browser_test) { | |
172 chromeos::DBusThreadManager::SetInstanceForTesting( | |
173 fake_dbus_thread_manager); | |
174 } else { | |
175 chromeos::DBusThreadManager::InitializeForTesting( | |
176 fake_dbus_thread_manager); | |
177 } | |
178 } | 144 } |
179 | |
180 FakeDiskMountManager* disk_manager = new FakeDiskMountManager(); | 145 FakeDiskMountManager* disk_manager = new FakeDiskMountManager(); |
181 chromeos::disks::DiskMountManager::InitializeForTesting(disk_manager); | 146 chromeos::disks::DiskMountManager::InitializeForTesting(disk_manager); |
182 | 147 |
183 // Adds a disk entry for test_device_path_ with the same device and file path. | 148 // Adds a disk entry for test_device_path_ with the same device and file path. |
184 disk_manager->CreateDiskEntryForMountDevice( | 149 disk_manager->CreateDiskEntryForMountDevice( |
185 chromeos::disks::DiskMountManager::MountPointInfo( | 150 chromeos::disks::DiskMountManager::MountPointInfo( |
186 test_device_path_.value(), | 151 test_device_path_.value(), |
187 "/dummy/mount", | 152 "/dummy/mount", |
188 chromeos::MOUNT_TYPE_DEVICE, | 153 chromeos::MOUNT_TYPE_DEVICE, |
189 chromeos::disks::MOUNT_CONDITION_NONE), | 154 chromeos::disks::MOUNT_CONDITION_NONE), |
190 "device_id", | 155 "device_id", |
191 "device_label", | 156 "device_label", |
192 "Vendor", | 157 "Vendor", |
193 "Product", | 158 "Product", |
194 chromeos::DEVICE_TYPE_USB, | 159 chromeos::DEVICE_TYPE_USB, |
195 kTestFileSize, | 160 kTestFileSize, |
196 true, | 161 true, |
197 true, | 162 true, |
198 false); | 163 false); |
199 disk_manager->SetupDefaultReplies(); | 164 disk_manager->SetupDefaultReplies(); |
200 #else | |
201 client_ = new FakeImageWriterClient(); | |
202 image_writer::Operation::SetUtilityClientForTesting(client_); | |
203 #endif | 165 #endif |
204 } | 166 } |
205 | 167 |
206 void ImageWriterTestUtils::TearDown() { | 168 void ImageWriterUnitTestBase::TearDown() { |
207 #if defined(OS_CHROMEOS) | 169 #if defined(OS_CHROMEOS) |
208 if (chromeos::DBusThreadManager::IsInitialized()) { | 170 chromeos::DBusThreadManager::Shutdown(); |
209 chromeos::DBusThreadManager::Shutdown(); | |
210 } | |
211 chromeos::disks::DiskMountManager::Shutdown(); | 171 chromeos::disks::DiskMountManager::Shutdown(); |
212 #else | |
213 image_writer::Operation::SetUtilityClientForTesting(NULL); | |
214 #endif | 172 #endif |
215 } | 173 } |
216 | 174 |
217 const base::FilePath& ImageWriterTestUtils::GetTempDir() { | 175 bool ImageWriterUnitTestBase::ImageWrittenToDevice( |
218 return temp_dir_.path(); | 176 const base::FilePath& image_path, |
219 } | 177 const base::FilePath& device_path) { |
220 | |
221 const base::FilePath& ImageWriterTestUtils::GetImagePath() { | |
222 return test_image_path_; | |
223 } | |
224 | |
225 const base::FilePath& ImageWriterTestUtils::GetDevicePath() { | |
226 return test_device_path_; | |
227 } | |
228 | |
229 #if !defined(OS_CHROMEOS) | |
230 FakeImageWriterClient* ImageWriterTestUtils::GetUtilityClient() { | |
231 return client_.get(); | |
232 } | |
233 #endif | |
234 | |
235 bool ImageWriterTestUtils::ImageWrittenToDevice() { | |
236 scoped_ptr<char[]> image_buffer(new char[kTestFileSize]); | 178 scoped_ptr<char[]> image_buffer(new char[kTestFileSize]); |
237 scoped_ptr<char[]> device_buffer(new char[kTestFileSize]); | 179 scoped_ptr<char[]> device_buffer(new char[kTestFileSize]); |
238 | 180 |
239 int image_bytes_read = | 181 int image_bytes_read = |
240 ReadFile(test_image_path_, image_buffer.get(), kTestFileSize); | 182 ReadFile(image_path, image_buffer.get(), kTestFileSize); |
241 | 183 |
242 if (image_bytes_read < 0) | 184 if (image_bytes_read < 0) |
243 return false; | 185 return false; |
244 | 186 |
245 int device_bytes_read = | 187 int device_bytes_read = |
246 ReadFile(test_device_path_, device_buffer.get(), kTestFileSize); | 188 ReadFile(device_path, device_buffer.get(), kTestFileSize); |
247 | 189 |
248 if (image_bytes_read != device_bytes_read) | 190 if (image_bytes_read != device_bytes_read) |
249 return false; | 191 return false; |
250 | 192 |
251 return memcmp(image_buffer.get(), device_buffer.get(), image_bytes_read) == 0; | 193 return memcmp(image_buffer.get(), device_buffer.get(), image_bytes_read) == 0; |
252 } | 194 } |
253 | 195 |
254 bool ImageWriterTestUtils::FillFile(const base::FilePath& file, | 196 bool ImageWriterUnitTestBase::FillFile(const base::FilePath& file, |
255 const int pattern, | 197 const int pattern, |
256 const int length) { | 198 const int length) { |
257 scoped_ptr<char[]> buffer(new char[length]); | 199 scoped_ptr<char[]> buffer(new char[length]); |
258 memset(buffer.get(), pattern, length); | 200 memset(buffer.get(), pattern, length); |
259 | 201 |
260 return base::WriteFile(file, buffer.get(), length) == length; | 202 return base::WriteFile(file, buffer.get(), length) == length; |
261 } | 203 } |
262 | 204 |
263 ImageWriterUnitTestBase::ImageWriterUnitTestBase() | |
264 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) { | |
265 } | |
266 ImageWriterUnitTestBase::~ImageWriterUnitTestBase() { | |
267 } | |
268 | |
269 void ImageWriterUnitTestBase::SetUp() { | |
270 testing::Test::SetUp(); | |
271 test_utils_.SetUp(); | |
272 } | |
273 | |
274 void ImageWriterUnitTestBase::TearDown() { | |
275 testing::Test::TearDown(); | |
276 test_utils_.TearDown(); | |
277 } | |
278 | |
279 } // namespace image_writer | 205 } // namespace image_writer |
280 } // namespace extensions | 206 } // namespace extensions |
OLD | NEW |