diff options
author | erikkay@google.com <erikkay@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-08 20:16:08 +0000 |
---|---|---|
committer | erikkay@google.com <erikkay@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-08 20:16:08 +0000 |
commit | 5af2edb98c8ebde32dcc51dcde9b02bea82468a3 (patch) | |
tree | 8e575497f7343fd6eca212253c4fad33bc5cfb68 /base/base_paths_mac.mm | |
parent | 764be58b4a7cc20271571be59118d260aad13966 (diff) | |
download | chromium_src-5af2edb98c8ebde32dcc51dcde9b02bea82468a3.zip chromium_src-5af2edb98c8ebde32dcc51dcde9b02bea82468a3.tar.gz chromium_src-5af2edb98c8ebde32dcc51dcde9b02bea82468a3.tar.bz2 |
* add base_paths_mac.mm to mac port
* add file_util_posix.cc to mac port (NOTE: untested on linux)
* a bit of cleanup in path_service.cc related to this
* a few more cleanups to file_util.cc to make it build for mac
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@589 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/base_paths_mac.mm')
-rw-r--r-- | base/base_paths_mac.mm | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/base/base_paths_mac.mm b/base/base_paths_mac.mm new file mode 100644 index 0000000..d5695e1 --- /dev/null +++ b/base/base_paths_mac.mm @@ -0,0 +1,73 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Copied from base/basictypes.h with some modifications + +#include "base/base_paths_mac.h" + +#import <Cocoa/Cocoa.h> + +#include "base/logging.h" +#include "base/string_util.h" + +namespace base { + +bool PathProviderMac(int key, std::wstring* result) { + std::wstring cur; + switch (key) { + case base::FILE_EXE: + case base::FILE_MODULE: { + NSString* path = [[NSBundle mainBundle] executablePath]; + cur = reinterpret_cast<const wchar_t*>( + [path cStringUsingEncoding:NSUTF32StringEncoding]); + break; + } + case base::DIR_APP_DATA: + case base::DIR_LOCAL_APP_DATA: { + // TODO(erikkay): maybe we should remove one of these for mac? The local + // vs. roaming distinction is fairly Windows-specific. + NSArray* dirs = NSSearchPathForDirectoriesInDomains( + NSApplicationSupportDirectory, NSUserDomainMask, YES); + if (!dirs || [dirs count] == 0) + return false; + DCHECK([dirs count] == 1); + NSString* tail = [[NSString alloc] initWithCString:"Google/Chrome"]; + NSString* path = [[dirs lastObject] stringByAppendingPathComponent:tail]; + cur = reinterpret_cast<const wchar_t*>( + [path cStringUsingEncoding:NSUTF32StringEncoding]); + break; + } + default: + return false; + } + + result->swap(cur); + return true; +} + +} // namespace base |