| 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 #include "chrome/browser/web_applications/web_app_mac.h" | 5 #include "chrome/browser/web_applications/web_app_mac.h" |
| 6 | 6 |
| 7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
| 8 | 8 |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/mac/bundle_locations.h" | 10 #include "base/mac/bundle_locations.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 return base::mac::ObjCCast<NSBitmapImageRep>( | 32 return base::mac::ObjCCast<NSBitmapImageRep>( |
| 33 [[image representations] lastObject]); | 33 [[image representations] lastObject]); |
| 34 } | 34 } |
| 35 | 35 |
| 36 } // namespace | 36 } // namespace |
| 37 | 37 |
| 38 | 38 |
| 39 namespace web_app { | 39 namespace web_app { |
| 40 | 40 |
| 41 WebAppShortcutCreator::WebAppShortcutCreator( | 41 WebAppShortcutCreator::WebAppShortcutCreator( |
| 42 const FilePath& user_data_dir, |
| 42 const ShellIntegration::ShortcutInfo& shortcut_info) | 43 const ShellIntegration::ShortcutInfo& shortcut_info) |
| 43 : info_(shortcut_info) { | 44 : user_data_dir_(user_data_dir), |
| 45 info_(shortcut_info) { |
| 44 } | 46 } |
| 45 | 47 |
| 46 WebAppShortcutCreator::~WebAppShortcutCreator() { | 48 WebAppShortcutCreator::~WebAppShortcutCreator() { |
| 47 } | 49 } |
| 48 | 50 |
| 49 bool WebAppShortcutCreator::CreateShortcut() { | 51 bool WebAppShortcutCreator::CreateShortcut() { |
| 50 FilePath app_name = internals::GetSanitizedFileName(info_.title); | 52 FilePath app_name = internals::GetSanitizedFileName(info_.title); |
| 51 FilePath app_file_name = app_name.ReplaceExtension("app"); | 53 FilePath app_file_name = app_name.ReplaceExtension("app"); |
| 52 ScopedTempDir scoped_temp_dir; | 54 ScopedTempDir scoped_temp_dir; |
| 53 if (!scoped_temp_dir.CreateUniqueTempDir()) | 55 if (!scoped_temp_dir.CreateUniqueTempDir()) |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 app_path.Append("Contents").Append("Info.plist")); | 108 app_path.Append("Contents").Append("Info.plist")); |
| 107 NSMutableDictionary* dict = | 109 NSMutableDictionary* dict = |
| 108 [NSMutableDictionary dictionaryWithContentsOfFile:plist_path]; | 110 [NSMutableDictionary dictionaryWithContentsOfFile:plist_path]; |
| 109 | 111 |
| 110 [dict setObject:base::SysUTF8ToNSString(info_.extension_id) | 112 [dict setObject:base::SysUTF8ToNSString(info_.extension_id) |
| 111 forKey:app_mode::kCrAppModeShortcutIDKey]; | 113 forKey:app_mode::kCrAppModeShortcutIDKey]; |
| 112 [dict setObject:base::SysUTF16ToNSString(info_.title) | 114 [dict setObject:base::SysUTF16ToNSString(info_.title) |
| 113 forKey:app_mode::kCrAppModeShortcutNameKey]; | 115 forKey:app_mode::kCrAppModeShortcutNameKey]; |
| 114 [dict setObject:base::SysUTF8ToNSString(info_.url.spec()) | 116 [dict setObject:base::SysUTF8ToNSString(info_.url.spec()) |
| 115 forKey:app_mode::kCrAppModeShortcutURLKey]; | 117 forKey:app_mode::kCrAppModeShortcutURLKey]; |
| 118 [dict setObject:base::mac::FilePathToNSString(user_data_dir_) |
| 119 forKey:app_mode::kCrAppModeUserDataDirKey]; |
| 116 return [dict writeToFile:plist_path atomically:YES]; | 120 return [dict writeToFile:plist_path atomically:YES]; |
| 117 } | 121 } |
| 118 | 122 |
| 119 bool WebAppShortcutCreator::UpdateIcon(const FilePath& app_path) const { | 123 bool WebAppShortcutCreator::UpdateIcon(const FilePath& app_path) const { |
| 120 // TODO(sail): Add support for multiple icon sizes. | 124 // TODO(sail): Add support for multiple icon sizes. |
| 121 if (info_.favicon.empty() || info_.favicon.width() != 32 || | 125 if (info_.favicon.empty() || info_.favicon.width() != 32 || |
| 122 info_.favicon.height() != 32) { | 126 info_.favicon.height() != 32) { |
| 123 return true; | 127 return true; |
| 124 } | 128 } |
| 125 | 129 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 148 | 152 |
| 149 } // namespace | 153 } // namespace |
| 150 | 154 |
| 151 namespace web_app { | 155 namespace web_app { |
| 152 namespace internals { | 156 namespace internals { |
| 153 | 157 |
| 154 void CreateShortcutTask(const FilePath& web_app_path, | 158 void CreateShortcutTask(const FilePath& web_app_path, |
| 155 const FilePath& profile_path, | 159 const FilePath& profile_path, |
| 156 const ShellIntegration::ShortcutInfo& shortcut_info) { | 160 const ShellIntegration::ShortcutInfo& shortcut_info) { |
| 157 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::FILE)); | 161 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::FILE)); |
| 158 WebAppShortcutCreator shortcut_creator(shortcut_info); | 162 WebAppShortcutCreator shortcut_creator(web_app_path, shortcut_info); |
| 159 shortcut_creator.CreateShortcut(); | 163 shortcut_creator.CreateShortcut(); |
| 160 } | 164 } |
| 161 | 165 |
| 162 } // namespace internals | 166 } // namespace internals |
| 163 } // namespace web_app | 167 } // namespace web_app |
| OLD | NEW |