From 03fe9118bbdbeb98ab0e1b156e89511c56bc26a6 Mon Sep 17 00:00:00 2001 From: "abodenha@chromium.org" Date: Fri, 22 Apr 2011 19:28:20 +0000 Subject: 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 --- base/base_paths_win.cc | 8 +++++++- base/base_paths_win.h | 5 +++-- cloud_print/virtual_driver/win/port_monitor/port_monitor.cc | 11 +---------- 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()); -- cgit v1.1