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

Side by Side Diff: chrome/browser/process_singleton_win.cc

Issue 816403003: Make callers of CommandLine use it via the base:: namespace. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 6 years 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 | « chrome/browser/process_singleton_startup_lock.cc ('k') | chrome/browser/profiles/profile.cc » ('j') | 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 #include "chrome/browser/process_singleton.h" 5 #include "chrome/browser/process_singleton.h"
6 6
7 #include <shellapi.h> 7 #include <shellapi.h>
8 8
9 #include "base/base_paths.h" 9 #include "base/base_paths.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 // Checks the visibility of the enumerated window and signals once a visible 84 // Checks the visibility of the enumerated window and signals once a visible
85 // window has been found. 85 // window has been found.
86 BOOL CALLBACK BrowserWindowEnumeration(HWND window, LPARAM param) { 86 BOOL CALLBACK BrowserWindowEnumeration(HWND window, LPARAM param) {
87 bool* result = reinterpret_cast<bool*>(param); 87 bool* result = reinterpret_cast<bool*>(param);
88 *result = ::IsWindowVisible(window) != 0; 88 *result = ::IsWindowVisible(window) != 0;
89 // Stops enumeration if a visible window has been found. 89 // Stops enumeration if a visible window has been found.
90 return !*result; 90 return !*result;
91 } 91 }
92 92
93 bool ParseCommandLine(const COPYDATASTRUCT* cds, 93 bool ParseCommandLine(const COPYDATASTRUCT* cds,
94 CommandLine* parsed_command_line, 94 base::CommandLine* parsed_command_line,
95 base::FilePath* current_directory) { 95 base::FilePath* current_directory) {
96 // We should have enough room for the shortest command (min_message_size) 96 // We should have enough room for the shortest command (min_message_size)
97 // and also be a multiple of wchar_t bytes. The shortest command 97 // and also be a multiple of wchar_t bytes. The shortest command
98 // possible is L"START\0\0" (empty current directory and command line). 98 // possible is L"START\0\0" (empty current directory and command line).
99 static const int min_message_size = 7; 99 static const int min_message_size = 7;
100 if (cds->cbData < min_message_size * sizeof(wchar_t) || 100 if (cds->cbData < min_message_size * sizeof(wchar_t) ||
101 cds->cbData % sizeof(wchar_t) != 0) { 101 cds->cbData % sizeof(wchar_t) != 0) {
102 LOG(WARNING) << "Invalid WM_COPYDATA, length = " << cds->cbData; 102 LOG(WARNING) << "Invalid WM_COPYDATA, length = " << cds->cbData;
103 return false; 103 return false;
104 } 104 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 msg.find_first_of(L'\0', second_null + 1); 137 msg.find_first_of(L'\0', second_null + 1);
138 if (third_null == std::wstring::npos || 138 if (third_null == std::wstring::npos ||
139 third_null == msg.length()) { 139 third_null == msg.length()) {
140 LOG(WARNING) << "Invalid format for start command, we need a string in 4 " 140 LOG(WARNING) << "Invalid format for start command, we need a string in 4 "
141 "parts separated by NULLs"; 141 "parts separated by NULLs";
142 } 142 }
143 143
144 // Get command line. 144 // Get command line.
145 const std::wstring cmd_line = 145 const std::wstring cmd_line =
146 msg.substr(second_null + 1, third_null - second_null); 146 msg.substr(second_null + 1, third_null - second_null);
147 *parsed_command_line = CommandLine::FromString(cmd_line); 147 *parsed_command_line = base::CommandLine::FromString(cmd_line);
148 return true; 148 return true;
149 } 149 }
150 return false; 150 return false;
151 } 151 }
152 152
153 bool ProcessLaunchNotification( 153 bool ProcessLaunchNotification(
154 const ProcessSingleton::NotificationCallback& notification_callback, 154 const ProcessSingleton::NotificationCallback& notification_callback,
155 UINT message, 155 UINT message,
156 WPARAM wparam, 156 WPARAM wparam,
157 LPARAM lparam, 157 LPARAM lparam,
158 LRESULT* result) { 158 LRESULT* result) {
159 if (message != WM_COPYDATA) 159 if (message != WM_COPYDATA)
160 return false; 160 return false;
161 161
162 // Handle the WM_COPYDATA message from another process. 162 // Handle the WM_COPYDATA message from another process.
163 const COPYDATASTRUCT* cds = reinterpret_cast<COPYDATASTRUCT*>(lparam); 163 const COPYDATASTRUCT* cds = reinterpret_cast<COPYDATASTRUCT*>(lparam);
164 164
165 CommandLine parsed_command_line(CommandLine::NO_PROGRAM); 165 base::CommandLine parsed_command_line(base::CommandLine::NO_PROGRAM);
166 base::FilePath current_directory; 166 base::FilePath current_directory;
167 if (!ParseCommandLine(cds, &parsed_command_line, &current_directory)) { 167 if (!ParseCommandLine(cds, &parsed_command_line, &current_directory)) {
168 *result = TRUE; 168 *result = TRUE;
169 return true; 169 return true;
170 } 170 }
171 171
172 *result = notification_callback.Run(parsed_command_line, current_directory) ? 172 *result = notification_callback.Run(parsed_command_line, current_directory) ?
173 TRUE : FALSE; 173 TRUE : FALSE;
174 return true; 174 return true;
175 } 175 }
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 326
327 ProcessSingleton::NotifyResult 327 ProcessSingleton::NotifyResult
328 ProcessSingleton::NotifyOtherProcessOrCreate() { 328 ProcessSingleton::NotifyOtherProcessOrCreate() {
329 ProcessSingleton::NotifyResult result = PROCESS_NONE; 329 ProcessSingleton::NotifyResult result = PROCESS_NONE;
330 if (!Create()) { 330 if (!Create()) {
331 result = NotifyOtherProcess(); 331 result = NotifyOtherProcess();
332 if (result == PROCESS_NONE) 332 if (result == PROCESS_NONE)
333 result = PROFILE_IN_USE; 333 result = PROFILE_IN_USE;
334 } else { 334 } else {
335 g_browser_process->platform_part()->PlatformSpecificCommandLineProcessing( 335 g_browser_process->platform_part()->PlatformSpecificCommandLineProcessing(
336 *CommandLine::ForCurrentProcess()); 336 *base::CommandLine::ForCurrentProcess());
337 } 337 }
338 return result; 338 return result;
339 } 339 }
340 340
341 // Look for a Chrome instance that uses the same profile directory. If there 341 // Look for a Chrome instance that uses the same profile directory. If there
342 // isn't one, create a message window with its title set to the profile 342 // isn't one, create a message window with its title set to the profile
343 // directory path. 343 // directory path.
344 bool ProcessSingleton::Create() { 344 bool ProcessSingleton::Create() {
345 static const wchar_t kMutexName[] = L"Local\\ChromeProcessSingletonStartup!"; 345 static const wchar_t kMutexName[] = L"Local\\ChromeProcessSingletonStartup!";
346 static const wchar_t kMetroActivationEventName[] = 346 static const wchar_t kMetroActivationEventName[] =
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 ::SetEvent(metro_activation_event.Get()); 454 ::SetEvent(metro_activation_event.Get());
455 } 455 }
456 } 456 }
457 } 457 }
458 458
459 return window_.hwnd() != NULL; 459 return window_.hwnd() != NULL;
460 } 460 }
461 461
462 void ProcessSingleton::Cleanup() { 462 void ProcessSingleton::Cleanup() {
463 } 463 }
OLDNEW
« no previous file with comments | « chrome/browser/process_singleton_startup_lock.cc ('k') | chrome/browser/profiles/profile.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698