Index: chrome/browser/platform_util_mac.mm |
diff --git a/chrome/browser/platform_util_mac.mm b/chrome/browser/platform_util_mac.mm |
index 507b23bd23ab8a6cb21a9eb051c33b8e78e0efd2..cb0c3096ddb7cad41bf734498f21136748322875 100644 |
--- a/chrome/browser/platform_util_mac.mm |
+++ b/chrome/browser/platform_util_mac.mm |
@@ -4,17 +4,13 @@ |
#include "chrome/browser/platform_util.h" |
-#include <Carbon/Carbon.h> |
#import <Cocoa/Cocoa.h> |
-#include <CoreServices/CoreServices.h> |
#include "base/bind.h" |
#include "base/files/file_path.h" |
#include "base/files/file_util.h" |
#include "base/logging.h" |
#include "base/mac/mac_logging.h" |
-#import "base/mac/mac_util.h" |
-#include "base/mac/scoped_aedesc.h" |
#import "base/mac/sdk_forward_declarations.h" |
#include "base/strings/sys_string_conversions.h" |
#include "chrome/browser/platform_util_internal.h" |
@@ -41,104 +37,17 @@ void OpenFileOnMainThread(const base::FilePath& full_path) { |
// properly handle Finder activation for quarantined files |
// (http://crbug.com/32921) and unassociated file types |
// (http://crbug.com/50263). |
- if (base::mac::IsOSMavericksOrLater()) { |
- NSURL* url = [NSURL fileURLWithPath:path_string]; |
- if (!url) |
- return; |
- |
- const NSWorkspaceLaunchOptions launch_options = |
- NSWorkspaceLaunchAsync | NSWorkspaceLaunchWithErrorPresentation; |
- [[NSWorkspace sharedWorkspace] openURLs:@[ url ] |
- withAppBundleIdentifier:nil |
- options:launch_options |
- additionalEventParamDescriptor:nil |
- launchIdentifiers:NULL]; |
- return; |
- } |
- |
- // On older OSes, both LaunchServices and NSWorkspace will fail silently for |
- // the two cases described above. On those platforms, use an AppleEvent to |
- // instruct the Finder to open the file. |
- |
- // Create the target of this AppleEvent, the Finder. |
- base::mac::ScopedAEDesc<AEAddressDesc> address; |
- const OSType finderCreatorCode = 'MACS'; |
- OSErr status = AECreateDesc(typeApplSignature, // type |
- &finderCreatorCode, // data |
- sizeof(finderCreatorCode), // dataSize |
- address.OutPointer()); // result |
- if (status != noErr) { |
- OSSTATUS_LOG(WARNING, status) << "Could not create OpenFile() AE target"; |
- return; |
- } |
- |
- // Build the AppleEvent data structure that instructs Finder to open files. |
- base::mac::ScopedAEDesc<AppleEvent> theEvent; |
- status = AECreateAppleEvent(kCoreEventClass, // theAEEventClass |
- kAEOpenDocuments, // theAEEventID |
- address, // target |
- kAutoGenerateReturnID, // returnID |
- kAnyTransactionID, // transactionID |
- theEvent.OutPointer()); // result |
- if (status != noErr) { |
- OSSTATUS_LOG(WARNING, status) << "Could not create OpenFile() AE event"; |
- return; |
- } |
- |
- // Create the list of files (only ever one) to open. |
- base::mac::ScopedAEDesc<AEDescList> fileList; |
- status = AECreateList(NULL, // factoringPtr |
- 0, // factoredSize |
- false, // isRecord |
- fileList.OutPointer()); // resultList |
- if (status != noErr) { |
- OSSTATUS_LOG(WARNING, status) << "Could not create OpenFile() AE file list"; |
- return; |
- } |
- |
- // Add the single path to the file list. C-style cast to avoid both a |
- // static_cast and a const_cast to get across the toll-free bridge. |
- CFURLRef pathURLRef = (CFURLRef)[NSURL fileURLWithPath:path_string]; |
- FSRef pathRef; |
- if (CFURLGetFSRef(pathURLRef, &pathRef)) { |
- status = AEPutPtr(fileList.OutPointer(), // theAEDescList |
- 0, // index |
- typeFSRef, // typeCode |
- &pathRef, // dataPtr |
- sizeof(pathRef)); // dataSize |
- if (status != noErr) { |
- OSSTATUS_LOG(WARNING, status) |
- << "Could not add file path to AE list in OpenFile()"; |
- return; |
- } |
- } else { |
- LOG(WARNING) << "Could not get FSRef for path URL in OpenFile()"; |
+ NSURL* url = [NSURL fileURLWithPath:path_string]; |
+ if (!url) |
return; |
- } |
- // Attach the file list to the AppleEvent. |
- status = AEPutParamDesc(theEvent.OutPointer(), // theAppleEvent |
- keyDirectObject, // theAEKeyword |
- fileList); // theAEDesc |
- if (status != noErr) { |
- OSSTATUS_LOG(WARNING, status) |
- << "Could not put the AE file list the path in OpenFile()"; |
- return; |
- } |
- |
- // Send the actual event. Do not care about the reply. |
- base::mac::ScopedAEDesc<AppleEvent> reply; |
- status = AESend(theEvent, // theAppleEvent |
- reply.OutPointer(), // reply |
- kAENoReply + kAEAlwaysInteract, // sendMode |
- kAENormalPriority, // sendPriority |
- kAEDefaultTimeout, // timeOutInTicks |
- NULL, // idleProc |
- NULL); // filterProc |
- if (status != noErr) { |
- OSSTATUS_LOG(WARNING, status) |
- << "Could not send AE to Finder in OpenFile()"; |
- } |
+ const NSWorkspaceLaunchOptions launch_options = |
+ NSWorkspaceLaunchAsync | NSWorkspaceLaunchWithErrorPresentation; |
+ [[NSWorkspace sharedWorkspace] openURLs:@[ url ] |
+ withAppBundleIdentifier:nil |
+ options:launch_options |
+ additionalEventParamDescriptor:nil |
+ launchIdentifiers:NULL]; |
} |
namespace internal { |