Get POSIX mostly compiling
This commit is contained in:
parent
c46579b1ac
commit
88dd1480cc
1 changed files with 24 additions and 26 deletions
|
@ -81,6 +81,10 @@
|
||||||
#include "net/base/net_util.h"
|
#include "net/base/net_util.h"
|
||||||
#include "ui/base/l10n/l10n_util.h"
|
#include "ui/base/l10n/l10n_util.h"
|
||||||
|
|
||||||
|
#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
|
||||||
|
#include "ui/views/linux_ui/linux_ui.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
using content::BrowserThread;
|
using content::BrowserThread;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -101,6 +105,13 @@ const int kMaxACKMessageLength = arraysize(kShutdownToken) - 1;
|
||||||
|
|
||||||
const char kLockDelimiter = '-';
|
const char kLockDelimiter = '-';
|
||||||
|
|
||||||
|
const base::FilePath::CharType kSingletonCookieFilename[] =
|
||||||
|
FILE_PATH_LITERAL("SingletonCookie");
|
||||||
|
|
||||||
|
const base::FilePath::CharType kSingletonLockFilename[] = FILE_PATH_LITERAL("SingletonLock");
|
||||||
|
const base::FilePath::CharType kSingletonSocketFilename[] =
|
||||||
|
FILE_PATH_LITERAL("SingletonSocket");
|
||||||
|
|
||||||
// Set the close-on-exec bit on a file descriptor.
|
// Set the close-on-exec bit on a file descriptor.
|
||||||
// Returns 0 on success, -1 on failure.
|
// Returns 0 on success, -1 on failure.
|
||||||
int SetCloseOnExec(int fd) {
|
int SetCloseOnExec(int fd) {
|
||||||
|
@ -293,33 +304,20 @@ bool ParseLockPath(const base::FilePath& path,
|
||||||
bool DisplayProfileInUseError(const base::FilePath& lock_path,
|
bool DisplayProfileInUseError(const base::FilePath& lock_path,
|
||||||
const std::string& hostname,
|
const std::string& hostname,
|
||||||
int pid) {
|
int pid) {
|
||||||
base::string16 error = l10n_util::GetStringFUTF16(
|
// TODO: yolo
|
||||||
IDS_PROFILE_IN_USE_POSIX,
|
|
||||||
base::IntToString16(pid),
|
|
||||||
base::ASCIIToUTF16(hostname));
|
|
||||||
LOG(ERROR) << error;
|
|
||||||
|
|
||||||
if (g_disable_prompt)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
#if defined(OS_LINUX)
|
|
||||||
base::string16 relaunch_button_text = l10n_util::GetStringUTF16(
|
|
||||||
IDS_PROFILE_IN_USE_LINUX_RELAUNCH);
|
|
||||||
return ShowProcessSingletonDialog(error, relaunch_button_text);
|
|
||||||
#elif defined(OS_MACOSX)
|
|
||||||
// On Mac, always usurp the lock.
|
|
||||||
return true;
|
return true;
|
||||||
#endif
|
|
||||||
|
|
||||||
NOTREACHED();
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsChromeProcess(pid_t pid) {
|
bool IsChromeProcess(pid_t pid) {
|
||||||
base::FilePath other_chrome_path(base::GetProcessExecutablePath(pid));
|
base::FilePath other_chrome_path(base::GetProcessExecutablePath(pid));
|
||||||
|
|
||||||
|
auto command_line = base::CommandLine::ForCurrentProcess();
|
||||||
|
base::FilePath exec_path(command_line->GetProgram());
|
||||||
|
PathService::Get(base::FILE_EXE, &exec_path);
|
||||||
|
|
||||||
return (!other_chrome_path.empty() &&
|
return (!other_chrome_path.empty() &&
|
||||||
other_chrome_path.BaseName() ==
|
other_chrome_path.BaseName() ==
|
||||||
base::FilePath(chrome::kBrowserProcessExecutableName));
|
exec_path.BaseName());
|
||||||
}
|
}
|
||||||
|
|
||||||
// A helper class to hold onto a socket.
|
// A helper class to hold onto a socket.
|
||||||
|
@ -360,7 +358,7 @@ bool ConnectSocket(ScopedSocket* socket,
|
||||||
if (cookie.empty())
|
if (cookie.empty())
|
||||||
return false;
|
return false;
|
||||||
base::FilePath remote_cookie = socket_target.DirName().
|
base::FilePath remote_cookie = socket_target.DirName().
|
||||||
Append(chrome::kSingletonCookieFilename);
|
Append(kSingletonCookieFilename);
|
||||||
// Verify the cookie before connecting.
|
// Verify the cookie before connecting.
|
||||||
if (!CheckCookie(remote_cookie, cookie))
|
if (!CheckCookie(remote_cookie, cookie))
|
||||||
return false;
|
return false;
|
||||||
|
@ -720,9 +718,9 @@ ProcessSingleton::ProcessSingleton(
|
||||||
: notification_callback_(notification_callback),
|
: notification_callback_(notification_callback),
|
||||||
current_pid_(base::GetCurrentProcId()),
|
current_pid_(base::GetCurrentProcId()),
|
||||||
watcher_(new LinuxWatcher(this)) {
|
watcher_(new LinuxWatcher(this)) {
|
||||||
socket_path_ = user_data_dir.Append(chrome::kSingletonSocketFilename);
|
socket_path_ = user_data_dir.Append(kSingletonSocketFilename);
|
||||||
lock_path_ = user_data_dir.Append(chrome::kSingletonLockFilename);
|
lock_path_ = user_data_dir.Append(kSingletonLockFilename);
|
||||||
cookie_path_ = user_data_dir.Append(chrome::kSingletonCookieFilename);
|
cookie_path_ = user_data_dir.Append(kSingletonCookieFilename);
|
||||||
|
|
||||||
kill_callback_ = base::Bind(&ProcessSingleton::KillProcess,
|
kill_callback_ = base::Bind(&ProcessSingleton::KillProcess,
|
||||||
base::Unretained(this));
|
base::Unretained(this));
|
||||||
|
@ -962,10 +960,10 @@ bool ProcessSingleton::Create() {
|
||||||
|
|
||||||
// Setup the socket symlink and the two cookies.
|
// Setup the socket symlink and the two cookies.
|
||||||
base::FilePath socket_target_path =
|
base::FilePath socket_target_path =
|
||||||
socket_dir_.path().Append(chrome::kSingletonSocketFilename);
|
socket_dir_.path().Append(kSingletonSocketFilename);
|
||||||
base::FilePath cookie(GenerateCookie());
|
base::FilePath cookie(GenerateCookie());
|
||||||
base::FilePath remote_cookie_path =
|
base::FilePath remote_cookie_path =
|
||||||
socket_dir_.path().Append(chrome::kSingletonCookieFilename);
|
socket_dir_.path().Append(kSingletonCookieFilename);
|
||||||
UnlinkPath(socket_path_);
|
UnlinkPath(socket_path_);
|
||||||
UnlinkPath(cookie_path_);
|
UnlinkPath(cookie_path_);
|
||||||
if (!SymlinkPath(socket_target_path, socket_path_) ||
|
if (!SymlinkPath(socket_target_path, socket_path_) ||
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue