summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorabodenha@chromium.org <abodenha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-22 19:28:20 +0000
committerabodenha@chromium.org <abodenha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-22 19:28:20 +0000
commit03fe9118bbdbeb98ab0e1b156e89511c56bc26a6 (patch)
tree06849f96dcfa8a34e5db5e148c1c7ec681ec7d81
parentac168fbb793803640fc3ab304ee28dc1fd2f4a66 (diff)
downloadchromium_src-03fe9118bbdbeb98ab0e1b156e89511c56bc26a6.zip
chromium_src-03fe9118bbdbeb98ab0e1b156e89511c56bc26a6.tar.gz
chromium_src-03fe9118bbdbeb98ab0e1b156e89511c56bc26a6.tar.bz2
Extend PathService::Get to be able to return the X86 program files path.
Cloud print's virtual driver needs this to be able to find the Chrome install directory. Since the port monitor is a 64 bit DLL on 64 bit Windows it needs to request the X86 folder explicitly. BUG= TEST= Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=82567 Review URL: http://codereview.chromium.org/6873159 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82686 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--base/base_paths_win.cc8
-rw-r--r--base/base_paths_win.h5
-rw-r--r--cloud_print/virtual_driver/win/port_monitor/port_monitor.cc11
3 files changed, 11 insertions, 13 deletions
diff --git a/base/base_paths_win.cc b/base/base_paths_win.cc
index 25271e4..343a101 100644
--- a/base/base_paths_win.cc
+++ b/base/base_paths_win.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -55,6 +55,12 @@ bool PathProviderWin(int key, FilePath* result) {
return false;
cur = FilePath(system_buffer);
break;
+ case base::DIR_PROGRAM_FILESX86:
+ if (FAILED(SHGetFolderPath(NULL, CSIDL_PROGRAM_FILESX86, NULL,
+ SHGFP_TYPE_CURRENT, system_buffer)))
+ return false;
+ cur = FilePath(system_buffer);
+ break;
case base::DIR_IE_INTERNET_CACHE:
if (FAILED(SHGetFolderPath(NULL, CSIDL_INTERNET_CACHE, NULL,
SHGFP_TYPE_CURRENT, system_buffer)))
diff --git a/base/base_paths_win.h b/base/base_paths_win.h
index 9e2db36..02b1f49 100644
--- a/base/base_paths_win.h
+++ b/base/base_paths_win.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -17,7 +17,8 @@ enum {
DIR_WINDOWS, // Windows directory, usually "c:\windows"
DIR_SYSTEM, // Usually c:\windows\system32"
- DIR_PROGRAM_FILES, // Usually c:\program files
+ DIR_PROGRAM_FILES, // Usually c:\program files
+ DIR_PROGRAM_FILESX86, // Usually c:\program files or c:\program files (x86)
DIR_IE_INTERNET_CACHE, // Temporary Internet Files directory.
DIR_COMMON_START_MENU, // Usually "C:\Documents and Settings\All Users\
diff --git a/cloud_print/virtual_driver/win/port_monitor/port_monitor.cc b/cloud_print/virtual_driver/win/port_monitor/port_monitor.cc
index 450ef56..05c5272 100644
--- a/cloud_print/virtual_driver/win/port_monitor/port_monitor.cc
+++ b/cloud_print/virtual_driver/win/port_monitor/port_monitor.cc
@@ -273,16 +273,7 @@ bool GetChromeExePath(FilePath* chrome_path) {
// Chrome doesn't appear to be installed per user.
// Now check %programfiles(x86)%\google\chrome\application
- // TODO(abodenha@chromium.org) Extend PathService::Get to be able to
- // return the X86 program files path. At a minimum, use SHGetKnownFolderPath
- // instead.
- wchar_t system_buffer[MAX_PATH] = L"";
- SHGetFolderPath(NULL,
- CSIDL_PROGRAM_FILESX86,
- NULL,
- SHGFP_TYPE_CURRENT,
- system_buffer);
- path = FilePath(system_buffer);
+ PathService::Get(base::DIR_PROGRAM_FILESX86, &path);
path = path.Append(kChromeExePath);
if (file_util::PathExists(path)) {
*chrome_path = FilePath(path.value());