diff options
author | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-01 20:23:22 +0000 |
---|---|---|
committer | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-01 20:23:22 +0000 |
commit | 932289db27336277e6bab6fd48542db9cd513458 (patch) | |
tree | 13dda07348f3b520e128d2f0d1dd8794bf8c6ef7 /chrome/browser/importer/firefox_profile_lock.cc | |
parent | 04d34f27c22ef87e38df03d5effb26c38cfb8c92 (diff) | |
download | chromium_src-932289db27336277e6bab6fd48542db9cd513458.zip chromium_src-932289db27336277e6bab6fd48542db9cd513458.tar.gz chromium_src-932289db27336277e6bab6fd48542db9cd513458.tar.bz2 |
Revert change 6149 because it broke the unit tests on windows.
Review URL: http://codereview.chromium.org/12834
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6155 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/importer/firefox_profile_lock.cc')
-rw-r--r-- | chrome/browser/importer/firefox_profile_lock.cc | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/chrome/browser/importer/firefox_profile_lock.cc b/chrome/browser/importer/firefox_profile_lock.cc index 777723c..aaab891 100644 --- a/chrome/browser/importer/firefox_profile_lock.cc +++ b/chrome/browser/importer/firefox_profile_lock.cc @@ -4,7 +4,7 @@ #include "chrome/browser/importer/firefox_profile_lock.h" -#include "base/file_path.h" +#include "base/file_util.h" // This class is based on Firefox code in: // profile/dirserviceprovider/src/nsProfileLock.cpp @@ -52,16 +52,36 @@ * ***** END LICENSE BLOCK ***** */ // static -const FilePath::CharType* FirefoxProfileLock::kLockFileName = - FILE_PATH_LITERAL("parent.local"); +wchar_t FirefoxProfileLock::kLockFileName[] = L"parent.lock"; -FirefoxProfileLock::FirefoxProfileLock(const std::wstring& path) { - Init(); - lock_file_ = FilePath::FromWStringHack(path); - lock_file_.Append(kLockFileName); +FirefoxProfileLock::FirefoxProfileLock(const std::wstring& path) + : lock_handle_(INVALID_HANDLE_VALUE) { + lock_file_ = path; + file_util::AppendToPath(&lock_file_, kLockFileName); Lock(); } FirefoxProfileLock::~FirefoxProfileLock() { Unlock(); } + +void FirefoxProfileLock::Lock() { + if (HasAcquired()) + return; + lock_handle_ = CreateFile(lock_file_.c_str(), GENERIC_READ | GENERIC_WRITE, + 0, NULL, OPEN_ALWAYS, FILE_FLAG_DELETE_ON_CLOSE, + NULL); +} + +void FirefoxProfileLock::Unlock() { + if (!HasAcquired()) + return; + CloseHandle(lock_handle_); + lock_handle_ = INVALID_HANDLE_VALUE; +} + +bool FirefoxProfileLock::HasAcquired() { + return (lock_handle_ != INVALID_HANDLE_VALUE); +} + + |