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 |