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 #import "chrome/browser/web_applications/web_app_mac.h" | 5 #import "chrome/browser/web_applications/web_app_mac.h" |
6 | 6 |
7 #import <Carbon/Carbon.h> | 7 #import <Carbon/Carbon.h> |
8 #import <Cocoa/Cocoa.h> | 8 #import <Cocoa/Cocoa.h> |
9 | 9 |
10 #include "apps/app_shim/app_shim_mac.h" | 10 #include "apps/app_shim/app_shim_mac.h" |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 ConvertSkiaToARGB(bitmap, &raw_data); | 130 ConvertSkiaToARGB(bitmap, &raw_data); |
131 OSErr result = SetIconFamilyData(icon_family, icon_type, raw_data.Get()); | 131 OSErr result = SetIconFamilyData(icon_family, icon_type, raw_data.Get()); |
132 DCHECK_EQ(noErr, result); | 132 DCHECK_EQ(noErr, result); |
133 return result == noErr; | 133 return result == noErr; |
134 } | 134 } |
135 | 135 |
136 base::FilePath GetWritableApplicationsDirectory() { | 136 base::FilePath GetWritableApplicationsDirectory() { |
137 base::FilePath path; | 137 base::FilePath path; |
138 if (base::mac::GetUserDirectory(NSApplicationDirectory, &path)) { | 138 if (base::mac::GetUserDirectory(NSApplicationDirectory, &path)) { |
139 if (!base::DirectoryExists(path)) { | 139 if (!base::DirectoryExists(path)) { |
140 if (!file_util::CreateDirectory(path)) | 140 if (!base::CreateDirectory(path)) |
141 return base::FilePath(); | 141 return base::FilePath(); |
142 | 142 |
143 // Create a zero-byte ".localized" file to inherit localizations from OSX | 143 // Create a zero-byte ".localized" file to inherit localizations from OSX |
144 // for folders that have special meaning. | 144 // for folders that have special meaning. |
145 file_util::WriteFile(path.Append(".localized"), NULL, 0); | 145 file_util::WriteFile(path.Append(".localized"), NULL, 0); |
146 } | 146 } |
147 return base::PathIsWritable(path) ? path : base::FilePath(); | 147 return base::PathIsWritable(path) ? path : base::FilePath(); |
148 } | 148 } |
149 return base::FilePath(); | 149 return base::FilePath(); |
150 } | 150 } |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 | 251 |
252 // Adds a localized strings file for the Chrome Apps directory using the current | 252 // Adds a localized strings file for the Chrome Apps directory using the current |
253 // locale. OSX will use this for the display name. | 253 // locale. OSX will use this for the display name. |
254 // + Chrome Apps.localized (|apps_directory|) | 254 // + Chrome Apps.localized (|apps_directory|) |
255 // | + .localized | 255 // | + .localized |
256 // | | en.strings | 256 // | | en.strings |
257 // | | de.strings | 257 // | | de.strings |
258 void UpdateAppShortcutsSubdirLocalizedName( | 258 void UpdateAppShortcutsSubdirLocalizedName( |
259 const base::FilePath& apps_directory) { | 259 const base::FilePath& apps_directory) { |
260 base::FilePath localized = apps_directory.Append(".localized"); | 260 base::FilePath localized = apps_directory.Append(".localized"); |
261 if (!file_util::CreateDirectory(localized)) | 261 if (!base::CreateDirectory(localized)) |
262 return; | 262 return; |
263 | 263 |
264 base::FilePath directory_name = apps_directory.BaseName().RemoveExtension(); | 264 base::FilePath directory_name = apps_directory.BaseName().RemoveExtension(); |
265 string16 localized_name = web_app::GetAppShortcutsSubdirName(); | 265 string16 localized_name = web_app::GetAppShortcutsSubdirName(); |
266 NSDictionary* strings_dict = @{ | 266 NSDictionary* strings_dict = @{ |
267 base::mac::FilePathToNSString(directory_name) : | 267 base::mac::FilePathToNSString(directory_name) : |
268 base::SysUTF16ToNSString(localized_name) | 268 base::SysUTF16ToNSString(localized_name) |
269 }; | 269 }; |
270 | 270 |
271 std::string locale = l10n_util::NormalizeLocale( | 271 std::string locale = l10n_util::NormalizeLocale( |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
430 return 0; | 430 return 0; |
431 | 431 |
432 base::FilePath app_name = GetShortcutBasename(); | 432 base::FilePath app_name = GetShortcutBasename(); |
433 base::FilePath staging_path = scoped_temp_dir.path().Append(app_name); | 433 base::FilePath staging_path = scoped_temp_dir.path().Append(app_name); |
434 if (!BuildShortcut(staging_path)) | 434 if (!BuildShortcut(staging_path)) |
435 return 0; | 435 return 0; |
436 | 436 |
437 for (std::vector<base::FilePath>::const_iterator it = folders.begin(); | 437 for (std::vector<base::FilePath>::const_iterator it = folders.begin(); |
438 it != folders.end(); ++it) { | 438 it != folders.end(); ++it) { |
439 const base::FilePath& dst_path = *it; | 439 const base::FilePath& dst_path = *it; |
440 if (!file_util::CreateDirectory(dst_path)) { | 440 if (!base::CreateDirectory(dst_path)) { |
441 LOG(ERROR) << "Creating directory " << dst_path.value() << " failed."; | 441 LOG(ERROR) << "Creating directory " << dst_path.value() << " failed."; |
442 return succeeded; | 442 return succeeded; |
443 } | 443 } |
444 | 444 |
445 if (!base::CopyDirectory(staging_path, dst_path, true)) { | 445 if (!base::CopyDirectory(staging_path, dst_path, true)) { |
446 LOG(ERROR) << "Copying app to dst path: " << dst_path.value() | 446 LOG(ERROR) << "Copying app to dst path: " << dst_path.value() |
447 << " failed"; | 447 << " failed"; |
448 return succeeded; | 448 return succeeded; |
449 } | 449 } |
450 | 450 |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 | 616 |
617 return [plist writeToFile:plist_path | 617 return [plist writeToFile:plist_path |
618 atomically:YES]; | 618 atomically:YES]; |
619 } | 619 } |
620 | 620 |
621 bool WebAppShortcutCreator::UpdateDisplayName( | 621 bool WebAppShortcutCreator::UpdateDisplayName( |
622 const base::FilePath& app_path) const { | 622 const base::FilePath& app_path) const { |
623 // OSX searches for the best language in the order of preferred languages. | 623 // OSX searches for the best language in the order of preferred languages. |
624 // Since we only have one localization directory, it will choose this one. | 624 // Since we only have one localization directory, it will choose this one. |
625 base::FilePath localized_dir = GetResourcesPath(app_path).Append("en.lproj"); | 625 base::FilePath localized_dir = GetResourcesPath(app_path).Append("en.lproj"); |
626 if (!file_util::CreateDirectory(localized_dir)) | 626 if (!base::CreateDirectory(localized_dir)) |
627 return false; | 627 return false; |
628 | 628 |
629 NSString* bundle_name = base::SysUTF16ToNSString(info_.title); | 629 NSString* bundle_name = base::SysUTF16ToNSString(info_.title); |
630 NSString* display_name = base::SysUTF16ToNSString(info_.title); | 630 NSString* display_name = base::SysUTF16ToNSString(info_.title); |
631 if (HasExistingExtensionShim(GetApplicationsDirname(), | 631 if (HasExistingExtensionShim(GetApplicationsDirname(), |
632 info_.extension_id, | 632 info_.extension_id, |
633 app_path.BaseName())) { | 633 app_path.BaseName())) { |
634 display_name = [bundle_name | 634 display_name = [bundle_name |
635 stringByAppendingString:base::SysUTF8ToNSString( | 635 stringByAppendingString:base::SysUTF8ToNSString( |
636 " (" + info_.profile_name + ")")]; | 636 " (" + info_.profile_name + ")")]; |
(...skipping 26 matching lines...) Expand all Loading... |
663 if (!AddGfxImageToIconFamily(icon_family.GetAsIconFamilyHandle(), *it)) | 663 if (!AddGfxImageToIconFamily(icon_family.GetAsIconFamilyHandle(), *it)) |
664 continue; | 664 continue; |
665 | 665 |
666 image_added = true; | 666 image_added = true; |
667 } | 667 } |
668 | 668 |
669 if (!image_added) | 669 if (!image_added) |
670 return false; | 670 return false; |
671 | 671 |
672 base::FilePath resources_path = GetResourcesPath(app_path); | 672 base::FilePath resources_path = GetResourcesPath(app_path); |
673 if (!file_util::CreateDirectory(resources_path)) | 673 if (!base::CreateDirectory(resources_path)) |
674 return false; | 674 return false; |
675 | 675 |
676 return icon_family.WriteDataToFile(resources_path.Append("app.icns")); | 676 return icon_family.WriteDataToFile(resources_path.Append("app.icns")); |
677 } | 677 } |
678 | 678 |
679 bool WebAppShortcutCreator::UpdateInternalBundleIdentifier() const { | 679 bool WebAppShortcutCreator::UpdateInternalBundleIdentifier() const { |
680 NSString* plist_path = GetPlistPath(GetInternalShortcutPath()); | 680 NSString* plist_path = GetPlistPath(GetInternalShortcutPath()); |
681 NSMutableDictionary* plist = ReadPlist(plist_path); | 681 NSMutableDictionary* plist = ReadPlist(plist_path); |
682 | 682 |
683 [plist setObject:base::SysUTF8ToNSString(GetInternalBundleIdentifier()) | 683 [plist setObject:base::SysUTF8ToNSString(GetInternalBundleIdentifier()) |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
783 ShellIntegration::ShortcutInfo shortcut_info = | 783 ShellIntegration::ShortcutInfo shortcut_info = |
784 BuildShortcutInfoFromBundle(*it); | 784 BuildShortcutInfoFromBundle(*it); |
785 WebAppShortcutCreator shortcut_creator(it->DirName(), shortcut_info); | 785 WebAppShortcutCreator shortcut_creator(it->DirName(), shortcut_info); |
786 shortcut_creator.DeleteShortcuts(); | 786 shortcut_creator.DeleteShortcuts(); |
787 } | 787 } |
788 } | 788 } |
789 | 789 |
790 } // namespace internals | 790 } // namespace internals |
791 | 791 |
792 } // namespace web_app | 792 } // namespace web_app |
OLD | NEW |