summaryrefslogtreecommitdiffstats
path: root/chrome/browser/importer/firefox_profile_lock.cc
diff options
context:
space:
mode:
authornsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-12-01 20:23:22 +0000
committernsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-12-01 20:23:22 +0000
commit932289db27336277e6bab6fd48542db9cd513458 (patch)
tree13dda07348f3b520e128d2f0d1dd8794bf8c6ef7 /chrome/browser/importer/firefox_profile_lock.cc
parent04d34f27c22ef87e38df03d5effb26c38cfb8c92 (diff)
downloadchromium_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.cc34
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);
+}
+
+