Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7900)

Unified Diff: chrome/browser/system_monitor/image_capture_device.mm

Issue 11817036: Revert 175938 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/system_monitor/image_capture_device.mm
===================================================================
--- chrome/browser/system_monitor/image_capture_device.mm (revision 175941)
+++ chrome/browser/system_monitor/image_capture_device.mm (working copy)
@@ -1,202 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#import "chrome/browser/system_monitor/image_capture_device.h"
-
-#include "base/file_util.h"
-#include "base/mac/mac_util.h"
-#include "base/system_monitor/system_monitor.h"
-#include "chrome/browser/system_monitor/media_storage_util.h"
-#include "content/public/browser/browser_thread.h"
-
-namespace {
-
-void RenameFile(const FilePath& downloaded_filename,
- const FilePath& desired_filename,
- base::PlatformFileError* result) {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::FILE));
- bool success = file_util::ReplaceFile(downloaded_filename, desired_filename);
- *result = success ? base::PLATFORM_FILE_OK
- : base::PLATFORM_FILE_ERROR_NOT_FOUND;
-}
-
-void ReturnRenameResultToListener(
- base::WeakPtr<ImageCaptureDeviceListener> listener,
- const std::string& name,
- base::PlatformFileError* result) {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- scoped_ptr<base::PlatformFileError> result_deleter(result);
- if (listener)
- listener->DownloadedFile(name, *result);
-}
-
-base::Time NSDateToBaseTime(NSDate* date) {
- return base::Time::FromDoubleT([date timeIntervalSince1970]);
-}
-
-} // namespace
-
-@implementation ImageCaptureDevice
-
-- (id)initWithCameraDevice:(ICCameraDevice*)cameraDevice {
- if ((self = [super init])) {
- camera_.reset([cameraDevice retain]);
- [camera_ setDelegate:self];
- }
- return self;
-}
-
-- (void)dealloc {
- // Make sure the session was closed and listener set to null
- // before destruction.
- DCHECK(![camera_ delegate]);
- DCHECK(!listener_);
- [super dealloc];
-}
-
-- (void)setListener:(base::WeakPtr<ImageCaptureDeviceListener>)listener {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- listener_ = listener;
-}
-
-- (void)open {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- DCHECK(listener_);
- [camera_ requestOpenSession];
-}
-
-- (void)close {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- [camera_ requestCloseSession];
- [camera_ setDelegate:nil];
- listener_.reset();
-}
-
-- (void)downloadFile:(const std::string&)name
- localPath:(const FilePath&)localPath {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- // Find the file with that name and start download.
- for (ICCameraItem* item in [camera_ mediaFiles]) {
- std::string itemName = base::SysNSStringToUTF8([item name]);
- if (itemName == name) {
- // To create save options for ImageCapture, we need to
- // split the target filename into directory/name
- // and encode the directory as a URL.
- NSString* saveDirectory =
- base::mac::FilePathToNSString(localPath.DirName());
- NSString* saveFilename =
- base::mac::FilePathToNSString(localPath.BaseName());
-
- NSMutableDictionary* options =
- [NSMutableDictionary dictionaryWithCapacity:3];
- [options setObject:[NSURL fileURLWithPath:saveDirectory isDirectory:YES]
- forKey:ICDownloadsDirectoryURL];
- [options setObject:saveFilename forKey:ICSaveAsFilename];
- [options setObject:[NSNumber numberWithBool:YES] forKey:ICOverwrite];
-
- [camera_ requestDownloadFile:base::mac::ObjCCastStrict<ICCameraFile>(item)
- options:options
- downloadDelegate:self
- didDownloadSelector:
- @selector(didDownloadFile:error:options:contextInfo:)
- contextInfo:NULL];
- return;
- }
- }
-
- if (listener_)
- listener_->DownloadedFile(name, base::PLATFORM_FILE_ERROR_NOT_FOUND);
-}
-
-- (void)cameraDevice:(ICCameraDevice*)camera didAddItem:(ICCameraItem*)item {
- std::string name = base::SysNSStringToUTF8([item name]);
- base::PlatformFileInfo info;
- if ([[item UTI] isEqualToString:base::mac::CFToNSCast(kUTTypeFolder)])
- info.is_directory = true;
- else
- info.size = [base::mac::ObjCCastStrict<ICCameraFile>(item) fileSize];
- info.last_modified = NSDateToBaseTime([item modificationDate]);
- info.creation_time = NSDateToBaseTime([item creationDate]);
- info.last_accessed = info.last_modified;
-
- if (listener_)
- listener_->ItemAdded(name, info);
-}
-
-- (void)cameraDevice:(ICCameraDevice*)camera didAddItems:(NSArray*)items {
- for (ICCameraItem* item in items)
- [self cameraDevice:camera didAddItem:item];
-}
-
-- (void)didRemoveDevice:(ICDevice*)device {
- device.delegate = NULL;
- if (listener_)
- listener_->DeviceRemoved();
-}
-
-// Notifies that a session was opened with the given device; potentially
-// with an error.
-- (void)device:(ICDevice*)device didOpenSessionWithError:(NSError*)error {
- if (error)
- [self didRemoveDevice:camera_];
-}
-
-- (void)device:(ICDevice*)device didEncounterError:(NSError*)error {
- if (error && listener_)
- listener_->DeviceRemoved();
-}
-
-// When this message is received, all media metadata is now loaded.
-- (void)deviceDidBecomeReadyWithCompleteContentCatalog:(ICDevice*)device {
- if (listener_)
- listener_->NoMoreItems();
-}
-
-// For 10.7 and earlier, this method has the semantics of
-// deviceDidBecomeReadyWithCompleteContentCatalog. For 10.8++, it has
-// the semantics of notifying that the device can receive commands.
-- (void)deviceDidBecomeReady:(ICDevice*)device {
- if (listener_ && base::mac::IsOSLionOrEarlier())
- listener_->NoMoreItems();
-}
-
-- (void)didDownloadFile:(ICCameraFile*)file
- error:(NSError*)error
- options:(NSDictionary*)options
- contextInfo:(void*)contextInfo {
- std::string name = base::SysNSStringToUTF8([file name]);
-
- if (error) {
- if (listener_)
- listener_->DownloadedFile(name, base::PLATFORM_FILE_ERROR_FAILED);
- return;
- }
-
- std::string savedFilename =
- base::SysNSStringToUTF8([options objectForKey:ICSavedFilename]);
- std::string saveAsFilename =
- base::SysNSStringToUTF8([options objectForKey:ICSaveAsFilename]);
- if (savedFilename == saveAsFilename) {
- if (listener_)
- listener_->DownloadedFile(name, base::PLATFORM_FILE_OK);
- return;
- }
-
- // ImageCapture did not save the file into the name we gave it in the
- // options. It picks a new name according to its best lights, so we need
- // to rename the file.
- FilePath saveDir(base::SysNSStringToUTF8(
- [[options objectForKey:ICDownloadsDirectoryURL] path]));
- FilePath saveAsPath = saveDir.Append(saveAsFilename);
- FilePath savedPath = saveDir.Append(savedFilename);
- // Shared result value from file-copy closure to tell-listener closure.
- base::PlatformFileError* copyResult = new base::PlatformFileError();
- content::BrowserThread::PostTaskAndReply(
- content::BrowserThread::FILE,
- FROM_HERE,
- base::Bind(&RenameFile, savedPath, saveAsPath, copyResult),
- base::Bind(&ReturnRenameResultToListener, listener_, name, copyResult));
-}
-
-@end // ImageCaptureDevice
« no previous file with comments | « chrome/browser/system_monitor/image_capture_device.h ('k') | chrome/browser/system_monitor/image_capture_device_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698