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

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

Issue 6246036: FilePath: Remove most of ToWStringHack, adding a LossyDisplayName() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: bug link Created 9 years, 10 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "base/base_paths.h" 7 #include "base/base_paths.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 24 matching lines...) Expand all
35 *result = IsWindowVisible(window) != 0; 35 *result = IsWindowVisible(window) != 0;
36 // Stops enumeration if a visible window has been found. 36 // Stops enumeration if a visible window has been found.
37 return !*result; 37 return !*result;
38 } 38 }
39 39
40 } // namespace 40 } // namespace
41 41
42 // Look for a Chrome instance that uses the same profile directory. 42 // Look for a Chrome instance that uses the same profile directory.
43 ProcessSingleton::ProcessSingleton(const FilePath& user_data_dir) 43 ProcessSingleton::ProcessSingleton(const FilePath& user_data_dir)
44 : window_(NULL), locked_(false), foreground_window_(NULL) { 44 : window_(NULL), locked_(false), foreground_window_(NULL) {
45 std::wstring user_data_dir_str(user_data_dir.ToWStringHack());
46 remote_window_ = FindWindowEx(HWND_MESSAGE, NULL, 45 remote_window_ = FindWindowEx(HWND_MESSAGE, NULL,
47 chrome::kMessageWindowClass, 46 chrome::kMessageWindowClass,
48 user_data_dir_str.c_str()); 47 user_data_dir.value().c_str());
49 if (!remote_window_) { 48 if (!remote_window_) {
50 // Make sure we will be the one and only process creating the window. 49 // Make sure we will be the one and only process creating the window.
51 // We use a named Mutex since we are protecting against multi-process 50 // We use a named Mutex since we are protecting against multi-process
52 // access. As documented, it's clearer to NOT request ownership on creation 51 // access. As documented, it's clearer to NOT request ownership on creation
53 // since it isn't guaranteed we will get it. It is better to create it 52 // since it isn't guaranteed we will get it. It is better to create it
54 // without ownership and explicitly get the ownership afterward. 53 // without ownership and explicitly get the ownership afterward.
55 std::wstring mutex_name(L"Local\\ChromeProcessSingletonStartup!"); 54 std::wstring mutex_name(L"Local\\ChromeProcessSingletonStartup!");
56 base::win::ScopedHandle only_me( 55 base::win::ScopedHandle only_me(
57 CreateMutex(NULL, FALSE, mutex_name.c_str())); 56 CreateMutex(NULL, FALSE, mutex_name.c_str()));
58 DCHECK(only_me.Get() != NULL) << "GetLastError = " << GetLastError(); 57 DCHECK(only_me.Get() != NULL) << "GetLastError = " << GetLastError();
59 58
60 // This is how we acquire the mutex (as opposed to the initial ownership). 59 // This is how we acquire the mutex (as opposed to the initial ownership).
61 DWORD result = WaitForSingleObject(only_me, INFINITE); 60 DWORD result = WaitForSingleObject(only_me, INFINITE);
62 DCHECK(result == WAIT_OBJECT_0) << "Result = " << result << 61 DCHECK(result == WAIT_OBJECT_0) << "Result = " << result <<
63 "GetLastError = " << GetLastError(); 62 "GetLastError = " << GetLastError();
64 63
65 // We now own the mutex so we are the only process that can create the 64 // We now own the mutex so we are the only process that can create the
66 // window at this time, but we must still check if someone created it 65 // window at this time, but we must still check if someone created it
67 // between the time where we looked for it above and the time the mutex 66 // between the time where we looked for it above and the time the mutex
68 // was given to us. 67 // was given to us.
69 remote_window_ = FindWindowEx(HWND_MESSAGE, NULL, 68 remote_window_ = FindWindowEx(HWND_MESSAGE, NULL,
70 chrome::kMessageWindowClass, 69 chrome::kMessageWindowClass,
71 user_data_dir_str.c_str()); 70 user_data_dir.value().c_str());
72 if (!remote_window_) 71 if (!remote_window_)
73 Create(); 72 Create();
74 BOOL success = ReleaseMutex(only_me); 73 BOOL success = ReleaseMutex(only_me);
75 DCHECK(success) << "GetLastError = " << GetLastError(); 74 DCHECK(success) << "GetLastError = " << GetLastError();
76 } 75 }
77 } 76 }
78 77
79 ProcessSingleton::~ProcessSingleton() { 78 ProcessSingleton::~ProcessSingleton() {
80 if (window_) { 79 if (window_) {
81 DestroyWindow(window_); 80 DestroyWindow(window_);
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 switch (message) { 304 switch (message) {
306 case WM_COPYDATA: 305 case WM_COPYDATA:
307 return OnCopyData(reinterpret_cast<HWND>(wparam), 306 return OnCopyData(reinterpret_cast<HWND>(wparam),
308 reinterpret_cast<COPYDATASTRUCT*>(lparam)); 307 reinterpret_cast<COPYDATASTRUCT*>(lparam));
309 default: 308 default:
310 break; 309 break;
311 } 310 }
312 311
313 return ::DefWindowProc(hwnd, message, wparam, lparam); 312 return ::DefWindowProc(hwnd, message, wparam, lparam);
314 } 313 }
OLDNEW
« no previous file with comments | « chrome/browser/printing/printing_layout_uitest.cc ('k') | chrome/browser/ui/views/options/advanced_contents_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698