| 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 27 matching lines...) Expand all Loading... |
| 38 | 38 |
| 39 } // namespace | 39 } // namespace |
| 40 | 40 |
| 41 // Private ICCameraDevice method needed to properly initialize the object. | 41 // Private ICCameraDevice method needed to properly initialize the object. |
| 42 @interface NSObject (PrivateAPIICCameraDevice) | 42 @interface NSObject (PrivateAPIICCameraDevice) |
| 43 - (id)initWithDictionary:(id)properties; | 43 - (id)initWithDictionary:(id)properties; |
| 44 @end | 44 @end |
| 45 | 45 |
| 46 @interface MockICCameraDevice : ICCameraDevice { | 46 @interface MockICCameraDevice : ICCameraDevice { |
| 47 @private | 47 @private |
| 48 scoped_nsobject<NSMutableArray> allMediaFiles_; | 48 base::scoped_nsobject<NSMutableArray> allMediaFiles_; |
| 49 } | 49 } |
| 50 | 50 |
| 51 - (void)addMediaFile:(ICCameraFile*)file; | 51 - (void)addMediaFile:(ICCameraFile*)file; |
| 52 | 52 |
| 53 @end | 53 @end |
| 54 | 54 |
| 55 @implementation MockICCameraDevice | 55 @implementation MockICCameraDevice |
| 56 | 56 |
| 57 - (id)init { | 57 - (id)init { |
| 58 if ((self = [super initWithDictionary:[NSDictionary dictionary]])) { | 58 if ((self = [super initWithDictionary:[NSDictionary dictionary]])) { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 didDownloadFile:file | 122 didDownloadFile:file |
| 123 error:nil | 123 error:nil |
| 124 options:returnOptions | 124 options:returnOptions |
| 125 contextInfo:contextInfo]; | 125 contextInfo:contextInfo]; |
| 126 } | 126 } |
| 127 | 127 |
| 128 @end | 128 @end |
| 129 | 129 |
| 130 @interface MockICCameraFolder : ICCameraFolder { | 130 @interface MockICCameraFolder : ICCameraFolder { |
| 131 @private | 131 @private |
| 132 scoped_nsobject<NSString> name_; | 132 base::scoped_nsobject<NSString> name_; |
| 133 } | 133 } |
| 134 | 134 |
| 135 - (id)initWithName:(NSString*)name; | 135 - (id)initWithName:(NSString*)name; |
| 136 | 136 |
| 137 @end | 137 @end |
| 138 | 138 |
| 139 @implementation MockICCameraFolder | 139 @implementation MockICCameraFolder |
| 140 | 140 |
| 141 - (id)initWithName:(NSString*)name { | 141 - (id)initWithName:(NSString*)name { |
| 142 if ((self = [super init])) { | 142 if ((self = [super init])) { |
| 143 name_.reset([name retain]); | 143 name_.reset([name retain]); |
| 144 } | 144 } |
| 145 return self; | 145 return self; |
| 146 } | 146 } |
| 147 | 147 |
| 148 - (NSString*)name { | 148 - (NSString*)name { |
| 149 return name_; | 149 return name_; |
| 150 } | 150 } |
| 151 | 151 |
| 152 - (ICCameraFolder*)parentFolder { | 152 - (ICCameraFolder*)parentFolder { |
| 153 return nil; | 153 return nil; |
| 154 } | 154 } |
| 155 | 155 |
| 156 @end | 156 @end |
| 157 | 157 |
| 158 @interface MockICCameraFile : ICCameraFile { | 158 @interface MockICCameraFile : ICCameraFile { |
| 159 @private | 159 @private |
| 160 scoped_nsobject<NSString> name_; | 160 base::scoped_nsobject<NSString> name_; |
| 161 scoped_nsobject<NSDate> date_; | 161 base::scoped_nsobject<NSDate> date_; |
| 162 scoped_nsobject<MockICCameraFolder> parent_; | 162 base::scoped_nsobject<MockICCameraFolder> parent_; |
| 163 } | 163 } |
| 164 | 164 |
| 165 - (id)init:(NSString*)name; | 165 - (id)init:(NSString*)name; |
| 166 - (void)setParent:(NSString*)parent; | 166 - (void)setParent:(NSString*)parent; |
| 167 | 167 |
| 168 @end | 168 @end |
| 169 | 169 |
| 170 @implementation MockICCameraFile | 170 @implementation MockICCameraFile |
| 171 | 171 |
| 172 - (id)init:(NSString*)name { | 172 - (id)init:(NSString*)name { |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 class ImageCaptureDeviceManagerTest : public testing::Test { | 255 class ImageCaptureDeviceManagerTest : public testing::Test { |
| 256 public: | 256 public: |
| 257 virtual void SetUp() OVERRIDE { | 257 virtual void SetUp() OVERRIDE { |
| 258 ui_thread_.reset(new content::TestBrowserThread( | 258 ui_thread_.reset(new content::TestBrowserThread( |
| 259 content::BrowserThread::UI, &message_loop_)); | 259 content::BrowserThread::UI, &message_loop_)); |
| 260 } | 260 } |
| 261 | 261 |
| 262 MockICCameraDevice* AttachDevice( | 262 MockICCameraDevice* AttachDevice( |
| 263 chrome::ImageCaptureDeviceManager* manager) { | 263 chrome::ImageCaptureDeviceManager* manager) { |
| 264 // Ownership will be passed to the device browser delegate. | 264 // Ownership will be passed to the device browser delegate. |
| 265 scoped_nsobject<MockICCameraDevice> device( | 265 base::scoped_nsobject<MockICCameraDevice> device( |
| 266 [[MockICCameraDevice alloc] init]); | 266 [[MockICCameraDevice alloc] init]); |
| 267 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); | 267 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); |
| 268 [delegate deviceBrowser:nil didAddDevice:device moreComing:NO]; | 268 [delegate deviceBrowser:nil didAddDevice:device moreComing:NO]; |
| 269 return device.autorelease(); | 269 return device.autorelease(); |
| 270 } | 270 } |
| 271 | 271 |
| 272 void DetachDevice(chrome::ImageCaptureDeviceManager* manager, | 272 void DetachDevice(chrome::ImageCaptureDeviceManager* manager, |
| 273 ICCameraDevice* device) { | 273 ICCameraDevice* device) { |
| 274 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); | 274 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); |
| 275 [delegate deviceBrowser:nil didRemoveDevice:device moreGoing:NO]; | 275 [delegate deviceBrowser:nil didRemoveDevice:device moreGoing:NO]; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 298 }; | 298 }; |
| 299 | 299 |
| 300 TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) { | 300 TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) { |
| 301 chrome::ImageCaptureDeviceManager manager; | 301 chrome::ImageCaptureDeviceManager manager; |
| 302 manager.SetNotifications(monitor_.receiver()); | 302 manager.SetNotifications(monitor_.receiver()); |
| 303 ICCameraDevice* device = AttachDevice(&manager); | 303 ICCameraDevice* device = AttachDevice(&manager); |
| 304 | 304 |
| 305 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( | 305 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( |
| 306 "nonexistent")); | 306 "nonexistent")); |
| 307 | 307 |
| 308 scoped_nsobject<ImageCaptureDevice> camera( | 308 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 309 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) | 309 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 310 retain]); | |
| 311 | 310 |
| 312 [camera setListener:listener_.AsWeakPtr()]; | 311 [camera setListener:listener_.AsWeakPtr()]; |
| 313 [camera open]; | 312 [camera open]; |
| 314 | 313 |
| 315 scoped_nsobject<MockICCameraFile> picture1( | 314 base::scoped_nsobject<MockICCameraFile> picture1( |
| 316 [[MockICCameraFile alloc] init:@"pic1"]); | 315 [[MockICCameraFile alloc] init:@"pic1"]); |
| 317 [camera cameraDevice:nil didAddItem:picture1]; | 316 [camera cameraDevice:nil didAddItem:picture1]; |
| 318 scoped_nsobject<MockICCameraFile> picture2( | 317 base::scoped_nsobject<MockICCameraFile> picture2( |
| 319 [[MockICCameraFile alloc] init:@"pic2"]); | 318 [[MockICCameraFile alloc] init:@"pic2"]); |
| 320 [camera cameraDevice:nil didAddItem:picture2]; | 319 [camera cameraDevice:nil didAddItem:picture2]; |
| 321 ASSERT_EQ(2U, listener_.items().size()); | 320 ASSERT_EQ(2U, listener_.items().size()); |
| 322 EXPECT_EQ("pic1", listener_.items()[0]); | 321 EXPECT_EQ("pic1", listener_.items()[0]); |
| 323 EXPECT_EQ("pic2", listener_.items()[1]); | 322 EXPECT_EQ("pic2", listener_.items()[1]); |
| 324 EXPECT_FALSE(listener_.completed()); | 323 EXPECT_FALSE(listener_.completed()); |
| 325 | 324 |
| 326 [camera deviceDidBecomeReadyWithCompleteContentCatalog:nil]; | 325 [camera deviceDidBecomeReadyWithCompleteContentCatalog:nil]; |
| 327 | 326 |
| 328 ASSERT_EQ(2U, listener_.items().size()); | 327 ASSERT_EQ(2U, listener_.items().size()); |
| 329 EXPECT_TRUE(listener_.completed()); | 328 EXPECT_TRUE(listener_.completed()); |
| 330 | 329 |
| 331 [camera close]; | 330 [camera close]; |
| 332 DetachDevice(&manager, device); | 331 DetachDevice(&manager, device); |
| 333 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( | 332 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( |
| 334 kDeviceId)); | 333 kDeviceId)); |
| 335 } | 334 } |
| 336 | 335 |
| 337 TEST_F(ImageCaptureDeviceManagerTest, RemoveCamera) { | 336 TEST_F(ImageCaptureDeviceManagerTest, RemoveCamera) { |
| 338 chrome::ImageCaptureDeviceManager manager; | 337 chrome::ImageCaptureDeviceManager manager; |
| 339 manager.SetNotifications(monitor_.receiver()); | 338 manager.SetNotifications(monitor_.receiver()); |
| 340 ICCameraDevice* device = AttachDevice(&manager); | 339 ICCameraDevice* device = AttachDevice(&manager); |
| 341 | 340 |
| 342 scoped_nsobject<ImageCaptureDevice> camera( | 341 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 343 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) | 342 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 344 retain]); | |
| 345 | 343 |
| 346 [camera setListener:listener_.AsWeakPtr()]; | 344 [camera setListener:listener_.AsWeakPtr()]; |
| 347 [camera open]; | 345 [camera open]; |
| 348 | 346 |
| 349 [camera didRemoveDevice:device]; | 347 [camera didRemoveDevice:device]; |
| 350 EXPECT_TRUE(listener_.removed()); | 348 EXPECT_TRUE(listener_.removed()); |
| 351 } | 349 } |
| 352 | 350 |
| 353 TEST_F(ImageCaptureDeviceManagerTest, DownloadFile) { | 351 TEST_F(ImageCaptureDeviceManagerTest, DownloadFile) { |
| 354 scoped_ptr<content::TestBrowserThread> file_thread( | 352 scoped_ptr<content::TestBrowserThread> file_thread( |
| 355 new content::TestBrowserThread( | 353 new content::TestBrowserThread( |
| 356 content::BrowserThread::FILE, &message_loop_)); | 354 content::BrowserThread::FILE, &message_loop_)); |
| 357 | 355 |
| 358 chrome::ImageCaptureDeviceManager manager; | 356 chrome::ImageCaptureDeviceManager manager; |
| 359 manager.SetNotifications(monitor_.receiver()); | 357 manager.SetNotifications(monitor_.receiver()); |
| 360 MockICCameraDevice* device = AttachDevice(&manager); | 358 MockICCameraDevice* device = AttachDevice(&manager); |
| 361 | 359 |
| 362 scoped_nsobject<ImageCaptureDevice> camera( | 360 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 363 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) | 361 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 364 retain]); | |
| 365 | 362 |
| 366 [camera setListener:listener_.AsWeakPtr()]; | 363 [camera setListener:listener_.AsWeakPtr()]; |
| 367 [camera open]; | 364 [camera open]; |
| 368 | 365 |
| 369 std::string kTestFileName("pic1"); | 366 std::string kTestFileName("pic1"); |
| 370 | 367 |
| 371 scoped_nsobject<MockICCameraFile> picture1( | 368 base::scoped_nsobject<MockICCameraFile> picture1( |
| 372 [[MockICCameraFile alloc] | 369 [[MockICCameraFile alloc] init:base::SysUTF8ToNSString(kTestFileName)]); |
| 373 init:base::SysUTF8ToNSString(kTestFileName)]); | |
| 374 [device addMediaFile:picture1]; | 370 [device addMediaFile:picture1]; |
| 375 [camera cameraDevice:nil didAddItem:picture1]; | 371 [camera cameraDevice:nil didAddItem:picture1]; |
| 376 | 372 |
| 377 base::ScopedTempDir temp_dir; | 373 base::ScopedTempDir temp_dir; |
| 378 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 374 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 379 | 375 |
| 380 EXPECT_EQ(0U, listener_.downloads().size()); | 376 EXPECT_EQ(0U, listener_.downloads().size()); |
| 381 | 377 |
| 382 // Test that a nonexistent file we ask to be downloaded will | 378 // Test that a nonexistent file we ask to be downloaded will |
| 383 // return us a not-found error. | 379 // return us a not-found error. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 410 | 406 |
| 411 TEST_F(ImageCaptureDeviceManagerTest, TestSubdirectories) { | 407 TEST_F(ImageCaptureDeviceManagerTest, TestSubdirectories) { |
| 412 scoped_ptr<content::TestBrowserThread> file_thread( | 408 scoped_ptr<content::TestBrowserThread> file_thread( |
| 413 new content::TestBrowserThread( | 409 new content::TestBrowserThread( |
| 414 content::BrowserThread::FILE, &message_loop_)); | 410 content::BrowserThread::FILE, &message_loop_)); |
| 415 | 411 |
| 416 chrome::ImageCaptureDeviceManager manager; | 412 chrome::ImageCaptureDeviceManager manager; |
| 417 manager.SetNotifications(monitor_.receiver()); | 413 manager.SetNotifications(monitor_.receiver()); |
| 418 MockICCameraDevice* device = AttachDevice(&manager); | 414 MockICCameraDevice* device = AttachDevice(&manager); |
| 419 | 415 |
| 420 scoped_nsobject<ImageCaptureDevice> camera( | 416 base::scoped_nsobject<ImageCaptureDevice> camera( |
| 421 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) | 417 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) retain]); |
| 422 retain]); | |
| 423 | 418 |
| 424 [camera setListener:listener_.AsWeakPtr()]; | 419 [camera setListener:listener_.AsWeakPtr()]; |
| 425 [camera open]; | 420 [camera open]; |
| 426 | 421 |
| 427 std::string kTestFileName("pic1"); | 422 std::string kTestFileName("pic1"); |
| 428 scoped_nsobject<MockICCameraFile> picture1( | 423 base::scoped_nsobject<MockICCameraFile> picture1( |
| 429 [[MockICCameraFile alloc] | 424 [[MockICCameraFile alloc] init:base::SysUTF8ToNSString(kTestFileName)]); |
| 430 init:base::SysUTF8ToNSString(kTestFileName)]); | |
| 431 [picture1 setParent:base::SysUTF8ToNSString("dir")]; | 425 [picture1 setParent:base::SysUTF8ToNSString("dir")]; |
| 432 [device addMediaFile:picture1]; | 426 [device addMediaFile:picture1]; |
| 433 [camera cameraDevice:nil didAddItem:picture1]; | 427 [camera cameraDevice:nil didAddItem:picture1]; |
| 434 | 428 |
| 435 base::ScopedTempDir temp_dir; | 429 base::ScopedTempDir temp_dir; |
| 436 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 430 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 437 base::FilePath temp_file = temp_dir.path().Append("tempfile"); | 431 base::FilePath temp_file = temp_dir.path().Append("tempfile"); |
| 438 | 432 |
| 439 [camera downloadFile:("dir/" + kTestFileName) localPath:temp_file]; | 433 [camera downloadFile:("dir/" + kTestFileName) localPath:temp_file]; |
| 440 message_loop_.RunUntilIdle(); | 434 message_loop_.RunUntilIdle(); |
| 441 | 435 |
| 442 char file_contents[5]; | 436 char file_contents[5]; |
| 443 ASSERT_EQ(4, file_util::ReadFile(temp_file, file_contents, | 437 ASSERT_EQ(4, file_util::ReadFile(temp_file, file_contents, |
| 444 strlen(kTestFileContents))); | 438 strlen(kTestFileContents))); |
| 445 EXPECT_EQ(kTestFileContents, | 439 EXPECT_EQ(kTestFileContents, |
| 446 std::string(file_contents, strlen(kTestFileContents))); | 440 std::string(file_contents, strlen(kTestFileContents))); |
| 447 | 441 |
| 448 [camera didRemoveDevice:device]; | 442 [camera didRemoveDevice:device]; |
| 449 } | 443 } |
| OLD | NEW |