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::Create(); | |
vandebo (ex-Chrome)
2013/07/10 16:57:45
Leak?
Greg Billock
2013/07/10 21:11:16
no
| |
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. | |
vandebo (ex-Chrome)
2013/07/10 16:57:45
Not Weak ptr
Greg Billock
2013/07/10 21:11:16
Done.
| |
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 |