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

Side by Side Diff: chrome/browser/app_controller_mac.mm

Issue 12623005: [mac] App shims (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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 | Annotate | Revision Log
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/app_controller_mac.h" 5 #import "chrome/browser/app_controller_mac.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 175
176 @interface AppController (Private) 176 @interface AppController (Private)
177 - (void)initMenuState; 177 - (void)initMenuState;
178 - (void)initProfileMenu; 178 - (void)initProfileMenu;
179 - (void)updateConfirmToQuitPrefMenuItem:(NSMenuItem*)item; 179 - (void)updateConfirmToQuitPrefMenuItem:(NSMenuItem*)item;
180 - (void)registerServicesMenuTypesTo:(NSApplication*)app; 180 - (void)registerServicesMenuTypesTo:(NSApplication*)app;
181 - (void)openUrls:(const std::vector<GURL>&)urls; 181 - (void)openUrls:(const std::vector<GURL>&)urls;
182 - (void)getUrl:(NSAppleEventDescriptor*)event 182 - (void)getUrl:(NSAppleEventDescriptor*)event
183 withReply:(NSAppleEventDescriptor*)reply; 183 withReply:(NSAppleEventDescriptor*)reply;
184 - (void)submitCloudPrintJob:(NSAppleEventDescriptor*)event; 184 - (void)submitCloudPrintJob:(NSAppleEventDescriptor*)event;
185 - (void)launchPlatformApp:(NSAppleEventDescriptor*)event
186 withReply:(NSAppleEventDescriptor*)reply;
187 - (void)windowLayeringDidChange:(NSNotification*)inNotification; 185 - (void)windowLayeringDidChange:(NSNotification*)inNotification;
188 - (void)windowChangedToProfile:(Profile*)profile; 186 - (void)windowChangedToProfile:(Profile*)profile;
189 - (void)checkForAnyKeyWindows; 187 - (void)checkForAnyKeyWindows;
190 - (BOOL)userWillWaitForInProgressDownloads:(int)downloadCount; 188 - (BOOL)userWillWaitForInProgressDownloads:(int)downloadCount;
191 - (BOOL)shouldQuitWithInProgressDownloads; 189 - (BOOL)shouldQuitWithInProgressDownloads;
192 - (void)executeApplication:(id)sender; 190 - (void)executeApplication:(id)sender;
193 @end 191 @end
194 192
195 @implementation AppController 193 @implementation AppController
196 194
(...skipping 11 matching lines...) Expand all
208 andEventID:kAEGetURL]; 206 andEventID:kAEGetURL];
209 [em setEventHandler:self 207 [em setEventHandler:self
210 andSelector:@selector(submitCloudPrintJob:) 208 andSelector:@selector(submitCloudPrintJob:)
211 forEventClass:cloud_print::kAECloudPrintClass 209 forEventClass:cloud_print::kAECloudPrintClass
212 andEventID:cloud_print::kAECloudPrintClass]; 210 andEventID:cloud_print::kAECloudPrintClass];
213 [em setEventHandler:self 211 [em setEventHandler:self
214 andSelector:@selector(getUrl:withReply:) 212 andSelector:@selector(getUrl:withReply:)
215 forEventClass:'WWW!' // A particularly ancient AppleEvent that dates 213 forEventClass:'WWW!' // A particularly ancient AppleEvent that dates
216 andEventID:'OURL']; // back to the Spyglass days. 214 andEventID:'OURL']; // back to the Spyglass days.
217 215
218 [em setEventHandler:self
219 andSelector:@selector(launchPlatformApp:withReply:)
220 forEventClass:app_mode::kAEChromeAppClass
221 andEventID:app_mode::kAEChromeAppLaunch];
222
223 // Register for various window layering changes. We use these to update 216 // Register for various window layering changes. We use these to update
224 // various UI elements (command-key equivalents, etc) when the frontmost 217 // various UI elements (command-key equivalents, etc) when the frontmost
225 // window changes. 218 // window changes.
226 NSNotificationCenter* notificationCenter = 219 NSNotificationCenter* notificationCenter =
227 [NSNotificationCenter defaultCenter]; 220 [NSNotificationCenter defaultCenter];
228 [notificationCenter 221 [notificationCenter
229 addObserver:self 222 addObserver:self
230 selector:@selector(windowLayeringDidChange:) 223 selector:@selector(windowLayeringDidChange:)
231 name:NSWindowDidBecomeKeyNotification 224 name:NSWindowDidBecomeKeyNotification
232 object:nil]; 225 object:nil];
(...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 NSString* urlStr = [[event paramDescriptorForKeyword:keyDirectObject] 1123 NSString* urlStr = [[event paramDescriptorForKeyword:keyDirectObject]
1131 stringValue]; 1124 stringValue];
1132 1125
1133 GURL gurl(base::SysNSStringToUTF8(urlStr)); 1126 GURL gurl(base::SysNSStringToUTF8(urlStr));
1134 std::vector<GURL> gurlVector; 1127 std::vector<GURL> gurlVector;
1135 gurlVector.push_back(gurl); 1128 gurlVector.push_back(gurl);
1136 1129
1137 [self openUrls:gurlVector]; 1130 [self openUrls:gurlVector];
1138 } 1131 }
1139 1132
1140 - (void)launchPlatformApp:(NSAppleEventDescriptor*)event
1141 withReply:(NSAppleEventDescriptor*)reply {
1142 NSString* appId =
1143 [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
1144 NSString* profileDir =
1145 [[event paramDescriptorForKeyword:app_mode::kAEProfileDirKey]
1146 stringValue];
1147
1148 ProfileManager* profileManager = g_browser_process->profile_manager();
1149 base::FilePath path = base::FilePath(base::SysNSStringToUTF8(profileDir));
1150 path = profileManager->user_data_dir().Append(path);
1151 Profile* profile = profileManager->GetProfile(path);
1152 if (!profile) {
1153 LOG(ERROR) << "Unable to locate a suitable profile for profile directory '"
1154 << profileDir << "' while trying to load app with id '"
1155 << appId << "'.";
1156 return;
1157 }
1158 ExtensionServiceInterface* extensionService =
1159 extensions::ExtensionSystem::Get(profile)->extension_service();
1160 const extensions::Extension* extension =
1161 extensionService->GetExtensionById(
1162 base::SysNSStringToUTF8(appId), false);
1163 if (!extension) {
1164 LOG(ERROR) << "Shortcut attempted to launch nonexistent app with id '"
1165 << base::SysNSStringToUTF8(appId) << "'.";
1166 return;
1167 }
1168 chrome::OpenApplication(chrome::AppLaunchParams(
1169 profile, extension, extension_misc::LAUNCH_NONE, NEW_WINDOW));
1170 }
1171
1172 // Apple Event handler that receives print event from service 1133 // Apple Event handler that receives print event from service
1173 // process, gets the required data and launches Print dialog. 1134 // process, gets the required data and launches Print dialog.
1174 - (void)submitCloudPrintJob:(NSAppleEventDescriptor*)event { 1135 - (void)submitCloudPrintJob:(NSAppleEventDescriptor*)event {
1175 // Pull parameter list out of Apple Event. 1136 // Pull parameter list out of Apple Event.
1176 NSAppleEventDescriptor* paramList = 1137 NSAppleEventDescriptor* paramList =
1177 [event paramDescriptorForKeyword:cloud_print::kAECloudPrintClass]; 1138 [event paramDescriptorForKeyword:cloud_print::kAECloudPrintClass];
1178 1139
1179 if (paramList != nil) { 1140 if (paramList != nil) {
1180 // Pull required fields out of parameter list. 1141 // Pull required fields out of parameter list.
1181 NSString* mime = [[paramList descriptorAtIndex:1] stringValue]; 1142 NSString* mime = [[paramList descriptorAtIndex:1] stringValue];
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
1348 1309
1349 //--------------------------------------------------------------------------- 1310 //---------------------------------------------------------------------------
1350 1311
1351 namespace app_controller_mac { 1312 namespace app_controller_mac {
1352 1313
1353 bool IsOpeningNewWindow() { 1314 bool IsOpeningNewWindow() {
1354 return g_is_opening_new_window; 1315 return g_is_opening_new_window;
1355 } 1316 }
1356 1317
1357 } // namespace app_controller_mac 1318 } // namespace app_controller_mac
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698