| 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_path.h" | 9 #include "base/file_path.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.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 "base/system_monitor/system_monitor.h" | |
| 16 #include "chrome/browser/system_monitor/image_capture_device.h" | 15 #include "chrome/browser/system_monitor/image_capture_device.h" |
| 17 #include "chrome/browser/system_monitor/image_capture_device_manager.h" | 16 #include "chrome/browser/system_monitor/image_capture_device_manager.h" |
| 17 #include "chrome/browser/system_monitor/test_removable_storage_notifications.h" |
| 18 #include "content/public/test/test_browser_thread.h" | 18 #include "content/public/test/test_browser_thread.h" |
| 19 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
| 20 | 20 |
| 21 #if !defined(MAC_OS_X_VERSION_10_7) || \ | 21 #if !defined(MAC_OS_X_VERSION_10_7) || \ |
| 22 MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 | 22 MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 |
| 23 | 23 |
| 24 @interface NSObject (ICCameraDeviceDelegateLionAPI) | 24 @interface NSObject (ICCameraDeviceDelegateLionAPI) |
| 25 - (void)deviceDidBecomeReadyWithCompleteContentCatalog:(ICDevice*)device; | 25 - (void)deviceDidBecomeReadyWithCompleteContentCatalog:(ICDevice*)device; |
| 26 - (void)didDownloadFile:(ICCameraFile*)file | 26 - (void)didDownloadFile:(ICCameraFile*)file |
| 27 error:(NSError*)error | 27 error:(NSError*)error |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 std::vector<std::string> items_; | 210 std::vector<std::string> items_; |
| 211 std::vector<std::string> downloads_; | 211 std::vector<std::string> downloads_; |
| 212 bool completed_; | 212 bool completed_; |
| 213 bool removed_; | 213 bool removed_; |
| 214 base::PlatformFileError last_error_; | 214 base::PlatformFileError last_error_; |
| 215 }; | 215 }; |
| 216 | 216 |
| 217 class ImageCaptureDeviceManagerTest : public testing::Test { | 217 class ImageCaptureDeviceManagerTest : public testing::Test { |
| 218 public: | 218 public: |
| 219 virtual void SetUp() OVERRIDE { | 219 virtual void SetUp() OVERRIDE { |
| 220 base::SystemMonitor::AllocateSystemIOPorts(); | |
| 221 system_monitor_.reset(new base::SystemMonitor()); | |
| 222 ui_thread_.reset(new content::TestBrowserThread( | 220 ui_thread_.reset(new content::TestBrowserThread( |
| 223 content::BrowserThread::UI, &message_loop_)); | 221 content::BrowserThread::UI, &message_loop_)); |
| 224 } | 222 } |
| 225 | 223 |
| 226 MockICCameraDevice* AttachDevice( | 224 MockICCameraDevice* AttachDevice( |
| 227 chrome::ImageCaptureDeviceManager* manager) { | 225 chrome::ImageCaptureDeviceManager* manager) { |
| 228 // Ownership will be passed to the device browser delegate. | 226 // Ownership will be passed to the device browser delegate. |
| 229 scoped_nsobject<MockICCameraDevice> device( | 227 scoped_nsobject<MockICCameraDevice> device( |
| 230 [[MockICCameraDevice alloc] init]); | 228 [[MockICCameraDevice alloc] init]); |
| 231 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); | 229 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); |
| 232 [delegate deviceBrowser:nil didAddDevice:device moreComing:NO]; | 230 [delegate deviceBrowser:nil didAddDevice:device moreComing:NO]; |
| 233 return device.autorelease(); | 231 return device.autorelease(); |
| 234 } | 232 } |
| 235 | 233 |
| 236 void DetachDevice(chrome::ImageCaptureDeviceManager* manager, | 234 void DetachDevice(chrome::ImageCaptureDeviceManager* manager, |
| 237 ICCameraDevice* device) { | 235 ICCameraDevice* device) { |
| 238 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); | 236 id<ICDeviceBrowserDelegate> delegate = manager->device_browser(); |
| 239 [delegate deviceBrowser:nil didRemoveDevice:device moreGoing:NO]; | 237 [delegate deviceBrowser:nil didRemoveDevice:device moreGoing:NO]; |
| 240 } | 238 } |
| 241 | 239 |
| 242 protected: | 240 protected: |
| 243 MessageLoopForUI message_loop_; | 241 MessageLoopForUI message_loop_; |
| 244 scoped_ptr<content::TestBrowserThread> ui_thread_; | 242 scoped_ptr<content::TestBrowserThread> ui_thread_; |
| 245 scoped_ptr<base::SystemMonitor> system_monitor_; | 243 chrome::test::TestRemovableStorageNotifications notifications_; |
| 246 TestCameraListener listener_; | 244 TestCameraListener listener_; |
| 247 }; | 245 }; |
| 248 | 246 |
| 249 TEST_F(ImageCaptureDeviceManagerTest, TestAttachDetach) { | 247 TEST_F(ImageCaptureDeviceManagerTest, TestAttachDetach) { |
| 250 chrome::ImageCaptureDeviceManager manager; | 248 chrome::ImageCaptureDeviceManager manager; |
| 249 manager.SetNotifications(notifications_.receiver()); |
| 251 ICCameraDevice* device = AttachDevice(&manager); | 250 ICCameraDevice* device = AttachDevice(&manager); |
| 252 std::vector<base::SystemMonitor::RemovableStorageInfo> devices = | 251 std::vector<chrome::RemovableStorageNotifications::StorageInfo> devices = |
| 253 system_monitor_->GetAttachedRemovableStorage(); | 252 notifications_.GetAttachedStorage(); |
| 254 | 253 |
| 255 ASSERT_EQ(1U, devices.size()); | 254 ASSERT_EQ(1U, devices.size()); |
| 256 EXPECT_EQ(std::string("ic:") + kDeviceId, devices[0].device_id); | 255 EXPECT_EQ(std::string("ic:") + kDeviceId, devices[0].device_id); |
| 257 | 256 |
| 258 DetachDevice(&manager, device); | 257 DetachDevice(&manager, device); |
| 259 devices = system_monitor_->GetAttachedRemovableStorage(); | 258 devices = notifications_.GetAttachedStorage(); |
| 260 ASSERT_EQ(0U, devices.size()); | 259 ASSERT_EQ(0U, devices.size()); |
| 261 }; | 260 }; |
| 262 | 261 |
| 263 TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) { | 262 TEST_F(ImageCaptureDeviceManagerTest, OpenCamera) { |
| 264 chrome::ImageCaptureDeviceManager manager; | 263 chrome::ImageCaptureDeviceManager manager; |
| 264 manager.SetNotifications(notifications_.receiver()); |
| 265 ICCameraDevice* device = AttachDevice(&manager); | 265 ICCameraDevice* device = AttachDevice(&manager); |
| 266 | 266 |
| 267 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( | 267 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( |
| 268 "nonexistent")); | 268 "nonexistent")); |
| 269 | 269 |
| 270 scoped_nsobject<ImageCaptureDevice> camera( | 270 scoped_nsobject<ImageCaptureDevice> camera( |
| 271 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) | 271 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) |
| 272 retain]); | 272 retain]); |
| 273 | 273 |
| 274 [camera setListener:listener_.AsWeakPtr()]; | 274 [camera setListener:listener_.AsWeakPtr()]; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 291 EXPECT_TRUE(listener_.completed()); | 291 EXPECT_TRUE(listener_.completed()); |
| 292 | 292 |
| 293 [camera close]; | 293 [camera close]; |
| 294 DetachDevice(&manager, device); | 294 DetachDevice(&manager, device); |
| 295 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( | 295 EXPECT_FALSE(chrome::ImageCaptureDeviceManager::deviceForUUID( |
| 296 kDeviceId)); | 296 kDeviceId)); |
| 297 } | 297 } |
| 298 | 298 |
| 299 TEST_F(ImageCaptureDeviceManagerTest, RemoveCamera) { | 299 TEST_F(ImageCaptureDeviceManagerTest, RemoveCamera) { |
| 300 chrome::ImageCaptureDeviceManager manager; | 300 chrome::ImageCaptureDeviceManager manager; |
| 301 manager.SetNotifications(notifications_.receiver()); |
| 301 ICCameraDevice* device = AttachDevice(&manager); | 302 ICCameraDevice* device = AttachDevice(&manager); |
| 302 | 303 |
| 303 scoped_nsobject<ImageCaptureDevice> camera( | 304 scoped_nsobject<ImageCaptureDevice> camera( |
| 304 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) | 305 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) |
| 305 retain]); | 306 retain]); |
| 306 | 307 |
| 307 [camera setListener:listener_.AsWeakPtr()]; | 308 [camera setListener:listener_.AsWeakPtr()]; |
| 308 [camera open]; | 309 [camera open]; |
| 309 | 310 |
| 310 [camera didRemoveDevice:device]; | 311 [camera didRemoveDevice:device]; |
| 311 EXPECT_TRUE(listener_.removed()); | 312 EXPECT_TRUE(listener_.removed()); |
| 312 } | 313 } |
| 313 | 314 |
| 314 TEST_F(ImageCaptureDeviceManagerTest, DownloadFile) { | 315 TEST_F(ImageCaptureDeviceManagerTest, DownloadFile) { |
| 315 scoped_ptr<content::TestBrowserThread> file_thread_( | 316 scoped_ptr<content::TestBrowserThread> file_thread_( |
| 316 new content::TestBrowserThread( | 317 new content::TestBrowserThread( |
| 317 content::BrowserThread::FILE, &message_loop_)); | 318 content::BrowserThread::FILE, &message_loop_)); |
| 318 | 319 |
| 319 chrome::ImageCaptureDeviceManager manager; | 320 chrome::ImageCaptureDeviceManager manager; |
| 321 manager.SetNotifications(notifications_.receiver()); |
| 320 MockICCameraDevice* device = AttachDevice(&manager); | 322 MockICCameraDevice* device = AttachDevice(&manager); |
| 321 | 323 |
| 322 scoped_nsobject<ImageCaptureDevice> camera( | 324 scoped_nsobject<ImageCaptureDevice> camera( |
| 323 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) | 325 [chrome::ImageCaptureDeviceManager::deviceForUUID(kDeviceId) |
| 324 retain]); | 326 retain]); |
| 325 | 327 |
| 326 [camera setListener:listener_.AsWeakPtr()]; | 328 [camera setListener:listener_.AsWeakPtr()]; |
| 327 [camera open]; | 329 [camera open]; |
| 328 | 330 |
| 329 std::string kTestFileName("pic1"); | 331 std::string kTestFileName("pic1"); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 360 EXPECT_EQ(kTestFileName, listener_.downloads()[1]); | 362 EXPECT_EQ(kTestFileName, listener_.downloads()[1]); |
| 361 ASSERT_EQ(base::PLATFORM_FILE_OK, listener_.last_error()); | 363 ASSERT_EQ(base::PLATFORM_FILE_OK, listener_.last_error()); |
| 362 char file_contents[5]; | 364 char file_contents[5]; |
| 363 ASSERT_EQ(4, file_util::ReadFile(temp_file, file_contents, | 365 ASSERT_EQ(4, file_util::ReadFile(temp_file, file_contents, |
| 364 strlen(kTestFileContents))); | 366 strlen(kTestFileContents))); |
| 365 EXPECT_EQ(kTestFileContents, | 367 EXPECT_EQ(kTestFileContents, |
| 366 std::string(file_contents, strlen(kTestFileContents))); | 368 std::string(file_contents, strlen(kTestFileContents))); |
| 367 | 369 |
| 368 [camera didRemoveDevice:device]; | 370 [camera didRemoveDevice:device]; |
| 369 } | 371 } |
| OLD | NEW |