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 |