| 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" |
| 11 #include "base/files/scoped_temp_dir.h" | 11 #include "base/files/scoped_temp_dir.h" |
| 12 #include "base/mac/foundation_util.h" | 12 #include "base/mac/foundation_util.h" |
| 13 #include "base/memory/weak_ptr.h" | 13 #include "base/memory/weak_ptr.h" |
| 14 #include "base/message_loop.h" | 14 #include "base/message_loop.h" |
| 15 #include "chrome/browser/storage_monitor/image_capture_device.h" | 15 #include "chrome/browser/storage_monitor/image_capture_device.h" |
| 16 #include "chrome/browser/storage_monitor/image_capture_device_manager.h" | 16 #include "chrome/browser/storage_monitor/image_capture_device_manager.h" |
| 17 #include "chrome/browser/storage_monitor/test_storage_monitor.h" | 17 #include "chrome/browser/storage_monitor/test_storage_monitor.h" |
| 18 #include "chrome/test/base/testing_browser_process.h" |
| 18 #include "content/public/test/test_browser_thread.h" | 19 #include "content/public/test/test_browser_thread.h" |
| 19 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
| 20 | 21 |
| 21 #if !defined(MAC_OS_X_VERSION_10_7) || \ | 22 #if !defined(MAC_OS_X_VERSION_10_7) || \ |
| 22 MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 | 23 MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 |
| 23 | 24 |
| 24 @interface NSObject (ICCameraDeviceDelegateLionAPI) | 25 @interface NSObject (ICCameraDeviceDelegateLionAPI) |
| 25 - (void)deviceDidBecomeReadyWithCompleteContentCatalog:(ICDevice*)device; | 26 - (void)deviceDidBecomeReadyWithCompleteContentCatalog:(ICDevice*)device; |
| 26 - (void)didDownloadFile:(ICCameraFile*)file | 27 - (void)didDownloadFile:(ICCameraFile*)file |
| 27 error:(NSError*)error | 28 error:(NSError*)error |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 bool completed_; | 251 bool completed_; |
| 251 bool removed_; | 252 bool removed_; |
| 252 base::PlatformFileError last_error_; | 253 base::PlatformFileError last_error_; |
| 253 }; | 254 }; |
| 254 | 255 |
| 255 class ImageCaptureDeviceManagerTest : public testing::Test { | 256 class ImageCaptureDeviceManagerTest : public testing::Test { |
| 256 public: | 257 public: |
| 257 virtual void SetUp() OVERRIDE { | 258 virtual void SetUp() OVERRIDE { |
| 258 ui_thread_.reset(new content::TestBrowserThread( | 259 ui_thread_.reset(new content::TestBrowserThread( |
| 259 content::BrowserThread::UI, &message_loop_)); | 260 content::BrowserThread::UI, &message_loop_)); |
| 261 |
| 262 monitor_ = chrome::test::TestStorageMonitor::CreateAndInstall(); |
| 260 } | 263 } |
| 261 | 264 |
| 262 MockICCameraDevice* AttachDevice( | 265 MockICCameraDevice* AttachDevice( |
| 263 chrome::ImageCaptureDeviceManager* manager) { | 266 chrome::ImageCaptureDeviceManager* manager) { |
| 264 // Ownership will be passed to the device browser delegate. | 267 // Ownership will be passed to the device browser delegate. |
| 265 base::scoped_nsobject<MockICCameraDevice> device( | 268 base::scoped_nsobject<MockICCameraDevice> device( |
| 266 [[MockICCameraDevice alloc] init]); | 269 [[MockICCameraDevice alloc] init]); |
| 267 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); | 270 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); |
| 268 [delegate deviceBrowser:nil didAddDevice:device moreComing:NO]; | 271 [delegate deviceBrowser:nil didAddDevice:device moreComing:NO]; |
| 269 return device.autorelease(); | 272 return device.autorelease(); |
| 270 } | 273 } |
| 271 | 274 |
| 272 void DetachDevice(chrome::ImageCaptureDeviceManager* manager, | 275 void DetachDevice(chrome::ImageCaptureDeviceManager* manager, |
| 273 ICCameraDevice* device) { | 276 ICCameraDevice* device) { |
| 274 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); | 277 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); |
| 275 [delegate deviceBrowser:nil didRemoveDevice:device moreGoing:NO]; | 278 [delegate deviceBrowser:nil didRemoveDevice:device moreGoing:NO]; |
| 276 } | 279 } |
| 277 | 280 |
| 278 protected: | 281 protected: |
| 279 base::MessageLoopForUI message_loop_; | 282 base::MessageLoopForUI message_loop_; |
| 280 scoped_ptr<content::TestBrowserThread> ui_thread_; | 283 scoped_ptr<content::TestBrowserThread> ui_thread_; |
| 281 chrome::test::TestStorageMonitor monitor_; | 284 |
| 285 chrome::test::TestStorageMonitor* monitor_; |
| 282 TestCameraListener listener_; | 286 TestCameraListener listener_; |
| 283 }; | 287 }; |
| 284 | 288 |
| 285 TEST_F(ImageCaptureDeviceManagerTest, TestAttachDetach) { | 289 TEST_F(ImageCaptureDeviceManagerTest, TestAttachDetach) { |
| 286 chrome::ImageCaptureDeviceManager manager; | 290 chrome::ImageCaptureDeviceManager manager; |
| 287 manager.SetNotifications(monitor_.receiver()); | 291 manager.SetNotifications(monitor_->receiver()); |
| 288 ICCameraDevice* device = AttachDevice(&manager); | 292 ICCameraDevice* device = AttachDevice(&manager); |
| 289 std::vector<chrome::StorageInfo> devices = | 293 std::vector<chrome::StorageInfo> devices = |
| 290 monitor_.GetAllAvailableStorages(); | 294 monitor_->GetAllAvailableStorages(); |
| 291 | 295 |
| 292 ASSERT_EQ(1U, devices.size()); | 296 ASSERT_EQ(1U, devices.size()); |
| 293 EXPECT_EQ(std::string("ic:") + kDeviceId, devices[0].device_id()); | 297 EXPECT_EQ(std::string("ic:") + kDeviceId, devices[0].device_id()); |
| 294 | 298 |
| 295 DetachDevice(&manager, device); | 299 DetachDevice(&manager, device); |
| 296 devices = monitor_.GetAllAvailableStorages(); | 300 devices = monitor_->GetAllAvailableStorages(); |
| 297 ASSERT_EQ(0U, devices.size()); | 301 ASSERT_EQ(0U, devices.size()); |
| 298 }; | 302 }; |
| 299 | 303 |
| 300 TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) { | 304 TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) { |
| 301 chrome::ImageCaptureDeviceManager manager; | 305 chrome::ImageCaptureDeviceManager manager; |
| 302 manager.SetNotifications(monitor_.receiver()); | 306 manager.SetNotifications(monitor_->receiver()); |
| 303 ICCameraDevice* device = AttachDevice(&manager); | 307 ICCameraDevice* device = AttachDevice(&manager); |
| 304 | 308 |
| 305 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( | 309 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( |
| 306 "nonexistent")); | 310 "nonexistent")); |
| 307 | 311 |
| 308 base::scoped_nsobject<ImageCaptureDevice> camera( | 312 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 309 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 313 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 310 | 314 |
| 311 [camera setListener:listener_.AsWeakPtr()]; | 315 [camera setListener:listener_.AsWeakPtr()]; |
| 312 [camera open]; | 316 [camera open]; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 328 EXPECT_TRUE(listener_.completed()); | 332 EXPECT_TRUE(listener_.completed()); |
| 329 | 333 |
| 330 [camera close]; | 334 [camera close]; |
| 331 DetachDevice(&manager, device); | 335 DetachDevice(&manager, device); |
| 332 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( | 336 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( |
| 333 kDeviceId)); | 337 kDeviceId)); |
| 334 } | 338 } |
| 335 | 339 |
| 336 TEST_F(ImageCaptureDeviceManagerTest, RemoveCamera) { | 340 TEST_F(ImageCaptureDeviceManagerTest, RemoveCamera) { |
| 337 chrome::ImageCaptureDeviceManager manager; | 341 chrome::ImageCaptureDeviceManager manager; |
| 338 manager.SetNotifications(monitor_.receiver()); | 342 manager.SetNotifications(monitor_->receiver()); |
| 339 ICCameraDevice* device = AttachDevice(&manager); | 343 ICCameraDevice* device = AttachDevice(&manager); |
| 340 | 344 |
| 341 base::scoped_nsobject<ImageCaptureDevice> camera( | 345 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 342 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 346 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 343 | 347 |
| 344 [camera setListener:listener_.AsWeakPtr()]; | 348 [camera setListener:listener_.AsWeakPtr()]; |
| 345 [camera open]; | 349 [camera open]; |
| 346 | 350 |
| 347 [camera didRemoveDevice:device]; | 351 [camera didRemoveDevice:device]; |
| 348 EXPECT_TRUE(listener_.removed()); | 352 EXPECT_TRUE(listener_.removed()); |
| 349 } | 353 } |
| 350 | 354 |
| 351 TEST_F(ImageCaptureDeviceManagerTest, DownloadFile) { | 355 TEST_F(ImageCaptureDeviceManagerTest, DownloadFile) { |
| 352 scoped_ptr<content::TestBrowserThread> file_thread( | 356 scoped_ptr<content::TestBrowserThread> file_thread( |
| 353 new content::TestBrowserThread( | 357 new content::TestBrowserThread( |
| 354 content::BrowserThread::FILE, &message_loop_)); | 358 content::BrowserThread::FILE, &message_loop_)); |
| 355 | 359 |
| 356 chrome::ImageCaptureDeviceManager manager; | 360 chrome::ImageCaptureDeviceManager manager; |
| 357 manager.SetNotifications(monitor_.receiver()); | 361 manager.SetNotifications(monitor_->receiver()); |
| 358 MockICCameraDevice* device = AttachDevice(&manager); | 362 MockICCameraDevice* device = AttachDevice(&manager); |
| 359 | 363 |
| 360 base::scoped_nsobject<ImageCaptureDevice> camera( | 364 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 361 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 365 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 362 | 366 |
| 363 [camera setListener:listener_.AsWeakPtr()]; | 367 [camera setListener:listener_.AsWeakPtr()]; |
| 364 [camera open]; | 368 [camera open]; |
| 365 | 369 |
| 366 std::string kTestFileName("pic1"); | 370 std::string kTestFileName("pic1"); |
| 367 | 371 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 | 407 |
| 404 [camera didRemoveDevice:device]; | 408 [camera didRemoveDevice:device]; |
| 405 } | 409 } |
| 406 | 410 |
| 407 TEST_F(ImageCaptureDeviceManagerTest, TestSubdirectories) { | 411 TEST_F(ImageCaptureDeviceManagerTest, TestSubdirectories) { |
| 408 scoped_ptr<content::TestBrowserThread> file_thread( | 412 scoped_ptr<content::TestBrowserThread> file_thread( |
| 409 new content::TestBrowserThread( | 413 new content::TestBrowserThread( |
| 410 content::BrowserThread::FILE, &message_loop_)); | 414 content::BrowserThread::FILE, &message_loop_)); |
| 411 | 415 |
| 412 chrome::ImageCaptureDeviceManager manager; | 416 chrome::ImageCaptureDeviceManager manager; |
| 413 manager.SetNotifications(monitor_.receiver()); | 417 manager.SetNotifications(monitor_->receiver()); |
| 414 MockICCameraDevice* device = AttachDevice(&manager); | 418 MockICCameraDevice* device = AttachDevice(&manager); |
| 415 | 419 |
| 416 base::scoped_nsobject<ImageCaptureDevice> camera( | 420 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 417 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 421 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 418 | 422 |
| 419 [camera setListener:listener_.AsWeakPtr()]; | 423 [camera setListener:listener_.AsWeakPtr()]; |
| 420 [camera open]; | 424 [camera open]; |
| 421 | 425 |
| 422 std::string kTestFileName("pic1"); | 426 std::string kTestFileName("pic1"); |
| 423 base::scoped_nsobject<MockICCameraFile> picture1( | 427 base::scoped_nsobject<MockICCameraFile> picture1( |
| (...skipping 10 matching lines...) Expand all Loading... |
| 434 message_loop_.RunUntilIdle(); | 438 message_loop_.RunUntilIdle(); |
| 435 | 439 |
| 436 char file_contents[5]; | 440 char file_contents[5]; |
| 437 ASSERT_EQ(4, file_util::ReadFile(temp_file, file_contents, | 441 ASSERT_EQ(4, file_util::ReadFile(temp_file, file_contents, |
| 438 strlen(kTestFileContents))); | 442 strlen(kTestFileContents))); |
| 439 EXPECT_EQ(kTestFileContents, | 443 EXPECT_EQ(kTestFileContents, |
| 440 std::string(file_contents, strlen(kTestFileContents))); | 444 std::string(file_contents, strlen(kTestFileContents))); |
| 441 | 445 |
| 442 [camera didRemoveDevice:device]; | 446 [camera didRemoveDevice:device]; |
| 443 } | 447 } |
| OLD | NEW |