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

Side by Side Diff: chrome/browser/web_applications/web_app_mac.mm

Issue 1137373003: [Mac] Localize app shims with the OS preferred language. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Delete existing shims in CreateShortcuts. Created 5 years, 7 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 return 0; 693 return 0;
694 694
695 for (std::vector<base::FilePath>::const_iterator it = folders.begin(); 695 for (std::vector<base::FilePath>::const_iterator it = folders.begin();
696 it != folders.end(); ++it) { 696 it != folders.end(); ++it) {
697 const base::FilePath& dst_path = *it; 697 const base::FilePath& dst_path = *it;
698 if (!base::CreateDirectory(dst_path)) { 698 if (!base::CreateDirectory(dst_path)) {
699 LOG(ERROR) << "Creating directory " << dst_path.value() << " failed."; 699 LOG(ERROR) << "Creating directory " << dst_path.value() << " failed.";
700 return succeeded; 700 return succeeded;
701 } 701 }
702 702
703 if (!base::CopyDirectory(staging_path, dst_path, true)) { 703 if (!base::CopyDirectory(staging_path, dst_path, true)) {
tapted 2015/05/15 02:02:49 What about before this, something like // Ensur
jackhou1 2015/05/15 02:44:56 Done.
704 LOG(ERROR) << "Copying app to dst path: " << dst_path.value() 704 LOG(ERROR) << "Copying app to dst path: " << dst_path.value()
705 << " failed"; 705 << " failed";
706 return succeeded; 706 return succeeded;
707 } 707 }
708 708
709 // Remove the quarantine attribute from both the bundle and the executable. 709 // Remove the quarantine attribute from both the bundle and the executable.
710 base::mac::RemoveQuarantineAttribute(dst_path.Append(app_name)); 710 base::mac::RemoveQuarantineAttribute(dst_path.Append(app_name));
711 base::mac::RemoveQuarantineAttribute( 711 base::mac::RemoveQuarantineAttribute(
712 dst_path.Append(app_name) 712 dst_path.Append(app_name)
713 .Append("Contents").Append("MacOS").Append("app_mode_loader")); 713 .Append("Contents").Append("MacOS").Append("app_mode_loader"));
(...skipping 22 matching lines...) Expand all
736 736
737 // The app list shim is not tied to a particular profile, so omit the copy 737 // The app list shim is not tied to a particular profile, so omit the copy
738 // placed under the profile path. For shims, this copy is used when the 738 // placed under the profile path. For shims, this copy is used when the
739 // version under Applications is removed, and not needed for app list because 739 // version under Applications is removed, and not needed for app list because
740 // setting LSUIElement means there is no Dock "running" status to show. 740 // setting LSUIElement means there is no Dock "running" status to show.
741 const bool is_app_list = info_->extension_id == app_mode::kAppListModeId; 741 const bool is_app_list = info_->extension_id == app_mode::kAppListModeId;
742 if (is_app_list) { 742 if (is_app_list) {
743 path_to_add_to_dock = base::SysUTF8ToNSString( 743 path_to_add_to_dock = base::SysUTF8ToNSString(
744 applications_dir.Append(GetShortcutBasename()).AsUTF8Unsafe()); 744 applications_dir.Append(GetShortcutBasename()).AsUTF8Unsafe());
745 } else { 745 } else {
746 base::DeleteFile(GetInternalShortcutPath(), true);
746 paths.push_back(app_data_dir_); 747 paths.push_back(app_data_dir_);
747 } 748 }
748 749
749 bool shortcut_visible = 750 bool shortcut_visible =
750 creation_locations.applications_menu_location != APP_MENU_LOCATION_HIDDEN; 751 creation_locations.applications_menu_location != APP_MENU_LOCATION_HIDDEN;
751 if (shortcut_visible) 752 if (shortcut_visible) {
753 base::DeleteFile(GetApplicationsShortcutPath(), true);
752 paths.push_back(applications_dir); 754 paths.push_back(applications_dir);
755 }
753 756
754 DCHECK(!paths.empty()); 757 DCHECK(!paths.empty());
755 size_t success_count = CreateShortcutsIn(paths); 758 size_t success_count = CreateShortcutsIn(paths);
756 if (success_count == 0) 759 if (success_count == 0)
757 return false; 760 return false;
758 761
759 if (!is_app_list) 762 if (!is_app_list)
760 UpdateInternalBundleIdentifier(); 763 UpdateInternalBundleIdentifier();
761 764
762 if (success_count != paths.size()) 765 if (success_count != paths.size())
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 switches::kEnableAppsFileAssociations)) { 893 switches::kEnableAppsFileAssociations)) {
891 UpdateFileTypes(plist, file_handlers_info_); 894 UpdateFileTypes(plist, file_handlers_info_);
892 } 895 }
893 896
894 return [plist writeToFile:plist_path 897 return [plist writeToFile:plist_path
895 atomically:YES]; 898 atomically:YES];
896 } 899 }
897 900
898 bool WebAppShortcutCreator::UpdateDisplayName( 901 bool WebAppShortcutCreator::UpdateDisplayName(
899 const base::FilePath& app_path) const { 902 const base::FilePath& app_path) const {
900 // OSX searches for the best language in the order of preferred languages. 903 // Localization is used to display the app name (rather than the bundle
901 // Since we only have one localization directory, it will choose this one. 904 // filename). OSX searches for the best language in the order of preferred
902 base::FilePath localized_dir = GetResourcesPath(app_path).Append("en.lproj"); 905 // languages, but one of them must be found otherwise it will default to
906 // the filename.
907 NSString* language = [[NSLocale preferredLanguages] objectAtIndex:0];
908 base::FilePath localized_dir = GetResourcesPath(app_path).Append(
909 base::SysNSStringToUTF8(language) + ".lproj");
903 if (!base::CreateDirectory(localized_dir)) 910 if (!base::CreateDirectory(localized_dir))
904 return false; 911 return false;
905 912
906 NSString* bundle_name = base::SysUTF16ToNSString(info_->title); 913 NSString* bundle_name = base::SysUTF16ToNSString(info_->title);
907 NSString* display_name = base::SysUTF16ToNSString(info_->title); 914 NSString* display_name = base::SysUTF16ToNSString(info_->title);
908 if (HasExistingExtensionShim(GetApplicationsDirname(), info_->extension_id, 915 if (HasExistingExtensionShim(GetApplicationsDirname(), info_->extension_id,
909 app_path.BaseName())) { 916 app_path.BaseName())) {
910 display_name = [bundle_name 917 display_name = [bundle_name
911 stringByAppendingString:base::SysUTF8ToNSString( 918 stringByAppendingString:base::SysUTF8ToNSString(
912 " (" + info_->profile_name + ")")]; 919 " (" + info_->profile_name + ")")];
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 web_app::GetShortcutInfoForApp( 1215 web_app::GetShortcutInfoForApp(
1209 app, 1216 app,
1210 profile, 1217 profile,
1211 base::Bind(&web_app::CreateAppShortcutInfoLoaded, 1218 base::Bind(&web_app::CreateAppShortcutInfoLoaded,
1212 profile, 1219 profile,
1213 app, 1220 app,
1214 close_callback)); 1221 close_callback));
1215 } 1222 }
1216 1223
1217 } // namespace chrome 1224 } // namespace chrome
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698