OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 | 5 |
6 #import <Foundation/Foundation.h> | 6 #import <Foundation/Foundation.h> |
7 #import <ImageCaptureCore/ImageCaptureCore.h> | 7 #import <ImageCaptureCore/ImageCaptureCore.h> |
8 | 8 |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
252 bool removed_; | 252 bool removed_; |
253 base::PlatformFileError last_error_; | 253 base::PlatformFileError last_error_; |
254 }; | 254 }; |
255 | 255 |
256 class ImageCaptureDeviceManagerTest : public testing::Test { | 256 class ImageCaptureDeviceManagerTest : public testing::Test { |
257 public: | 257 public: |
258 virtual void SetUp() OVERRIDE { | 258 virtual void SetUp() OVERRIDE { |
259 ui_thread_.reset(new content::TestBrowserThread( | 259 ui_thread_.reset(new content::TestBrowserThread( |
260 content::BrowserThread::UI, &message_loop_)); | 260 content::BrowserThread::UI, &message_loop_)); |
261 | 261 |
262 monitor_ = chrome::test::TestStorageMonitor::CreateAndInstall(); | 262 monitor_ = TestStorageMonitor::CreateAndInstall(); |
263 } | 263 } |
264 | 264 |
265 virtual void TearDown() OVERRIDE { | 265 virtual void TearDown() OVERRIDE { |
266 chrome::test::TestStorageMonitor::RemoveSingleton(); | 266 TestStorageMonitor::RemoveSingleton(); |
267 } | 267 } |
268 | 268 |
269 MockICCameraDevice* AttachDevice( | 269 MockICCameraDevice* AttachDevice(ImageCaptureDeviceManager* manager) { |
270 chrome::ImageCaptureDeviceManager* manager) { | |
271 // Ownership will be passed to the device browser delegate. | 270 // Ownership will be passed to the device browser delegate. |
272 base::scoped_nsobject<MockICCameraDevice> device( | 271 base::scoped_nsobject<MockICCameraDevice> device( |
273 [[MockICCameraDevice alloc] init]); | 272 [[MockICCameraDevice alloc] init]); |
274 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); | 273 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); |
275 [delegate deviceBrowser:nil didAddDevice:device moreComing:NO]; | 274 [delegate deviceBrowser:nil didAddDevice:device moreComing:NO]; |
276 return device.autorelease(); | 275 return device.autorelease(); |
277 } | 276 } |
278 | 277 |
279 void DetachDevice(chrome::ImageCaptureDeviceManager* manager, | 278 void DetachDevice(ImageCaptureDeviceManager* manager, |
280 ICCameraDevice* device) { | 279 ICCameraDevice* device) { |
281 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); | 280 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); |
282 [delegate deviceBrowser:nil didRemoveDevice:device moreGoing:NO]; | 281 [delegate deviceBrowser:nil didRemoveDevice:device moreGoing:NO]; |
283 } | 282 } |
284 | 283 |
285 protected: | 284 protected: |
286 base::MessageLoopForUI message_loop_; | 285 base::MessageLoopForUI message_loop_; |
287 scoped_ptr<content::TestBrowserThread> ui_thread_; | 286 scoped_ptr<content::TestBrowserThread> ui_thread_; |
288 | 287 |
289 chrome::test::TestStorageMonitor* monitor_; | 288 TestStorageMonitor* monitor_; |
290 TestCameraListener listener_; | 289 TestCameraListener listener_; |
291 }; | 290 }; |
292 | 291 |
293 TEST_F(ImageCaptureDeviceManagerTest, TestAttachDetach) { | 292 TEST_F(ImageCaptureDeviceManagerTest, TestAttachDetach) { |
294 chrome::ImageCaptureDeviceManager manager; | 293 ImageCaptureDeviceManager manager; |
295 manager.SetNotifications(monitor_->receiver()); | 294 manager.SetNotifications(monitor_->receiver()); |
296 ICCameraDevice* device = AttachDevice(&manager); | 295 ICCameraDevice* device = AttachDevice(&manager); |
297 std::vector<chrome::StorageInfo> devices = | 296 std::vector<StorageInfo> devices = monitor_->GetAllAvailableStorages(); |
298 monitor_->GetAllAvailableStorages(); | |
299 | 297 |
300 ASSERT_EQ(1U, devices.size()); | 298 ASSERT_EQ(1U, devices.size()); |
301 EXPECT_EQ(std::string("ic:") + kDeviceId, devices[0].device_id()); | 299 EXPECT_EQ(std::string("ic:") + kDeviceId, devices[0].device_id()); |
302 | 300 |
303 DetachDevice(&manager, device); | 301 DetachDevice(&manager, device); |
304 devices = monitor_->GetAllAvailableStorages(); | 302 devices = monitor_->GetAllAvailableStorages(); |
305 ASSERT_EQ(0U, devices.size()); | 303 ASSERT_EQ(0U, devices.size()); |
306 }; | 304 }; |
307 | 305 |
308 TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) { | 306 TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) { |
309 chrome::ImageCaptureDeviceManager manager; | 307 ImageCaptureDeviceManager manager; |
310 manager.SetNotifications(monitor_->receiver()); | 308 manager.SetNotifications(monitor_->receiver()); |
311 ICCameraDevice* device = AttachDevice(&manager); | 309 ICCameraDevice* device = AttachDevice(&manager); |
312 | 310 |
313 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( | 311 EXPECT_FALSE(ImageCaptureDeviceManager::deviceForUUID( |
314 "nonexistent")); | 312 "nonexistent")); |
315 | 313 |
316 base::scoped_nsobject<ImageCaptureDevice> camera( | 314 base::scoped_nsobject<ImageCaptureDevice> camera( |
317 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 315 [ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
318 | 316 |
319 [camera setListener:listener_.AsWeakPtr()]; | 317 [camera setListener:listener_.AsWeakPtr()]; |
320 [camera open]; | 318 [camera open]; |
321 | 319 |
322 base::scoped_nsobject<MockICCameraFile> picture1( | 320 base::scoped_nsobject<MockICCameraFile> picture1( |
323 [[MockICCameraFile alloc] init:@"pic1"]); | 321 [[MockICCameraFile alloc] init:@"pic1"]); |
324 [camera cameraDevice:nil didAddItem:picture1]; | 322 [camera cameraDevice:nil didAddItem:picture1]; |
325 base::scoped_nsobject<MockICCameraFile> picture2( | 323 base::scoped_nsobject<MockICCameraFile> picture2( |
326 [[MockICCameraFile alloc] init:@"pic2"]); | 324 [[MockICCameraFile alloc] init:@"pic2"]); |
327 [camera cameraDevice:nil didAddItem:picture2]; | 325 [camera cameraDevice:nil didAddItem:picture2]; |
328 ASSERT_EQ(2U, listener_.items().size()); | 326 ASSERT_EQ(2U, listener_.items().size()); |
329 EXPECT_EQ("pic1", listener_.items()[0]); | 327 EXPECT_EQ("pic1", listener_.items()[0]); |
330 EXPECT_EQ("pic2", listener_.items()[1]); | 328 EXPECT_EQ("pic2", listener_.items()[1]); |
331 EXPECT_FALSE(listener_.completed()); | 329 EXPECT_FALSE(listener_.completed()); |
332 | 330 |
333 [camera deviceDidBecomeReadyWithCompleteContentCatalog:nil]; | 331 [camera deviceDidBecomeReadyWithCompleteContentCatalog:nil]; |
334 | 332 |
335 ASSERT_EQ(2U, listener_.items().size()); | 333 ASSERT_EQ(2U, listener_.items().size()); |
336 EXPECT_TRUE(listener_.completed()); | 334 EXPECT_TRUE(listener_.completed()); |
337 | 335 |
338 [camera close]; | 336 [camera close]; |
339 DetachDevice(&manager, device); | 337 DetachDevice(&manager, device); |
340 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( | 338 EXPECT_FALSE(ImageCaptureDeviceManager::deviceForUUID(kDeviceId)); |
341 kDeviceId)); | |
342 } | 339 } |
343 | 340 |
344 TEST_F(ImageCaptureDeviceManagerTest, RemoveCamera) { | 341 TEST_F(ImageCaptureDeviceManagerTest, RemoveCamera) { |
345 chrome::ImageCaptureDeviceManager manager; | 342 ImageCaptureDeviceManager manager; |
346 manager.SetNotifications(monitor_->receiver()); | 343 manager.SetNotifications(monitor_->receiver()); |
347 ICCameraDevice* device = AttachDevice(&manager); | 344 ICCameraDevice* device = AttachDevice(&manager); |
348 | 345 |
349 base::scoped_nsobject<ImageCaptureDevice> camera( | 346 base::scoped_nsobject<ImageCaptureDevice> camera( |
350 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 347 [ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
351 | 348 |
352 [camera setListener:listener_.AsWeakPtr()]; | 349 [camera setListener:listener_.AsWeakPtr()]; |
353 [camera open]; | 350 [camera open]; |
354 | 351 |
355 [camera didRemoveDevice:device]; | 352 [camera didRemoveDevice:device]; |
356 EXPECT_TRUE(listener_.removed()); | 353 EXPECT_TRUE(listener_.removed()); |
357 } | 354 } |
358 | 355 |
359 TEST_F(ImageCaptureDeviceManagerTest, DownloadFile) { | 356 TEST_F(ImageCaptureDeviceManagerTest, DownloadFile) { |
360 scoped_ptr<content::TestBrowserThread> file_thread( | 357 scoped_ptr<content::TestBrowserThread> file_thread( |
361 new content::TestBrowserThread( | 358 new content::TestBrowserThread( |
362 content::BrowserThread::FILE, &message_loop_)); | 359 content::BrowserThread::FILE, &message_loop_)); |
363 | 360 |
364 chrome::ImageCaptureDeviceManager manager; | 361 ImageCaptureDeviceManager manager; |
365 manager.SetNotifications(monitor_->receiver()); | 362 manager.SetNotifications(monitor_->receiver()); |
366 MockICCameraDevice* device = AttachDevice(&manager); | 363 MockICCameraDevice* device = AttachDevice(&manager); |
367 | 364 |
368 base::scoped_nsobject<ImageCaptureDevice> camera( | 365 base::scoped_nsobject<ImageCaptureDevice> camera( |
369 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 366 [ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
370 | 367 |
371 [camera setListener:listener_.AsWeakPtr()]; | 368 [camera setListener:listener_.AsWeakPtr()]; |
372 [camera open]; | 369 [camera open]; |
373 | 370 |
374 std::string kTestFileName("pic1"); | 371 std::string kTestFileName("pic1"); |
375 | 372 |
376 base::scoped_nsobject<MockICCameraFile> picture1( | 373 base::scoped_nsobject<MockICCameraFile> picture1( |
377 [[MockICCameraFile alloc] init:base::SysUTF8ToNSString(kTestFileName)]); | 374 [[MockICCameraFile alloc] init:base::SysUTF8ToNSString(kTestFileName)]); |
378 [device addMediaFile:picture1]; | 375 [device addMediaFile:picture1]; |
379 [camera cameraDevice:nil didAddItem:picture1]; | 376 [camera cameraDevice:nil didAddItem:picture1]; |
(...skipping 30 matching lines...) Expand all Loading... |
410 std::string(file_contents, strlen(kTestFileContents))); | 407 std::string(file_contents, strlen(kTestFileContents))); |
411 | 408 |
412 [camera didRemoveDevice:device]; | 409 [camera didRemoveDevice:device]; |
413 } | 410 } |
414 | 411 |
415 TEST_F(ImageCaptureDeviceManagerTest, TestSubdirectories) { | 412 TEST_F(ImageCaptureDeviceManagerTest, TestSubdirectories) { |
416 scoped_ptr<content::TestBrowserThread> file_thread( | 413 scoped_ptr<content::TestBrowserThread> file_thread( |
417 new content::TestBrowserThread( | 414 new content::TestBrowserThread( |
418 content::BrowserThread::FILE, &message_loop_)); | 415 content::BrowserThread::FILE, &message_loop_)); |
419 | 416 |
420 chrome::ImageCaptureDeviceManager manager; | 417 ImageCaptureDeviceManager manager; |
421 manager.SetNotifications(monitor_->receiver()); | 418 manager.SetNotifications(monitor_->receiver()); |
422 MockICCameraDevice* device = AttachDevice(&manager); | 419 MockICCameraDevice* device = AttachDevice(&manager); |
423 | 420 |
424 base::scoped_nsobject<ImageCaptureDevice> camera( | 421 base::scoped_nsobject<ImageCaptureDevice> camera( |
425 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 422 [ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
426 | 423 |
427 [camera setListener:listener_.AsWeakPtr()]; | 424 [camera setListener:listener_.AsWeakPtr()]; |
428 [camera open]; | 425 [camera open]; |
429 | 426 |
430 std::string kTestFileName("pic1"); | 427 std::string kTestFileName("pic1"); |
431 base::scoped_nsobject<MockICCameraFile> picture1( | 428 base::scoped_nsobject<MockICCameraFile> picture1( |
432 [[MockICCameraFile alloc] init:base::SysUTF8ToNSString(kTestFileName)]); | 429 [[MockICCameraFile alloc] init:base::SysUTF8ToNSString(kTestFileName)]); |
433 [picture1 setParent:base::SysUTF8ToNSString("dir")]; | 430 [picture1 setParent:base::SysUTF8ToNSString("dir")]; |
434 [device addMediaFile:picture1]; | 431 [device addMediaFile:picture1]; |
435 [camera cameraDevice:nil didAddItem:picture1]; | 432 [camera cameraDevice:nil didAddItem:picture1]; |
436 | 433 |
437 base::ScopedTempDir temp_dir; | 434 base::ScopedTempDir temp_dir; |
438 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 435 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
439 base::FilePath temp_file = temp_dir.path().Append("tempfile"); | 436 base::FilePath temp_file = temp_dir.path().Append("tempfile"); |
440 | 437 |
441 [camera downloadFile:("dir/" + kTestFileName) localPath:temp_file]; | 438 [camera downloadFile:("dir/" + kTestFileName) localPath:temp_file]; |
442 message_loop_.RunUntilIdle(); | 439 message_loop_.RunUntilIdle(); |
443 | 440 |
444 char file_contents[5]; | 441 char file_contents[5]; |
445 ASSERT_EQ(4, file_util::ReadFile(temp_file, file_contents, | 442 ASSERT_EQ(4, file_util::ReadFile(temp_file, file_contents, |
446 strlen(kTestFileContents))); | 443 strlen(kTestFileContents))); |
447 EXPECT_EQ(kTestFileContents, | 444 EXPECT_EQ(kTestFileContents, |
448 std::string(file_contents, strlen(kTestFileContents))); | 445 std::string(file_contents, strlen(kTestFileContents))); |
449 | 446 |
450 [camera didRemoveDevice:device]; | 447 [camera didRemoveDevice:device]; |
451 } | 448 } |
OLD | NEW |