| 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_ = new chrome::test::TestStorageMonitor::Create(); |
| 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 // Weak ptr to storage monitor owned by browser process. |
| 286 chrome::test::TestStorageMonitor* monitor_; |
| 282 TestCameraListener listener_; | 287 TestCameraListener listener_; |
| 283 }; | 288 }; |
| 284 | 289 |
| 285 TEST_F(ImageCaptureDeviceManagerTest, TestAttachDetach) { | 290 TEST_F(ImageCaptureDeviceManagerTest, TestAttachDetach) { |
| 286 chrome::ImageCaptureDeviceManager manager; | 291 chrome::ImageCaptureDeviceManager manager; |
| 287 manager.SetNotifications(monitor_.receiver()); | 292 manager.SetNotifications(monitor_->receiver()); |
| 288 ICCameraDevice* device = AttachDevice(&manager); | 293 ICCameraDevice* device = AttachDevice(&manager); |
| 289 std::vector<chrome::StorageInfo> devices = | 294 std::vector<chrome::StorageInfo> devices = |
| 290 monitor_.GetAllAvailableStorages(); | 295 monitor_->GetAllAvailableStorages(); |
| 291 | 296 |
| 292 ASSERT_EQ(1U, devices.size()); | 297 ASSERT_EQ(1U, devices.size()); |
| 293 EXPECT_EQ(std::string("ic:") + kDeviceId, devices[0].device_id()); | 298 EXPECT_EQ(std::string("ic:") + kDeviceId, devices[0].device_id()); |
| 294 | 299 |
| 295 DetachDevice(&manager, device); | 300 DetachDevice(&manager, device); |
| 296 devices = monitor_.GetAllAvailableStorages(); | 301 devices = monitor_->GetAllAvailableStorages(); |
| 297 ASSERT_EQ(0U, devices.size()); | 302 ASSERT_EQ(0U, devices.size()); |
| 298 }; | 303 }; |
| 299 | 304 |
| 300 TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) { | 305 TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) { |
| 301 chrome::ImageCaptureDeviceManager manager; | 306 chrome::ImageCaptureDeviceManager manager; |
| 302 manager.SetNotifications(monitor_.receiver()); | 307 manager.SetNotifications(monitor_->receiver()); |
| 303 ICCameraDevice* device = AttachDevice(&manager); | 308 ICCameraDevice* device = AttachDevice(&manager); |
| 304 | 309 |
| 305 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( | 310 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( |
| 306 "nonexistent")); | 311 "nonexistent")); |
| 307 | 312 |
| 308 base::scoped_nsobject<ImageCaptureDevice> camera( | 313 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 309 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 314 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 310 | 315 |
| 311 [camera setListener:listener_.AsWeakPtr()]; | 316 [camera setListener:listener_.AsWeakPtr()]; |
| 312 [camera open]; | 317 [camera open]; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 328 EXPECT_TRUE(listener_.completed()); | 333 EXPECT_TRUE(listener_.completed()); |
| 329 | 334 |
| 330 [camera close]; | 335 [camera close]; |
| 331 DetachDevice(&manager, device); | 336 DetachDevice(&manager, device); |
| 332 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( | 337 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( |
| 333 kDeviceId)); | 338 kDeviceId)); |
| 334 } | 339 } |
| 335 | 340 |
| 336 TEST_F(ImageCaptureDeviceManagerTest, RemoveCamera) { | 341 TEST_F(ImageCaptureDeviceManagerTest, RemoveCamera) { |
| 337 chrome::ImageCaptureDeviceManager manager; | 342 chrome::ImageCaptureDeviceManager manager; |
| 338 manager.SetNotifications(monitor_.receiver()); | 343 manager.SetNotifications(monitor_->receiver()); |
| 339 ICCameraDevice* device = AttachDevice(&manager); | 344 ICCameraDevice* device = AttachDevice(&manager); |
| 340 | 345 |
| 341 base::scoped_nsobject<ImageCaptureDevice> camera( | 346 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 342 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 347 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 343 | 348 |
| 344 [camera setListener:listener_.AsWeakPtr()]; | 349 [camera setListener:listener_.AsWeakPtr()]; |
| 345 [camera open]; | 350 [camera open]; |
| 346 | 351 |
| 347 [camera didRemoveDevice:device]; | 352 [camera didRemoveDevice:device]; |
| 348 EXPECT_TRUE(listener_.removed()); | 353 EXPECT_TRUE(listener_.removed()); |
| 349 } | 354 } |
| 350 | 355 |
| 351 TEST_F(ImageCaptureDeviceManagerTest, DownloadFile) { | 356 TEST_F(ImageCaptureDeviceManagerTest, DownloadFile) { |
| 352 scoped_ptr<content::TestBrowserThread> file_thread( | 357 scoped_ptr<content::TestBrowserThread> file_thread( |
| 353 new content::TestBrowserThread( | 358 new content::TestBrowserThread( |
| 354 content::BrowserThread::FILE, &message_loop_)); | 359 content::BrowserThread::FILE, &message_loop_)); |
| 355 | 360 |
| 356 chrome::ImageCaptureDeviceManager manager; | 361 chrome::ImageCaptureDeviceManager manager; |
| 357 manager.SetNotifications(monitor_.receiver()); | 362 manager.SetNotifications(monitor_->receiver()); |
| 358 MockICCameraDevice* device = AttachDevice(&manager); | 363 MockICCameraDevice* device = AttachDevice(&manager); |
| 359 | 364 |
| 360 base::scoped_nsobject<ImageCaptureDevice> camera( | 365 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 361 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 366 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 362 | 367 |
| 363 [camera setListener:listener_.AsWeakPtr()]; | 368 [camera setListener:listener_.AsWeakPtr()]; |
| 364 [camera open]; | 369 [camera open]; |
| 365 | 370 |
| 366 std::string kTestFileName("pic1"); | 371 std::string kTestFileName("pic1"); |
| 367 | 372 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 | 408 |
| 404 [camera didRemoveDevice:device]; | 409 [camera didRemoveDevice:device]; |
| 405 } | 410 } |
| 406 | 411 |
| 407 TEST_F(ImageCaptureDeviceManagerTest, TestSubdirectories) { | 412 TEST_F(ImageCaptureDeviceManagerTest, TestSubdirectories) { |
| 408 scoped_ptr<content::TestBrowserThread> file_thread( | 413 scoped_ptr<content::TestBrowserThread> file_thread( |
| 409 new content::TestBrowserThread( | 414 new content::TestBrowserThread( |
| 410 content::BrowserThread::FILE, &message_loop_)); | 415 content::BrowserThread::FILE, &message_loop_)); |
| 411 | 416 |
| 412 chrome::ImageCaptureDeviceManager manager; | 417 chrome::ImageCaptureDeviceManager manager; |
| 413 manager.SetNotifications(monitor_.receiver()); | 418 manager.SetNotifications(monitor_->receiver()); |
| 414 MockICCameraDevice* device = AttachDevice(&manager); | 419 MockICCameraDevice* device = AttachDevice(&manager); |
| 415 | 420 |
| 416 base::scoped_nsobject<ImageCaptureDevice> camera( | 421 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 417 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); | 422 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 418 | 423 |
| 419 [camera setListener:listener_.AsWeakPtr()]; | 424 [camera setListener:listener_.AsWeakPtr()]; |
| 420 [camera open]; | 425 [camera open]; |
| 421 | 426 |
| 422 std::string kTestFileName("pic1"); | 427 std::string kTestFileName("pic1"); |
| 423 base::scoped_nsobject<MockICCameraFile> picture1( | 428 base::scoped_nsobject<MockICCameraFile> picture1( |
| (...skipping 10 matching lines...) Expand all Loading... |
| 434 message_loop_.RunUntilIdle(); | 439 message_loop_.RunUntilIdle(); |
| 435 | 440 |
| 436 char file_contents[5]; | 441 char file_contents[5]; |
| 437 ASSERT_EQ(4, file_util::ReadFile(temp_file, file_contents, | 442 ASSERT_EQ(4, file_util::ReadFile(temp_file, file_contents, |
| 438 strlen(kTestFileContents))); | 443 strlen(kTestFileContents))); |
| 439 EXPECT_EQ(kTestFileContents, | 444 EXPECT_EQ(kTestFileContents, |
| 440 std::string(file_contents, strlen(kTestFileContents))); | 445 std::string(file_contents, strlen(kTestFileContents))); |
| 441 | 446 |
| 442 [camera didRemoveDevice:device]; | 447 [camera didRemoveDevice:device]; |
| 443 } | 448 } |
| OLD | NEW |