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